From bf233f75523d7fa837e3487a739c3e5c49e30630 Mon Sep 17 00:00:00 2001 From: hide_d Date: Mon, 21 May 2018 05:10:44 +0900 Subject: [PATCH] =?UTF-8?q?=EC=8B=9C=EB=82=98=EB=A6=AC=EC=98=A4=EB=A7=88?= =?UTF-8?q?=EB=8B=A4=20=EB=B3=84=EB=8F=84=EB=A1=9C=20=EC=8A=A4=ED=83=AF=20?= =?UTF-8?q?=EC=A0=9C=ED=95=9C=EC=B9=98=EB=A5=BC=20=EC=84=A4=EC=A0=95=20?= =?UTF-8?q?=EA=B0=80=EB=8A=A5=ED=95=98=EB=8F=84=EB=A1=9D=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/b_myBossInfo.php | 16 ++--- hwe/c_myBossInfo.php | 16 ++--- hwe/func_converter.php | 14 ++--- hwe/func_gamerule.php | 71 +--------------------- hwe/func_process_chief.php | 30 +++++----- hwe/func_process_personnel.php | 36 +++++------ hwe/join.php | 9 ++- hwe/join_post.php | 8 +-- hwe/js/join.js | 105 ++++++++++++++++++--------------- hwe/lib.php | 6 +- hwe/sammo/GameConst.php | 8 +-- hwe/sammo/ResetHelper.php | 5 +- hwe/sammo/Scenario.php | 35 +++++++++++ hwe/scenario/default.json | 4 +- hwe/scenario/scenario_30.json | 3 +- hwe/scenario/scenario_31.json | 3 +- 16 files changed, 176 insertions(+), 193 deletions(-) diff --git a/hwe/b_myBossInfo.php b/hwe/b_myBossInfo.php index be0ca319..8f83f7b2 100644 --- a/hwe/b_myBossInfo.php +++ b/hwe/b_myBossInfo.php @@ -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 ""; } @@ -309,7 +309,7 @@ if($meLevel >= 5) { "; - $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) { "; - $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++) { diff --git a/hwe/c_myBossInfo.php b/hwe/c_myBossInfo.php index 8bc7c92c..cf0db051 100644 --- a/hwe/c_myBossInfo.php +++ b/hwe/c_myBossInfo.php @@ -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; } diff --git a/hwe/func_converter.php b/hwe/func_converter.php index 83d45e69..78c98ebb 100644 --- a/hwe/func_converter.php +++ b/hwe/func_converter.php @@ -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; diff --git a/hwe/func_gamerule.php b/hwe/func_gamerule.php index 15bfeb5f..9ae272a6 100644 --- a/hwe/func_gamerule.php +++ b/hwe/func_gamerule.php @@ -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); -} - -/** + /** * 게임 내부에 사용하는 유틸리티 함수들을 분리 */ diff --git a/hwe/func_process_chief.php b/hwe/func_process_chief.php index 7ded1719..3a9737c4 100644 --- a/hwe/func_process_chief.php +++ b/hwe/func_process_chief.php @@ -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; diff --git a/hwe/func_process_personnel.php b/hwe/func_process_personnel.php index 9b642a8e..ad22b2c6 100644 --- a/hwe/func_process_personnel.php +++ b/hwe/func_process_personnel.php @@ -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; } } diff --git a/hwe/join.php b/hwe/join.php index 87de950c..7c38ef31 100644 --- a/hwe/join.php +++ b/hwe/join.php @@ -32,6 +32,11 @@ $connect=$db->get(); <?=UniqueConst::$serverName?>: 장수생성 + @@ -156,13 +161,13 @@ if ($admin['show_img_level'] >= 1 && $member['grade'] >= 1 && $member['picture'] - 모든 능력치는 ( 10 <= 능력치 <= 75 ) 사이로 잡으셔야 합니다.
+ 모든 능력치는 ( 10 <= 능력치 <= ) 사이로 잡으셔야 합니다.
그 외의 능력치는 가입되지 않습니다.
- 능력치의 총합은 150입니다. 가입후 0~10의 능력치 보너스를 받게 됩니다.
+ 능력치의 총합은 입니다. 가입후 0~10의 능력치 보너스를 받게 됩니다.
임의의 도시에서 재야로 시작하며 건국과 임관은 게임 내에서 실행합니다. diff --git a/hwe/join_post.php b/hwe/join_post.php index 8a699fd6..ee7e359e 100644 --- a/hwe/join_post.php +++ b/hwe/join_post.php @@ -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) { "); exit; } -if ($leader + $power + $intel > 150) { +if ($leader + $power + $intel > GameConst::$defaultStatTotal) { echo(""); exit; diff --git a/hwe/js/join.js b/hwe/js/join.js index 7bdff956..f2eb742a 100644 --- a/hwe/js/join.js +++ b/hwe/js/join.js @@ -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); diff --git a/hwe/lib.php b/hwe/lib.php index 434661b0..070f19e5 100644 --- a/hwe/lib.php +++ b/hwe/lib.php @@ -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; }; diff --git a/hwe/sammo/GameConst.php b/hwe/sammo/GameConst.php index 43d1615d..5588d451 100644 --- a/hwe/sammo/GameConst.php +++ b/hwe/sammo/GameConst.php @@ -1,7 +1,7 @@ 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(), diff --git a/hwe/sammo/Scenario.php b/hwe/sammo/Scenario.php index 6065c142..580fe1f3 100644 --- a/hwe/sammo/Scenario.php +++ b/hwe/sammo/Scenario.php @@ -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){ diff --git a/hwe/scenario/default.json b/hwe/scenario/default.json index 7dad565b..7fe2b57b 100644 --- a/hwe/scenario/default.json +++ b/hwe/scenario/default.json @@ -2,6 +2,8 @@ "stat":{ "total":150, "min":10, - "max":75 + "max":75, + "npcMax":95, + "chiefMin":65 } } \ No newline at end of file diff --git a/hwe/scenario/scenario_30.json b/hwe/scenario/scenario_30.json index a6628031..317f129e 100644 --- a/hwe/scenario/scenario_30.json +++ b/hwe/scenario/scenario_30.json @@ -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], diff --git a/hwe/scenario/scenario_31.json b/hwe/scenario/scenario_31.json index 14784cdb..fc5f4774 100644 --- a/hwe/scenario/scenario_31.json +++ b/hwe/scenario/scenario_31.json @@ -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],