시나리오마다 별도로 스탯 제한치를 설정 가능하도록 변경
This commit is contained in:
@@ -217,12 +217,12 @@ echo "
|
||||
";
|
||||
|
||||
$queries = [];
|
||||
$queries[10] = "select no,name,level,city from general where nation='{$me['nation']}' and level!='12' and power>='".GameConst::$goodgenpower."' order by npc,binary(name)";
|
||||
$queries[9] = "select no,name,level,city from general where nation='{$me['nation']}' and level!='12' and intel>='".GameConst::$goodgenintel."' order by npc,binary(name)";
|
||||
$queries[8] = "select no,name,level,city from general where nation='{$me['nation']}' and level!='12' and power>='".GameConst::$goodgenpower."' order by npc,binary(name)";
|
||||
$queries[7] = "select no,name,level,city from general where nation='{$me['nation']}' and level!='12' and intel>='".GameConst::$goodgenintel."' order by npc,binary(name)";
|
||||
$queries[6] = "select no,name,level,city from general where nation='{$me['nation']}' and level!='12' and power>='".GameConst::$goodgenpower."' order by npc,binary(name)";
|
||||
$queries[5] = "select no,name,level,city from general where nation='{$me['nation']}' and level!='12' and intel>='".GameConst::$goodgenintel."' order by npc,binary(name)";
|
||||
$queries[10] = "select no,name,level,city from general where nation='{$me['nation']}' and level!='12' and power>='".GameConst::$chiefStatMin."' order by npc,binary(name)";
|
||||
$queries[9] = "select no,name,level,city from general where nation='{$me['nation']}' and level!='12' and intel>='".GameConst::$chiefStatMin."' order by npc,binary(name)";
|
||||
$queries[8] = "select no,name,level,city from general where nation='{$me['nation']}' and level!='12' and power>='".GameConst::$chiefStatMin."' order by npc,binary(name)";
|
||||
$queries[7] = "select no,name,level,city from general where nation='{$me['nation']}' and level!='12' and intel>='".GameConst::$chiefStatMin."' order by npc,binary(name)";
|
||||
$queries[6] = "select no,name,level,city from general where nation='{$me['nation']}' and level!='12' and power>='".GameConst::$chiefStatMin."' order by npc,binary(name)";
|
||||
$queries[5] = "select no,name,level,city from general where nation='{$me['nation']}' and level!='12' and intel>='".GameConst::$chiefStatMin."' order by npc,binary(name)";
|
||||
|
||||
for($i=10; $i >= $lv; $i--) {
|
||||
if($i % 2 == 0) { echo "<tr>"; }
|
||||
@@ -309,7 +309,7 @@ if($meLevel >= 5) {
|
||||
<option value=0>____공석____</option>
|
||||
";
|
||||
|
||||
$query = "select no,name,level,city from general where nation='{$me['nation']}' and level!='12' and power>='".GameConst::$goodgenpower."' order by npc,binary(name)";
|
||||
$query = "select no,name,level,city from general where nation='{$me['nation']}' and level!='12' and power>='".GameConst::$chiefStatMin."' order by npc,binary(name)";
|
||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$count = MYDB_num_rows($result);
|
||||
for($i=0; $i < $count; $i++) {
|
||||
@@ -363,7 +363,7 @@ if($meLevel >= 5) {
|
||||
<option value=0>____공석____</option>
|
||||
";
|
||||
|
||||
$query = "select no,name,level,city from general where nation='{$me['nation']}' and level!='12' and intel>='".GameConst::$goodgenintel."' order by npc,binary(name)";
|
||||
$query = "select no,name,level,city from general where nation='{$me['nation']}' and level!='12' and intel>='".GameConst::$chiefStatMin."' order by npc,binary(name)";
|
||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$count = MYDB_num_rows($result);
|
||||
for($i=0; $i < $count; $i++) {
|
||||
|
||||
@@ -242,12 +242,12 @@ if($btn == "임명" && $level >= 5 && $level <= 11) {
|
||||
if($genlist != 0) {
|
||||
$valid = 0;
|
||||
switch($level) {
|
||||
case 10: if($general['power'] >= GameConst::$goodgenpower) { $valid = 1; } break;
|
||||
case 9: if($general['intel'] >= GameConst::$goodgenintel) { $valid = 1; } break;
|
||||
case 8: if($general['power'] >= GameConst::$goodgenpower) { $valid = 1; } break;
|
||||
case 7: if($general['intel'] >= GameConst::$goodgenintel) { $valid = 1; } break;
|
||||
case 6: if($general['power'] >= GameConst::$goodgenpower) { $valid = 1; } break;
|
||||
case 5: if($general['intel'] >= GameConst::$goodgenintel) { $valid = 1; } break;
|
||||
case 10: if($general['power'] >= GameConst::$chiefStatMin) { $valid = 1; } break;
|
||||
case 9: if($general['intel'] >= GameConst::$chiefStatMin) { $valid = 1; } break;
|
||||
case 8: if($general['power'] >= GameConst::$chiefStatMin) { $valid = 1; } break;
|
||||
case 7: if($general['intel'] >= GameConst::$chiefStatMin) { $valid = 1; } break;
|
||||
case 6: if($general['power'] >= GameConst::$chiefStatMin) { $valid = 1; } break;
|
||||
case 5: if($general['intel'] >= GameConst::$chiefStatMin) { $valid = 1; } break;
|
||||
default: $valid = 1; break;
|
||||
}
|
||||
if($valid == 1) {
|
||||
@@ -299,8 +299,8 @@ if($btn == "임명" && $level >= 2 && $level <= 4 && $citylist > 0) {
|
||||
if($genlist != 0) {
|
||||
$valid = 0;
|
||||
switch($level) {
|
||||
case 4: if($general['power'] >= GameConst::$goodgenpower) { $valid = 1; } break;
|
||||
case 3: if($general['intel'] >= GameConst::$goodgenintel) { $valid = 1; } break;
|
||||
case 4: if($general['power'] >= GameConst::$chiefStatMin) { $valid = 1; } break;
|
||||
case 3: if($general['intel'] >= GameConst::$chiefStatMin) { $valid = 1; } break;
|
||||
default: $valid = 1; break;
|
||||
}
|
||||
|
||||
|
||||
@@ -284,19 +284,19 @@ function getLevel($level, $nlevel=8) {
|
||||
|
||||
function getCall($leader, $power, $intel) {
|
||||
$call = '평범';
|
||||
if($leader >= GameConst::$goodgenleader && $power >= GameConst::$goodgenpower && $intel >= GameConst::$goodgenintel) {
|
||||
if($leader >= GameConst::$chiefStatMin && $power >= GameConst::$chiefStatMin && $intel >= GameConst::$chiefStatMin) {
|
||||
$call = '만능';
|
||||
} elseif($leader >= GameConst::$goodgenleader && $power >= GameConst::$goodgenpower) {
|
||||
} elseif($leader >= GameConst::$chiefStatMin && $power >= GameConst::$chiefStatMin) {
|
||||
$call = '용장';
|
||||
} elseif($leader >= GameConst::$goodgenleader && $intel >= GameConst::$goodgenintel) {
|
||||
} elseif($leader >= GameConst::$chiefStatMin && $intel >= GameConst::$chiefStatMin) {
|
||||
$call = '지장';
|
||||
} elseif($power >= GameConst::$goodgenpower && $intel >= GameConst::$goodgenintel) {
|
||||
} elseif($power >= GameConst::$chiefStatMin && $intel >= GameConst::$chiefStatMin) {
|
||||
$call = '명장';
|
||||
} elseif($leader >= GameConst::$goodgenleader) {
|
||||
} elseif($leader >= GameConst::$chiefStatMin) {
|
||||
$call = '명사';
|
||||
} elseif($power >= GameConst::$goodgenpower) {
|
||||
} elseif($power >= GameConst::$chiefStatMin) {
|
||||
$call = '용맹';
|
||||
} elseif($intel >= GameConst::$goodgenintel) {
|
||||
} elseif($intel >= GameConst::$chiefStatMin) {
|
||||
$call = '현명';
|
||||
}
|
||||
return $call;
|
||||
|
||||
+1
-70
@@ -5,77 +5,8 @@ namespace sammo;
|
||||
* 게임 룰에 해당하는 함수 모음
|
||||
*/
|
||||
|
||||
// 37.5 ~ 75
|
||||
function abilityRand() {
|
||||
$total = 150;
|
||||
$leader = (rand()%100 + 1) / 100.0 + 1.0;
|
||||
$power = (rand()%100 + 1) / 100.0 + 1.0;
|
||||
$intel = (rand()%100 + 1) / 100.0 + 1.0;
|
||||
$rate = $leader + $power + $intel;
|
||||
$leader = intdiv($leader * $total, $rate);
|
||||
$power = intdiv($power * $total, $rate);
|
||||
$intel = intdiv($intel * $total, $rate);
|
||||
|
||||
while($leader+$power+$intel < 150) {
|
||||
$leader++;
|
||||
}
|
||||
|
||||
return array('leader' => $leader, 'power' => $power, 'intel' => $intel);
|
||||
}
|
||||
|
||||
// 14 ~ 75
|
||||
function abilityLeadpow() {
|
||||
$total = 150;
|
||||
$leader = (rand()%100 + 1) / 100.0 + 6.0;
|
||||
$power = (rand()%100 + 1) / 100.0 + 6.0;
|
||||
$intel = (rand()%100 + 1) / 100.0 + 1.0;
|
||||
$rate = $leader + $power + $intel;
|
||||
$leader = intdiv($leader * $total, $rate);
|
||||
$power = intdiv($power * $total, $rate);
|
||||
$intel = intdiv($intel * $total, $rate);
|
||||
|
||||
while($leader+$power+$intel < 150) {
|
||||
$leader++;
|
||||
}
|
||||
|
||||
return array('leader' => $leader, 'power' => $power, 'intel' => $intel);
|
||||
}
|
||||
|
||||
function abilityLeadint() {
|
||||
$total = 150;
|
||||
$leader = (rand()%100 + 1) / 100.0 + 6.0;
|
||||
$power = (rand()%100 + 1) / 100.0 + 1.0;
|
||||
$intel = (rand()%100 + 1) / 100.0 + 6.0;
|
||||
$rate = $leader + $power + $intel;
|
||||
$leader = intdiv($leader * $total, $rate);
|
||||
$power = intdiv($power * $total, $rate);
|
||||
$intel = intdiv($intel * $total, $rate);
|
||||
|
||||
while($leader+$power+$intel < 150) {
|
||||
$leader++;
|
||||
}
|
||||
|
||||
return array('leader' => $leader, 'power' => $power, 'intel' => $intel);
|
||||
}
|
||||
|
||||
function abilityPowint() {
|
||||
$total = 150;
|
||||
$leader = (rand()%100 + 1) / 100.0 + 1.0;
|
||||
$power = (rand()%100 + 1) / 100.0 + 6.0;
|
||||
$intel = (rand()%100 + 1) / 100.0 + 6.0;
|
||||
$rate = $leader + $power + $intel;
|
||||
$leader = intdiv($leader * $total, $rate);
|
||||
$power = intdiv($power * $total, $rate);
|
||||
$intel = intdiv($intel * $total, $rate);
|
||||
|
||||
while($leader+$power+$intel < 150) {
|
||||
$leader++;
|
||||
}
|
||||
|
||||
return array('leader' => $leader, 'power' => $power, 'intel' => $intel);
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* 게임 내부에 사용하는 유틸리티 함수들을 분리
|
||||
*/
|
||||
|
||||
|
||||
+15
-15
@@ -2059,19 +2059,19 @@ function process_76(&$general) {
|
||||
$type = rand() % 10;
|
||||
switch($type) {
|
||||
case 0: case 1: case 2: case 3:
|
||||
$leader = 65 + rand()%11;
|
||||
$intel = 10 + rand()%6;
|
||||
$power = 150 - $leader - $intel;
|
||||
$leader = GameConst::$defaultStatMax - 10 + rand()%11;
|
||||
$intel = GameConst::$defaultStatMin + rand()%6;
|
||||
$power = GameConst::$defaultStatTotal - $leader - $intel;
|
||||
break;
|
||||
case 4: case 5: case 6: case 7:
|
||||
$leader = 65 + rand()%11;
|
||||
$power = 10 + rand()%6;
|
||||
$intel = 150 - $leader - $power;
|
||||
$leader = GameConst::$defaultStatMax - 10 + rand()%11;
|
||||
$power = GameConst::$defaultStatMin + rand()%6;
|
||||
$intel = GameConst::$defaultStatTotal - $leader - $power;
|
||||
break;
|
||||
case 8: case 9:
|
||||
$leader = 10 + rand()%6;
|
||||
$power = 65 + rand()%11;
|
||||
$intel = 150 - $leader - $power;
|
||||
$leader = GameConst::$defaultStatMin + rand()%6;
|
||||
$power = GameConst::$defaultStatMax - 10 + rand()%11;
|
||||
$intel = GameConst::$defaultStatTotal - $leader - $power;
|
||||
break;
|
||||
}
|
||||
// 국내 최고능치 기준으로 랜덤성 스케일링
|
||||
@@ -2111,14 +2111,14 @@ function process_76(&$general) {
|
||||
$power = $power + $over1 + $over2 + $over3;
|
||||
}
|
||||
// 너무 높은 능치는 제한
|
||||
if($leader > 95) {
|
||||
$leader = 95;
|
||||
if($leader > GameConst::$defaultStatNPCMax) {
|
||||
$leader = GameConst::$defaultStatNPCMax;
|
||||
}
|
||||
if($power > 95) {
|
||||
$power = 95;
|
||||
if($power > GameConst::$defaultStatNPCMax) {
|
||||
$power = GameConst::$defaultStatNPCMax;
|
||||
}
|
||||
if($intel > 95) {
|
||||
$intel = 95;
|
||||
if($intel > GameConst::$defaultStatNPCMax) {
|
||||
$intel = GameConst::$defaultStatNPCMax;
|
||||
}
|
||||
|
||||
$npccount = 10000 + $npcid;
|
||||
|
||||
@@ -276,37 +276,37 @@ function process_29(&$general) {
|
||||
if($admin['scenario'] == 0) {
|
||||
switch($type) {
|
||||
case 0: case 1:
|
||||
$leader = 65 + rand()%11;
|
||||
$intel = 10 + rand()%6;
|
||||
$power = 150 - $leader - $intel;
|
||||
$leader = GameConst::$defaultStatMax - 10 + rand()%11;
|
||||
$intel = GameConst::$defaultStatMin + rand()%6;
|
||||
$power = GameConst::$defaultStatTotal - $leader - $intel;
|
||||
break;
|
||||
case 2: case 3:
|
||||
$leader = 65 + rand()%11;
|
||||
$power = 10 + rand()%6;
|
||||
$intel = 150 - $leader - $power;
|
||||
$leader = GameConst::$defaultStatMax - 10 + rand()%11;
|
||||
$power = GameConst::$defaultStatMin + rand()%6;
|
||||
$intel = GameConst::$defaultStatTotal - $leader - $power;
|
||||
break;
|
||||
case 4: case 5: case 6: case 7: case 8: case 9:
|
||||
$leader = 10 + rand()%6;
|
||||
$power = 65 + rand()%11;
|
||||
$intel = 150 - $leader - $power;
|
||||
$leader = GameConst::$defaultStatMin + rand()%6;
|
||||
$power = GameConst::$defaultStatMax - 10 + rand()%11;
|
||||
$intel = GameConst::$defaultStatTotal - $leader - $power;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch($type) {
|
||||
case 0: case 1: case 2: case 3:
|
||||
$leader = 65 + rand()%11;
|
||||
$intel = 10 + rand()%6;
|
||||
$power = 150 - $leader - $intel;
|
||||
$leader = GameConst::$defaultStatMax - 10 + rand()%11;
|
||||
$intel = GameConst::$defaultStatMin + rand()%6;
|
||||
$power = GameConst::$defaultStatTotal - $leader - $intel;
|
||||
break;
|
||||
case 4: case 5: case 6: case 7:
|
||||
$leader = 65 + rand()%11;
|
||||
$power = 10 + rand()%6;
|
||||
$intel = 150 - $leader - $power;
|
||||
$leader = GameConst::$defaultStatMax - 10 + rand()%11;
|
||||
$power = GameConst::$defaultStatMin + rand()%6;
|
||||
$intel = GameConst::$defaultStatTotal - $leader - $power;
|
||||
break;
|
||||
case 8: case 9:
|
||||
$leader = 10 + rand()%6;
|
||||
$power = 65 + rand()%11;
|
||||
$intel = 150 - $leader - $power;
|
||||
$leader = GameConst::$defaultStatMin + rand()%6;
|
||||
$power = GameConst::$defaultStatMax - 10 + rand()%11;
|
||||
$intel = GameConst::$defaultStatTotal - $leader - $power;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
+7
-2
@@ -32,6 +32,11 @@ $connect=$db->get();
|
||||
<head>
|
||||
<title><?=UniqueConst::$serverName?>: 장수생성</title>
|
||||
<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>
|
||||
<script>
|
||||
var defaultStatTotal = <?=GameConst::$defaultStatTotal?>;
|
||||
var defaultStatMin = <?=GameConst::$defaultStatMin?>;
|
||||
var defaultStatMax = <?=GameConst::$defaultStatMax?>;
|
||||
</script>
|
||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||
<?=WebUtil::printCSS('css/common.css')?>
|
||||
<?=WebUtil::printJS('../e_lib/jquery-3.2.1.min.js')?>
|
||||
@@ -156,13 +161,13 @@ if ($admin['show_img_level'] >= 1 && $member['grade'] >= 1 && $member['picture']
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=center colspan=3>
|
||||
<font color=orange>모든 능력치는 ( 10 <= 능력치 <= 75 ) 사이로 잡으셔야 합니다.<br>
|
||||
<font color=orange>모든 능력치는 ( 10 <= 능력치 <= <?=GameConst::$defaultStatMax?> ) 사이로 잡으셔야 합니다.<br>
|
||||
그 외의 능력치는 가입되지 않습니다.</font>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=center colspan=3>
|
||||
능력치의 총합은 150입니다. 가입후 0~10의 능력치 보너스를 받게 됩니다.<br>
|
||||
능력치의 총합은 <?=GameConst::$defaultStatTotal?>입니다. 가입후 0~10의 능력치 보너스를 받게 됩니다.<br>
|
||||
임의의 도시에서 재야로 시작하며 건국과 임관은 게임 내에서 실행합니다.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
+4
-4
@@ -23,12 +23,12 @@ $v
|
||||
'leader',
|
||||
'power',
|
||||
'intel'
|
||||
], 10)
|
||||
], GameConst::$defaultStatMin)
|
||||
->rule('max', [
|
||||
'leader',
|
||||
'power',
|
||||
'intel'
|
||||
], 75)
|
||||
], GameConst::$defaultStatMax)
|
||||
->rule('min', 'character', 0)
|
||||
->rule('max', 'character', 11);
|
||||
|
||||
@@ -109,9 +109,9 @@ if (mb_strlen($name) > 6) {
|
||||
</script>");
|
||||
exit;
|
||||
}
|
||||
if ($leader + $power + $intel > 150) {
|
||||
if ($leader + $power + $intel > GameConst::$defaultStatTotal) {
|
||||
echo("<script>
|
||||
window.alert('능력치가 150을 넘어섰습니다. 다시 가입해주세요!')
|
||||
window.alert('능력치가 ".GameConst::$defaultStatTotal."을 넘어섰습니다. 다시 가입해주세요!')
|
||||
history.go(-1)
|
||||
</script>");
|
||||
exit;
|
||||
|
||||
+59
-46
@@ -1,7 +1,5 @@
|
||||
|
||||
jQuery(function($){
|
||||
|
||||
var totalAbil = 150;
|
||||
var $leader = $('#leader');
|
||||
var $power = $('#power');
|
||||
var $intel = $('#intel');
|
||||
@@ -12,16 +10,16 @@ jQuery(function($){
|
||||
var intel = Math.random()*65 + 10;
|
||||
var rate = leader + power + intel;
|
||||
|
||||
leader = Math.floor(leader / rate * totalAbil);
|
||||
power = Math.floor(power / rate * totalAbil);
|
||||
intel = Math.floor(intel / rate * totalAbil);
|
||||
leader = Math.floor(leader / rate * defaultStatTotal);
|
||||
power = Math.floor(power / rate * defaultStatTotal);
|
||||
intel = Math.floor(intel / rate * defaultStatTotal);
|
||||
|
||||
|
||||
while(leader+power+intel < totalAbil){
|
||||
while(leader+power+intel < defaultStatTotal){
|
||||
leader+=1;
|
||||
}
|
||||
|
||||
if(leader > 75 || power > 75 || intel > 75 || leader < 10 || power < 10 || intel < 10){
|
||||
if(leader > defaultStatMax || power > defaultStatMax || intel > defaultStatMax || leader < defaultStatMin || power < defaultStatMin || intel < defaultStatMin){
|
||||
return abilityRand();
|
||||
}
|
||||
|
||||
@@ -37,27 +35,32 @@ jQuery(function($){
|
||||
var intel = Math.random() * 1;
|
||||
var rate = leader + power + intel;
|
||||
|
||||
leader = Math.floor(leader / rate * totalAbil);
|
||||
power = Math.floor(power / rate * totalAbil);
|
||||
intel = Math.floor(intel / rate * totalAbil);
|
||||
leader = Math.floor(leader / rate * defaultStatTotal);
|
||||
power = Math.floor(power / rate * defaultStatTotal);
|
||||
intel = Math.floor(intel / rate * defaultStatTotal);
|
||||
|
||||
while(leader+power+intel < totalAbil){
|
||||
while(leader+power+intel < defaultStatTotal){
|
||||
power+=1;
|
||||
}
|
||||
|
||||
if(intel < 10){
|
||||
leader -= 10 - intel;
|
||||
intel = 10;
|
||||
if(intel < defaultStatMin){
|
||||
leader -= defaultStatMin - intel;
|
||||
intel = defaultStatMin;
|
||||
}
|
||||
|
||||
if(leader > 75){
|
||||
power += leader - 75;
|
||||
leader = 75;
|
||||
if(leader > defaultStatMax){
|
||||
power += leader - defaultStatMax;
|
||||
leader = defaultStatMax;
|
||||
}
|
||||
|
||||
if(power > 75){
|
||||
leader += power - 75;
|
||||
power = 75;
|
||||
if(power > defaultStatMax){
|
||||
leader += power - defaultStatMax;
|
||||
power = defaultStatMax;
|
||||
}
|
||||
|
||||
if(leader > defaultStatMax){
|
||||
intel += leader - defaultStatMax;
|
||||
leader = defaultStatMax;
|
||||
}
|
||||
|
||||
$leader.val(leader);
|
||||
@@ -71,27 +74,32 @@ jQuery(function($){
|
||||
var intel = Math.random() * 6;
|
||||
var rate = leader + power + intel;
|
||||
|
||||
leader = Math.floor(leader / rate * totalAbil);
|
||||
power = Math.floor(power / rate * totalAbil);
|
||||
intel = Math.floor(intel / rate * totalAbil);
|
||||
leader = Math.floor(leader / rate * defaultStatTotal);
|
||||
power = Math.floor(power / rate * defaultStatTotal);
|
||||
intel = Math.floor(intel / rate * defaultStatTotal);
|
||||
|
||||
while(leader+power+intel < totalAbil){
|
||||
while(leader+power+intel < defaultStatTotal){
|
||||
intel+=1;
|
||||
}
|
||||
|
||||
if(power < 10){
|
||||
leader -= 10 - power;
|
||||
power = 10;
|
||||
if(power < defaultStatMin){
|
||||
leader -= defaultStatMin - power;
|
||||
power = defaultStatMin;
|
||||
}
|
||||
|
||||
if(leader > 75){
|
||||
intel += leader - 75;
|
||||
leader = 75;
|
||||
if(leader > defaultStatMax){
|
||||
intel += leader - defaultStatMax;
|
||||
leader = defaultStatMax;
|
||||
}
|
||||
|
||||
if(intel > 75){
|
||||
leader += intel - 75;
|
||||
intel = 75;
|
||||
if(intel > defaultStatMax){
|
||||
leader += intel - defaultStatMax;
|
||||
intel = defaultStatMax;
|
||||
}
|
||||
|
||||
if(leader > defaultStatMax){
|
||||
power += leader - defaultStatMax;
|
||||
leader = defaultStatMax;
|
||||
}
|
||||
|
||||
$leader.val(leader);
|
||||
@@ -105,27 +113,32 @@ jQuery(function($){
|
||||
var intel = Math.random() * 6;
|
||||
var rate = leader + power + intel;
|
||||
|
||||
leader = Math.floor(leader / rate * totalAbil);
|
||||
power = Math.floor(power / rate * totalAbil);
|
||||
intel = Math.floor(intel / rate * totalAbil);
|
||||
leader = Math.floor(leader / rate * defaultStatTotal);
|
||||
power = Math.floor(power / rate * defaultStatTotal);
|
||||
intel = Math.floor(intel / rate * defaultStatTotal);
|
||||
|
||||
while(leader+power+intel < totalAbil){
|
||||
while(leader+power+intel < defaultStatTotal){
|
||||
intel+=1;
|
||||
}
|
||||
|
||||
if(leader < 10){
|
||||
power -= 10 - leader;
|
||||
leader = 10;
|
||||
if(leader < defaultStatMin){
|
||||
power -= defaultStatMin - leader;
|
||||
leader = defaultStatMin;
|
||||
}
|
||||
|
||||
if(power > 75){
|
||||
intel += power - 75;
|
||||
power = 75;
|
||||
if(power > defaultStatMax){
|
||||
intel += power - defaultStatMax;
|
||||
power = defaultStatMax;
|
||||
}
|
||||
|
||||
if(intel > 75){
|
||||
power += intel - 75;
|
||||
intel = 75;
|
||||
if(intel > defaultStatMax){
|
||||
power += intel - defaultStatMax;
|
||||
intel = defaultStatMax;
|
||||
}
|
||||
|
||||
if(power > defaultStatMax){
|
||||
leader += power - defaultStatMax;
|
||||
power = defaultStatMax;
|
||||
}
|
||||
|
||||
$leader.val(leader);
|
||||
|
||||
+2
-4
@@ -7,11 +7,9 @@ $loader->addPsr4('sammo\\', __DIR__.'/sammo', true);
|
||||
|
||||
$loader->addClassMap((function () {
|
||||
$d_settingMap = [];
|
||||
foreach (glob(__dir__.'/d_setting/*.php') as $filepath) {
|
||||
foreach (glob(__dir__.'/d_setting/*.orig.php') as $filepath) {
|
||||
$filepath = str_replace('.orig.php', '.php', $filepath);
|
||||
$filename = basename($filepath);
|
||||
if (Util::ends_with($filename, '.orig.php')) {
|
||||
continue;
|
||||
}
|
||||
$classname = explode('.', $filename)[0];
|
||||
$d_settingMap['sammo\\'.$classname] = $filepath;
|
||||
};
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
class GameConst
|
||||
class GameConst extends GameCustomConst
|
||||
{
|
||||
/** @var string 버전 */
|
||||
public static $title = "삼국지 모의전투 PHP HiDCHe";
|
||||
@@ -45,12 +45,6 @@ class GameConst
|
||||
public static $sabotageDefaultAmount = 100;
|
||||
/** @var int 계략시 수치 감소량($firingbase ~ $firingpower)*/
|
||||
public static $sabotageAmountCoef = 400;
|
||||
/** @var int 명장,지장에 사용될 통솔 제한*/
|
||||
public static $goodgenleader = 65;
|
||||
/** @var int 명장에 사용될 무력 제한*/
|
||||
public static $goodgenpower = 65;
|
||||
/** @var int 지장에 사용될 지력 제한*/
|
||||
public static $goodgenintel = 65;
|
||||
/** @var string 기본 배경색깔 푸른색*/
|
||||
public static $basecolor = "#000044";
|
||||
/** @var string 기본 배경색깔 초록색*/
|
||||
|
||||
@@ -127,8 +127,9 @@ class ResetHelper{
|
||||
}
|
||||
|
||||
$scenarioObj = new Scenario($scenario, false);
|
||||
$startyear = $scenarioObj->getYear()??GameConst::$defaultStartYear;
|
||||
$scenarioObj->buildConf();
|
||||
|
||||
$startyear = $scenarioObj->getYear()??GameConst::$defaultStartYear;
|
||||
|
||||
$db = DB::db();
|
||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||
@@ -160,6 +161,8 @@ class ResetHelper{
|
||||
$killturn = 4800 / $turnterm;
|
||||
if($npcmode == 1) { $killturn = intdiv($killturn, 3); }
|
||||
|
||||
|
||||
|
||||
$env = [
|
||||
'scenario'=>$scenario,
|
||||
'scenario_text'=>$scenarioObj->getTitle(),
|
||||
|
||||
@@ -148,6 +148,24 @@ class Scenario{
|
||||
}, Util::array_get($data['events'], []));
|
||||
}
|
||||
|
||||
private function getGameConf(){
|
||||
$defaultPath = self::SCENARIO_PATH."/default.json";
|
||||
if(!file_exists($defaultPath)){
|
||||
throw new \RuntimeException('기본 시나리오 설정 파일 없음!');
|
||||
}
|
||||
$default = Json::decode(file_get_contents($defaultPath));
|
||||
|
||||
$stat = [
|
||||
'statTotal'=>$this->data['stat']['total']??$default['stat']['total'],
|
||||
'statMin'=>$this->data['stat']['min']??$default['stat']['min'],
|
||||
'statMax'=>$this->data['stat']['max']??$default['stat']['max'],
|
||||
'statNPCMax'=>$this->data['stat']['npcMax']??$default['stat']['npcMax'],
|
||||
'statChiefMin'=>$this->data['stat']['chiefMin']??$default['stat']['chiefMin'],
|
||||
];
|
||||
|
||||
$this->gameConf = array_merge($stat);
|
||||
}
|
||||
|
||||
public function __construct(int $scenarioIdx, bool $lazyInit = true){
|
||||
$scenarioPath = self::SCENARIO_PATH."/scenario_{$scenarioIdx}.json";
|
||||
|
||||
@@ -157,6 +175,8 @@ class Scenario{
|
||||
$data = Json::decode(file_get_contents($scenarioPath));
|
||||
$this->data = $data;
|
||||
|
||||
$this->getGameConf();
|
||||
|
||||
$this->year = Util::array_get($data['startYear']);
|
||||
$this->title = Util::array_get($data['title'] , '');
|
||||
|
||||
@@ -292,7 +312,19 @@ class Scenario{
|
||||
}
|
||||
}
|
||||
|
||||
public function buildConf(){
|
||||
$path = __dir__.'/../d_setting';
|
||||
Util::generateFileUsingSimpleTemplate(
|
||||
$path.'/GameCustomConst.orig.php',
|
||||
$path.'/GameCustomConst.php',
|
||||
$this->gameConf,
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
public function build($env=[]){
|
||||
|
||||
|
||||
$this->initFull();
|
||||
|
||||
//NOTE: 초기화가 되어있다고 가정함.
|
||||
@@ -306,6 +338,9 @@ class Scenario{
|
||||
event변수 : currentEventID
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
$db = DB::db();
|
||||
|
||||
foreach($this->nations as $id=>$nation){
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
"stat":{
|
||||
"total":150,
|
||||
"min":10,
|
||||
"max":75
|
||||
"max":75,
|
||||
"npcMax":95,
|
||||
"chiefMin":65
|
||||
}
|
||||
}
|
||||
@@ -9,7 +9,8 @@
|
||||
"stat":{
|
||||
"total":220,
|
||||
"min":10,
|
||||
"max":95
|
||||
"max":95,
|
||||
"npcMax":95
|
||||
},
|
||||
"general":[
|
||||
[0, "김일융", -1, 0, null, 88, 83, 79, 0, 160, 300, null, null],
|
||||
|
||||
@@ -9,7 +9,8 @@
|
||||
"stat":{
|
||||
"total":220,
|
||||
"min":10,
|
||||
"max":95
|
||||
"max":95,
|
||||
"npcMax":95
|
||||
},
|
||||
"general":[
|
||||
[0, "가규", -1, 0, null, 78, 61, 84, 0, 160, 300, null, null],
|
||||
|
||||
Reference in New Issue
Block a user