#-----------------------------------------------------------#
#  죄와 벌++ 이율배반 										#
#  Copyright(C) 2001-2002 by Vivid Studio. BLANK BOARD		#
#  Vivid Studio.[ http://www17.big.or.jp/~obochan/vivid/ ]	#
#  BLANK BOARD [ http://pom.to/ ]							#
#-----------------------------------------------------------#
# 수행 PC용			Version 1.1								#
#--- [주의사항] --------------------------------------------#
# 1.이 스크립트는 이하의 이용규정에 따라 배포되고 있습니다.	#
#   http://www24.big.or.jp/~obo/game/ore_/gild/				#
#-----------------------------------------------------------#

#-------------------------------------------------------------------------------
# 수행 메뉴
sub training{

	if(!$type){

		if($hp<4){
			$log .= "체력이 너무 적습니다.<br>\n";
			$tm= $cmd = 0;
			$type='';
			&call_main_st;
		}else{
			$log	.= "수행을 시작합니다.<br>\n";
			$tm= $cmd = 0;
			$type	= '수행';

			$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="1">이전 대전자</option>\n| if($tid);
			$log2 .=qq|<option value="2">목록에서 선택</option>\n|;
			$log2 .=qq|<option value="0">그만둔다</option>\n|;
			$log2 .=qq|</select><br>\n|;
			$log2 .=qq|<input type="submit" $button1 value="NEXT">$td_end</form>\n|;
		}
	}
	&dat_write;
}

#-------------------------------------------------------------------------------
# 수행 처리1
sub training_exe{

	if($cmd==0){
		$log .= "수행을 중단합니다<br>\n";
		$tm = $cmd = 0;
		$type='';
		&call_main_st;

	}elsif($cmd==1 && !$com){

		# GET에 의한 부정 처리 페널티
		&penalty if($mv_mode eq 'pc' && $method eq 'POST' && !$post_flag);

		open(IN,"$usrdata$tid\.cgi") || &error("Open Error : $usrdata$tid\.cgi",1);
		$tdat = <IN>;
		close(IN);
	
		%VS = '';
		my @prats = split(/,/,$tdat);
		foreach $prats (@prats){
			my ($u,$q) = split(/;/,$prats);
			$VS{$u} = $q;
		}
	
		$tid	= $VS{'id'};		# ID
		$tnm	= $VS{'nm'};		# 이름
		$tlv	= $VS{'lv'};		# 레벨
		$thp	= $VS{'max_hp'};	# HP
		$thp_max= $VS{'max_hp'};	# MAX_HP
		$tmp	= $VS{'max_mp'};	# MP
		$tua	= $VS{'ua'};		# UA
		$tud	= $VS{'ud'};		# UD
		$tag	= $VS{'ag'};		# AG
		$tcp	= $VS{'camp'};		# 소속
		$tsg	= $VS{'sogo'};		# 칭호
	
		$tdf_a	= $VS{'df_a'};		# 방어구
		$tdg_a	= $VS{'dg_a'};		# 무구
	
		$log	.="이전 대전 상대와 수행을 시작합니다.<br>시합 개시!<br>\n";
		$type	= '수행중';
		$tm		= 0;

		$cmd	=-1;
#		$log2 .=qq|<form action="$script" method="$method" name="ore_"><td align="center" valign="middle">\n|;
#		$log2 .=qq|<input type="hidden" name="id" value="$id">\n<input type="hidden" name="pw" value="$pw">\n|;
#		$log2 .=qq|<input type="hidden" name="cmd" value="-1">\n|;
#		$log2 .=qq|<input type="submit" $button1 value="대결">$td_end</form>\n|;

		# 행동 세션 가산
		$act_cnt++;

#		&dat_write;

		require './inc/ore_sub-battle.cgi';	&bt_st;

	}else{&sele_list;}

}

