改造/戦闘関連強化・特技&魔法
https://sos2wiki.chimata.org/?%E6%94%B9%E9%80%A0/%E6%88%A6%E9%97%98%E9%96%A2%E9%80%A3%E5%BC%B7%E5%8C%96%E3%83%BB%E7%89%B9%E6%8A%80%EF%BC%86%E9%AD%94%E6%B3%95あー、何か問題がありましたらご報告お願いします;-;
- 01/14/2008 - Version 1.10
- バグフィクス ---- 特技が正しく選定されないバグを修正しました
- フィクス ---- 特技選定、死亡処理を最適化しました
- 09/02/2007 - Version 1.00
- 公開
概要 †
戦闘関連の強化です。 戦闘勝利時、一定の確率と所持スキルにより、特技・魔法が発動するようになります。 ごくごくシンプルで導入が簡単、また改造も比較的容易でしょう。 以下、デフォルトで用意した効果、特色など――
- 特技・魔法
- 表示メッセージが異なるだけでプログラム上は同じものです。
- ダメージ
- 特定倍率の追加ダメージを発生させます。
- poison化
- 相手を毒化させます。
- dead化
- 相手を死亡させます。
- 防御無視
- 防御力を無視した特定倍率の追加ダメージを発生させます。
- 回復
- 自身の体力を回復させます。
- 効果の組み合わせ
- これらの効果を任意に組み合わせることが可能です。 追加ダメージを与え、なおかつ与えたダメージを吸収し、さらに相手を毒にする、なんていやらしいことも可能です:p
- 任意のダメージ倍率
- 追加ダメージは百分率で任意に設定可能です。 200%の設定にすれば2倍の追加ダメージですし、50%であれば1/2の追加ダメージです。
- 特技・魔法発生時に発動メッセージを表示させることも可能でしょう、ただしご自身で工夫する必要があります。
- 発動メッセージ用のデータだけは用意してあります……
改造 †
1. ファイルをダウンロードします †
- ファイルの内容
# Sub Special Attack # sub sp_atk { ($Wn,$Wh,$Ws,$Wv,$Ln,$Lh,$Lv,$Lt,$Dg,$Dd) = @_; if ($Lv =~ /dead/) { return($Lh,$Lv,$Wh,$Wt) } $sp_rnd = int(rand(100)); # 発動率 undef @castlines; @splines = &opendat('special.cgi'); ### 任意のファイルパスに変更してください foreach (0 .. $#splines) { ($sp_no,$sp_tp,$sp_rt,$sp_dg,$sp_ef,$sp_sp,$sp_nm,$sp_mg) = split(/<>/,$splines[$_]); push (@castlines,$splines[$_]) if $Ws =~ /$sp_sp/ && $sp_rt < $sp_rnd; # 特技選定・発動率チェック } if (!@castlines) { return($Lh,$Lv,$Wh,$Wt) } $cast_rnd = int(rand($#castlines)); # 特技確定 ($sp_no,$sp_tp,$sp_rt,$sp_dg,$sp_ef,$sp_sp,$sp_nm,$sp_mg) = split(/<>/,$castlines[$cast_rnd]); $Dg = $Dd if $sp_ef =~ /A/; # 防御無視 if ($sp_dg) { $damage = int($Dg * $sp_dg / 100) } else { $damage = 0 } # DMG算出 $Wh += $damage if $sp_ef =~ /H/; # 回復 $Lh -= $damage if $sp_ef =~ /D/; # DMG $Lv = 'poison' if $sp_ef =~ /P/; # 毒化 $Lh = 0 if $sp_ef =~ /F/; # 即死 if ($Lh <= 0) { $Lh = 0; $Lv = 'dead'; $Lt ++ } # 調整&死亡カウント # メッセージ関係 &spmsg("$sp_tp"); &spmsg('D') if $sp_ef =~ /D/ && $damage; &spmsg('H') if $sp_ef =~ /H/ && $damage; &spmsg('P') if $sp_ef =~ /P/; &spmsg('F') if $sp_ef =~ /F/; &spmsg('死') if !$Lh && $sp_ef !~ /F/; return($Lh,$Lv,$Wh,$Wt); } # Sub Massage # sub spmsg { %spmsg = ('S',"$Wnは$sp_nmを行使した!", 'M',"$Wnは$sp_nmを詠唱した!", 'D',"$Lnに$damageポイントの追加ダメージ!", 'H',"$Wnは$damageポイントの体力を取り戻しました。", 'P',"$Lnは毒化しました。", 'F',"$Lnは死亡しました。", '死',"体力が0になり、$Lnは死亡しました。"); push (@msg,$spmsg{$_[0]}); $fwords .= $spmsg{$_[0]}; }
DL後、アップロードします。
2. 特技・魔法用の設定ファイルを作成しアップロードします。 †
デフォルトでは special.cgi というファイル名ですが、任意で構いません。 以下サンプル――
1<>S<>50<>150<> D<>Tf<>チェインストライク<><> 2<>S<>50<>100<>DP<>Tf<>ヴェノムストライク<><> 3<>S<>50<> 0<> F<>Tf<>フェイタルストライク<><> 4<>S<>50<>100<>DA<>Tf<>アーマーイグノアー<><> 5<>M<>50<>150<> D<>Mg<>フレイム<>Solvet In Favilla<> 6<>M<>50<> 0<> P<>Mg<>ポイズン<>Absorbeat Eas Obscurum<> 7<>M<>50<> 0<> F<>Mg<>レクイエム<>Dona Eis Requiem<> 8<>M<>50<>100<> H<>Mg<>ヒール<>Salva Fons Pietatis<>
- ファイル用データ
データ 説明 詳細 $sp_no 番号 便宜上のもので意味はありません $sp_tp 行使タイプ Sは特技、Mは魔法 $sp_rt 発動率 1~100で任意に設定します $sp_dg ダメージ倍率 与えたダメージに対する倍率です $sp_ef 効果タイプ 別記します、重複可能です $sp_sp 必要スキル 発動するために必要なスキルです $sp_nm 名称 名前です $sp_mg メッセージ 発動時のメッセージ予約、現状はデッドフラグ
- 効果タイプ
略字 効果 D ダメージ P poison化 F dead化 A 防御無視 H 回復
- ヒント:必要スキルに「Qk」と設定すれば刀装備時のみ発動という特技が設定できます
- ヒント:必要スキル「Aa」「Bb」のみ発動、とする場合、同じ内容で2つ作成し、必要スキルのみ変更します
3. # Sub Fight # の修正 †
発動用のルーチンを埋め込みます。 2行を2箇所に追加するだけです:)
if ($result == 1) { $dmg = (1,1,$udice - $pdfd) [($udice <=> $pdfd) + 1]; ($php,$pav,$pdt,$prw,$hp,$av,$dt) = &fight_sub($nm,$hp,$sp,$ab,$bp,$ak,$av,$dt,$bn,$pnm,$php,$psp,$pbp,$pav,$pdt,$prw,$pbn);
の下に
require './sp_atk.pl'; ($php,$pav,$hp,$dt) = &sp_atk($nm,$hp,$sp,$av,$pnm,$php,$pav,$pdt,$dmg,$udice);
を追加します。
if ($result == -1) { $dmg = (1,1,$pdice - $udfd) [($pdice <=> $udfd) + 1]; ($hp,$av,$dt,$rw,$php,$pav,$pdt) = &fight_sub($pnm,$php,$psp,$pab,$pbp,$pak,$pav,$pdt,$pbn,$nm,$hp,$sp,$bp,$av,$dt,$rw,$bn);
の下に
require './sp_atk.pl'; ($hp,$av,$php,$pdt) = &sp_atk($pnm,$php,$psp,$pav,$nm,$hp,$av,$dt,$dmg,$pdice);
を追加します。
以上で導入は完了です。
次のステップとして、ご自身で色々と工夫しながら改造してみてくださいな。
差分 †
Version 1.00→Version 1.10 †
……あ、確認前に古いファイル消しちゃったお;-;
#発動率チェック
のあった2行を削除。
$sp_rnd = int(rand(100)); # 発動率
を6行目に追加。
$Lh = 0 if $sp_ef =~ /F/; # 即死 if ($Lh <= 0) { $Lh = 0; $Lv = 'dead'; $Lt ++ } # 調整&死亡カウント
の2行を修正。
push (@castlines,$splines[$_]) if $Ws =~ /$sp_sp/ && $sp_rt < $sp_rnd; # 特技選定・発動率チェック
の行を修正。
だと思います……
おまけ †
ラテン語の勉強でもしましょうか:)
- Solvet In Favilla
- 灰燼に帰せよ
- Solvet なる
- In ~に
- Favilla 灰
- 灰燼に帰せよ
- Absorbeat Eas Obscurum
- 闇に飲まれよ
- Absorbeat 呑込む
- Eas 彼ら
- Obscurum 暗黒
- 闇に飲まれよ
- Dona Eis Requiem
- 死を与え給へ
- Dona 与える
- Eis 彼らに
- Requiem 安息
- 死を与え給へ
- Salva Fons Pietatis
- 救え慈悲の泉よ
- Salva 救う
- Fons 泉
- Pietatis 慈悲の
- 救え慈悲の泉よ
コメント †
コメントはありません。 Comments/改造/戦闘関連強化・特技&魔法?
Last-modified: 2019-04-30 (火) 00:57:44 (718d)