Files
ore/inc/ore_sub-mission.cgi
T

437 lines
11 KiB
Perl
Executable File

#-----------------------------------------------------------#
# 죄와 벌++ 이율배반 #
# Copyright(C) 2001-2002 by Vivid Studio. BLANK BOARD #
# Vivid Studio.[ http://www17.big.or.jp/~obochan/vivid/ ] #
# BLANK BOARD [ http://pom.to/ ] #
#-----------------------------------------------------------#
# 군사 Version 1.1
#--- [주의사항] --------------------------------------------#
# 1.이 스크립트는 이하의 이용규정에 따라 배포되고 있습니다. #
# http://www24.big.or.jp/~obo/game/ore_/gild/ #
#-----------------------------------------------------------#
#-------------------------------------------------------------------------------
#군사 메뉴
sub mission{
if(!$type){
$log .= "군사를 실행합니다. 실행할 항목을 선택해 주십시오.<br>\n";
$tm=0;
$type='군사';
&mission_menu;
}
&dat_write;
}
sub mission_menu{
# 군사 커맨드
my @gu = ('그만두기','첩보','강탈','세뇌');
$log2 .=qq|<form action="$script" method="$method" name="ore_">\n|;
$log2 .=qq|<td align="center" valign="middle">\n| if($mv_mode eq 'pc');
$log2 .=qq|<input type="hidden" name="id" value="$id">\n<input type="hidden" name="pw" value="$pw">\n|;
$log2 .=qq|<select name="cmd" size="1">\n|;
foreach(0 .. $#gu){ $log2 .=qq|<option value="$_">$gu[$_]</option>\n|;}
$log2 .=qq|</select><br>\n|;
$log2 .=qq|<input type="submit" $button1 value="NEXT">$td_end</form>\n|;
}
sub misson_menu2{
$log2 .=qq|<form action="$script" method="$method" name="ore_">\n|;
$log2 .=qq|<td align="center" valign="middle">\n| if($mv_mode eq 'pc');
$log2 .=qq|<input type="hidden" name="id" value="$id">\n<input type="hidden" name="pw" value="$pw">\n|;
$log2 .=qq|<select name="cmd" size="1">\n|;
$log2 .=qq|<option value="0">그만두기</option>\n|;
foreach(1 .. $#cmp){ $log2 .=qq|<option value="$_">$cmp[$_]</option>\n|;}
$log2 .=qq|</select><br>\n|;
$log2 .=qq|<input type="submit" $button1 value="NEXT">$td_end</form>\n|;
}
#-------------------------------------------------------------------------------
#군사 처리
sub mission_exe{
if(!$tm){
if($camp<1){
$log .= "방랑 상태로는 군사를 실행할 수 없습니다.<br>\n";
$tm = $cmd = 0;
$type='';
&call_main_st;
}elsif($sogo==3||$sogo==4){
$log .= "우선 빚을 변제하여 $sogo_p[$sogo] 낙인을 지워 주십시오.<br>\n";
$tm = $cmd = 0;
$type='';
&call_main_st;
}elsif($cmd<=0 || $cmd>$#cmp){
$log .= "군사를 중지합니다<br>\n";
$tm = $cmd = 0;
$type='';
&call_main_st;
}elsif($cmd==1){
$log .= "적국에 첩보원을 보내 자금 조달 루트를 교란합니다.<br>표적 국가를 선택해 주십시오<br>\n";
&call_mapdata if($mv_mode eq 'pc');
&misson_menu2;
$tm=31;
}elsif($cmd==2){
$log .= "적국의 군량을 강탈합니다. 표적 국가를 선택해 주십시오(클릭커블 맵 지원)<br>\n";
&call_mapdata if($mv_mode eq 'pc');
&misson_menu2;
$tm=32;
}elsif($cmd==3){
$log .= "적국의 병사를 세뇌하여 자국으로 끌어들입니다.<br>표적 국가를 선택해 주십시오<br>\n";
&call_mapdata if($mv_mode eq 'pc');
&misson_menu2;
$tm=33;
}
}elsif($tm==31){#첩보 내용 1
&gun_tm31;
}elsif($tm==32){#강탈 내용 1
&gun_tm32;
}elsif($tm==33){#세뇌 내용 1
&gun_tm33;
}elsif($tm==34){#첩보 내용 2
&gun_tm34;
}elsif($tm==35){#강탈 내용 2
&gun_tm35;
}elsif($tm==36){#세뇌 내용 2
&gun_tm36;
}
&write_data;
}
#세뇌 내용
sub gun_tm33{
if($cmd<=0){
$log .= "세뇌를 중지합니다<br>\n";
$tm = $cmd = 0;
&mission_menu;
}elsif($cmd>0){
$v=$cmd;
if($v==$camp){
$log .= "자국은 세뇌할 수 없습니다.<br>\n";
$tm = $cmd = 0;
&mission_menu;
}elsif( (($cmd==1&&$cs1<2500) || ($cmd==1&&$ce1==1))||
(($cmd==2&&$cs2<2500) || ($cmd==2&&$ce2==1))||
(($cmd==3&&$cs3<2500) || ($cmd==3&&$ce3==1))||
(($cmd==4&&$cs4<2500) || ($cmd==4&&$ce4==1))||
(($cmd==5&&$cs5<2500) || ($cmd==5&&$ce5==1))){
$log .= "망국 또는 총 병사 수 2500 미만인 국가는 세뇌할 수 없습니다.<br>\n";
$tm = $cmd = 0;
&misson_menu2;
}elsif($v==0){
$log .= "<br>\n";
$tm = $cmd = 0;
&mission_menu;
}else{
$log .= "$cmp[$v]의 병사들을 세뇌합니다.<br>\n";
$log .= "최면술사를 파견합니다. 적국 국경까지 $GMW 시간 남았습니다<br>\n";
$nation=$v;
$pr=$GMT;
$tm=36;
}
}
}
#세뇌 내용 2
sub gun_tm36{
&syogo;
$vv=int(rand(3));
if($vv > 0){#성공 확률
$mes = "$cmp[$nation]의 병사들 세뇌에 성공했습니다!<br>$cmp[$nation]에서";
$wr_mes ="$date $cmp[$camp]의 $syogo(이)가 $cmp[$nation]의 병사";
$v=int(((rand(10)+1)*5)*$lr);
$v=2300 + int(rand(300)) if($v>2300);
$rank_exe++;
$mes .= "$v 명의 병사를 세뇌하여, $cmp[$camp]의 병사로 편입시켰습니다.";
$wr_mes .="$v 명을 세뇌하는 데 성공! $cmp[$camp]의 병사로 편입시켰습니다";
if($camp==1){
$cs1 += $v;
}elsif($camp==2){
$cs2 += $v;
}elsif($camp==3){
$cs3 += $v;
}elsif($camp==4){
$cs4 += $v;
}elsif($camp==5){
$cs5 += $v;
}
if($nation==1 && $cs1>=$v){
$cs1 -= $v;
}elsif($nation==2 && $cs2>=$v){
$cs2 -= $v;
}elsif($nation==3 && $cs3>=$v){
$cs3 -= $v;
}elsif($nation==4 && $cs4>=$v){
$cs4 -= $v;
}elsif($nation==5 && $cs5>=$v){
$cs5 -= $v;
}
$nation=0;
$tm = $cmd = 0;
$type='';
&call_main_st;
&hist_write;#국가 로그
}else{
$mes = "$cmp[$nation]의 병사들 세뇌에 실패했습니다...";
$wr_mes ="$date $cmp[$camp]의 $syogo(이)가 $cmp[$nation]의 병사들 세뇌를 시도했으나 실패한 듯하다";
&gun_no;
&hist_write;#국가 로그
}
}
#강탈 내용 1
sub gun_tm32{
&syogo;
if($cmd<=0){
$log .= "강탈을 중지합니다<br>\n";
$tm = $cmd = 0;
&mission_menu;
}elsif($cmd>0){
$v=$cmd;
if($v==$camp){
$log .= "자국은 강탈할 수 없습니다.<br>\n";
$tm = $cmd = 0;
&mission_menu;
}elsif( (($cmd==1&&$cf1<5000) || ($cmd==1&&$ce1==1))||
(($cmd==2&&$cf2<5000) || ($cmd==2&&$ce2==1))||
(($cmd==3&&$cf3<5000) || ($cmd==3&&$ce3==1))||
(($cmd==4&&$cf4<5000) || ($cmd==4&&$ce4==1))||
(($cmd==5&&$cf5<5000) || ($cmd==5&&$ce5==1))){
$log .= "망국 또는 총 군량 5000 미만인 국가는 강탈할 수 없습니다.\n";
$tm = $cmd = 0;
&mission_menu;
}elsif($v==0){
$log .= "<br>\n";
$tm = $cmd = 0;
&mission_menu;
}else{
$log .= "$cmp[$v]로부터 군량을 강탈합니다.<br>\n";
$log .= "기습부대를 파견합니다. 적국 국경까지 $GMW 시간 남았습니다<br>\n";
$nation=$v;
$pr=$GMT;
$tm=35;
}
}
}
#강탈 내용 2
sub gun_tm35{
&syogo;
$vv=int(rand(3));
if($vv > 0){#성공 확률
$mes = "$cmp[$nation]에 기습 공격을 감행하여 강탈에 성공했습니다!<br>$cmp[$nation]로부터";
$wr_mes ="$date $cmp[$camp]의 $syogo(이)가 $cmp[$nation]에 기습 공격을 감행.";
$v=int(((rand(10)+1)*10)*$lr);
$v=4500 + int(rand(1000)) if($v>4500);
$rank_exe++;
$vv=int($v/3*2);
$mes .= "$v의 군량을 강탈하여,<br>그중 $vv를 가져와 $cmp[$camp]의 군량으로 편입시켰습니다.<br>";
$wr_mes .="$v의 군량을 강탈하는 데 성공했다";
if($camp==1){
$cf1 += $vv;
}elsif($camp==2){
$cf2 += $vv;
}elsif($camp==3){
$cf3 += $vv;
}elsif($camp==4){
$cf4 += $vv;
}elsif($camp==5){
$cf5 += $vv;
}
if($nation==1 && $cf1>=$v){
$cf1 -= $v;
}elsif($nation==2 && $cf2>=$v){
$cf2 -= $v;
}elsif($nation==3 && $cf3>=$v){
$cf3 -= $v;
}elsif($nation==4 && $cf4>=$v){
$cf4 -= $v;
}elsif($nation==5 && $cf5>=$v){
$cf5 -= $v;
}
$nation=0;
$tm = $cmd = 0;
$type='';
&call_main_st;
&hist_write;#국가 로그
}else{
$mes = "$cmp[$nation] 기습 공격에 실패했습니다...<br>";
$wr_mes ="$date $cmp[$camp]의 $syogo(이)가 $cmp[$nation]에 기습 공격을 시도했으나 실패한 듯하다";
&gun_no;
&hist_write;#국가 로그
}
}
#첩보 내용 1
sub gun_tm31{
if($cmd<=0){
$log .= "첩보를 중지합니다<br>\n";
$tm = $cmd = 0;
&mission_menu;
}elsif($cmd>0){
$v=$cmd;
if($v==$camp){
$log .= "자국은 첩보할 수 없습니다.<br>\n";
$tm = $cmd = 0;
&mission_menu;
}elsif( (($cmd==1&&$cg1<600) || ($cmd==1&&$ce1==1))||
(($cmd==2&&$cg2<600) || ($cmd==2&&$ce2==1))||
(($cmd==3&&$cg3<600) || ($cmd==3&&$ce3==1))||
(($cmd==4&&$cg4<600) || ($cmd==4&&$ce4==1))||
(($cmd==5&&$cg5<600) || ($cmd==5&&$ce5==1))){
$log .= "망국 또는 국가 예산 800 이하인 국가는 첩보할 수 없습니다.\n";
$tm = $cmd = 0;
&mission_menu;
}elsif($v==0){
$log .= "<br>\n";
$tm = $cmd = 0;
&mission_menu;
}else{
$log .= "$cmp[$v]의 자금 조달 루트를 교란합니다.<br>\n";
$log .= "첩보원을 파견합니다. 적국 국경까지 $GMW 시간 남았습니다<br>\n";
$nation=$v;
$pr=$GMT;
$tm=34;
}
}
}
#첩보 내용 2
sub gun_tm34{
&syogo;
$vv=int(rand(3));
if($vv > 0){
$mes = "$cmp[$nation]의 자금 조달 루트 교란에 성공했습니다!<br>$cmp[$nation]로부터";
$wr_mes ="$date $cmp[$camp]의 $syogo(이)가 $cmp[$nation]의 자금 조달 루트를 교란하여,";
$v=int(((rand(5)+1)*5)*$lr);
$v=600 + int(rand(200)) if($v>600);
$rank_exe++;
$vv=int($v/2);
$mes .= "$v의 국가 예산이 유출되었습니다!<br>그중 $vv를 가져와 $cmp[$camp]의 국가 예산으로 편입시켰습니다.<br>";
$wr_mes .="$v의 국가 예산을 유출시키는 데 성공했다";
if($camp==1){
$cg1 += $vv;
}elsif($camp==2){
$cg2 += $vv;
}elsif($camp==3){
$cg3 += $vv;
}elsif($camp==4){
$cg4 += $vv;
}elsif($camp==5){
$cg5 += $vv;
}
if($nation==1 && $cg1>=$v){
$cg1 -= $v;
}elsif($nation==2 && $cg2>=$v){
$cg2 -= $v;
}elsif($nation==3 && $cg3>=$v){
$cg3 -= $v;
}elsif($nation==4 && $cg4>=$v){
$cg4 -= $v;
}elsif($nation==5 && $cg5>=$v){
$cg5 -= $v;
}
$nation=0;
$tm = $cmd = 0;
$type='';
&call_main_st;
&hist_write;#국가 로그
}else{
$mes = "$cmp[$nation]의 자금 조달 루트 교란에 실패했습니다...<br>";
$wr_mes ="$date $cmp[$camp]의 $syogo(이)가 $cmp[$nation]의 자금 조달 루트 교란을 획책했으나 실패한 듯하다";
&gun_no;
&hist_write;#국가 로그
}
}
#군사 실패 시 국가 스테이터스 감소
sub gun_no{
$rank_exe-=5;
$tm = $cmd = 0;
$type='';
&call_main_st;
$v=int(rand(50)+1);
$v2=int(rand(200)+1);
$v3=int(rand(100)+1);
if($camp==1&&$cg1>$v&&$cf1>$v2&&$cs1>$v3){
$cg1 -= $v;
$cf1 -= $v2;
$cs1 -= $v3;
}elsif($camp==2&&$cg2>$v&&$cf2>$v2&&$cs2>$v3){
$cg2 -= $v;
$cf2 -= $v2;
$cs2 -= $v3;
}elsif($camp==3&&$cg3>$v&&$cf3>$v2&&$cs3>$v3){
$cg3 -= $v;
$cf3 -= $v2;
$cs3 -= $v3;
}elsif($camp==4&&$cg4>$v&&$cf4>$v2&&$cs4>$v3){
$cg4 -= $v;
$cf4 -= $v2;
$cs4 -= $v3;
}elsif($camp==5&&$cg5>$v&&$cf5>$v2&&$cs5>$v3){
$cg5 -= $v;
$cf5 -= $v2;
$cs5 -= $v3;
}
}
1;