#-------------------------------------------------------------------------------
# 수행 리스트 표시
sub sele_list {

	# GET에 의한 부정 처리 페널티
	&penalty if($mv_mode eq 'pc' && $method eq 'POST' && !$post_flag);

	local(@usrfile,@BT_LIST,@tdat);

	# 참가자 데이터 파일 목록 취득
	&usrdata_read;

	# 표시 참가자 랜덤 선출
	foreach(0 .. $bt_count){
		$bt_list = int(rand($#usrfile));

		$flag = 0;
		foreach(0 .. $#BT_LIST){
			$flag = 1 if $bt_list eq $BT_LIST[$_];
		}
		push(@BT_LIST,$bt_list) if !$flag;
	}
	@BT_LIST = sort(@BT_LIST);

	# 랜덤 선출 참가자 데이터 일괄 읽기
	foreach (0 .. $#BT_LIST) {
		open(IN,"$usrdata$usrfile[$BT_LIST[$_]]") || &error("Can't open $usrfile[$BT_LIST[$_]].cgi",1);
		push(@tdat,<IN>);
		close(IN);
	}

	# 참가자 스탯 취득
	foreach(0 ..$#tdat){
		%R = '';
		my @prats = split(/,/,$tdat[$_]);
		foreach $prats (@prats){
			my($y,$x) = split(/;/,$prats);
			$R{$y} = $x;
		}

		if($nm ne $R{'nm'}){
			$NM_V{$R{'nm'}}		= $R{'nm'};		# 이름
			$HP_MAX_V{$R{'nm'}}	= $R{'max_hp'};	# HP
			$MP_MAX_V{$R{'nm'}}	= $R{'max_mp'};	# MP
			$LV_V{$R{'nm'}}		= $R{'lv'};		# 레벨
			$TM_V{$R{'nm'}}		= $R{'tm'};		# 행동
			$UA_V{$R{'nm'}}		= $R{'ua'};		# UA
			$UD_V{$R{'nm'}}		= $R{'ud'};		# UD
			$LR_V{$R{'nm'}}		= $R{'lr'};		# LR
			$AG_V{$R{'nm'}}		= $R{'ag'};		# AG
			$CP_V{$R{'nm'}}		= $R{'camp'};	# 소속
			$SG_V{$R{'nm'}}		= $R{'sogo'};	# 칭호
			$N_M{$R{'nm'}}		= $R{'id'};		# ID
		}
	}

	# 수행 리스트 표시
	if(!$tm){

		$log .=qq|<form action="$script" method="$method" name="ore_">\n|;
		$log .=qq|<input type="hidden" name="id" value="$id">\n<input type="hidden" name="pw" value="$pw">\n|;
		$log .=qq|<input type="hidden" name="cmd" value="-1">\n|;
		$log .=qq|<table border="0" cellpadding="4" sellpadding="4" width="100%">\n<tr align="center" bgcolor="#ccccee"><td></td><td>순위</td><td>LV</td><td>이름</td><td>체력/정신</td><td>공격/방어/지휘/민첩</td><td>소속</td></tr>\n|;

		$l = $rk = 1;
		foreach $nm (sort sclv keys(%LV_V)){
			$lv_v = $LV_V{$nm};
			next if($lv_v<=0);
			if($lv_v<$prv_lv){ $rk = $l; }

			$log .= ($agent !~ /Mac/) ?
				qq|<tr bgcolor="#ccccee" align="center"><td><input type="radio" value="$N_M{$nm}" name="com" class="a5" onClick="location.href='#bt_start'">\n|:
				qq|<tr bgcolor="#ccccee" align="center"><td><input type="radio" value="$N_M{$nm}" name="com" class="a5">\n|;

			$log .="</td><td>$rk</td><td>$lv_v</td><td>";

			# 칭호
			$log .= ($SG_V{$nm} > 0) ? "$NM_V{$nm} [$sogo_p[$SG_V{$nm}]]" : "$NM_V{$nm}";

			$log .=qq|</td><td>$HP_MAX_V{$nm}/$MP_MAX_V{$nm}</td><td>$UA_V{$nm}/$UD_V{$nm}/$LR_V{$nm}/$AG_V{$nm}</td><td>$cmp[$CP_V{$nm}]</td></tr>\n|;

			$prv_lv = $lv_v;
			$l++;
		}
		$log .="</table>\n";
		$log .="<tt><br></tt><a name=\"bt_start\"><input type=submit value=\"대결\" class=\"button1\">\n";
		$log .="</td></form>\n";

		$tm=1;

		# 행동 세션 가산
		$act_cnt++;

		$layout_flag=1;
		&dat_write;
	}

	# 대전자 할당
	elsif($tm){

		if($com){
			open(IN,"$usrdata$com\.cgi") || &error("Open Error : $usrdata$com\.cgi",1);
			$tdat = <IN>;
			close(IN);

			%VS = '';
			my @prats = split(/,/,$tdat);
			foreach $prats (@prats){
				my ($u,$q) = split(/;/,$prats);
				$VS{$u} = $q;
			}

			$tid	= $VS{'id'};		# ID
			$tnm	= $VS{'nm'};		# 이름
			$tlv	= $VS{'lv'};		# 레벨
			$thp	= $VS{'max_hp'};	# HP
			$thp_max= $VS{'max_hp'};	# MAX_HP
			$tmp	= $VS{'max_mp'};	# MP
			$tua	= $VS{'ua'};		# UA
			$tud	= $VS{'ud'};		# UD
			$tag	= $VS{'ag'};		# AG
			$tcp	= $VS{'camp'};		# 소속
			$tsg	= $VS{'sogo'};		# 칭호

			$tdf_a	= $VS{'df_a'};		# 방어구
			$tdg_a	= $VS{'dg_a'};		# 무구

			$log	.="시합 개시!<br>\n";
			$type	= '수행중';
			$tm		= 0;
#			$log2	.=qq|<input type=submit value="NEXT!!" class="button1">$td_end</form>\n|;

			require './inc/ore_sub-battle.cgi';	&bt_st;
		}
		elsif(!$com){
			$log .="중단했다…<br>\n";
			$type	= '';
			$tm		= 0;
			&call_main_st;
		}
	}

#	&dat_write;
}

# 부정 GET 처리의 페널티
sub penalty{
	$pr=3600*24*3;
	$sogo=4;
	$camp=0;

	$tm = $cmd = 0;
	$type='복역중';
	$max_hp	=int($max_hp*0.8);
	$max_mp	=int($max_mp*0.8);
	$ua		=int($ua*0.8);
	$ud		=int($ud*0.8);
	$lr		=int($lr*0.8);
	$ag		=int($ag*0.8);

	&dat_write;

	&error("올바르지 않은 처리입니다. 페널티가 발생합니다.",1);
}

1;
