diff --git a/hwe/func.php b/hwe/func.php index 37eb5792..be532ebb 100644 --- a/hwe/func.php +++ b/hwe/func.php @@ -659,8 +659,10 @@ function commandTable() { commandGroup("======= 개 인 ========"); if($me['level'] >= 1) { addCommand("단련(자금$develcost, 군량$develcost)", 41); + addCommand("숙련전환(통솔경험, 자금$develcost, 군량$develcost)", 58); } else { addCommand("단련(자금$develcost, 군량$develcost)", 41, 0); + addCommand("숙련전환(통솔경험, 자금$develcost, 군량$develcost)", 58, 0); } addCommand("견문(자금?, 군량?, 경험치?)", 42); if($city['trade'] > 0 || $me['special'] == 30) { diff --git a/hwe/func_command.php b/hwe/func_command.php index 1d569fd3..02ad584e 100644 --- a/hwe/func_command.php +++ b/hwe/func_command.php @@ -251,7 +251,9 @@ function getTurn(array $general, $type, $font=1) { case 57: //모반 시도 $str[$i] = "모반 시도"; break; - + case 58: //숙련 전환 + $str[$i] = "숙련 전환"; + break; default: $str[$i] = "????"; break; @@ -623,6 +625,8 @@ function processCommand($no) { case 55: process_55($general); break; //거병 case 56: process_56($general); break; //해산 case 57: process_57($general); break; //모반 시도 + + case 58: process_58($general); break; //숙련 전환 } } } diff --git a/hwe/func_process.php b/hwe/func_process.php index 6f197759..e08616cd 100644 --- a/hwe/func_process.php +++ b/hwe/func_process.php @@ -2528,6 +2528,73 @@ function process_50(&$general) { pushGenLog($general, $log); } + +function process_58(&$general) { + $db = DB::db(); + $gameStor = KVStorage::getStorage($db, 'game_env'); + + $log = []; + $alllog = []; + $history = []; + $date = substr($general['turntime'],11,5); + + $admin = $gameStor->getValues(['year', 'month', 'develcost']); + + $command = DecodeCommand($general['turn0']); + + $fromDexIdx = $command[1]; + $toDexIdx = $command[2]; + + + + + if($general['nation'] == 0) { + $log[] = "●{$admin['month']}월:재야입니다. 숙련 전환 실패. <1>$date"; + } elseif($general['gold'] < $admin['develcost']) { + $log[] = "●{$admin['month']}월:자금이 모자랍니다. 숙련 전환 실패. <1>$date"; + } elseif($general['rice'] < $admin['develcost']) { + $log[] = "●{$admin['month']}월:군량이 모자랍니다. 숙련 전환 실패. <1>$date"; + } elseif($fromDexIdx < 0 || $fromDexIdx > 4 || $toDexIdx < 0 || $toDexIdx > 4){ + $log[] = "●{$admin['month']}월:올바르지 않은 병종 코드입니다. 숙련 전환 실패. <1>$date"; + } elseif($general['dex'.($fromDexIdx*10)] == 0) { + $log[] = "●{$admin['month']}월:전환할 병종 숙련이 없습니다. 숙련 전환 실패. <1>$date"; + } else { + + $fromOrigDex = $general['dex'.($fromDexIdx*10)]; + $toOrigDex = $general['dex'.($toDexIdx*10)]; + + $cutDex = Util::toInt($fromOrigDex * 0.3); + $fromNewDex = $fromOrigDex - $cutDex; + $addDex = Util::toInt($cutDex * 2 / 3); + $toNewDex = $toOrigDex + $addDex; + + $exp = 10; + $exp = CharExperience($exp, $general['personal']); + + $fromCrewStr = GameUnitConst::allType()[$fromDexIdx]; + $toCrewStr = GameUnitConst::allType()[$toDexIdx]; + + + $josaUl = JosaUtil::pick($cutDex, '을'); + $josaRo = JosaUtil::pick($addDex, '로'); + $log[] = "●{$admin['month']}월:$fromCrewStr 숙련 {$cutDex}{$josaUl} $toCrewStr 숙련 {$addDex}{$josaRo} 전환했습니다. <1>$date"; + + $general['leader2'] += 2; + + $db->update('general', [ + 'resturn'=>'SUCCESS', + 'gold'=>$db->sqleval('gold-%i', $admin['develcost']), + 'rice'=>$db->sqleval('rice-%i', $admin['develcost']), + 'experience'=>$db->sqleval('experience+%i',$exp), + 'leader2'=>$general['leader2'], + 'dex'.($fromDexIdx*10)=>$fromNewDex, + 'dex'.($toDexIdx*10)=>$toNewDex, + ], 'no=%i', $general['no']); + } + pushGenLog($general, $log); +} + + function process_99(&$general) { $db = DB::db(); $gameStor = KVStorage::getStorage($db, 'game_env'); diff --git a/hwe/preprocessing.php b/hwe/preprocessing.php index 3d884940..af363d27 100644 --- a/hwe/preprocessing.php +++ b/hwe/preprocessing.php @@ -98,6 +98,7 @@ switch($commandtype) { case 55: command_Single($turn, 55); break; //거병 case 56: command_Single($turn, 56); break; //해산 case 57: command_Single($turn, 57); break; //모반 시도 +// case 58: command_Single($turn, 58); break; //숙련 전환 // case 61: command_61($turn, 61); break; //불가침 // case 62: command_62($turn, 62); break; //선포 diff --git a/hwe/processing.php b/hwe/processing.php index 7cdf0468..3e2d2170 100644 --- a/hwe/processing.php +++ b/hwe/processing.php @@ -95,6 +95,7 @@ switch($commandtype) { case 55: command_Single($turn, 55); break; //거병 case 56: command_Single($turn, 56); break; //해산 case 57: command_Single($turn, 57); break; //모반 시도 + case 58: command_58( $turn, 58); break; //숙련 전환 case 61: command_61($turn, 61); break; //불가침 case 62: command_62($turn, 62); break; //선포 @@ -1724,6 +1725,56 @@ function command_54($turn, $command) { ender(); } +function command_58($turn, $command) { + $db = DB::db(); + $connect=$db->get(); + $userID = Session::getUserID(); + + starter("숙련 전환"); + + $dexVals = $db->queryFirstList('SELECT dex0, dex10, dex20, dex30, dex40 FROM general WHERE owner = %i', $userID); + + $dexTexts = []; + foreach($dexVals as $idx => $val){ + $prevDexLevel = getDexCall($val); + $newDexLevel = getDexCall(Util::toInt($val * 0.7)); + $addDex = Util::toInt(($val - $val * 0.7) * 0.5); + $dexTexts[$idx] = "$prevDexLevel ⇒ $newDexLevel, {$addDex} 전환"; + } + + echo " +본인의 특정 병종 숙련을 30% 줄이고, 줄어든 숙련 중 2/3(20%p)를 다른 병종 숙련으로 전환합니다.
+
+ +숙련을 + +으로 + +"; + for($i=0; $i < count($turn); $i++) { + echo " + "; + } + + echo " +
+"; + + ender(); +} + function command_61($turn, $command) { $db = DB::db(); $connect=$db->get();