diff --git a/hwe/func_process.php b/hwe/func_process.php index 08579a3e..5e1c9e96 100644 --- a/hwe/func_process.php +++ b/hwe/func_process.php @@ -694,316 +694,6 @@ function process_31(&$general) { pushGenLog($general, $log); } -function process_42(&$general) { - $db = DB::db(); - $gameStor = KVStorage::getStorage($db, 'game_env'); - $connect=$db->get(); - - $log = []; - $alllog = []; - $history = []; - $date = substr($general['turntime'],11,5); - - $admin = $gameStor->getValues(['year', 'month']); - - $type = rand() % 27 + 1; - $exp = 30; - $ded = 0; - - // 성격 보정 - $exp = CharExperience($exp, $general['personal']); - $ded = CharDedication($ded, $general['personal']); - - $exp2 = $exp * 2; - - switch($type) { - case 1: - $log[] = "●{$admin['month']}월:지나가는 행인에게서 금을 300 받았습니다. <1>$date"; - // 자금 상승 // 명성 상승 - $query = "update general set resturn='SUCCESS',gold=gold+300,experience=experience+'$exp' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - break; - case 2: - $log[] = "●{$admin['month']}월:지나가는 행인에게서 쌀을 300 받았습니다. <1>$date"; - // 군량 상승 // 명성 상승 - $query = "update general set resturn='SUCCESS',rice=rice+300,experience=experience+'$exp' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - break; - case 3: - $log[] = "●{$admin['month']}월:어느 명사와 설전을 벌여 멋지게 이겼습니다. <1>$date"; - // 경험치 상승 // 명성 상승 - $general['intel2'] += 2; - $query = "update general set resturn='SUCCESS',intel2='{$general['intel2']}',experience=experience+'$exp2' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - break; - case 4: - $log[] = "●{$admin['month']}월:명사와 설전을 벌였으나 망신만 당했습니다. <1>$date"; - // 명성 상승 - $query = "update general set resturn='SUCCESS',experience=experience+'$exp' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - break; - case 5: - $log[] = "●{$admin['month']}월:동네 장사와 힘겨루기를 하여 멋지게 이겼습니다. <1>$date"; - // 경험치 상승 // 명성 상승 - $general['power2'] += 2; - $query = "update general set resturn='SUCCESS',power2='{$general['power2']}',experience=experience+'$exp2' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - break; - case 6: - $log[] = "●{$admin['month']}월:동네 장사와 힘겨루기를 했지만 망신만 당했습니다. <1>$date"; - // 명성 상승 - $query = "update general set resturn='SUCCESS',experience=experience+'$exp' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - break; - case 7: - $log[] = "●{$admin['month']}월:산적과 싸워 금 300을 빼앗았습니다. <1>$date"; - // 자금 상승 // 경험치 상승 // 명성 상승 - $general['power2'] += 2; - $query = "update general set resturn='SUCCESS',gold=gold+300,power2='{$general['power2']}',experience=experience+'$exp2' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - break; - case 8: - $log[] = "●{$admin['month']}월:산적을 만나 금 200을 빼앗겼습니다. <1>$date"; - $general['gold'] -= 200; - if($general['gold'] <= 0) { $general['gold'] = 0; } - // 자금 하락 // 경험 상승 - $query = "update general set resturn='SUCCESS',gold='{$general['gold']}',experience=experience+'$exp' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - break; - case 9: - $log[] = "●{$admin['month']}월:호랑이를 잡아 고기 300을 얻었습니다. <1>$date"; - // 군량 상승 // 경험치 상승 - $general['power2'] += 2; - $query = "update general set resturn='SUCCESS',rice=rice+300,power2='{$general['power2']}',experience=experience+'$exp2' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - break; - case 10: - $log[] = "●{$admin['month']}월:호랑이에게 물려 다쳤습니다. <1>$date"; - // 경험치 하락 // 명성 상승 - $injury = rand() % 10 + 10; - $general['power2']--; - $query = "update general set resturn='SUCCESS',injury=injury+'$injury',power2='{$general['power2']}',experience=experience+'$exp' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - break; - case 11: - $log[] = "●{$admin['month']}월:곰을 잡아 고기 300을 얻었습니다. <1>$date"; - // 군량 상승 // 경험치 상승 // 명성 상승 - $general['power2'] += 2; - $query = "update general set resturn='SUCCESS',rice=rice+300,power2='{$general['power2']}',experience=experience+'$exp2' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - break; - case 12: - $log[] = "●{$admin['month']}월:곰에게 할퀴어 다쳤습니다. <1>$date"; - // 경험치 하락 // 명성 상승 - $injury = rand() % 10 + 10; - $general['power2']--; - $query = "update general set resturn='SUCCESS',injury=injury+'$injury',power2='{$general['power2']}',experience=experience+'$exp' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - break; - case 13: - $log[] = "●{$admin['month']}월:주점에서 사람들과 어울려 술을 마셨습니다. <1>$date"; - // 명성 상승 - $query = "update general set resturn='SUCCESS',experience=experience+'$exp2' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - break; - case 14: - $log[] = "●{$admin['month']}월:위기에 빠진 사람을 구해주었습니다. <1>$date"; - // 명성 상승 - $query = "update general set resturn='SUCCESS',experience=experience+'$exp2' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - break; - case 15: - $log[] = "●{$admin['month']}월:위기에 빠진 사람을 구해주다가 다쳤습니다. <1>$date"; - // 경험치 하락 // 명성 상승 - $injury = rand() % 10 + 10; - $general['power2']--; - $query = "update general set resturn='SUCCESS',injury=injury+'$injury',power2='{$general['power2']}',experience=experience+'$exp2' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - break; - case 16: - $log[] = "●{$admin['month']}월:돈을 빌려주었다가 이자 300을 받았습니다. <1>$date"; - // 경험치 상승 // 명성 상승 - $general['intel2']++; - $query = "update general set resturn='SUCCESS',gold=gold+300,intel2='{$general['intel2']}',experience=experience+'$exp2' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - break; - case 17: - $log[] = "●{$admin['month']}월:돈을 200 빌려주었다가 떼어먹혔습니다. <1>$date"; - $general['gold'] -= 200; - if($general['gold'] <= 0) { $general['gold'] = 0; } - // 명성 상승 - $query = "update general set resturn='SUCCESS',gold='{$general['gold']}',experience=experience+'$exp' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - break; - case 18: - $log[] = "●{$admin['month']}월:쌀을 빌려주었다가 이자 300을 받았습니다. <1>$date"; - // 경험치 상승 // 명성 상승 - $general['intel2']++; - $query = "update general set resturn='SUCCESS',rice=rice+300,intel2='{$general['intel2']}',experience=experience+'$exp2' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - break; - case 19: - $log[] = "●{$admin['month']}월:쌀을 200 빌려주었다가 떼어먹혔습니다. <1>$date"; - $general['rice'] -= 200; - if($general['rice'] <= 0) { $general['rice'] = 0; } - // 명성 상승 - $query = "update general set resturn='SUCCESS',rice='{$general['rice']}',experience=experience+'$exp' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - break; - case 20: - $log[] = "●{$admin['month']}월:거리에서 글 모르는 아이들을 모아 글을 가르쳤습니다. <1>$date"; - // 경험치 상승 // 명성 상승 - $general['intel2'] += 2; - $query = "update general set resturn='SUCCESS',intel2='{$general['intel2']}',experience=experience+'$exp2' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - break; - case 21: - $log[] = "●{$admin['month']}월:백성들에게 현인의 가르침을 설파했습니다. <1>$date"; - // 경험치 상승 // 명성 상승 - $general['leader2'] += 2; - $query = "update general set resturn='SUCCESS',leader2='{$general['leader2']}',experience=experience+'$exp2' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - break; - case 22: - $log[] = "●{$admin['month']}월:어느 집의 무너진 울타리를 고쳐주었습니다. <1>$date"; - // 경험치 상승 // 명성 상승 - $general['power2'] += 2; - $query = "update general set resturn='SUCCESS',power2='{$general['power2']}',experience=experience+'$exp2' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - break; - case 23: - $log[] = "●{$admin['month']}월:어느 집의 도망친 가축을 되찾아 주었습니다. <1>$date"; - // 경험치 상승 // 명성 상승 - $general['leader2'] += 2; - $query = "update general set resturn='SUCCESS',leader2='{$general['leader2']}',experience=experience+'$exp2' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - break; - case 24: - $log[] = "●{$admin['month']}월:호랑이에게 물려 크게 다쳤습니다. <1>$date"; - // 경험치 하락 // 명성 상승 - $injury = rand() % 30 + 20; - $general['power2']--; - $query = "update general set resturn='SUCCESS',injury=injury+'$injury',power2='{$general['power2']}',experience=experience+'$exp' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - break; - case 25: - $log[] = "●{$admin['month']}월:곰에게 할퀴어 크게 다쳤습니다. <1>$date"; - // 경험치 하락 // 명성 상승 - $injury = rand() % 30 + 20; - $general['power2']--; - $query = "update general set resturn='SUCCESS',injury=injury+'$injury',power2='{$general['power2']}',experience=experience+'$exp' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - break; - case 26: - $log[] = "●{$admin['month']}월:위기에 빠진 사람을 구하다가 죽을뻔 했습니다. <1>$date"; - // 경험치 하락 // 명성 상승 - $injury = rand() % 50 + 30; - $general['power2']--; - $query = "update general set resturn='SUCCESS',injury=injury+'$injury',power2='{$general['power2']}',experience=experience+'$exp2' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - break; - default: - $log[] = "●{$admin['month']}월:아무일도 일어나지 않았습니다. <1>$date"; - // 명성 상승 - $query = "update general set resturn='SUCCESS',experience=experience+'$exp' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - break; - } - - $log = checkAbility($general, $log); - pushGenLog($general, $log); -} - -function process_43(&$general) { - $db = DB::db(); - $gameStor = KVStorage::getStorage($db, 'game_env'); - $connect=$db->get(); - - $genlog = []; - $log = []; - $alllog = []; - $history = []; - $date = substr($general['turntime'],11,5); - - $admin = $gameStor->getValues(['year', 'month']); - - $command = DecodeCommand($general['turn0']); - $what = $command[3]; - $who = $command[2]; - $amount = $command[1]; - $amount *= 100; // 100~10000까지 - - if($amount > 10000) { $amount = 10000; } - if($amount < 100) { $amount = 100; } - if($what == 1) { $dtype = "금"; } - elseif($what == 2) { $dtype = "쌀"; } - else { $what = 2; $dtype = "쌀"; } - - $query = "select nation,supply from city where city='{$general['city']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $city = MYDB_fetch_array($result); - - $query = "select no,name,nation,gold,rice from general where no='$who'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $gen = MYDB_fetch_array($result); - - if($what == 1 && $general['gold'] < $amount) { $amount = $general['gold']; } - if($what == 2 && $general['rice'] < $amount) { $amount = $general['rice']; } - - if(!$gen) { - $log[] = "●{$admin['month']}월:없는 장수입니다. 증여 실패. <1>$date"; - } elseif($what == 1 && $general['gold'] <= 0) { - $log[] = "●{$admin['month']}월:자금이 없습니다. 증여 실패. <1>$date"; - } elseif($what == 2 && $general['rice'] <= 0) { - $log[] = "●{$admin['month']}월:군량이 없습니다. 증여 실패. <1>$date"; - } elseif($general['level'] == 0) { - $log[] = "●{$admin['month']}월:재야는 불가능합니다. 증여 실패. <1>$date"; - } elseif($general['nation'] != $city['nation']) { - $log[] = "●{$admin['month']}월:아국이 아닙니다. 증여 실패. <1>$date"; - } elseif($general['nation'] != $gen['nation']) { - $log[] = "●{$admin['month']}월:아국 장수가 아닙니다. 증여 실패. <1>$date"; - } elseif($city['supply'] == 0) { - $log[] = "●{$admin['month']}월:고립된 도시입니다. 증여 실패. <1>$date"; - } else { - $genlog[] = "●{$admin['month']}월:{$general['name']}에게서 $dtype $amount을 증여 받았습니다."; - $log[] = "●{$admin['month']}월:{$gen['name']}에게 $dtype $amount을 증여했습니다. <1>$date"; - - if($what == 1) { - $gen['gold'] += $amount; - $query = "update general set gold='{$gen['gold']}' where no='$who'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - $general['gold'] -= $amount; - $query = "update general set gold='{$general['gold']}' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } elseif($what == 2) { - $gen['rice'] += $amount; - $query = "update general set rice='{$gen['rice']}' where no='$who'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - $general['rice'] -= $amount; - $query = "update general set rice='{$general['rice']}' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } - - $exp = 70; - $ded = 100; - - // 성격 보정 - $exp = CharExperience($exp, $general['personal']); - $ded = CharDedication($ded, $general['personal']); - - // 경험치 상승 // 공헌도, 명성 상승 - $general['leader2']++; - $query = "update general set resturn='SUCCESS',leader2='{$general['leader2']}',dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - $log = checkAbility($general, $log); - } - pushGenLog($general, $log); - pushGenLog($gen, $genlog); -} - function process_48(&$general) { $db = DB::db(); $gameStor = KVStorage::getStorage($db, 'game_env'); diff --git a/hwe/sammo/Command/General/che_견문.php b/hwe/sammo/Command/General/che_견문.php new file mode 100644 index 00000000..495b90b1 --- /dev/null +++ b/hwe/sammo/Command/General/che_견문.php @@ -0,0 +1,120 @@ +generalObj; + + $this->runnableConstraints=[ + ]; + + } + + protected function argTest():bool{ + $this->arg = null; + return true; + } + + public function getCost():array{ + return [0, 0]; + } + + public function getPreReqTurn():int{ + return 0; + } + + public function getPostReqTurn():int{ + return 0; + } + + public function run():bool{ + if(!$this->isRunnable()){ + throw new \RuntimeException('불가능한 커맨드를 강제로 실행 시도'); + } + + $db = DB::db(); + + $general = $this->generalObj; + $date = substr($general->getVar('turntime'),11,5); + + $sightseeing = new SightseeingMessage(); + + [$type, $text] = $sightseeing->pickAction(); + + $exp = 0; + + if($type & SightseeingMessage::IncExp){ + $exp += 30; + } + if($type & SightseeingMessage::IncHeavyExp){ + $exp += 60; + } + if($type & SightseeingMessage::IncLeadership){ + $general->increaseVar('leader2', 2); + } + if($type & SightseeingMessage::IncPower){ + $general->increaseVar('power2', 2); + } + if($type & SightseeingMessage::IncIntel){ + $general->increaseVar('intel2', 2); + } + if($type & SightseeingMessage::IncGold){ + $general->increaseVar('gold', 300); + $text = str_replace(':amount:', '300', $text); + } + if($type & SightseeingMessage::IncRice){ + $general->increaseVar('rice', 300); + $text = str_replace(':amount:', '300', $text); + } + if($type & SightseeingMessage::DecGold){ + $general->increaseVarWithLimit('gold', -200, 0); + $text = str_replace(':amount:', '200', $text); + } + if($type & SightseeingMessage::DecRice){ + $general->increaseVarWithLimit('rice', -200, 0); + $text = str_replace(':amount:', '200', $text); + } + if($type & SightseeingMessage::Wounded){ + $general->increaseVarWithLimit('injury', Util::randRangeInt(10, 20), null, 80); + } + if($type & SightseeingMessage::HeavyWounded){ + $general->increaseVarWithLimit('injury', Util::randRangeInt(20, 50), null, 80); + } + + $logger = $general->getLogger(); + + $logger->pushGeneralActionLog("{$text} <1>$date"); + + $exp = $general->onPreGeneralStatUpdate($general, 'experience', $exp); + + $general->increaseVar('experience', $exp); + $general->setResultTurn(new LastTurn(static::getName(), $this->arg)); + $general->checkStatChange(); + $general->applyDB($db); + + return true; + } + + +} \ No newline at end of file diff --git a/hwe/sammo/TextDecoration/SightseeingMessage.php b/hwe/sammo/TextDecoration/SightseeingMessage.php new file mode 100644 index 00000000..aa0430b7 --- /dev/null +++ b/hwe/sammo/TextDecoration/SightseeingMessage.php @@ -0,0 +1,111 @@ +:amount: 받았습니다.', + ]], 1], + [[self::IncExp|self::IncRice,[ + '지나가는 행인에게서 쌀을 :amount: 받았습니다.', + ]], 1], + [[self::IncExp|self::DecGold,[ + '산적을 만나 금 :amount:을 빼앗겼습니다.', + '돈을 :amount: 빌려주었다가 떼어먹혔습니다.', + ]], 1], + [[self::IncExp|self::DecRice,[ + '쌀을 :amount: 빌려주었다가 떼어먹혔습니다.', + ]], 1], + [[self::IncExp|self::Wounded,[ + '호랑이에게 물려 다쳤습니다.', + '곰에게 할퀴어 다쳤습니다.', + ]], 1], + [[self::IncHeavyExp|self::Wounded,[ + '위기에 빠진 사람을 구해주다가 다쳤습니다.', + ]], 1], + [[self::IncExp|self::HeavyWounded,[ + '호랑이에게 물려 크게 다쳤습니다.', + '곰에게 할퀴어 크게 다쳤습니다.', + ]], 1], + [[self::IncHeavyExp|self::Wounded|self::HeavyWounded,[ + '위기에 빠진 사람을 구하다가 죽을뻔 했습니다.', + ]], 1], + [[self::IncHeavyExp|self::IncPower|self::IncGold,[ + '산적과 싸워 금 :amount:을 빼앗았습니다.', + ]], 1], + [[self::IncHeavyExp|self::IncPower|self::IncRice,[ + '호랑이를 잡아 고기 :amount:을 얻었습니다.', + '곰을 잡아 고기 :amount:을 얻었습니다.', + ]], 1], + [[self::IncHeavyExp|self::IncIntel|self::IncGold,[ + '돈을 빌려주었다가 이자 :amount:을 받았습니다.', + ]], 1], + [[self::IncHeavyExp|self::IncIntel|self::IncRice,[ + '쌀을 빌려주었다가 이자 300을 받았습니다.', + ]], 1], + + ]; + } + + protected static function initMessageList():void{ + static::$messages = static::getMessageList(); + } + + function __construct() + { + //TODO: 장수 이름이 들어가는 경우도 고려? + if(static::$messages === null){ + static::buildMessageList(); + } + } + + public function pickAction():array{ + [$type, $texts] = Util::choiceRandomUsingWeightPair(static::$messages); + $text = Util::choiceRandom($texts); + + return [$type, $text]; + } +} \ No newline at end of file