TM 서버 밸런스 패치 이식

This commit is contained in:
2018-04-13 03:41:39 +09:00
parent 0b17a289c8
commit 02f90842fe
7 changed files with 72 additions and 71 deletions
+2 -1
View File
@@ -188,7 +188,7 @@ function getGenDex($general, $type) {
return $general["dex{$type}"]; return $general["dex{$type}"];
} }
function addGenDex($no, $type, $exp) { function addGenDex($no, $atmos, $train, $type, $exp) {
$db = DB::db(); $db = DB::db();
$connect=$db->get(); $connect=$db->get();
@@ -196,6 +196,7 @@ function addGenDex($no, $type, $exp) {
$dexType = "dex{$type}"; $dexType = "dex{$type}";
if($type == 30) { $exp = Util::round($exp * 0.90); } //귀병은 90%효율 if($type == 30) { $exp = Util::round($exp * 0.90); } //귀병은 90%효율
elseif($type == 40) { $exp = Util::round($exp * 0.90); } //차병은 90%효율 elseif($type == 40) { $exp = Util::round($exp * 0.90); } //차병은 90%효율
$exp = Util::round($exp * ($atmos+$train) / 200); // 사기 + 훈련 / 200
$query = "update general set {$dexType}={$dexType}+{$exp} where no='$no'"; $query = "update general set {$dexType}={$dexType}+{$exp} where no='$no'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
+40 -34
View File
@@ -1,7 +1,6 @@
<?php <?php
namespace sammo; namespace sammo;
/** /**
* 장수의 통솔을 받아옴 * 장수의 통솔을 받아옴
* *
@@ -167,10 +166,10 @@ function setLeadershipBonus(&$general, $nationLevel){
function CriticalScore($score, $type) { function CriticalScore($score, $type) {
switch($type) { switch($type) {
case 0: case 0:
$ratio = (rand()%9 + 20)/10; // 2.0~2.8 $ratio = Util::randF()*0.8 + 2.2; // 2.2~3.0
break; break;
case 1: case 1:
$ratio = (rand()%3 + 2)/10; // 0.2~0.4 $ratio = Util::randF()*0.2 + 0.2; // 0.2~0.4
break; break;
} }
return Util::round($score * $ratio); return Util::round($score * $ratio);
@@ -230,20 +229,21 @@ function process_1(&$general, $type) {
// 군사 보정 // 군사 보정
if($general['level'] == 3 && $general['no'] == $city['gen2']) { $score *= 1.05; } if($general['level'] == 3 && $general['no'] == $city['gen2']) { $score *= 1.05; }
$rd = rand() % 100; $rd = Util::randF();
$r = CriticalRatioDomestic($general, 2); $r = CriticalRatioDomestic($general, 2);
// 특기보정 : 경작, 상재 // 특기보정 : 경작, 상재
if($type == 1 && $general['special'] == 1) { $r['succ'] += 10; $score *= 1.1; $admin['develcost'] *= 0.8; } if($type == 1 && $general['special'] == 1) { $r['succ'] += 0.1; $score *= 1.1; $admin['develcost'] *= 0.8; }
if($type == 2 && $general['special'] == 2) { $r['succ'] += 10; $score *= 1.1; $admin['develcost'] *= 0.8; } if($type == 2 && $general['special'] == 2) { $r['succ'] += 0.1; $score *= 1.1; $admin['develcost'] *= 0.8; }
//민심 반영
if($city['rate'] < 80) { $r['succ'] *= $city['rate'] / 80; }
//버그방지 //버그방지
if($score < 1) $score = 1; if($score < 1) $score = 1;
if($r['fail'] > $rd) { if($r['fail'] > $rd) {
$score = CriticalScore($score, 1); $score = CriticalScore($score, 1);
$log[] = "<C>●</>{$admin['month']}월:{$dtype}{$atype} <span class='ev_failed'>실패</span>하여 <C>$score</> 상승했습니다. <1>$date</>"; $log[] = "<C>●</>{$admin['month']}월:{$dtype}{$atype} <span class='ev_failed'>실패</span>하여 <C>$score</> 상승했습니다. <1>$date</>";
} elseif($city['rate'] >= 80 && $r['succ'] > $rd) { } elseif($r['succ'] + $r['fail'] > $rd) {
$score = CriticalScore($score, 0); $score = CriticalScore($score, 0);
$log[] = "<C>●</>{$admin['month']}월:{$dtype}{$atype} <S>성공</>하여 <C>$score</> 상승했습니다. <1>$date</>"; $log[] = "<C>●</>{$admin['month']}월:{$dtype}{$atype} <S>성공</>하여 <C>$score</> 상승했습니다. <1>$date</>";
} else { } else {
@@ -323,10 +323,12 @@ function process_3(&$general) {
// 군주, 참모, 모사 보정 // 군주, 참모, 모사 보정
if($general['level'] == 12 || $general['level'] == 11 || $general['level'] == 9 || $general['level'] == 7 || $general['level'] == 5) { $score *= 1.05; } if($general['level'] == 12 || $general['level'] == 11 || $general['level'] == 9 || $general['level'] == 7 || $general['level'] == 5) { $score *= 1.05; }
$rd = rand() % 100; $rd = Util::randF();
$r = CriticalRatioDomestic($general, 2); $r = CriticalRatioDomestic($general, 2);
// 특기보정 : 발명 // 특기보정 : 발명
if($general['special'] == 3) { $score *= 1.1; $admin['develcost'] *= 0.8; $r['succ'] += 10; } if($general['special'] == 3) { $r['succ'] += 0.1; $score *= 1.1; $admin['develcost'] *= 0.8; }
//민심 반영
if($city['rate'] < 80) { $r['succ'] *= $city['rate'] / 80; }
//버그방지 //버그방지
if($score < 1) $score = 1; if($score < 1) $score = 1;
@@ -334,7 +336,7 @@ function process_3(&$general) {
if($r['fail'] > $rd) { if($r['fail'] > $rd) {
$score = CriticalScore($score, 1); $score = CriticalScore($score, 1);
$log[] = "<C>●</>{$admin['month']}월:{$dtype}를 <span class='ev_failed'>실패</span>하여 <C>$score</> 상승했습니다. <1>$date</>"; $log[] = "<C>●</>{$admin['month']}월:{$dtype}를 <span class='ev_failed'>실패</span>하여 <C>$score</> 상승했습니다. <1>$date</>";
} elseif($city['rate'] >= 80 && $r['succ'] > $rd) { } elseif($r['succ'] + $r['fail'] > $rd) {
$score = CriticalScore($score, 0); $score = CriticalScore($score, 0);
$log[] = "<C>●</>{$admin['month']}월:{$dtype}를 <S>성공</>하여 <C>$score</> 상승했습니다. <1>$date</>"; $log[] = "<C>●</>{$admin['month']}월:{$dtype}를 <S>성공</>하여 <C>$score</> 상승했습니다. <1>$date</>";
} else { } else {
@@ -421,10 +423,10 @@ function process_4(&$general) {
// 시중 보정 // 시중 보정
if($general['level'] == 2 && $general['no'] == $city['gen3']) { $score *= 1.05; } if($general['level'] == 2 && $general['no'] == $city['gen3']) { $score *= 1.05; }
$rd = rand() % 100; $rd = Util::randF();
$r = CriticalRatioDomestic($general, 0); $r = CriticalRatioDomestic($general, 0);
// 특기보정 : 인덕 // 특기보정 : 인덕
if($general['special'] == 20) { $r['succ'] += 10; $admin['develcost'] *= 0.8; $score *= 1.1; } if($general['special'] == 20) { $r['succ'] += 0.1; $score *= 1.1; $admin['develcost'] *= 0.8; }
//버그방지 //버그방지
if($score < 1) $score = 1; if($score < 1) $score = 1;
@@ -432,7 +434,7 @@ function process_4(&$general) {
if($r['fail'] > $rd) { if($r['fail'] > $rd) {
$score = CriticalScore($score, 1); $score = CriticalScore($score, 1);
$log[] = "<C>●</>{$admin['month']}월:선정을 <span class='ev_failed'>실패</span>하여 민심이 <C>$score</> 상승했습니다. <1>$date</>"; $log[] = "<C>●</>{$admin['month']}월:선정을 <span class='ev_failed'>실패</span>하여 민심이 <C>$score</> 상승했습니다. <1>$date</>";
} elseif($r['succ'] > $rd) { } elseif($r['succ'] + $r['fail'] > $rd) {
$score = CriticalScore($score, 0); $score = CriticalScore($score, 0);
$log[] = "<C>●</>{$admin['month']}월:선정을 <S>성공</>하여 민심이 <C>$score</> 상승했습니다. <1>$date</>"; $log[] = "<C>●</>{$admin['month']}월:선정을 <S>성공</>하여 민심이 <C>$score</> 상승했습니다. <1>$date</>";
} else { } else {
@@ -519,11 +521,13 @@ function process_5(&$general, $type) {
// 태수 보정 // 태수 보정
if($general['level'] == 4 && $general['no'] == $city['gen1']) { $score *= 1.05; } if($general['level'] == 4 && $general['no'] == $city['gen1']) { $score *= 1.05; }
$rd = rand() % 100; // 현재 20% $rd = randF();
$r = CriticalRatioDomestic($general, 1); $r = CriticalRatioDomestic($general, 1);
// 특기보정 : 수비, 축성 // 특기보정 : 수비, 축성
if($type == 1 && $general['special'] == 11) { $r['succ'] += 10; $score *= 1.1; $admin['develcost'] *= 0.8; } if($type == 1 && $general['special'] == 11) { $r['succ'] += 0.1; $score *= 1.1; $admin['develcost'] *= 0.8; }
if($type == 2 && $general['special'] == 10) { $r['succ'] += 10; $score *= 1.1; $admin['develcost'] *= 0.8; } if($type == 2 && $general['special'] == 10) { $r['succ'] += 0.1; $score *= 1.1; $admin['develcost'] *= 0.8; }
//민심 반영
if($city['rate'] < 80) { $r['succ'] *= $city['rate'] / 80; }
//버그방지 //버그방지
if($score < 1) $score = 1; if($score < 1) $score = 1;
@@ -531,7 +535,7 @@ function process_5(&$general, $type) {
if($r['fail'] > $rd) { if($r['fail'] > $rd) {
$score = CriticalScore($score, 1); $score = CriticalScore($score, 1);
$log[] = "<C>●</>{$admin['month']}월:{$dtype}를 <span class='ev_failed'>실패</span>하여 <C>$score</> 상승했습니다. <1>$date</>"; $log[] = "<C>●</>{$admin['month']}월:{$dtype}를 <span class='ev_failed'>실패</span>하여 <C>$score</> 상승했습니다. <1>$date</>";
} elseif($city['rate'] >= 80 && $r['succ'] > $rd) { } elseif($r['succ'] + $r['fail'] > $rd) {
$score = CriticalScore($score, 0); $score = CriticalScore($score, 0);
$log[] = "<C>●</>{$admin['month']}월:{$dtype}를 <S>성공</>하여 <C>$score</> 상승했습니다. <1>$date</>"; $log[] = "<C>●</>{$admin['month']}월:{$dtype}를 <S>성공</>하여 <C>$score</> 상승했습니다. <1>$date</>";
} else { } else {
@@ -611,10 +615,10 @@ function process_7(&$general) {
// 시중 보정 // 시중 보정
if($general['level'] == 2 && $general['no'] == $city['gen3']) { $score *= 1.05; } if($general['level'] == 2 && $general['no'] == $city['gen3']) { $score *= 1.05; }
$rd = rand() % 100; // 현재 20% $rd = Util::randF();
$r = CriticalRatioDomestic($general, 0); $r = CriticalRatioDomestic($general, 0);
// 특기보정 : 인덕 // 특기보정 : 인덕
if($general['special'] == 20) { $r['succ'] += 10; $score *= 1.1; $admin['develcost'] *= 0.8; } if($general['special'] == 20) { $r['succ'] += 0.1; $score *= 1.1; $admin['develcost'] *= 0.8; }
//버그방지 //버그방지
if($score < 1) $score = 1; if($score < 1) $score = 1;
@@ -622,7 +626,7 @@ function process_7(&$general) {
if($r['fail'] > $rd) { if($r['fail'] > $rd) {
$score = CriticalScore($score, 1); $score = CriticalScore($score, 1);
$log[] = "<C>●</>{$admin['month']}월:장려를 <span class='ev_failed'>실패</span>하여 주민이 <C>{$score}0</>명 증가했습니다. <1>$date</>"; $log[] = "<C>●</>{$admin['month']}월:장려를 <span class='ev_failed'>실패</span>하여 주민이 <C>{$score}0</>명 증가했습니다. <1>$date</>";
} elseif($r['succ'] > $rd) { } elseif($r['succ'] + $r['fail'] > $rd) {
$score = CriticalScore($score, 0); $score = CriticalScore($score, 0);
$log[] = "<C>●</>{$admin['month']}월:장려를 <S>성공</>하여 주민이 <C>{$score}0</>명 증가했습니다. <1>$date</>"; $log[] = "<C>●</>{$admin['month']}월:장려를 <S>성공</>하여 주민이 <C>{$score}0</>명 증가했습니다. <1>$date</>";
} else { } else {
@@ -708,10 +712,12 @@ function process_8(&$general) {
// 태수 보정 // 태수 보정
if($general['level'] == 4 && $general['no'] == $city['gen1']) { $score *= 1.05; } if($general['level'] == 4 && $general['no'] == $city['gen1']) { $score *= 1.05; }
$rd = rand() % 100; // 현재 20% $rd = Util::randF();
$r = CriticalRatioDomestic($general, 1); $r = CriticalRatioDomestic($general, 1);
// 특기보정 : 통찰 // 특기보정 : 통찰
if($general['special'] == 12) { $r['succ'] += 10; $score *= 1.1; $admin['develcost'] *= 0.8; } if($general['special'] == 12) { $r['succ'] += 0.1; $score *= 1.1; $admin['develcost'] *= 0.8; }
//민심 반영
if($city['rate'] < 80) { $r['succ'] *= $city['rate'] / 80; }
//버그방지 //버그방지
if($score < 1) $score = 1; if($score < 1) $score = 1;
@@ -719,7 +725,7 @@ function process_8(&$general) {
if($r['fail'] > $rd) { if($r['fail'] > $rd) {
$score = CriticalScore($score, 1); $score = CriticalScore($score, 1);
$log[] = "<C>●</>{$admin['month']}월:{$dtype}을 <span class='ev_failed'>실패</span>하여 <C>$score</> 강화했습니다. <1>$date</>"; $log[] = "<C>●</>{$admin['month']}월:{$dtype}을 <span class='ev_failed'>실패</span>하여 <C>$score</> 강화했습니다. <1>$date</>";
} elseif($city['rate'] >= 80 && $r['succ'] > $rd) { } elseif($r['succ'] + $r['fail'] > $rd) {
$score = CriticalScore($score, 0); $score = CriticalScore($score, 0);
$log[] = "<C>●</>{$admin['month']}월:{$dtype}을 <S>성공</>하여 <C>$score</> 강화했습니다. <1>$date</>"; $log[] = "<C>●</>{$admin['month']}월:{$dtype}을 <S>성공</>하여 <C>$score</> 강화했습니다. <1>$date</>";
} else { } else {
@@ -821,7 +827,7 @@ function process_9(&$general) {
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
} }
switch(rand()%3) { switch(Util::choiceRandomUsingWeight([$general['leader'], $general['power'], $general['intel']])) {
case 0: case 0:
$general['leader2']++; $general['leader2']++;
$query = "update general set resturn='SUCCESS',leader2='{$general['leader2']}',dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'"; $query = "update general set resturn='SUCCESS',leader2='{$general['leader2']}',dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'";
@@ -1001,7 +1007,7 @@ function process_11(&$general, $type) {
$exp = $crew; $exp = $crew;
$ded = $crew; $ded = $crew;
// 숙련도 증가 // 숙련도 증가
addGenDex($general['no'], $armtype, $crew); addGenDex($general['no'], GameConst::$maxatmos, GameConst::$maxtrain, $armtype, $crew);
// 성격 보정 // 성격 보정
$exp = CharExperience($exp, $general['personal']); $exp = CharExperience($exp, $general['personal']);
$ded = CharDedication($ded, $general['personal']); $ded = CharDedication($ded, $general['personal']);
@@ -1071,7 +1077,7 @@ function process_13(&$general) {
$exp = 100; $exp = 100;
$ded = 70; $ded = 70;
// 숙련도 증가 // 숙련도 증가
addGenDex($general['no'], $general['crewtype'], Util::round($general['crew']/100)); addGenDex($general['no'], GameConst::$maxatmos, GameConst::$maxtrain, $general['crewtype'], Util::round($general['crew']/100));
// 성격 보정 // 성격 보정
$exp = CharExperience($exp, $general['personal']); $exp = CharExperience($exp, $general['personal']);
$ded = CharDedication($ded, $general['personal']); $ded = CharDedication($ded, $general['personal']);
@@ -1143,7 +1149,7 @@ function process_14(&$general) {
$exp = 100; $exp = 100;
$ded = 70; $ded = 70;
// 숙련도 증가 // 숙련도 증가
addGenDex($general['no'], $general['crewtype'], Util::round($general['crew']/100)); addGenDex($general['no'], GameConst::$maxatmos, GameConst::$maxtrain, $general['crewtype'], Util::round($general['crew']/100));
// 성격 보정 // 성격 보정
$exp = CharExperience($exp, $general['personal']); $exp = CharExperience($exp, $general['personal']);
$ded = CharDedication($ded, $general['personal']); $ded = CharDedication($ded, $general['personal']);
@@ -1219,7 +1225,7 @@ function process_15(&$general) {
$exp = 100 * 3; $exp = 100 * 3;
$ded = 70 * 3; $ded = 70 * 3;
// 숙련도 증가 // 숙련도 증가
addGenDex($general['no'], $general['crewtype'], Util::round($general['crew']/100 * 3)); addGenDex($general['no'], GameConst::$maxatmos, GameConst::$maxtrain, $general['crewtype'], Util::round($general['crew']/100 * 3));
// 성격 보정 // 성격 보정
$exp = CharExperience($exp, $general['personal']); $exp = CharExperience($exp, $general['personal']);
$ded = CharDedication($ded, $general['personal']); $ded = CharDedication($ded, $general['personal']);
@@ -1307,7 +1313,7 @@ function process_16(&$general) {
$query = "update city set state=43,term=3 where city='{$destcity['city']}'"; $query = "update city set state=43,term=3 where city='{$destcity['city']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
// 숙련도 증가 // 숙련도 증가
addGenDex($general['no'], $general['crewtype'], Util::round($general['crew']/100)); addGenDex($general['no'], GameConst::$maxatmos, GameConst::$maxtrain, $general['crewtype'], Util::round($general['crew']/100));
// 전투 처리 // 전투 처리
$dead = processWar($general, $destcity); $dead = processWar($general, $destcity);
@@ -1812,17 +1818,17 @@ function process_41(&$general) {
if($ratio < 33) { if($ratio < 33) {
// 숙련도 증가 // 숙련도 증가
addGenDex($general['no'], $general['crewtype'], $crewexp); addGenDex($general['no'], GameConst::$maxatmos, GameConst::$maxtrain, $general['crewtype'], $crewexp);
$log[] = "<C>●</>{$admin['month']}월:$crewstr 숙련도 향상이 <span class='ev_failed'>지지부진</span>했습니다. <1>$date</>"; $log[] = "<C>●</>{$admin['month']}월:$crewstr 숙련도 향상이 <span class='ev_failed'>지지부진</span>했습니다. <1>$date</>";
} elseif($ratio < 66) { } elseif($ratio < 66) {
$exp = $exp * 2; $exp = $exp * 2;
// 숙련도 증가 // 숙련도 증가
addGenDex($general['no'], $general['crewtype'], $crewexp * 2); addGenDex($general['no'], GameConst::$maxatmos, GameConst::$maxtrain, $general['crewtype'], $crewexp * 2);
$log[] = "<C>●</>{$admin['month']}월:$crewstr 숙련도가 향상되었습니다. <1>$date</>"; $log[] = "<C>●</>{$admin['month']}월:$crewstr 숙련도가 향상되었습니다. <1>$date</>";
} else { } else {
$exp = $exp * 3; $exp = $exp * 3;
// 숙련도 증가 // 숙련도 증가
addGenDex($general['no'], $general['crewtype'], $crewexp * 3); addGenDex($general['no'], GameConst::$maxatmos, GameConst::$maxtrain, $general['crewtype'], $crewexp * 3);
$log[] = "<C>●</>{$admin['month']}월:$crewstr 숙련도가 <S>일취월장</>했습니다. <1>$date</>"; $log[] = "<C>●</>{$admin['month']}월:$crewstr 숙련도가 <S>일취월장</>했습니다. <1>$date</>";
} }
@@ -2458,7 +2464,7 @@ function process_49(&$general) {
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
// 경험치 상승 // 경험치 상승
switch(rand()%3) { switch(Util::choiceRandomUsingWeight([$general['leader'], $general['power'], $general['intel']])) {
case 0: case 0:
$general['leader2']++; $general['leader2']++;
$query = "update general set leader2='{$general['leader2']}' where no='{$general['no']}'"; $query = "update general set leader2='{$general['leader2']}' where no='{$general['no']}'";
+11 -5
View File
@@ -132,9 +132,15 @@ function process_25(&$general) {
} elseif(strpos($general['nations'], ",{$nation['nation']},") > 0) { } elseif(strpos($general['nations'], ",{$nation['nation']},") > 0) {
$log[] = "<C>●</>{$admin['month']}월:이미 임관했었던 국가입니다. 임관 실패. <1>$date</>"; $log[] = "<C>●</>{$admin['month']}월:이미 임관했었던 국가입니다. 임관 실패. <1>$date</>";
} else { } else {
$alllog[] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>(이)가 <D><b>{$nation['name']}</b></>에 <S>임관</>했습니다."; if($where == 99 || $where == 98) {
$log[] = "<C>●</>{$admin['month']}월:<D>{$nation['name']}</>에 임관했습니다. <1>$date</>"; $alllog[] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>(이)가 어쩌다보니 <D><b>{$nation['name']}</b></>에 <S>임관</>했습니다.";
pushGeneralHistory($general, "<C>●</>{$admin['year']}{$admin['month']}월:<D><b>{$nation['name']}</b></>에 임관"); $log[] = "<C>●</>{$admin['month']}월:<D>{$nation['name']}</>에 랜덤으로 임관했습니다. <1>$date</>";
pushGeneralHistory($general, "<C>●</>{$admin['year']}{$admin['month']}월:<D><b>{$nation['name']}</b></>에 임관");
} else {
$alllog[] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>(이)가 <D><b>{$nation['name']}</b></>에 <S>임관</>했습니다.";
$log[] = "<C>●</>{$admin['month']}월:<D>{$nation['name']}</>에 임관했습니다. <1>$date</>";
pushGeneralHistory($general, "<C>●</>{$admin['year']}{$admin['month']}월:<D><b>{$nation['name']}</b></>에 임관");
}
if($gencount < 10) { $exp = 700; } if($gencount < 10) { $exp = 700; }
else { $exp = 100; } else { $exp = 100; }
@@ -227,7 +233,7 @@ function process_29(&$general) {
if(rand() % $criteria > 0) { if(rand() % $criteria > 0) {
$exp = 100; $exp = 100;
$ded = 70; $ded = 70;
switch(rand()%3) { switch(Util::choiceRandomUsingWeight([$general['leader'], $general['power'], $general['intel']])) {
case 0: $general['leader2'] += 1; break; case 0: $general['leader2'] += 1; break;
case 1: $general['power2'] += 1; break; case 1: $general['power2'] += 1; break;
case 2: $general['intel2'] += 1; break; case 2: $general['intel2'] += 1; break;
@@ -237,7 +243,7 @@ function process_29(&$general) {
// 탐색 성공 // 탐색 성공
$exp = 200; $exp = 200;
$ded = 300; $ded = 300;
switch(rand()%3) { switch(Util::choiceRandomUsingWeight([$general['leader'], $general['power'], $general['intel']])) {
case 0: $general['leader2'] += 3; break; case 0: $general['leader2'] += 3; break;
case 1: $general['power2'] += 3; break; case 1: $general['power2'] += 3; break;
case 2: $general['intel2'] += 3; break; case 2: $general['intel2'] += 3; break;
+1 -1
View File
@@ -458,7 +458,7 @@ function process_35(&$general) {
} elseif($dip['state'] >= 7) { } elseif($dip['state'] >= 7) {
$log[] = "<C>●</>{$admin['month']}월:불가침국입니다. <G><b>{$destcity['name']}</b></>에 선동 실패. <1>$date</>"; $log[] = "<C>●</>{$admin['month']}월:불가침국입니다. <G><b>{$destcity['name']}</b></>에 선동 실패. <1>$date</>";
} else { } else {
$query = "select leader,horse,power,weap,intel,book,injury from general where city='$destination' and nation='{$destcity['nation']}' order by sum desc"; $query = "select leader,horse,power,weap,intel,book,injury from general where city='$destination' and nation='{$destcity['nation']}' order by leader desc";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$gen = MYDB_fetch_array($result); $gen = MYDB_fetch_array($result);
+1 -1
View File
@@ -136,7 +136,7 @@ $pleader = 0;
$ppower = 0; $ppower = 0;
$pintel = 0; $pintel = 0;
for ($statBonusCnt = 3 + mt_rand(0, 2); $statBonusCnt > 0; $statBonusCnt--) { for ($statBonusCnt = 3 + mt_rand(0, 2); $statBonusCnt > 0; $statBonusCnt--) {
switch (Util::choiceRandomUsingWeight(array($leader, $power, $intel))) { switch (Util::choiceRandomUsingWeight([$leader, $power, $intel])) {
case 0: case 0:
$pleader++; $pleader++;
break; break;
+17 -28
View File
@@ -272,11 +272,11 @@ function processWar($general, $city) {
} }
} }
} elseif($general['crewtype'] == 40) { // 정란 } elseif($general['crewtype'] == 40) { // 정란
$cityCrew = $cityCrew * 1.5; $cityCrew = $cityCrew * 1.8;
} elseif($general['crewtype'] == 41) { // 충차 } elseif($general['crewtype'] == 41) { // 충차
$cityCrew = $cityCrew * 2.0; $cityCrew = $cityCrew * 2.4;
} elseif($general['crewtype'] == 42) { // 벽력거 } elseif($general['crewtype'] == 42) { // 벽력거
$cityCrew = $cityCrew * 1.5; $cityCrew = $cityCrew * 1.8;
} }
//군주 공격 보정 10% //군주 공격 보정 10%
if($general['level'] == 12) { if($general['level'] == 12) {
@@ -316,13 +316,14 @@ function processWar($general, $city) {
//회피 //회피
$ratio = rand() % 100; // 0 ~ 99 $ratio = rand() % 100; // 0 ~ 99
$ratio2 = GameUnitConst::byID($general['crewtype'])->avoid; //회피율 $ratio2 = GameUnitConst::byID($general['crewtype'])->avoid; //회피율
$ratio2 = Util::round($ratio2 * $general['train'] / 100); //훈련 반영
//특기보정 : 궁병 //특기보정 : 궁병
if($general['special2'] == 51) { $ratio2 += 20; } if($general['special2'] == 51) { $ratio2 += 20; }
//도구 보정 : 둔갑천서, 태평요술 //도구 보정 : 둔갑천서, 태평요술
if($general['item'] == 26 || $general['item'] == 25) { $ratio2 += 20; } if($general['item'] == 26 || $general['item'] == 25) { $ratio2 += 20; }
if($ratio < $ratio2 && $avoid == 1) { if($ratio < $ratio2 && $avoid == 1) {
$batlog[] = "<C>●</><C>회피</>했다!</>"; $batlog[] = "<C>●</><C>회피</>했다!</>";
$myCrew /= 10; // 10%만 소모 $myCrew /= 5; // 20%만 소모
$avoid = 0; $avoid = 0;
} }
@@ -456,8 +457,8 @@ function processWar($general, $city) {
$query = "update general set crew='{$general['crew']}',killcrew=killcrew+'$mykillnum',deathcrew=deathcrew+'$mydeathnum' where no='{$general['no']}'"; $query = "update general set crew='{$general['crew']}',killcrew=killcrew+'$mykillnum',deathcrew=deathcrew+'$mydeathnum' where no='{$general['no']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
// 숙련도 증가 // 숙련도 증가
addGenDex($general['no'], $general['crewtype'], $mykillnum); addGenDex($general['no'], $general['atmos'], $general['train'], $general['crewtype'], $mykillnum);
addGenDex($general['no'], 40, $mydeathnum); addGenDex($general['no'], $general['atmos'], $general['train'], 40, $mydeathnum);
// 죽은수 기술로 누적 // 죽은수 기술로 누적
$num = Util::round($mydeathnum * 0.01); $num = Util::round($mydeathnum * 0.01);
// 국가보정 // 국가보정
@@ -1137,6 +1138,7 @@ function processWar($general, $city) {
//회피 //회피
$ratio = rand() % 100; // 0 ~ 99 $ratio = rand() % 100; // 0 ~ 99
$ratio2 = GameUnitConst::byID($general['crewtype'])->avoid; //회피율 $ratio2 = GameUnitConst::byID($general['crewtype'])->avoid; //회피율
$ratio2 = Util::round($ratio2 * $general['train'] / 100); //훈련 반영
//특기보정 : 돌격, 궁병 //특기보정 : 돌격, 궁병
if($oppose['special2'] == 60) { $ratio2 -= 100; } if($oppose['special2'] == 60) { $ratio2 -= 100; }
if($general['special2'] == 51) { $ratio2 += 20; } if($general['special2'] == 51) { $ratio2 += 20; }
@@ -1152,13 +1154,14 @@ function processWar($general, $city) {
} else { } else {
$batlog[] = "<C>●</><C>회피</>했다!</>"; $batlog[] = "<C>●</><C>회피</>했다!</>";
$oppbatlog[] = "<C>●</>상대가 <R>회피</>했다!</>"; $oppbatlog[] = "<C>●</>상대가 <R>회피</>했다!</>";
$myCrew /= 10; // 10%만 소모 $myCrew /= 5; // 20%만 소모
$myAvoid = 0; $myAvoid = 0;
} }
} }
//회피 //회피
$ratio = rand() % 100; // 0 ~ 99 $ratio = rand() % 100; // 0 ~ 99
$ratio2 = GameUnitConst::byID($oppose['crewtype'])->defence; //회피율 $ratio2 = GameUnitConst::byID($oppose['crewtype'])->defence; //회피율
$ratio2 = Util::round($ratio2 * $oppose['train'] / 100); //훈련 반영
// 특기보정 : 돌격, 궁병 // 특기보정 : 돌격, 궁병
if($general['special2'] == 60) { $ratio2 -= 100; } if($general['special2'] == 60) { $ratio2 -= 100; }
if($oppose['special2'] == 51) { $ratio2 += 20; } if($oppose['special2'] == 51) { $ratio2 += 20; }
@@ -1180,7 +1183,7 @@ function processWar($general, $city) {
} else { } else {
$oppbatlog[] = "<C>●</><C>회피</>했다!</>"; $oppbatlog[] = "<C>●</><C>회피</>했다!</>";
$batlog[] = "<C>●</>상대가 <R>회피</>했다!</>"; $batlog[] = "<C>●</>상대가 <R>회피</>했다!</>";
$opCrew /= 10; // 10%만 소모 $opCrew /= 5; // 20%만 소모
$opAvoid = 0; $opAvoid = 0;
} }
} }
@@ -1329,8 +1332,8 @@ function processWar($general, $city) {
$query = "update general set injury='{$oppose['injury']}',crew='{$oppose['crew']}',killcrew=killcrew+'$opkillnum',deathcrew=deathcrew+'$opdeathnum' where no='{$oppose['no']}'"; $query = "update general set injury='{$oppose['injury']}',crew='{$oppose['crew']}',killcrew=killcrew+'$opkillnum',deathcrew=deathcrew+'$opdeathnum' where no='{$oppose['no']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
// 숙련도 증가 // 숙련도 증가
addGenDex($oppose['no'], $oppose['crewtype'], $opkillnum * 0.9); addGenDex($oppose['no'], $general['atmos'], $general['train'], $oppose['crewtype'], $opkillnum * 0.9);
addGenDex($oppose['no'], $general['crewtype'], $opdeathnum * 0.9); addGenDex($oppose['no'], $general['atmos'], $general['train'], $general['crewtype'], $opdeathnum * 0.9);
// 죽은수 기술로 누적 // 죽은수 기술로 누적
$num = Util::round($mydeathnum * 0.01); $num = Util::round($mydeathnum * 0.01);
// 국가보정 // 국가보정
@@ -1352,8 +1355,8 @@ function processWar($general, $city) {
$query = "update general set injury='{$general['injury']}',crew='{$general['crew']}',killcrew=killcrew+'$mykillnum',deathcrew=deathcrew+'$mydeathnum' where no='{$general['no']}'"; $query = "update general set injury='{$general['injury']}',crew='{$general['crew']}',killcrew=killcrew+'$mykillnum',deathcrew=deathcrew+'$mydeathnum' where no='{$general['no']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
// 숙련도 증가 // 숙련도 증가
addGenDex($general['no'], $general['crewtype'], $mykillnum); addGenDex($general['no'], $general['atmos'], $general['train'], $general['crewtype'], $mykillnum);
addGenDex($general['no'], $oppose['crewtype'], $mydeathnum); addGenDex($general['no'], $general['atmos'], $general['train'], $oppose['crewtype'], $mydeathnum);
// 죽은수 기술로 누적 // 죽은수 기술로 누적
$num = Util::round($opdeathnum * 0.01); $num = Util::round($opdeathnum * 0.01);
// 국가보정 // 국가보정
@@ -1548,10 +1551,10 @@ function CriticalRatio3($general) {
$ratio = max($mainstat - 65, 0); $ratio = max($mainstat - 65, 0);
if ($crewtype >= 3) { if ($crewtype >= 3) {
$ratio /= 2; $ratio *= 0.4;
} }
else{ else{
$ratio *= 0.7; $ratio *= 0.5;
} }
$ratio = round($ratio); $ratio = round($ratio);
@@ -1562,20 +1565,6 @@ function CriticalRatio3($general) {
return $ratio; return $ratio;
} }
function CriticalRatio2($leader, $power, $intel) {
// 707010장수 9% 706515장수 17% 706020장수 25% xx50xx장수 57%
if($leader <= $power && $leader <= $intel) { // 통솔이 제일 낮은경우
$ratio = sqrt($leader/($leader+$power+$intel))*150 - 30;
} elseif($power < $leader && $power <= $intel) { // 무력이 제일 낮은경우
$ratio = sqrt($power /($leader+$power+$intel))*150 - 30;
} elseif($intel < $leader && $intel < $power) { // 지력이 제일 낮은경우
$ratio = sqrt($intel /($leader+$power+$intel))*150 - 30;
}
if($ratio > 50) $ratio = 50;
return $ratio;
}
function CriticalScore2($score) { function CriticalScore2($score) {
$score = Util::round($score * (rand()%8 + 13)/10); // 1.3~2.0 $score = Util::round($score * (rand()%8 + 13)/10); // 1.3~2.0
return $score; return $score;
-1
View File
@@ -192,7 +192,6 @@ create table nation (
l5set int(1) default 0, l5set int(1) default 0,
scout int(1) default 0, scout int(1) default 0,
war int(1) default 0, war int(1) default 0,
myset int(1) default 3,
tricklimit int(4) default 36, tricklimit int(4) default 36,
surlimit int(4) default 72, surlimit int(4) default 72,
scoutmsg text default '', scoutmsg text default '',