発言者: 矢神
発言日: 2008 04/05 08:13
こんにちは。また詰まってしまったので助言をいただけますでしょうか。
以前改造の際にお世話になった、戦闘関連強化・特技&魔法による追加スキルなのですが、
複数のスキル発動条件フラグを所持していた場合、どれか一つだけしか発動しない上にスキルの選定条件がよくわからなかったので、
これを通常のスキルのように、所持している発動条件の分だけ全て別個に発動確率のチェックを行い、
チェックに通ったスキルが複数あった場合は全て発動するようにしたいのですが、可能でしょうか?
ちなみに実際に100回程度の動作テストをしてみたところ、
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
スキルの設定ファイルに
1<>S<> 1<>40<> D<>Bp<>スキル1<><>
2<>S<>100<>30<> D<>Up<>スキル2<><>
3<>S<>100<>50<>DA<>Uq<>スキル3<><>
とあった場合、Up(スキル2)のみを所持していればスキル2が100%発動するが、
Bp(スキル1)も同時に所持していた場合はスキル2が50%程度の発動率になり、そうでない時は何も発動しない(スキル1が選定されている?)
また、Up(スキル2)とUq(スキル3)を同時に所持していた場合、スキル2が100%発動しスキル3は全く発動しない。
1、2を同時に所持している時の動作から、まず所持しているスキルフラグの中からどれかが選定され、その後発動率のチェックかなと思ったんですが
2、3を同時に所持していると2しか発動しないのでよくわからなくなってしまいました。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
スキル選定部のソースは以下のようになっています。
> 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/; # 特技選定
> }
> 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]);
>
> $sp_rnd = int(rand(100)); # 発動率チェック
> if ($sp_rt < $sp_rnd) { return($Lh,$Lv,$Wh,$Wt) }
▼関連発言
│
└◆1508:追加スキルの複数発動について [矢神] 04/05 08:13
└◆1509:Re:追加スキルの複数発動について [moon] 04/05 14:29
└◆1510:Re[2]:追加スキルの複数発動について [矢神] 04/05 22:48
└◆1511:追記 [矢神] 04/05 22:58
└◆1512:Re:追記 [moon] 04/05 23:19
└◆1513:Re[2]:追記 [moon] 04/05 23:24
└◆1514:ありがとうございました! [矢神] 04/06 12:42<-last