#-----------------------------------------------------------# # 罪と罰++ 二律背反 # # 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.0 # Arranged by あくあ # HPタイトル [http://aqure.zive.net/] #--- [注意事項] --------------------------------------------# # ・このスクリプトは以下の利用規程に従って配布しています。 # # http://www24.big.or.jp/~obo/game/ore_/gild/ # #-----------------------------------------------------------# # 迷宮スクリプト # キャラデータに追加する変数 # $dung_xx , $dung_yy, $dung_dir # # エンカウンター sub dung_enc{ $log .= "突然、不気味な気配が行く手をはばんだ!!
\n"; $tm = 0; # 国技を使わない $nation = 8; $type = '遭遇'; $cmd = 4; } sub dung{ if(!$type){ if($hp<4){ $log .= "体力が少なすぎます"; $type=''; $tm=$cmd=0; &call_main_st; } else { $tm=0; $type='迷宮'; $log .= "$nmは、ぽっかりと口をあけた迷宮の入り口へと足を踏み入れた
\n"; # 位置を初期化 $dung_fl = 1; $dung_dir = 2; $dung_xx = 1; $dung_yy = 1; &dung_view; $log .= "
"; &dung_pos; if($m == 9){ &dung_menu_exit; }else{ &dung_menu; } } } &dat_write; } # 現在の位置 sub dung_pos{ @dung_dstr = ('北','東','南','西'); $log .= "現在は、地下$dung_fl階の位置($dung_xx,$dung_yy)で、$dung_dstr[$dung_dir]を向いています。
\n"; } # 右を向く sub dung_turn_right{ if($dung_dir>2){ $dung_dir = 0; } else { $dung_dir++; } } # 左を向く sub dung_turn_left{ if($dung_dir<1){ $dung_dir = 3; } else { $dung_dir--; } } sub dung_map_data{ # マップ # マイナス座標に到達できる場所は、壁で塞ぐこと # 0:壁 # 1:通路 # 7:上階段 # 8:下階段 # 9:出口 if ($dung_fl == 1){ # Floor 1 $dung_map = [ [0,0,0,0,0] ,[0,9,1,1,1] ,[0,1,1,0,1] ,[0,1,0,8,1] ,[0,1,1,1,1] ]; } elsif ($dung_fl == 2){ # Floor 2 $dung_map = [ [0,0,0,0,0,0,0,0,0] ,[0,1,1,1,1,1,1,1,1] ,[0,1,0,0,1,0,1,1,1] ,[0,1,0,7,1,0,1,1,1] ,[0,1,1,1,1,0,1,1,1] ]; } } sub dung_dirxy{ # $dung_dirxy->[北東南西]->[上下左右] $dung_dirx = [ [0,0,-1,1] # N ,[1,-1,0,0] # E ,[0,0,1,-1] # S ,[-1,1,0,0] # W ]; $dung_diry = [ [-1,1,0,0] # N ,[0,0,-1,1] # E ,[1,-1,0,0] # S ,[0,0,1,-1] # W ]; } # sub dung_view{ &dung_map_data; # 地形 @map_parts = ( '壁です' ,'真っ暗です' ,'','','','','' ,'上への階段です' ,'下への階段です' ,'出口です' ); &dung_dirxy; # 前 $xx = $dung_xx+$dung_dirx->[$dung_dir]->[0]; $yy = $dung_yy+$dung_diry->[$dung_dir]->[0]; $m = $dung_map->[$yy]->[$xx]; # $log .= "前は".$map_parts[$m].".\n"; # 座標を表示(DEBUG) #$log .= "座標($xx,$yy)$m:".$map_parts[$m]."\n"; # 左 $xx = $dung_xx+$dung_dirx->[$dung_dir]->[2]; $yy = $dung_yy+$dung_diry->[$dung_dir]->[2]; $m = $dung_map->[$yy]->[$xx]; # $log .= "左は".$map_parts[$m].".\n"; #$log .= "($xx,$yy,$m)"; # 右 $xx = $dung_xx+$dung_dirx->[$dung_dir]->[3]; $yy = $dung_yy+$dung_diry->[$dung_dir]->[3]; $m = $dung_map->[$yy]->[$xx]; # $log .= "右は".$map_parts[$m].".
\n"; #$log .= "($xx,$yy,$m)"; } sub dung_menu{ $log2 .=qq|
\n|; $log2 .=qq|\n| if($mv_mode eq 'pc'); $log2 .=qq|\n\n|; $log2 .=qq|
\n|; $log2 .=qq|$td_end
\n|; } sub dung_menu_exit{ $log2 .=qq|
\n|; $log2 .=qq|\n| if($mv_mode eq 'pc'); $log2 .=qq|\n\n|; $log2 .=qq|
\n|; $log2 .=qq|$td_end
\n|; } sub dung_menu_fl_up{ $log2 .=qq|
\n|; $log2 .=qq|\n| if($mv_mode eq 'pc'); $log2 .=qq|\n\n|; $log2 .=qq|
\n|; $log2 .=qq|$td_end
\n|; } sub dung_menu_fl_dn{ $log2 .=qq|
\n|; $log2 .=qq|\n| if($mv_mode eq 'pc'); $log2 .=qq|\n\n|; $log2 .=qq|
\n|; $log2 .=qq|$td_end
\n|; } sub dung_exe{ if(!$tm){ if($cmd==-2){ $log .= "翼のペンダントが光だし、$nmは、光に包まれた。
\n"; $log .= "光が収束したとき、迷宮の入り口に立っていた
\n"; $tm = $cmd = 0; $type = ''; &call_main_st; }elsif($cmd<=-1){ $log .= "$nmは、迷宮をあとにした
\n"; $tm = $cmd = 0; $type = ''; &call_main_st; }elsif($cmd==0){ # 移動 &dung_map_data; &dung_dirxy; $xx = $dung_dirx->[$dung_dir]->[0]; $yy = $dung_diry->[$dung_dir]->[0]; #$dung_xx = $dung_xx + $xx; #$dung_yy = $dung_yy + $yy; #if($dung_xx<1){ $dung_xx = 0; } #if($dung_yy<1){ $dung_yy = 0; } if($dung_map->[$yy+$dung_yy]->[$xx+$dung_xx] == 9){ # 出口 $log .= "$nmは、暗い迷宮の出口から外へ出た
\n"; $tm = $cmd = 0; $type = ''; &call_main_st; } elsif($dung_map->[$yy+$dung_yy]->[$xx+$dung_xx] == 7) { # 上階段 $log .= "上への階段がある
\n"; &dung_menu_fl_up; } elsif($dung_map->[$yy+$dung_yy]->[$xx+$dung_xx] == 8) { # 下階段 $log .= "下への階段がある
\n"; &dung_menu_fl_dn; } elsif($dung_map->[$yy+$dung_yy]->[$xx+$dung_xx] == 0) { $log .= "目の前は壁だ!
\n"; &dung_menu; } else { $dung_xx = $dung_xx + $xx; $dung_yy = $dung_yy + $yy; $log .= "$nmは、ゆっくりと先に進んだ
\n"; # エンカウンター if(int(rand($enc_hit))==1){ &dung_enc; $log2 .=qq|
\n|; $log2 .=qq|\n| if($mv_mode eq 'pc'); $log2 .=qq|\n\n|; $log2 .=qq|$td_end
\n|; } else { &dung_menu; } } }elsif($cmd==1){ $log .= "右を向いた
\n"; &dung_turn_right; &dung_menu; }elsif($cmd==2){ $log .= "左を向いた
\n"; &dung_turn_left; #$tm = $cmd = 0; &dung_menu; }elsif($cmd==3){ $log .= "後ろを向いた
\n"; #$tm = $cmd = 0; &dung_menu; }elsif($cmd==4){ $log .= "あたりには特に変わったところは見られない
\n"; &dung_menu; }elsif($cmd==7){ $log .= "階段を上った
\n"; $dung_fl--; &dung_menu_fl_dn; }elsif($cmd==8){ $log .= "階段を降りた
\n"; $dung_fl++; &dung_menu_fl_up; }elsif($cmd==10){ $log .= "使用するアイテムを選択してください
\n"; $log .= "
\n"; $log2 .=qq|
\n|; $log2 .=qq|\n| if($mv_mode eq 'pc'); $log2 .=qq|\n\n|; $log2 .=qq|
\n|; $log2 .=qq|$td_end
\n|; }elsif($cmd>14 && $cmd<19){ # アイテムを使用 $uitem_no = $cmd-15; require "./inc/ore_sub-items.cgi"; &dogu_k; # &use_item; &dung_menu; } if( ($cmd>-1) && ($type eq '迷宮') ){ # 状況を表示 &dung_view; $log .= "
"; # 現在の位置を表示 &dung_pos; } } &dat_write; } 1;