diff --git a/che_close/process_war.php b/che_close/process_war.php old mode 100644 new mode 100755 index e69f014..cfa39c4 --- a/che_close/process_war.php +++ b/che_close/process_war.php @@ -1,12 +1,111 @@ '0' and rice>round(crew/100) and ((train>=60 and atmos>=60 and mode=1) or (train>=80 and atmos>=80 and mode=2)) order by sum desc"; + return MYDB_num_rows(MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"")); +} + +function getBonusAtmosBasedOnItem($connect, $general) { + $bonusAtmos = 0; + if($general[item] == 3) { + //탁주 사용 + $bonusAtmos += 3; + $query = "update general set item=0 where no='$general[no]'"; + MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); + $log[count($log)] = "".getItemName($general[item])."(을)를 사용!"; + $general[item] = 0; + } elseif($general[item] >= 14 && $general[item] <= 16) { + //의적주, 두강주, 보령압주 사용 + $bonusAtmos += 5; + } elseif($general[item] >= 19 && $general[item] <= 20) { + //춘화첩, 초선화 사용 + $bonusAtmos += 7; + } + return $bonusAtmos; +} + +function getBonusTrainBasedOnItem($connect, $general) { + $bonusTrain = 0; + if($general[item] == 4) { + //청주 사용 + $bonusTrain += 3; + $query = "update general set item=0 where no='$general[no]'"; + MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); + $log[count($log)] = "".getItemName($general[item])."(을)를 사용!"; + $general[item] = 0; + } elseif($general[item] >= 12 && $general[item] <= 13) { + //과실주, 이강주 사용 + $bonusTrain += 5; + } elseif($general[item] >= 17 && $general[item] <= 18) { + //철벽서, 단결도 사용 + $bonusTrain += 7; + } + return $bonusTrain; +} + +function getBonusAtmosBasedOnCity($connect, $city, $nation) { + $bonusAtmos = 0; + // 수도 보정 + if($nation[capital] == $city[city]) { + $bonusAtmos += 5; + } + // 출병도시가 진이면 공격자 공격보정 + if($city[level] == 2) { + $bonusAtmos += 5; + } + + return bonusAtmos; +} + +function getBonusTrainBasedOnCity($connect, $city) { + $bonusTrain = 0; + // 방어도시가 수진이면 방어자 방어보정 + if($city[level] == 1) { + $bonusTrain += 5; + } + // 방어도시가 관이면 방어자 방어보정 + if($city[level] == 3) { + $bonusTrain += 5; + } + + return bonusTrain; +} + function processWar($connect, $general, $city) { global $_armperphase, $_maximumatmos, $_maximumtrain, $_dexLimit, $_basegold, $_baserice; $date = substr($general[turntime],11,5); - $query = "select * from game where no='1'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $game = MYDB_fetch_array($result); + $game = getGame($connect); $deadAmount[att] = 0; $deadAmount[def] = 0; @@ -16,83 +115,25 @@ function processWar($connect, $general, $city) { // 특기보정 : 돌격 if($general[special2] == 60) { $warphase += 1; } - $genAtmos = 0; - if($general[item] == 3) { - //탁주 사용 - $genAtmos += 3; - $query = "update general set item=0 where no='$general[no]'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $log[count($log)] = "".getItemName($general[item])."(을)를 사용!"; - $general[item] = 0; - } elseif($general[item] >= 14 && $general[item] <= 16) { - //의적주, 두강주, 보령압주 사용 - $genAtmos += 5; - } elseif($general[item] >= 19 && $general[item] <= 20) { - //춘화첩, 초선화 사용 - $genAtmos += 7; - } - $genTrain = 0; - if($general[item] == 4) { - //청주 사용 - $genTrain += 3; - $query = "update general set item=0 where no='$general[no]'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $log[count($log)] = "".getItemName($general[item])."(을)를 사용!"; - $general[item] = 0; - } elseif($general[item] >= 12 && $general[item] <= 13) { - //과실주, 이강주 사용 - $genTrain += 5; - } elseif($general[item] >= 17 && $general[item] <= 18) { - //철벽서, 단결도 사용 - $genTrain += 7; - } + $genAtmos = getBonusAtmosBasedOnItem($connect, $general); + $genAtmos += getBonusAtmosBasedOnCity($connect, $originCity, $nation); + + $genTrain = getBonusTrainBasedOnItem($connect, $general); + $oppTrain = getBonusTrainBasedOnCity($connect, $city); // 우선 스케일링 $city[def] *= 10; $city[wall] *= 10; - $query = "select level from city where city='$general[city]'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $originCity = MYDB_fetch_array($result); - - $query = "select nation,level,name,history,capital,tech,type from nation where nation='$general[nation]'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $nation = MYDB_fetch_array($result); - - $query = "select nation,level,name,history,rice,capital,tech,type from nation where nation='$city[nation]'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $destnation = MYDB_fetch_array($result); - - //장수수 구함 - $query = "select no from general where nation='$general[nation]'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $gencount = MYDB_num_rows($result); - if($gencount < 10) $gencount = 10; - //장수수 구함 - $query = "select no from general where nation='$destnation[nation]'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $destgencount = MYDB_num_rows($result); - if($destgencount < 10) $destgencount = 10; - - $genAtmosBonus = 0; $genTrainBonus = 0; - $oppAtmosBonus = 0; $oppTrainBonus = 0; - //공격자 수도보정 - if($nation[capital] == $general[city]) { $genAtmosBonus += 5; } - //방어자 수도보정 - //if($destnation[capital] == $city[city]) { $oppTrainBonus += 5; } - //관,진,수진 보정 - if($city[level] == 1) { $oppTrainBonus += 5; } // 방어도시가 수진이면 방어자 방어보정 - if($originCity[level] == 2) { $genAtmosBonus += 5; } // 출병도시가 진이면 공격자 공격보정 - if($city[level] == 3) { $oppTrainBonus += 5; } // 방어도시가 관이면 방어자 방어보정 + $originCity = getOriginCity($connect, $general); + $nation = getNation($connect, $general); + $destnation = getDestination($connect, $city); + $gencount = getGeneralCount($connect, $nation[nation]); + $destgencount = getGeneralCount($connect, $destnation[nation]); + $opposecount = getOpposeCount($connect, $city); $alllog[count($alllog)] = "●{$game[month]}월:$nation[name]$general[name](이)가 $city[name](으)로 진격합니다."; $log[count($log)] = "●{$game[month]}월:$city[name](으)로 진격합니다. <1>$date"; -// $history[count($history)] = "●{$game[year]}년 {$game[month]}월:【전투】$nation[name](이)가 $destnation[name]$city[name](으)로 진격합니다."; - - // 목표 도시내에 목표 국가 소속 장수 중, 병사가 있는 능력치합+병사수 순으로 훈,사 60, 80 이상 - $query = "select no,name,turntime,personal,special2,crew,crewtype,atmos,train,intel,intel2,book,power,power2,weap,injury,leader,leader2,horse,item,explevel,level,rice,leader+power+intel+weap+horse+book+crew/100 as sum,dex0,dex10,dex20,dex30,dex40 from general where city='$city[city]' and nation='$city[nation]' and nation!=0 and crew>'0' and rice>round(crew/100) and ((train>=60 and atmos>=60 and mode=1) or (train>=80 and atmos>=80 and mode=2)) order by sum desc"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $opposecount = MYDB_num_rows($result); $exp = 0; //병사 소진 시킨 만큼 $opexp = 0; @@ -160,8 +201,8 @@ function processWar($connect, $general, $city) { if($myCrew <= 0) { $myCrew = rand() % 90 + 10; } //훈련 사기따라 - $myCrew = getCrew($myCrew, $game[city_rate]+$oppAtmosBonus, CharTrain($general[train]+$genTrain+$genTrainBonus, $general[personal])); - $cityCrew = getCrew($cityCrew, CharAtmos($general[atmos]+$genAtmos+$genAtmosBonus, $general[personal]), $game[city_rate]+$oppTrainBonus); + $myCrew = getCrew($myCrew, $game[city_rate], CharTrain($general[train]+$genTrain, $general[personal])); + $cityCrew = getCrew($cityCrew, CharAtmos($general[atmos]+$genAtmos, $general[personal]), $game[city_rate]+$oppTrain); //숙련도 따라 $genDexAtt = getGenDex($general, $general[crewtype]); $genDexDef = getGenDex($general, 40); @@ -501,6 +542,7 @@ function processWar($connect, $general, $city) { //춘화첩, 초선화 사용 $oppAtmos += 7; } + $oppTrain = 0; if($oppose[item] == 4) { //청주 사용 @@ -608,8 +650,8 @@ function processWar($connect, $general, $city) { if($myCrew <= 0) { $myCrew = rand() % 90 + 10; } if($opCrew <= 0) { $opCrew = rand() % 90 + 10; } //훈련 사기따라 - $myCrew = getCrew($myCrew, CharAtmos($oppose[atmos]+$oppAtmos+$oppAtmosBonus, $oppose[personal]), CharTrain($general[train]+$genTrain+$genTrainBonus, $general[personal])); - $opCrew = getCrew($opCrew, CharAtmos($general[atmos]+$genAtmos+$genAtmosBonus, $general[personal]), CharTrain($oppose[train]+$oppTrain+$oppTrainBonus, $oppose[personal])); + $myCrew = getCrew($myCrew, CharAtmos($oppose[atmos]+$oppAtmos, $oppose[personal]), CharTrain($general[train]+$genTrain, $general[personal])); + $opCrew = getCrew($opCrew, CharAtmos($general[atmos]+$genAtmos, $general[personal]), CharTrain($oppose[train]+$oppTrain, $oppose[personal])); //숙련도 따라 $genDexAtt = getGenDex($general, $general[crewtype]); $genDexDef = getGenDex($general, $oppose[crewtype]); @@ -905,8 +947,8 @@ function processWar($connect, $general, $city) { // 특기보정: 돌격 if($oppose[crewtype] == 43 && $general[special2] != 60) { // 목우 $r = 0; - $r += $oppose[atmos] + $oppAtmos + $oppAtmosBonus; - $r += $oppose[train] + $oppTrain + $oppTrainBonus; + $r += $oppose[atmos] + $oppAtmos; + $r += $oppose[train] + $oppTrain; $ratio = rand() % 400; // 최대 50% 저지 if($ratio < $r && $opAvoid == 1) { $batlog[count($batlog)] = "저지당했다!";