if(self){
time = [NSTimer
- scheduledTimerWithTimeInterval:0.015
+ scheduledTimerWithTimeInterval:1.0/30
target:self
selector:@selector(EventLoopFS:)
userInfo:nil
repeats:YES
];
+
+ fieldScene = self;
+
P[0].name = @"青軍";
P[0].type = 0;
P[0].resource = 500;
-(void)clickCRL:(id)sender{
crCRL = (int)[CResearchListTV clickedRow];
-
+ if(crCRL < 0)
+ return;
BUILDCHIP *B;
B = &BC[buildNum[possionX][possionY]];
+
RESEARCH *Rtop;
UNITCHIP *BU;
Rtop = B->R;
-
+ if(B->R){
BU = B->R->U;
BRU = BU;
-
for(int i = 0;i <= crCRL;i++){
BU = B->R->U;
BRU = BU;
B->R = B->R->next;
}
B->R = Rtop;
- BRUindex = 0;
- for (int i = 0; BRU->nameID != UC[i].nameID;i++) {
+ BRUindex = 0;
+ for (int i = 0; BRU->nameID != UC[i].nameID && i < UCN;i++) {
BRUindex++;
+
+ }
+ return;
}
-}
+ if(buildTeam[possionX][possionY] == 0 || buildTeam[possionX][possionY] == 1){
+
+ int k = 0;
+ B->R = Rtop;
+ while (B->R) {
+ B->R = B->R->next;
+ k++;
+ }
+
+ for(int i = k;i <= crCRL;i++){
+
+ [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 %g", UC[*(GuildDisp1 + i - k)-1].S_M.ATK]];
+ [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 %g", UC[*(GuildDisp1 + i - k)-1].S_M.DEF]];
+ [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 %g", UC[*(GuildDisp1 + i - k)-1].S_M.CAP]];
+ [researchACU setStringValue:[NSString stringWithFormat:@"命中値 %g", UC[*(GuildDisp1 + i - k)-1].S_M.ACU]];
+ [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 %g", UC[*(GuildDisp1 + i - k)-1].S_M.EVA]];
+ [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 %d", UC[*(GuildDisp1 + i - k)-1].S_M.MOV]];
+ [researchIMG setImage:UC[*(GuildDisp1 + i - k)-1].imgb];
+ [researchIMG setImageScaling:NSScaleToFit];
+
+ }B->R = Rtop;
+
+ BRUindex = 0;
+ for (int i = 0; UC[*(GuildDisp1 + crCRL - k)-1].nameID != UC[i].nameID && i < UCN;i++) {
+ BRUindex++;
+ }BRU = &UC[BRUindex];
+
+
+
+ }else if(buildTeam[possionX][possionY] == 2 || buildTeam[possionX][possionY] == 3){
+
+ int k = 0;
+ B->R = Rtop;
+ while (B->R) {
+ B->R = B->R->next;
+ k++;
+ }
+
+ for(int i = k;i <= crCRL;i++){
+
+ [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 %g", UC[*(GuildDisp2 + i - k)-1].S_M.ATK]];
+ [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 %g", UC[*(GuildDisp2 + i - k)-1].S_M.DEF]];
+ [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 %g", UC[*(GuildDisp2 + i - k)-1].S_M.CAP]];
+ [researchACU setStringValue:[NSString stringWithFormat:@"命中値 %g", UC[*(GuildDisp2 + i - k)-1].S_M.ACU]];
+ [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 %g", UC[*(GuildDisp2 + i - k)-1].S_M.EVA]];
+ [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 %d", UC[*(GuildDisp2 + i - k)-1].S_M.MOV]];
+ [researchIMG setImage:UC[*(GuildDisp2 + i - k)-1].imgb];
+ [researchIMG setImageScaling:NSScaleToFit];
+
+ }B->R = Rtop;
+
+
+ BRUindex = 0;
+ for (int i = 0; UC[*(GuildDisp2 + crCRL - k)-1].nameID != UC[i].nameID && i < UCN;i++) {
+ BRUindex++;
+ }BRU = &UC[BRUindex];
+ }
+
+
+
+
+
+ }
-(void)SetStatusFunc{
double STRfix;
-(void)EventLoopFS:(NSTimer*)time{
+
+ U = UTop;
+ if(U){
+ U = UTop;
+ for(int i = 0;i < DUN[1];i++){
+
+ U = U->next;
+ }
+
+ //if(Utarget) NSLog(@"PX %d PY %d UX %d UY %d", possionX, possionY, Utarget->x, Utarget->y);
+ U = UTop;
+ }
+
if(coolTime){
static int lmao = 0;
lmao++;
- if(lmao > 50){
+ if(lmao > 20){
coolTime = false;
lmao = 0;
}
[battleWindow makeKeyAndOrderFront:nil];
extentBattleFlag = false;
extentBattleFlag2 = true;
- cpuAtkExtendFlag = false;
cpuAtkExtendFlag2 = false;
[battlePanel close];
}if(extentBattleFlag2){
if(initStatusFlag){
- U = UTop;
- while(U != NULL){
- if(U->x == possionX && U->y == possionY && U->dead == true){
- break;
- }
-
+
+ if(1){
+
- if(U->chipNumberL < 0){
- if(U->x == possionX && U->y == possionY && U->dead == false && Uselected){
+ if(Uselected){
+ if(Uselected->chipNumberL < 0){
+ if(!Uselected->dead){
- if(U->x == Uselected->x && U->y == Uselected->y && U->team == 0){
+ if(Uselected->team == 0){
[tfArmy setStringValue:[NSString stringWithFormat:@"%@", P[0].name]];
}
- if(U->x == Uselected->x && U->y == Uselected->y && U->team == 2){
+ if(Uselected->team == 2){
[tfArmy setStringValue:[NSString stringWithFormat:@"%@", P[1].name]];
}
- [tfName setStringValue:[NSString stringWithFormat:@"%@", U->C.name]];
- [HPbarTF setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->C.S_C.HP, U->C.S_M.HP]];
- [HPbarLI setIntValue:[[NSString stringWithFormat:@"%g", U->C.S_C.HP/U->C.S_M.HP*100 + 0.5] intValue]];
- [MPbarTF setStringValue:[NSString stringWithFormat:@"MP %g/%g", U->C.S_C.MP, U->C.S_M.MP]];
- [tfAttack setStringValue:[NSString stringWithFormat:@"攻撃力 %g", U->C.S_C.ATK]];
- [tfDefence setStringValue:[NSString stringWithFormat:@"防御力 %g", U->C.S_C.DEF]];
- [tfCalc setStringValue:[NSString stringWithFormat:@"演算力 %g", U->C.S_C.CAP]];
- [tfHit setStringValue:[NSString stringWithFormat:@"命中値 %g", U->C.S_C.ACU]];
- [tfDodge setStringValue:[NSString stringWithFormat:@"回避値 %g", U->C.S_C.EVA]];
- [tfMove setStringValue:[NSString stringWithFormat:@"移動力 %d", U->C.S_C.MOV]];
- [tfWait setStringValue:[NSString stringWithFormat:@"WT %g", U->C.S_C.WT]];
- [selectChara setImage:U->C.imgb];
+ [tfName setStringValue:[NSString stringWithFormat:@"%@", Uselected->C.name]];
+ [HPbarTF setStringValue:[NSString stringWithFormat:@"HP %g/%g", Uselected->C.S_C.HP, Uselected->C.S_M.HP]];
+ [HPbarLI setIntValue:[[NSString stringWithFormat:@"%g", Uselected->C.S_C.HP/Uselected->C.S_M.HP*100 + 0.5] intValue]];
+ [MPbarTF setStringValue:[NSString stringWithFormat:@"MP %g/%g", Uselected->C.S_C.MP, Uselected->C.S_M.MP]];
+ [tfAttack setStringValue:[NSString stringWithFormat:@"攻撃力 %g", Uselected->C.S_C.ATK]];
+ [tfDefence setStringValue:[NSString stringWithFormat:@"防御力 %g", Uselected->C.S_C.DEF]];
+ [tfCalc setStringValue:[NSString stringWithFormat:@"演算力 %g", Uselected->C.S_C.CAP]];
+ [tfHit setStringValue:[NSString stringWithFormat:@"命中値 %g", Uselected->C.S_C.ACU]];
+ [tfDodge setStringValue:[NSString stringWithFormat:@"回避値 %g", Uselected->C.S_C.EVA]];
+ [tfMove setStringValue:[NSString stringWithFormat:@"移動力 %d", Uselected->C.S_C.MOV]];
+ [tfWait setStringValue:[NSString stringWithFormat:@"WT %g", Uselected->C.S_C.WT]];
+ [selectChara setImage:Uselected->C.imgb];
[selectChara setImageScaling:NSScaleToFit];
- break;
+
}else{
[tfName setStringValue:[NSString stringWithFormat:@"----"]];
[tfArmy setStringValue:[NSString stringWithFormat:@"----"]];
}
}else{
- if(U->x == possionX && U->y == possionY && U->dead == false && Uselected){
+ if(!Uselected->dead){
- if(U->x == Uselected->x && U->y == Uselected->y && U->team == 0){
+ if(Uselected->team == 0){
[tfArmy setStringValue:[NSString stringWithFormat:@"%@", P[0].name]];
}
- if(U->x == Uselected->x && U->y == Uselected->y && U->team == 2){
+ if(Uselected->team == 2){
[tfArmy setStringValue:[NSString stringWithFormat:@"%@", P[1].name]];
}
- [tfName setStringValue:[NSString stringWithFormat:@"%@", U->CL.name]];
- [HPbarTF setStringValue:[NSString stringWithFormat:@"HP %g/%g", U->CL.S_C.HP, U->CL.S_M.HP]];
- [HPbarLI setIntValue:[[NSString stringWithFormat:@"%g", U->CL.S_C.HP/U->CL.S_M.HP*100 + 0.5] intValue]];
- [MPbarTF setStringValue:[NSString stringWithFormat:@"EN %g/%g", U->CL.S_C.EN, U->CL.S_M.EN]];
- [tfAttack setStringValue:[NSString stringWithFormat:@"移動力 %d", U->CL.S_C.MOV]];
- [tfDefence setStringValue:[NSString stringWithFormat:@"運動性 %g", U->CL.S_C.MOB]];
- [tfCalc setStringValue:[NSString stringWithFormat:@"装甲 %g", U->CL.S_C.ARM]];
- [tfHit setStringValue:[NSString stringWithFormat:@"限界 %g", U->CL.S_C.LIM]];
+ [tfName setStringValue:[NSString stringWithFormat:@"%@", Uselected->CL.name]];
+ [HPbarTF setStringValue:[NSString stringWithFormat:@"HP %g/%g", Uselected->CL.S_C.HP, Uselected->CL.S_M.HP]];
+ [HPbarLI setIntValue:[[NSString stringWithFormat:@"%g", Uselected->CL.S_C.HP/Uselected->CL.S_M.HP*100 + 0.5] intValue]];
+ [MPbarTF setStringValue:[NSString stringWithFormat:@"EN %g/%g", Uselected->CL.S_C.EN, Uselected->CL.S_M.EN]];
+ [tfAttack setStringValue:[NSString stringWithFormat:@"移動力 %d", Uselected->CL.S_C.MOV]];
+ [tfDefence setStringValue:[NSString stringWithFormat:@"運動性 %g", Uselected->CL.S_C.MOB]];
+ [tfCalc setStringValue:[NSString stringWithFormat:@"装甲 %g", Uselected->CL.S_C.ARM]];
+ [tfHit setStringValue:[NSString stringWithFormat:@"限界 %g", Uselected->CL.S_C.LIM]];
[tfDodge setStringValue:[NSString stringWithFormat:@""]];
[tfMove setStringValue:[NSString stringWithFormat:@""]];
- [tfWait setStringValue:[NSString stringWithFormat:@"WT %g", U->CL.S_C.WT]];
- [selectChara setImage:U->CL.imgb];
+ [tfWait setStringValue:[NSString stringWithFormat:@"WT %g", Uselected->CL.S_C.WT]];
+ [selectChara setImage:Uselected->CL.imgb];
[selectChara setImageScaling:NSScaleToFit];
- break;
+
}else{
[tfName setStringValue:[NSString stringWithFormat:@"----"]];
[tfArmy setStringValue:[NSString stringWithFormat:@"----"]];
}
- U = U->next;
+ }else{
+ [tfName setStringValue:[NSString stringWithFormat:@"----"]];
+ [tfArmy setStringValue:[NSString stringWithFormat:@"----"]];
+ [HPbarTF setStringValue:[NSString stringWithFormat:@"HP ----"]];
+ [HPbarLI setIntValue:[[NSString stringWithFormat:@"0"] intValue]];
+ [MPbarTF setStringValue:[NSString stringWithFormat:@"MP ----"]];
+ [tfAttack setStringValue:[NSString stringWithFormat:@"攻撃力 ----"]];
+ [tfDefence setStringValue:[NSString stringWithFormat:@"防御力 ----"]];
+ [tfCalc setStringValue:[NSString stringWithFormat:@"演算力 ----"]];
+ [tfHit setStringValue:[NSString stringWithFormat:@"命中値 ----"]];
+ [tfDodge setStringValue:[NSString stringWithFormat:@"回避値 ----"]];
+ [tfMove setStringValue:[NSString stringWithFormat:@"移動力 ----"]];
+ [tfWait setStringValue:[NSString stringWithFormat:@"WT ----"]];
+ [selectChara setImage:NULL];
+
+ }
}
- U = UTop;
-
- U = UTop;
-
+
}
if(unitBreak){
DUN[i] = 0;
}
+ [self initGuildList];
+ cpuTurnEndFlag = false;
}
+ if(unitBreak){
+ if(unitBreak->team == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2){
+ unitBreak->CPU = true;
+ cpuAImodeflag = true;
+ //NSLog(@"OMFG");
+ }else if(unitBreak->team == 0 && MF[MFselectedRow+1].MS.playerSet1 == 2){
+ unitBreak->CPU = true;
+ cpuAImodeflag = true;
+ //NSLog(@"OMFG");
+ }else if(unitBreak->team == 1){
+ unitBreak->CPU = true;
+ cpuAImodeflag = true;
+ //NSLog(@"OMFG");
+ }
+ else{
+ unitBreak->CPU = false;
+ cpuAImodeflag = false;
+ }
+ }
+
+ [self EventFunc];
+ if(wtRdy3)
+ return;
U = UTop;
U = unitBreak;
- if(battleBegin)
+ if(battleBegin && !wtRdy2)
while (!wtRdy) {
wtPx = 0;
wtPy = 0;
- wtMovedFlag = false;
- wtAttackedFlag = false;
while (U) {
if(!U->dead) U->C.S_C.WT -= 1;
- if(U->dead) U->C.S_C.WT = 999999;
+ if(U->dead) {
+ U->C.S_C.WT = 999999;
+ //goto lolwtfshit;
+ }
if(U->C.S_C.WT <= 0 && !U->dead){//WTターン周り
U->C.S_C.WT = 0;
+
+
wtUnitNum = U->number;
wtPx = U->x;
wtPy = U->y;
wtRdy = true;
+ wtRdy2 = true;
unitBreak = U;
+ Uselected = U;
possionX = unitBreak->x;
possionY = unitBreak->y;
+ //おまんちん
+ stanbyFlag = false;
+ wtMovedFlag = false;
+ wtAttackedFlag = false;
+ guildRE1 = false;
+ guildRE2 = false;
+ [fieldView scrollPoint:NSMakePoint((wtPx-8)*32, (wtPy-8)*32)];
if(buildNum[U->x][U->y] >= 0){
B = BTop;
}
eventTime++;
U = UTop;
+ pussyCumsOnlyOnceFlag = false;
+ wtRdy = false;
+
if(!U) break;
+
}
lolwtfshit:{}
U = UTop;
if(battleWindowFlag){battleFlag = true; battleWindowFlag = false;
-
+
}
+ while(1){
if(battleFlag){
+ /*
+ static int openWait = 0;
+
+ if(openWait < 100){
+ openWait++;
+ break;
+ }else{
+ openWait = 0;
+ }*/
+
+
if(!battleSettingFlag){
windowPoint.x = [mapWindow frame].origin.x;
windowPoint.y = [mapWindow frame].origin.y;
}
[self setBattlePanel];
}
+ break;
+ }
if(battleSetUp){
if(!battleSetUpIgnore){
[self AttackDisplay];
waitSwtichFlag = false;
wtRdy = false;
+ wtRdy2 = false;
Uselected = NULL;
endGamePanelWait = 100;
wtRdy = false;
+ wtRdy2 = false;
+
Uselected = NULL;
}if(stageClearFlag){
setBattleModeFlag = false;
wtRdy = false;
+ wtRdy2 = false;
+
+
Uselected = NULL;
}
setBattleModeFlag = false;
wtRdy = false;
+ wtRdy2 = false;
Uselected = NULL;
}
U = UTop;
}
+
+
if(unitMoveEndFlag){
pussyLoopFlag = false;
}
- if(battleBegin && !pussyLoopFlag){
+
+ w000p:
+
+ if(CPUAttackSubmitFlag){
+ battleFlag = true;
+ CPUAttackSubmitFlag = false;
+ windowPoint.x = [mapWindow frame].origin.x;
+ windowPoint.y = [mapWindow frame].origin.y;
+ [atkPanel setFrameOrigin:windowPoint];
+ }
+
+
+ static int oopsCnt = 30;
+
+ U = UTop;
+
+
+ if(Utarget){
+
+ if(battleFlag &&
+ ((MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
+ (unitBreak->team == 2 && Utarget->team == 1) || (unitBreak->team == 1 && Utarget->team == 2) ||
+ (unitBreak->team == 1 && Utarget->team == 1) || (unitBreak->team == 2 && Utarget->team == 2))
+ ){
+ if(!(AVpreview.rate > 0) && !animationFlag1 && !animationFlag2)
+ oopsCnt--;
+ if(oopsCnt > 0)
+ return;
+ else{
+ oopsCnt = 30;//cpu攻撃ナビ
+ }
+
+ battleFlag = false;
+ battleRdy = false;
+ battleSet1Flag = false;
+ battleSet2Flag = false;
+ battleSettingFlag = false;
+ [self AttackDisplay];
+ windowPoint.x = [mapWindow frame].origin.x;
+ windowPoint.y = [mapWindow frame].origin.y;
+ [battleWindow setFrameOrigin:windowPoint];
+ [battleWindow makeKeyAndOrderFront:nil];
+ [battlePanel close];
+ }
+ }
+ if(Utarget){
+ if(battleRdy &&
+ ((Utarget && MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
+ (unitBreak->team == 2 && Utarget->team == 1) || (unitBreak->team == 1 && Utarget->team == 2) ||
+ (unitBreak->team == 1 && Utarget->team == 1) || (unitBreak->team == 2 && Utarget->team == 2)
+ )
+ ){
+
+ if(!(AVpreview.rate > 0) && !animationFlag1 && !animationFlag2)
+ oopsCnt--;
+ if(oopsCnt > 0)
+ return;
+ else{
+ oopsCnt = 30;//cpu攻撃準備
+ }
+
+ bLoopFlag = false;
+ }
+ }
+ U = UTop;
+
+
+}
+
+-(void)EventFunc{
+
+ if(battleBegin && !pussyLoopFlag && !pussyCumsOnlyOnceFlag){
+ wtRdy3 = true;
bool proccessTrue = false;
static bool onlyBigin = false;
MAPSCRIPT MS = MF[MFselectedRow+1].MS;
MAPSCRIPTD *MSDtop;
MSDtop = MSDTO;
- if(!MSDtop)
- goto w000p;
+ if(!MSDtop){
+ wtRdy3 = false;
+ return;
+ }
if(!onlyBigin){
enum{
- ENTIRE_MAP,
- CENTER_POINT
+ ENTIRE_MAP,
+ CENTER_POINT
};
while(MS.D){
}
if(MS.D)
- while(MS.D->P){
- if(MS.D->P->endFlag)
- MS.D->P = MS.D->P->next;
- else
- break;
- }
+ while(MS.D->P){
+ if(MS.D->P->endFlag)
+ MS.D->P = MS.D->P->next;
+ else
+ break;
+ }
if(!MS.D->P){
MS.D->endFlag = true;
messageDialog = false;
}MS.D->P = MSDPT;
if(resultFailFlag)
- while(MS.D->P){
- MS.D->P->endFlag = false;
- MS.D->P = MS.D->P->next;
- }MS.D->P = MSDPT;
+ while(MS.D->P){
+ MS.D->P->endFlag = false;
+ MS.D->P = MS.D->P->next;
+ }MS.D->P = MSDPT;
}else if(MS.D->ETtype == 2){
}MS.D->P = MSDPT;
if(resultFailFlag)
- while(MS.D->P){
- MS.D->P->endFlag = false;
- MS.D->P = MS.D->P->next;
- }MS.D->P = MSDPT;
+ while(MS.D->P){
+ MS.D->P->endFlag = false;
+ MS.D->P = MS.D->P->next;
+ }MS.D->P = MSDPT;
}else if(MS.D->ETtype == 3){
bool resultFailFlag = false;
}MS.D->P = MSDPT;
if(resultFailFlag)
- while(MS.D->P){
- MS.D->P->endFlag = false;
- MS.D->P = MS.D->P->next;
- }MS.D->P = MSDPT;
+ while(MS.D->P){
+ MS.D->P->endFlag = false;
+ MS.D->P = MS.D->P->next;
+ }MS.D->P = MSDPT;
//NSLog(@"%d", UTop->x);
}else if(MS.D->ETtype == 4){
while(MS.D->P){
}
if(MS.D->switch1)
- for(int i = 0;*(MS.D->switch1+i)>0;i++){
- if(Suicchi[*(MS.D->switch1+i)])
- continue;
-
- EventFailFlag = true;
- }
+ for(int i = 0;*(MS.D->switch1+i)>0;i++){
+ if(Suicchi[*(MS.D->switch1+i)])
+ continue;
+
+ EventFailFlag = true;
+ }
if(MS.D->switch2)
- for(int i = 0;*(MS.D->switch2+i)>0;i++){
- if(!Suicchi[*(MS.D->switch2+i)])
- continue;
-
- EventFailFlag = true;
- }
+ for(int i = 0;*(MS.D->switch2+i)>0;i++){
+ if(!Suicchi[*(MS.D->switch2+i)])
+ continue;
+
+ EventFailFlag = true;
+ }
if(MS.D->ET3 <= eventTime)
proccessTrue = false;
EventFailFlag = true;
}
-
+
if(MS.D->endFlag)
continue;
continue;
}
- if(proccessTrue)
- switch (proccesType) {
-
- case ENTIRE_MAP:
- MS.D->P = [self setEvent:MS.D->P];
- if(messageDialog){
- MS.D->P = MSDPtop;
- MS.D = MSDtop;
- return;
- }
- if(waitSwtichFlag) {
- MS.D->P = MSDPtop;
- MS.D = MSDtop;
- return;
- }if(backTitleFlag){
- MS.D->P = MSDPtop;
- MS.D = MSDtop;
- return;
-
- }if(stageClearFlag){
- MS.D->P = MSDPtop;
- MS.D = MSDtop;
- return;
-
- }if(gameOverFlag){
- MS.D->P = MSDPtop;
- MS.D = MSDtop;
- return;
-
- }
- MS.D->P = MSDPtop;
- break;
- case CENTER_POINT:
- MS.D->P = [self setEvent:MS.D->P];
- if(messageDialog){
- MS.D->P = MSDPtop;
- MS.D = MSDtop;
- return;
- }
- if(waitSwtichFlag) {
- MS.D->P = MSDPtop;
- MS.D = MSDtop;
- return;
- }if(backTitleFlag){
- MS.D->P = MSDPtop;
- MS.D = MSDtop;
- return;
-
- }if(stageClearFlag){
- MS.D->P = MSDPtop;
- MS.D = MSDtop;
- return;
-
- }if(gameOverFlag){
- MS.D->P = MSDPtop;
- MS.D = MSDtop;
- return;
-
+ if(proccessTrue)
+ switch (proccesType) {
+
+ case ENTIRE_MAP:
+ MS.D->P = [self setEvent:MS.D->P];
+ if(messageDialog){
+ MS.D->P = MSDPtop;
+ MS.D = MSDtop;
+ return;
+ }
+ if(waitSwtichFlag) {
+ MS.D->P = MSDPtop;
+ MS.D = MSDtop;
+ return;
+ }if(backTitleFlag){
+ MS.D->P = MSDPtop;
+ MS.D = MSDtop;
+ return;
+
+ }if(stageClearFlag){
+ MS.D->P = MSDPtop;
+ MS.D = MSDtop;
+ return;
+
+ }if(gameOverFlag){
+ MS.D->P = MSDPtop;
+ MS.D = MSDtop;
+ return;
+
+ }
+ MS.D->P = MSDPtop;
+ break;
+ case CENTER_POINT:
+ MS.D->P = [self setEvent:MS.D->P];
+ if(messageDialog){
+ MS.D->P = MSDPtop;
+ MS.D = MSDtop;
+ return;
+ }
+ if(waitSwtichFlag) {
+ MS.D->P = MSDPtop;
+ MS.D = MSDtop;
+ return;
+ }if(backTitleFlag){
+ MS.D->P = MSDPtop;
+ MS.D = MSDtop;
+ return;
+
+ }if(stageClearFlag){
+ MS.D->P = MSDPtop;
+ MS.D = MSDtop;
+ return;
+
+ }if(gameOverFlag){
+ MS.D->P = MSDPtop;
+ MS.D = MSDtop;
+ return;
+
+ }
+ MS.D->P = MSDPtop;
+ break;
+
+ default:
+ MS.D->P = MSDPtop;
+ break;
}
- MS.D->P = MSDPtop;
- break;
-
- default:
- MS.D->P = MSDPtop;
- break;
- }
MS.D->P = MSDPtop;
continue;
}
MS.D = MSDTO;
-
+
while(MS.D){
MAPSCRIPT0 *MSDPT = MS.D->P;
- if(MS.D->ETtype == 0){
- while(MS.D->P){
- MS.D->P->succeessfulFlag = true;
- MS.D->endFlag = true;
- MS.D->P = MS.D->P->next;
- }MS.D->P = MSDPT;
- }else if(MS.D->ETtype == 1){
- bool resultFailFlag = false;
- while(MS.D->P){
- if(!MS.D->P->endFlag)
- resultFailFlag = true;
- MS.D->P = MS.D->P->next;
- }MS.D->P = MSDPT;
-
- if(resultFailFlag)
+ if(MS.D->ETtype == 0){
while(MS.D->P){
- MS.D->P->succeessfulFlag = false;
- MS.D->endFlag = false;
+ MS.D->P->succeessfulFlag = true;
+ MS.D->endFlag = true;
MS.D->P = MS.D->P->next;
}MS.D->P = MSDPT;
-
- }else if(MS.D->ETtype == 2){
-
- bool resultFailFlag = false;
- while(MS.D->P){
- if(!MS.D->P->succeessfulFlag)
- resultFailFlag = true;
- MS.D->P = MS.D->P->next;
- }MS.D->P = MSDPT;
-
- if(resultFailFlag)
+ }else if(MS.D->ETtype == 1){
+ bool resultFailFlag = false;
while(MS.D->P){
- MS.D->P->succeessfulFlag = false;
- MS.D->endFlag = false;
+ if(!MS.D->P->endFlag)
+ resultFailFlag = true;
MS.D->P = MS.D->P->next;
}MS.D->P = MSDPT;
- }else if(MS.D->ETtype == 3){
-
- bool resultFailFlag = false;
- while(MS.D->P){
- if(!MS.D->P->succeessfulFlag){
- resultFailFlag = false;
- break;
- }
- resultFailFlag = true;
- MS.D->P = MS.D->P->next;
- }MS.D->P = MSDPT;
-
- if(resultFailFlag)
+
+ if(resultFailFlag)
+ while(MS.D->P){
+ MS.D->P->succeessfulFlag = false;
+ MS.D->endFlag = false;
+ MS.D->P = MS.D->P->next;
+ }MS.D->P = MSDPT;
+
+ }else if(MS.D->ETtype == 2){
+
+ bool resultFailFlag = false;
+ while(MS.D->P){
+ if(!MS.D->P->succeessfulFlag)
+ resultFailFlag = true;
+ MS.D->P = MS.D->P->next;
+ }MS.D->P = MSDPT;
+
+ if(resultFailFlag)
+ while(MS.D->P){
+ MS.D->P->succeessfulFlag = false;
+ MS.D->endFlag = false;
+ MS.D->P = MS.D->P->next;
+ }MS.D->P = MSDPT;
+ }else if(MS.D->ETtype == 3){
+
+ bool resultFailFlag = false;
+ while(MS.D->P){
+ if(!MS.D->P->succeessfulFlag){
+ resultFailFlag = false;
+ break;
+ }
+ resultFailFlag = true;
+ MS.D->P = MS.D->P->next;
+ }MS.D->P = MSDPT;
+
+ if(resultFailFlag)
+ while(MS.D->P){
+ MS.D->P->succeessfulFlag = false;
+ MS.D->endFlag = false;
+ MS.D->P = MS.D->P->next;
+ }MS.D->P = MSDPtop;
+ }else if(MS.D->ETtype == 4){
while(MS.D->P){
MS.D->P->succeessfulFlag = false;
MS.D->endFlag = false;
MS.D->P = MS.D->P->next;
- }MS.D->P = MSDPtop;
- }else if(MS.D->ETtype == 4){
- while(MS.D->P){
- MS.D->P->succeessfulFlag = false;
- MS.D->endFlag = false;
- MS.D->P = MS.D->P->next;
- }MS.D->P = MSDPT;
+ }MS.D->P = MSDPT;
+ }
+
+ MS.D->P = MSDPT;
+ MS.D = MS.D->next;
}
- MS.D->P = MSDPT;
- MS.D = MS.D->next;
- }
-
- MS.D = MSDtop;
-
-
-
+ MS.D = MSDtop;
+
+
+
MF[MFselectedRow+1].MS.D = MS.D;
cpuTurnEndFlag = false;
battleSetUpIgnore = false;
+ pussyCumsOnlyOnceFlag = true;
+ wtRdy3 = false;
}
-w000p:
- if(!unitBreak)
- return;
-
- if(unitBreak->team == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2){
- unitBreak->CPU = true;
- cpuAImodeflag = true;
- //NSLog(@"OMFG");
- }else if(unitBreak->team == 0 && MF[MFselectedRow+1].MS.playerSet1 == 2){
- unitBreak->CPU = true;
- cpuAImodeflag = true;
- //NSLog(@"OMFG");
- }else if(unitBreak->team == 1){
- unitBreak->CPU = true;
- cpuAImodeflag = true;
- //NSLog(@"OMFG");
- }
- else{
- unitBreak->CPU = false;
- cpuAImodeflag = false;
- }
-
- if(CPUAttackSubmitFlag){
- battleFlag = true;
- CPUAttackSubmitFlag = false;
- windowPoint.x = [mapWindow frame].origin.x;
- windowPoint.y = [mapWindow frame].origin.y;
- [atkPanel setFrameOrigin:windowPoint];
- }
-
-
- static int oopsCnt = 20;
-
- U = UTop;
-
-
- if(Utarget){
-
- if(battleFlag &&
- ((MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
- (unitBreak->team == 2 && Utarget->team == 1) || (unitBreak->team == 1 && Utarget->team == 2) ||
- (unitBreak->team == 1 && Utarget->team == 1) || (unitBreak->team == 2 && Utarget->team == 2))
- ){
- oopsCnt--;
- if(oopsCnt > 0)
- return;
- else{
- oopsCnt = 50;//cpu攻撃ナビ
- }
-
- battleFlag = false;
- battleRdy = false;
- battleSet1Flag = false;
- battleSet2Flag = false;
- battleSettingFlag = false;
- [self AttackDisplay];
- windowPoint.x = [mapWindow frame].origin.x;
- windowPoint.y = [mapWindow frame].origin.y;
- [battleWindow setFrameOrigin:windowPoint];
- [battleWindow makeKeyAndOrderFront:nil];
- [battlePanel close];
- }
- }
- if(Utarget){
- if(battleRdy &&
- ((Utarget && MF[MFselectedRow+1].MS.playerSet1 == 2 && MF[MFselectedRow+1].MS.playerSet2 == 2) ||
- (unitBreak->team == 2 && Utarget->team == 1) || (unitBreak->team == 1 && Utarget->team == 2) ||
- (unitBreak->team == 1 && Utarget->team == 1) || (unitBreak->team == 2 && Utarget->team == 2)
- )
- ){
-
- oopsCnt--;
- if(oopsCnt > 0)
- return;
- else{
- oopsCnt = 50;//cpu攻撃準備
- }
-
- bLoopFlag = false;
- }
- }
- U = UTop;
-
}
-(bool)setBuildList{
+ crCRL = 0;
+
[self willChangeValueForKey:@"CResearchListMA"];
[CResearchListMA removeAllObjects];
[self didChangeValueForKey:@"CResearchListMA"];
+ [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 ----"]];
+ [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 ----"]];
+ [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 ----"]];
+ [researchACU setStringValue:[NSString stringWithFormat:@"命中値 ----"]];
+ [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 ----"]];
+ [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 ----"]];
+
BUILDCHIP *B0;
B = BTop;
- while (B->x == possionX && B->y == possionY) {
+ while (B && B->x != possionX && B->y != possionY) {
B = B->next;
}
B0 = &BC[buildNum[possionX][possionY]];
Rtop = B0->R;
- if(!B0->R){
+
+ if(buildTeam[possionX][possionY] == 0 || buildTeam[possionX][possionY] == 1){
+
+
+ if(GCnum1 < 0)
+ if(!B0->R){
+
return false;
+
+ }
+ }else if(buildTeam[possionX][possionY] == 2 || buildTeam[possionX][possionY] == 3){
+
+
+ if(GCnum2 < 0)
+ if(!B0->R){
+
+ return false;
+
+ }
}
while(B0->R){
[dict setValue:BU->img forKey:@"img"];
- [self willChangeValueForKey:@"CResearchListMA"];
- [CResearchListMA addObject:dict];
- [self didChangeValueForKey:@"CResearchListMA"];
+ [self willChangeValueForKey:@"CResearchListMA"];
+ [CResearchListMA addObject:dict];
+ [self didChangeValueForKey:@"CResearchListMA"];
+ }
+ B0->R = B0->R->next;
+ }
+ B0->R = Rtop;
+
+ B = BTop;
+
+ BUILDCHIP *B;
+
+ B = &BC[buildNum[possionX][possionY]];
+
+
+ if(B0->R){
+ Rtop = B->R;
+
+ BU = B->R->U;
+ BRU = BU;
+
+ for(int i = 0;i <= crCRL && B->R;i++){
+ BU = B->R->U;
+ BRU = BU;
+ [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 %g", BU->S_M.ATK]];
+ [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 %g", BU->S_M.DEF]];
+ [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 %g", BU->S_M.CAP]];
+ [researchACU setStringValue:[NSString stringWithFormat:@"命中値 %g", BU->S_M.ACU]];
+ [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 %g", BU->S_M.EVA]];
+ [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 %d", BU->S_M.MOV]];
+ [researchIMG setImage:BU->imgb];
+ [researchIMG setImageScaling:NSScaleToFit];
+
+ B->R = B->R->next;
+ }
+ B->R = Rtop;
+ }
+
+ MAPSCRIPT MS = MF[MFselectedRow+1].MS;
+
+ if(B->GuildFlag &&( buildTeam[possionX][possionY] == 0 || buildTeam[possionX][possionY] == 1)){
+
+ int a = MS.guildListRegistNum12 - MS.guildListRegistNum11;
+
+ if(!guildRE1){
+ Gnum1 = 0;
+ if(a > 0)
+ Gnum1 = MS.guildListRegistNum11 + arc4random()%(MS.guildListRegistNum12 - MS.guildListRegistNum11+1);
+ else
+ Gnum1 = MS.guildListRegistNum12;
+
+ if(Gnum1 > GCnum1+1)
+ Gnum1 = GCnum1;
+ }
+ int n = 0;
+ guildc = 0;
+ saveGuildList = calloc((GCnum1+1), sizeof(int));
+ if(!guildRE1) GuildDisp1 = calloc(Gnum1, sizeof(int));
+ for(int i = 0;i < Gnum1;i++){
+
+ if(!guildRE1){
+ n = [self chooseGuildList:GuildChosen1 gcnum:GCnum1];
+ if(n == -1)
+ return false;
+ *(GuildDisp1 + i) = *(GuildChosen1 + n);
+ }
+
+ if(*(GuildDisp1 + i) <= 0)
+ break;
+
+ NSMutableDictionary* dict = [NSMutableDictionary new];
+ [dict setValue:[NSString stringWithFormat:@"%@", UC[*(GuildDisp1 + i)-1].name] forKey:@"name"];
+ [dict setValue:[NSString stringWithFormat:@"%g", UC[*(GuildDisp1 + i)-1].S_M.HP] forKey:@"HP"];
+ [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"];
+ [dict setValue:UC[*(GuildDisp1 + i)-1].img forKey:@"img"];
+
+
+ [self willChangeValueForKey:@"CResearchListMA"];
+ [CResearchListMA addObject:dict];
+ [self didChangeValueForKey:@"CResearchListMA"];
+
+ }
+
+
+
+ int k = 0;
+ B->R = Rtop;
+
+ while (B->R) {
+ B->R = B->R->next;
+ k++;
+ }
+
+ for(int i = k;i <= crCRL;i++){
+
+ [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 %g", UC[*(GuildDisp1 + i - k)-1].S_M.ATK]];
+ [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 %g", UC[*(GuildDisp1 + i - k)-1].S_M.DEF]];
+ [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 %g", UC[*(GuildDisp1 + i - k)-1].S_M.CAP]];
+ [researchACU setStringValue:[NSString stringWithFormat:@"命中値 %g", UC[*(GuildDisp1 + i - k)-1].S_M.ACU]];
+ [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 %g", UC[*(GuildDisp1 + i - k)-1].S_M.EVA]];
+ [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 %d", UC[*(GuildDisp1 + i - k)-1].S_M.MOV]];
+ [researchIMG setImage:UC[*(GuildDisp1 + i - k)-1].imgb];
+ [researchIMG setImageScaling:NSScaleToFit];
+
+ }B->R = Rtop;
+
+ guildRE1 = true;
+ }else if(B->GuildFlag && (buildTeam[possionX][possionY] == 2 || buildTeam[possionX][possionY] == 3)){
+
+ int a = MS.guildListRegistNum22 - MS.guildListRegistNum21;
+
+ if(!guildRE2){
+ Gnum2 = 0;
+ if(a > 0)
+ Gnum2 = MS.guildListRegistNum21 + arc4random()%(MS.guildListRegistNum22 - MS.guildListRegistNum21+1);
+ else
+ Gnum2 = MS.guildListRegistNum22;
+
+ if(Gnum2 > GCnum2+1)
+ Gnum2 = GCnum2;
}
- B0->R = B0->R->next;
+ int n = 0;
+
+ guildc = 0;
+ saveGuildList = calloc((GCnum2+1), sizeof(int));
+ if(!guildRE2) GuildDisp2 = calloc(Gnum2, sizeof(int));
+ for(int i = 0;i < Gnum2;i++){
+ if(!guildRE2){
+ n = [self chooseGuildList:GuildChosen2 gcnum:GCnum2];
+ if(n == -1)
+ return false;
+ *(GuildDisp2 + i) = *(GuildChosen2 + n);
+ }
+
+ if(*(GuildDisp2 + i) <= 0)
+ break;
+
+ NSMutableDictionary* dict = [NSMutableDictionary new];
+ [dict setValue:[NSString stringWithFormat:@"%@", UC[*(GuildDisp2 + i)-1].name] forKey:@"name"];
+ [dict setValue:[NSString stringWithFormat:@"%g", UC[*(GuildDisp2 + i)-1].S_M.HP] forKey:@"HP"];
+ [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"];
+ [dict setValue:UC[*(GuildDisp2 + i)-1].img forKey:@"img"];
+
+
+ [self willChangeValueForKey:@"CResearchListMA"];
+ [CResearchListMA addObject:dict];
+ [self didChangeValueForKey:@"CResearchListMA"];
+ }
+
+ int k = 0;
+ B->R = Rtop;
+ while (B->R) {
+ B->R = B->R->next;
+ k++;
+ }
+
+ for(int i = k;i <= crCRL;i++){
+
+ [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 %g", UC[*(GuildDisp2 + i - k)-1].S_M.ATK]];
+ [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 %g", UC[*(GuildDisp2 + i - k)-1].S_M.DEF]];
+ [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 %g", UC[*(GuildDisp2 + i - k)-1].S_M.CAP]];
+ [researchACU setStringValue:[NSString stringWithFormat:@"命中値 %g", UC[*(GuildDisp2 + i - k)-1].S_M.ACU]];
+ [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 %g", UC[*(GuildDisp2 + i - k)-1].S_M.EVA]];
+ [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 %d", UC[*(GuildDisp2 + i - k)-1].S_M.MOV]];
+ [researchIMG setImage:UC[*(GuildDisp2 + i - k)-1].imgb];
+ [researchIMG setImageScaling:NSScaleToFit];
+
+ }B->R = Rtop;
+
+
+ guildRE2 = true;
}
- B0->R = Rtop;
- B = BTop;
- BUILDCHIP *B;
- B = &BC[buildNum[possionX][possionY]];
- Rtop = B->R;
- BU = B->R->U;
- BRU = BU;
- for(int i = 0;i <= crCRL;i++){
- BU = B->R->U;
- BRU = BU;
- [researchATK setStringValue:[NSString stringWithFormat:@"攻撃力 %g", BU->S_M.ATK]];
- [researchDEF setStringValue:[NSString stringWithFormat:@"防御力 %g", BU->S_M.DEF]];
- [researchCAP setStringValue:[NSString stringWithFormat:@"演算力 %g", BU->S_M.CAP]];
- [researchACU setStringValue:[NSString stringWithFormat:@"命中値 %g", BU->S_M.ACU]];
- [researchEVA setStringValue:[NSString stringWithFormat:@"回避値 %g", BU->S_M.EVA]];
- [researchMOV setStringValue:[NSString stringWithFormat:@"移動力 %d", BU->S_M.MOV]];
- [researchIMG setImage:BU->imgb];
- [researchIMG setImageScaling:NSScaleToFit];
+
+
+ return true;
+}
+-(int)chooseGuildList:(int*)value gcnum:(int)gcnum{
+
+ int a = 0;
+ while(1){
+ bool sameFlag = false;
+ bool sameFlag2 = false;
- B->R = B->R->next;
+ if(guildc >= gcnum+1){
+ a = -1;
+ break;
+ }
+
+ a = arc4random()%(gcnum+1);
+
+ for(int i = 0;i < guildc;i++){
+ if(*(saveGuildList+i) == a){
+ sameFlag2 = true;
+ break;
+ }
+ }
+
+ if(sameFlag2)
+ continue;
+
+ *(saveGuildList+guildc) = a;
+
+ guildc++;
+
+ U = UTop;
+ while(U){
+ if([UC[*(value + a)-1].nameID isEqualToString:U->C.nameID]){
+ sameFlag = true;
+ break;
+ }
+ U = U->next;
+ }U = UTop;
+
+ if(!sameFlag)
+ break;
}
- B->R = Rtop;
+
+
+ return a;
+}
+
+-(void)initGuildList{
+
+ MAPSCRIPT MS = MF[MFselectedRow+1].MS;
- return true;
+ GuildChosen1 = calloc(UCN, sizeof(int));
+ GuildChosen2 = calloc(UCN, sizeof(int));
+
+ GCnum1 = -1;
+ for (int i = 0;i < UCN;i++) {
+ if(MS.guildListRegist[i]){
+ GCnum1++;
+ *(GuildChosen1 + GCnum1) = i+1;
+ }
+ }
+ GCnum2 = -1;
+ for (int i = 0;i < UCN;i++) {
+ if(MS.guildListRegist2[i]){
+ GCnum2++;
+ *(GuildChosen2 + GCnum2) = i+1;
+ }
+ }
+
}
+
-(void)SetMenu{
[self setCommandPanel];
U = UTop;
wtRdy = false;
+ wtRdy2 = false;
pushStanbyFlag = true;
pussyLoopFlag = false;
[menuPanel close];
}
-(void)addBuildStatus{
-
+ //おまんちん
int omgCnt = 0;
- BTop = B;
+ B = BTop;
+ if(B)
while (B->next) {omgCnt++;
B = B->next;
}
- B->next = calloc(1, sizeof(BUILD));
- B = B->next;
- B->next = NULL;
- if(omgCnt == 0) BTop = B;
+ if(!B){
+ B = calloc(1, sizeof(BUILD));
+ BTop = B;
+ }else{
+
+ B->next = calloc(1, sizeof(BUILD));
+ B = B->next;
+ B->next = NULL;
+ }
B->number = registerNumB;
U->joinArmyFromNext = true;
U->persuasion = true;
}
+
+ if(MF[MFselectedRow+1].MS.playerSet1 == 2){
+ U->CPU = true;
+ }
}
if(unitTeam[possionX][possionY] == 2 || unitTeam[possionX][possionY] == 3){
U->team = 2;
U->joinArmyFromNext = true;
U->persuasion = true;
}
+
+ if(MF[MFselectedRow+1].MS.playerSet2 == 2){
+ U->CPU = true;
+ }
}
if(unitTeam[possionX][possionY] == 4 || unitTeam[possionX][possionY] == 5){
U->team = 1;
U->joinArmyFromNext = true;
U->persuasion = true;
}
+ U->CPU = true;
}
if(unitTeam[possionX][possionY] == -1){
U->team = -1;
U->joinArmyFromNext = false;
U->persuasion = true;
}
+ U->CPU = true;
}
+
+
[self SetUnitStatus:unitNum[possionX][possionY]];
registerNum++;
U = UTop;
}
-(void)setBattlePanel{
-
+ //おまんちん
U = UTop;
while (!(DUN[1] == U->number)) {
mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
if(!U2->C.aura && U->C.A->D){
- if(U->C.A->D->type == 0) mostDmg2 = ((U->C.S_C.ATK*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs;
- if(U->C.A->D->type == 1) mostDmg2 = ((U->C.S_C.DEF*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs;
- if(U->C.A->D->type == 2) mostDmg2 = ((U->C.S_C.ACU*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs;
- if(U->C.A->D->type == 3) mostDmg2 = ((U->C.S_C.EVA*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs;
- if(U->C.A->D->type == 4) mostDmg2 = ((U->C.S_C.CAP*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs;
+ 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
+ - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
+ 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
+ - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
+ 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
+ - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
+ 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
+ - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
+ 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
+ - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD;
}else if(U->C.A->D){
double val = val = 1/log(3+U2->C.S_C.MP/64);
- if(U->C.A->D->type == 0) mostDmg2 = ((U->C.S_C.ATK*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs*val;
- if(U->C.A->D->type == 1) mostDmg2 = ((U->C.S_C.DEF*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs*val;
- if(U->C.A->D->type == 2) mostDmg2 = ((U->C.S_C.ACU*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs*val;
- if(U->C.A->D->type == 3) mostDmg2 = ((U->C.S_C.EVA*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs*val;
- if(U->C.A->D->type == 4) mostDmg2 = ((U->C.S_C.CAP*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs*val;
+ 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
+ - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
+ 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
+ - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
+ 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
+ - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
+ 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
+ - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
+ 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
+ - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD*val;
}
double val2 = log(3+U2->C.S_C.MP/64);
mostDmg2 = mostDmg2*val2;
}
if(U->C.A->D){
- if(U->C.A->D->fix == 2){
- mostDmg2 = mostDmg2/2 + U->C.S_C.HIT/2;
-
- }else if(U->C.A->D->fix == 1){
- mostDmg2 = mostDmg2/2 + (U->C.S_C.ATK/2 + U->C.S_C.HIT)/2/2;
-
- }else if(U->C.A->D->fix == 0){
- mostDmg2 = mostDmg2/2 + U->C.S_C.ATK/2;
- }}
+ if(U->C.A->D->fix == 2){
+ 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;
+
+ 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;
+ 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;
+ 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;
+ 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;
+ 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;
+
+
+ }else if(U->C.A->D->fix == 1){
+ 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;
+
+ 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;
+ 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;
+ 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;
+ 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;
+ 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;
+
+ }else if(U->C.A->D->fix == 0){
+
+ }
+ }
+
U2A = U->C.A;
costVIG = U->C.A->vigor;
UNIT *oops = U;
U = U2;
mostDmg2 = [self dmgResist:mostDmg2];
+
+ //NSLog(@"crCAL1 %d", crCAL1);
if(mostDmg2 < 0) mostDmg2 = 1;
U = oops;
if(U->C.A->D)
num++;
}
U->C.A = aTop2;
-
- for(int i = 0;i < mostNum;i++){
- U->C.A = U->C.A->next;
- }
- if(U->C.A->extent == 0){
+
+ if(U->C.A->extent == 0 && mostNum >= 0 && !CPUmostDmgChoice){
U->C.A = aTop2;
crCAL1 = 0;
U->C.A = U->C.A->next;
}
}
+
+ CPUmostDmgChoice = false;
if(U->C.A){
mostNumSub = mostNum;
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){
- }else while(U->C.A){
- U->C.A = U->C.A->next;
- crCAL1++;
+ }else{
+
}
}U->C.A = aTop2;
[combatLMP1 setIntValue:(int)oops];
hit = U->C.S_C.ACU*U->C.S_C.HIT/100*U->C.S_C.HP/U->C.S_M.HP;
+ //NSLog(@"mostNumSub %d crCAL1 %d", mostNumSub, crCAL1);
hitFix = U->C.A->hitPercent;
u2A = U->C.A;
double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
if(hi < 0) hi = 0;
- hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi+1)*hit2/hit*10;
+ hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
if(battleDod2Flag) hit = hit / 2;
hit = floor(hit);
mpCost = U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5;
if(!U2->C.aura && U->C.A->D){
- if(U->C.A->D->type == 0) mostDmg2 = ((U->C.S_C.ATK*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs;
- if(U->C.A->D->type == 1) mostDmg2 = ((U->C.S_C.DEF*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs;
- if(U->C.A->D->type == 2) mostDmg2 = ((U->C.S_C.ACU*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs;
- if(U->C.A->D->type == 3) mostDmg2 = ((U->C.S_C.EVA*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs;
- if(U->C.A->D->type == 4) mostDmg2 = ((U->C.S_C.CAP*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs;
+ 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
+ - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
+ 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
+ - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
+ 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
+ - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
+ 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
+ - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
+ 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
+ - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD;
}else if(U->C.A->D){
double val = val = 1/log(3+U2->C.S_C.MP/64);
- if(U->C.A->D->type == 0) mostDmg2 = ((U->C.S_C.ATK*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs*val;
- if(U->C.A->D->type == 1) mostDmg2 = ((U->C.S_C.DEF*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs*val;
- if(U->C.A->D->type == 2) mostDmg2 = ((U->C.S_C.ACU*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs*val;
- if(U->C.A->D->type == 3) mostDmg2 = ((U->C.S_C.EVA*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs*val;
- if(U->C.A->D->type == 4) mostDmg2 = ((U->C.S_C.CAP*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs*val;
+ 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
+ - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
+ 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
+ - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
+ 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
+ - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
+ 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
+ - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
+ 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
+ - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD*val;
}
double val2 = log(3+U2->C.S_C.MP/64);
mostDmg2 = mostDmg2*val2;
}
if(U->C.A->D){
- if(U->C.A->D->fix == 2){
- mostDmg2 = mostDmg2/2 + U->C.S_C.HIT/2;
-
- }else if(U->C.A->D->fix == 1){
- mostDmg2 = mostDmg2/2 + (U->C.S_C.ATK/2 + U->C.S_C.HIT)/2/2;
-
- }else if(U->C.A->D->fix == 0){
- mostDmg2 = mostDmg2/2 + U->C.S_C.ATK/2;
- }}
+ if(U->C.A->D->fix == 2){
+ 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;
+
+ 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;
+ 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;
+ 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;
+ 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;
+ 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;
+
+
+ }else if(U->C.A->D->fix == 1){
+ 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;
+
+ 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;
+ 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;
+ 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;
+ 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;
+ 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;
+
+ }else if(U->C.A->D->fix == 0){
+
+ }
+ }
+
U2A = U->C.A;
UNIT *oops = U;
double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
if(hi < 0) hi = 0;
- hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi+1)*hit2/hit*10;
+ hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
if(battleDod1Flag) hit /= 2;
hit = floor(hit);
for(int i = 0;i < mostNum;i++){
U->C.A = U->C.A->next;
}
- if(U->C.A->extent == 0){
+ if(U->C.A->extent == 0 && mostNum > 0){
U->C.A = aTop2;
crCAL1 = 0;
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){
- }else while(U->C.A){
- U->C.A = U->C.A->next;
- crCAL1++;
-
+ }else{
+
}
U->C.A = aTop2;
}
double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
if(hi < 0) hi = 0;
- hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi+1)*hit2/hit*10;
+ hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
if(battleDod2Flag) hit = hit / 2;
hit = floor(hit);
double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
if(hi < 0) hi = 0;
- hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi+1)*hit2/hit*10;
+ hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
if(battleDod1Flag) hit /= 2;
hit = floor(hit);
-(void)DisplayMessage{
-
+ battleVeryBegunFlag = true;
if(AVpreview){
if(AVpreview.rate > 0){
- [battleWindow setIgnoresMouseEvents:YES];
+ //[battleWindow setIgnoresMouseEvents:YES];
[battleWindow makeKeyAndOrderFront:nil];
//NSLog(@"%g", AVpreview.rate);
return;
}else{
- [battleWindow setIgnoresMouseEvents:NO];
+ //[battleWindow setIgnoresMouseEvents:NO];
//NSLog(@"%g", AVpreview.rate);
AVpreview = NULL;
if(avPlayerFlag1){
};
static bool extentbool = false;
static bool extentbool2 = false;
+
+
+ if(cpuAtkExtendFlag){
+ extentBattleFlag2 = true;
+ }
+
if(!extentbool && extentBattleFlag2){
extentbool = true;
extentMPcostFlag = false;
DUNnum = 1;
}
- if(!extentBattleFlag2){
- DUNnum = 1;
- }
switch (messageProcess) {
case 0:
if(bLoopFlag) break;
[battleDialog setStringValue:@"攻撃開始!"];
+ if(!baseDistanceCompFlag)
+ break;
bLoopFlag = true;
messageProcess++;
+ DUNnum = 1;
break;
case 1:
+ if(bLoopFlag) break;
+
+
+ if(DUNnum > 1){
+
+
+ btHitExtendFlag1 = true;
+
+ if(btHitExtendProc1 >= 3){
+ btHitExtendProc1 = 0;
+ }
+ }
+
+ BTunitAttackFlag1 = true;
+ if(battleDef1Flag || battleDod1Flag)
+ BTunitAttackFlag1 = false;
+
U = UTop;
while (!(DUN[DUNnum] == U->number)) {
U = U->next;
U = UTop;
if(bLoopFlag) break;
+
U = UTop;
while (!(AUN[1] == U->number)) {
U = U->next;
effCun = U;
attackCR = U->C.A;
+ if(btAttackMoveValue1 < 2 && BTunitAttackFlag1){
+
+ message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.name, U->C.A->name]];
+
+ [battleDialog setStringValue:message];
+ U->C.A = aTop;
+ U = UTop;
+
+ return;
+ }
+
+ if(btHitExtendFlag1 && btHitExtendProc1 < 2){
+
+
+
+
+ U->C.A = aTop;
+ U = UTop;
+
+ return;
+ }
+
if(!battleDef1Flag && !battleDod1Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.name, U->C.A->name]];
[mplayer2 setStringValue:MC[chipNum[U2->x][U2->y]].name];
[rplayer2 setStringValue:[NSString stringWithFormat:@"地形効果 %d%", MC[chipNum[U2->x][U2->y]].dmgfix]];
- if(!avPlayerFlag1 && ![U->C.A->AN.movName isEqualToString:@""] && ![U->C.A->AN.movName isEqualToString:@"(null)"] && U->C.A->AN.movName != NULL && DUNnum == 1){
+ 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){
[[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
NSString *path = @"data/AttackList/ALdata";
U->C.A = aTop;
U = UTop;
return;
- }else if(!avPlayerFlag1 && !animationFlag1 && U->C.A->AN.ANI && !animationFlag3 && DUNnum == 1){
+ }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag1 && U->C.A->AN.ANI && !animationFlag3 && DUNnum == 1){
[battleDialog setStringValue:message];
animationFlag1 = true;
oopsIsRight = oopsIsRight/100;
double val;
if(!U2->C.aura && U->C.A->D){
- 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
- - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs;
- 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
- - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs;
- 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
- - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs;
- 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
- - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs;
- if(U->C.A->D->type == 4) dmg = ((U->C.S_C.CAP*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs;
+ 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
+ - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
+ 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
+ - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
+ 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
+ - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
+ 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
+ - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
+ 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
+ - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
}else if(U->C.A->D){
val = 1/log(3+U2->C.S_C.MP/64);
- 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
- - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs*val;
- 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
- - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs*val;
- 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
- - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs*val;
- 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
- - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs*val;
- if(U->C.A->D->type == 4) dmg = ((U->C.S_C.CAP*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs*val;
+ 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
+ - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
+ 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
+ - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
+ 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
+ - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
+ 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
+ - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
+ 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
+ - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
if(U->C.A->D->type == 5) dmg = U->C.A->totalD*val;
}
double val2 = log(3+U2->C.S_C.MP/64);
if(U->C.A->D){
if(U->C.A->D->fix == 2){
- dmg = dmg/2 + U->C.S_C.HIT/2;
+ 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;
+
+ 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;
+ 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;
+ 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;
+ 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;
+ 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;
+
}else if(U->C.A->D->fix == 1){
- dmg = dmg/2 + (U->C.S_C.ATK/2 + U->C.S_C.HIT)/2/2;
+ 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;
+
+ 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;
+ 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;
+ 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;
+ 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;
+ 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;
}else if(U->C.A->D->fix == 0){
- dmg = dmg/2 + U->C.S_C.ATK/2;
- }}
+
+ }
+ }
costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
if(extentMPcostFlag && extentBattleFlag2){
double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
if(hi < 0) hi = 0;
- hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi+1)*hit2/hit*10;
+ hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
if(hit > 100) hit = 100;
if(hit < 0) hit = 0;
if(U2A->D->sort == 1){
}
if(grazeFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
- if(!healFlag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->C.name, dmg]];
- else message = [message stringByAppendingString:[NSString stringWithFormat:@"%@はHPが%g回復した!", U->C.name, dmg]];
+ if(!healFlag) {
+ message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->C.name, dmg]];
+ btHitFlag1 = true;
+ }
+ else {
+ message = [message stringByAppendingString:[NSString stringWithFormat:@"%@はHPが%g回復した!", U->C.name, dmg]];
+ btHitFlag1 = false;
+ }
}else if(battleDef1Flag){
message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->C.name]];
+ btHitFlag1 = false;
}else if(battleDod1Flag){
message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->C.name]];
-
+ btHitFlag1 = false;
}else{
message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->C.name]];
+ btHitFlag1 = false;
}
[battleDialog setStringValue:message];
};
messageProcess++;
}else if(extentBattleFlag2){
+ if(btHitExtendProc1 == 2)
+ btHitExtendProc1 = 3;
+ if(btHitExtendProc1 >= 2)
+ btHitExtendFix1 = 1;
+
+ btHitFlagCnt1 = 0;
DUNnum++;
messageProcess = 1;
- if(DUN[DUNnum] == -1){
- DUNnum = 1;
+ if(DUN[DUNnum] <= 0){
messageProcess++;
messageProcess++;
extentBattleFlag2 = false;
case 2:
+ if(bLoopFlag) break;
+ BTunitAttackFlag1 = false;
+ BTunitAttackFlag2 = true;
+ if(battleDef2Flag || battleDod2Flag)
+ BTunitAttackFlag2 = false;
+ btHitFlag1 = false;
+
U = UTop;
while (!(DUN[1] == U->number)) {
while(U->C.A){
mpCost = floor(U->C.A->MP + U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
if(!U2->C.aura && U->C.A->D){
- if(U->C.A->D->type == 0) mostDmg2 = ((U->C.S_C.ATK*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs;
- if(U->C.A->D->type == 1) mostDmg2 = ((U->C.S_C.DEF*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs;
- if(U->C.A->D->type == 2) mostDmg2 = ((U->C.S_C.ACU*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs;
- if(U->C.A->D->type == 3) mostDmg2 = ((U->C.S_C.EVA*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs;
- if(U->C.A->D->type == 4) mostDmg2 = ((U->C.S_C.CAP*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs;
+ 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
+ - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
+ 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
+ - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
+ 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
+ - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
+ 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
+ - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
+ 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
+ - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD;
}else if(U->C.A->D){
val = 1/log(3+U2->C.S_C.MP/64);
- if(U->C.A->D->type == 0) mostDmg2 = ((U->C.S_C.ATK*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs*val;
- if(U->C.A->D->type == 1) mostDmg2 = ((U->C.S_C.DEF*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs*val;
- if(U->C.A->D->type == 2) mostDmg2 = ((U->C.S_C.ACU*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs*val;
- if(U->C.A->D->type == 3) mostDmg2 = ((U->C.S_C.EVA*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs*val;
- if(U->C.A->D->type == 4) mostDmg2 = ((U->C.S_C.CAP*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs*val;
+ 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
+ - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
+ 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
+ - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
+ 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
+ - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
+ 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
+ - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor)*asItIs*val;
+ 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
+ - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
if(U->C.A->D->type == 5) mostDmg2 = U->C.A->totalD*val;
}
double val2 = log(3+U2->C.S_C.MP/64);
mostDmg2 = mostDmg2*val2;
}
if(U->C.A->D){
- if(U->C.A->D->fix == 2){
- mostDmg2 = mostDmg2/2 + U->C.S_C.HIT/2;
-
- }else if(U->C.A->D->fix == 1){
- mostDmg2 = mostDmg2/2 + (U->C.S_C.ATK/2 + U->C.S_C.HIT)/2/2;
- }else if(U->C.A->D->fix == 0){
- mostDmg2 = mostDmg2/2 + U->C.S_C.ATK/2;
- }}
+ if(U->C.A->D->fix == 2){
+ 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;
+
+ 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;
+ 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;
+ 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;
+ 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;
+ 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;
+
+
+ }else if(U->C.A->D->fix == 1){
+ 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;
+
+ 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;
+ 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;
+ 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;
+ 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;
+ 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;
+
+ }else if(U->C.A->D->fix == 0){
+
+ }
+ }
U2A = U->C.A;
UNIT *oops = U;
if(!U->C.A){
U->C.A = aTop2;
U = UTop;
+ BTunitAttackFlag2 = false;
message = [message stringByAppendingString:[NSString stringWithFormat:@"射程外\n"]];
goto SKIP1;
}
effCun = U;
attackCR2 = U->C.A;
+
+ if(btAttackMoveValue2 < 2 && BTunitAttackFlag2){
+
+ message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.name, U->C.A->name]];
+
+ [battleDialog setStringValue:message];
+ U->C.A = aTop2;
+ U = UTop;
+
+ return;
+ }
+
if(!battleDef2Flag && !battleDod2Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.name, U->C.A->name]];
- if(!avPlayerFlag2 && ![U->C.A->AN.movName isEqualToString:@""] && ![U->C.A->AN.movName isEqualToString:@"(null)"] && U->C.A->AN.movName != NULL){
+ if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag2 && ![U->C.A->AN.movName isEqualToString:@""] && ![U->C.A->AN.movName isEqualToString:@"(null)"] && U->C.A->AN.movName != NULL){
[[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
NSString *path = @"data/AttackList/ALdata";
U->C.A = aTop2;
U = UTop;
return;
- }else if(!avPlayerFlag1 && !animationFlag2 && U->C.A->AN.ANI && !animationFlag3){
+ }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag2 && U->C.A->AN.ANI && !animationFlag3){
animationFlag2 = true;
if(!U2->C.aura && U->C.A->D){
- 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
- - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs;
- 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
- - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs;
- 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
- - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs;
- 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
- - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs;
- if(U->C.A->D->type == 4) dmg = ((U->C.S_C.CAP*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs;
+ 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
+ - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
+ 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
+ - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
+ 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
+ - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
+ 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
+ - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
+ 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
+ - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs;
if(U->C.A->D->type == 5) dmg = U->C.A->totalD;
}else if(U->C.A->D){
double val = val = 1/log(3+U2->C.S_C.MP/64);
- 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
- - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs*val;
- 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
- - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs*val;
- 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
- - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs*val;
- 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
- - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs*val;
- if(U->C.A->D->type == 4) dmg = ((U->C.S_C.CAP*U->C.S_C.HP/U->C.S_M.HP+urSupposedToGet)*oopsIsRight
- - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2)*asItIs*val;
+ 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
+ - U2->C.S_C.DEF*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
+ 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
+ - U2->C.S_C.ATK*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
+ 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
+ - U2->C.S_C.EVA*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
+ 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
+ - U2->C.S_C.ACU*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
+ 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
+ - U2->C.S_C.CAP*U2->C.S_C.HP/U2->C.S_M.HP/2*U2->C.S_C.vigor/100)*asItIs*val;
if(U->C.A->D->type == 5) dmg = U->C.A->totalD*val;
}
val2 = log(3+U2->C.S_C.MP/64);
dmg = dmg*val2;
}
if(U->C.A->D){
- if(U->C.A->D->fix == 2){
- dmg = dmg/2 + U->C.S_C.HIT/2;
-
- }else if(U->C.A->D->fix == 1){
- dmg = dmg/2 + (U->C.S_C.ATK/2 + U->C.S_C.HIT)/2/2;
-
- }else if(U->C.A->D->fix == 0){
- dmg = dmg/2 + U->C.S_C.ATK/2;
- }}
+ if(U->C.A->D->fix == 2){
+ 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;
+
+ 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;
+ 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;
+ 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;
+ 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;
+ 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;
+
+
+ }else if(U->C.A->D->fix == 1){
+ 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;
+
+ 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;
+ 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;
+ 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;
+ 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;
+ 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;
+
+ }else if(U->C.A->D->fix == 0){
+
+ }
+ }
costMP = U->C.A->MP + floor(U->C.A->pMP*U->C.S_M.MP/100 + 0.5);
U->C.S_C.MP -= costMP;
hi = U->C.S_C.LUK - U2->C.S_C.LUK;
if(hi < 0) hi = 0;
- hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi+1)*hit2/hit*10;
+ hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
if(hit > 100) hit = 100;
if(hit < 0) hit = 0;
message = [message stringByAppendingString:[NSString stringWithFormat:@"かすりヒット!\n"]];
message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は%gのダメージを受けた!", U->C.name, dmg]];
+ btHitFlag2 = true;
}else if(battleDef2Flag){
message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は身構えている", U->C.name]];
-
+ btHitFlag2 = false;
}else if(battleDod2Flag){
message = [message stringByAppendingString:[NSString stringWithFormat:@"%@は様子をうかがっている", U->C.name]];
-
+ btHitFlag2 = false;
}else{
message = [message stringByAppendingString:[NSString stringWithFormat:@"ミス!%@はダメージを受けていない!", U->C.name]];
+ btHitFlag2 = false;
}
SKIP1:
[battleDialog setStringValue:message];
break;
case 3:
if(bLoopFlag) break;
+ if(cpuAImodeflag && !cpuTurnEndFlag) {
+ wtRdy = false;
+ wtRdy2 = false;
+ }
battleSetUp = false;
battleSetFlag = false;
battleFlag = false;
cpuOMFGmoveATKfixFlag = false;
unitNoMoveFlag = false;
UA = NULL;
- wtRdy = false;
Utarget = NULL;
+ CPUmostDmgChoice = false;
+ //おまんちん
cpuIsAttackingFlag = false;
for(int g = 0;g < chipWidth;g++){
for(int k = 0;k < chipHeight;k++){
g_attackRangeExtent[g][k] = 0;
}
}
+
+ btDistanceX1 = 0;
+ btDistanceX2 = 0;
+ BTunitAttackFlag1 = false;
+ BTunitAttackFlag2 = false;
+ BTunitAttackFlag1 = false;
+ btAttackMoveValue1 = 0;
+ btAttackMoveValue2 = 0;
+ btHitFlag1 = false;
+ btHitFlag2 = false;
+ btHitFlagCnt1 = 0;
+ btHitFlagCnt2 = 0;
+ btHitExtendFlag1 = false;
+ btHitExtendProc1 = 0;
+ btHitExtendMove1 = 0;
+ btHitExtendFlag2 = false;
+ btHitExtendProc2 = 0;
+ btHitExtendMove2 = 0;
+ baseDistanceCompFlag = false;
+ battleVeryBegunFlag = false;
break;
default:
if(!battleDef1Flag && !battleDod1Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->CL.name, U->CL.A->name]];
- if(!avPlayerFlag1 && ![U->CL.A->AN.movName isEqualToString:@""] && ![U->CL.A->AN.movName isEqualToString:@"(null)"] && U->CL.A->AN.movName != NULL){
+ if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && ![U->CL.A->AN.movName isEqualToString:@""] && ![U->CL.A->AN.movName isEqualToString:@"(null)"] && U->CL.A->AN.movName != NULL){
[[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
NSString *path = @"data/AttackList/ALdata";
U = UTop;
return;
- }else if(!avPlayerFlag1 && !animationFlag1 && U->CL.A->AN.ANI && !animationFlag3){
+ }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag1 && U->CL.A->AN.ANI && !animationFlag3){
[battleDialog setStringValue:message];
animationFlag1 = true;
if(!battleDef2Flag && !battleDod2Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->CL.name, U->CL.A->name]];
- if(!avPlayerFlag2 && ![U->CL.A->AN.movName isEqualToString:@""] && ![U->CL.A->AN.movName isEqualToString:@"(null)"] && U->CL.A->AN.movName != NULL){
+ if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag2 && ![U->CL.A->AN.movName isEqualToString:@""] && ![U->CL.A->AN.movName isEqualToString:@"(null)"] && U->CL.A->AN.movName != NULL){
[[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
NSString *path = @"data/AttackList/ALdata";
U->CL.A = aTop2;
U = UTop;
return;
- }else if(!avPlayerFlag1 && !animationFlag2 && U->CL.A->AN.ANI && !animationFlag3){
+ }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag2 && U->CL.A->AN.ANI && !animationFlag3){
animationFlag2 = true;
if(!battleDef1Flag && !battleDod1Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->CL.name, U->CL.A->name]];
- if(!avPlayerFlag1 && ![U->CL.A->AN.movName isEqualToString:@""] && ![U->CL.A->AN.movName isEqualToString:@"(null)"] && U->CL.A->AN.movName != NULL){
+ if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && ![U->CL.A->AN.movName isEqualToString:@""] && ![U->CL.A->AN.movName isEqualToString:@"(null)"] && U->CL.A->AN.movName != NULL){
[[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
NSString *path = @"data/AttackList/ALdata";
U = UTop;
return;
- }else if(!avPlayerFlag1 && !animationFlag1 && U->CL.A->AN.ANI && !animationFlag3){
+ }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag1 && U->CL.A->AN.ANI && !animationFlag3){
[battleDialog setStringValue:message];
animationFlag1 = true;
double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
if(hi < 0) hi = 0;
- hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi+1)*hit2/hit*10;
+ hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
if(hit > 100) hit = 100;
if(U2A->D->sort == 1){
hit = 100;
if(!battleDef2Flag && !battleDod2Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->C.name, U->C.A->name]];
- if(!avPlayerFlag2 && ![U->C.A->AN.movName isEqualToString:@""] && ![U->C.A->AN.movName isEqualToString:@"(null)"] && U->C.A->AN.movName != NULL){
+ if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag2 && ![U->C.A->AN.movName isEqualToString:@""] && ![U->C.A->AN.movName isEqualToString:@"(null)"] && U->C.A->AN.movName != NULL){
[[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
NSString *path = @"data/AttackList/ALdata";
U->C.A = aTop2;
U = UTop;
return;
- }else if(!avPlayerFlag1 && !animationFlag2 && U->C.A->AN.ANI && !animationFlag3){
+ }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag2 && U->C.A->AN.ANI && !animationFlag3){
animationFlag2 = true;
[mplayer2 setStringValue:MC[chipNum[U2->x][U2->y]].name];
[rplayer2 setStringValue:[NSString stringWithFormat:@"地形効果 %d%", MC[chipNum[U2->x][U2->y]].dmgfix]];
- if(!avPlayerFlag1 && ![U->C.A->AN.movName isEqualToString:@""] && ![U->C.A->AN.movName isEqualToString:@"(null)"] && U->C.A->AN.movName != NULL && DUN[DUNnum] == 1){
+ 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){
[[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
NSString *path = @"data/AttackList/ALdata";
U->C.A = aTop;
U = UTop;
return;
- }else if(!avPlayerFlag1 && !animationFlag1 && U->C.A->AN.ANI && !animationFlag3 && DUN[DUNnum] == 1){
+ }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag1 && U->C.A->AN.ANI && !animationFlag3 && DUN[DUNnum] == 1){
[battleDialog setStringValue:message];
animationFlag1 = true;
}else if(extentBattleFlag2){
DUNnum++;
messageProcess = 1;
- if(DUN[DUNnum] == -1){
+ if(DUN[DUNnum] <= 0){
DUNnum = 1;
messageProcess++;
messageProcess++;
if(!U->CL.A){
U->CL.A = aTop2;
U = UTop;
+
message = [message stringByAppendingString:[NSString stringWithFormat:@"射程外\n"]];
goto SKIP1;
}
if(!battleDef2Flag && !battleDod2Flag) message = [message stringByAppendingString:[NSString stringWithFormat:@"%@の%@\n", U->CL.name, U->CL.A->name]];
- if(!avPlayerFlag2 && ![U->CL.A->AN.movName isEqualToString:@""] && ![U->CL.A->AN.movName isEqualToString:@"(null)"] && U->CL.A->AN.movName != NULL){
+ if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag2 && ![U->CL.A->AN.movName isEqualToString:@""] && ![U->CL.A->AN.movName isEqualToString:@"(null)"] && U->CL.A->AN.movName != NULL){
[[NSFileManager defaultManager] changeCurrentDirectoryPath:[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]];
NSString *path = @"data/AttackList/ALdata";
U->CL.A = aTop2;
U = UTop;
return;
- }else if(!avPlayerFlag1 && !animationFlag2 && U->CL.A->AN.ANI && !animationFlag3){
+ }else if(!battleDef1Flag && !battleDod1Flag && !avPlayerFlag1 && !animationFlag2 && U->CL.A->AN.ANI && !animationFlag3){
animationFlag2 = true;
double hi = U->C.S_C.LUK - U2->C.S_C.LUK;
if(hi < 0) hi = 0;
- hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi+1)*hit2/hit*10;
+ hit = 60 + hit/hit2*10 - hit2/hit*10 + hitFix - log(hi/10+1)*hit2/hit*10;
if(hit > 100) hit = 100;
battleDod1Flag = false;
-(void)setCommandPanel{
- if(buildSkillFlag) cIncludeCreateFlag = true;
- else cIncludeCreateFlag = false;
- if(summonSkillFlag) cIncludeSummonFlag = true;
- else cIncludeSummonFlag = false;
+ menuPoint.x = [mapWindow frame].origin.x + possionLocalX*32;
+ menuPoint.y = [mapWindow frame].origin.y + possionLocalY*32 - 180;
- menuPoint.x = [mapWindow frame].origin.x + 200;
- menuPoint.y = [mapWindow frame].origin.y + 200;
+ if(buildSkillFlag) {
+ cIncludeCreateFlag = true;
+ menuPoint.y -= 20;
+ }else cIncludeCreateFlag = false;
+ if(summonSkillFlag) {
+ cIncludeSummonFlag = true;
+ menuPoint.y -= 20;
+ }else cIncludeSummonFlag = false;
int plusBtnValue = 0;
if(cIncludeCreateFlag && cIncludeSummonFlag){
}
}
+ if(P[0].resource < 0) P[0].resource = 0;
+ if(P[1].resource < 0) P[1].resource = 0;
+ if(P[2].resource < 0) P[2].resource = 0;
+
+ if(P[0].food < 0) P[0].food = 0;
+ if(P[1].food < 0) P[1].food = 0;
+ if(P[2].food < 0) P[2].food = 0;
+
+ if(P[0].money < 0) P[0].money = 0;
+ if(P[1].money < 0) P[1].money = 0;
+ if(P[2].money < 0) P[2].money = 0;
+
MS0->succeessfulFlag = true;
MS0->endFlag = true;
return MS0;
U->joinArmyFromNext = true;
U->persuasion = true;
}
+ if(MF[MFselectedRow+1].MS.playerSet1 == 2)
+ U->CPU = true;
+
}
if(unitTeam[x][y] == 2 || unitTeam[x][y] == 3){
U->team = 2;
U->joinArmyFromNext = true;
U->persuasion = true;
}
+ if(MF[MFselectedRow+1].MS.playerSet2 == 2)
+ U->CPU = true;
+
}
if(unitTeam[x][y] == 4 || unitTeam[x][y] == 5){
U->team = 1;
U->joinArmyFromNext = true;
U->persuasion = true;
}
+ U->CPU = true;
}
if(unitTeam[x][y] == -1){
U->team = -1;
U->joinArmyFromNext = false;
U->persuasion = true;
}
+ U->CPU = true;
}
unitNum[x][y] = u.chipNumb;
[self SetUnitStatus:unitNum[x][y]];
return self;
}
+-(void)scrollWheel:(NSEvent *)theEvent{
+
+ theEvent = NULL;
+
+}
+
-(void)EventLoopBV:(NSTimer*)timer{
+ [battleView setNeedsDisplay:YES];
+
static int aniFrame = 0;
if(animationFlag3){
[self setNeedsDisplay:YES];
+
+
}
-(void)DrawImage:(NSImage*)image x:(float)x y:(float)y a:(float)a{