シーンインした時に侵蝕率を計算するスクリプト(3)
先日、「シーンイン」と「リザレクト」のスクリプトを実プレイで使ってもらいました。
みんな快く使ってくれまして、反応も上々。うれしいです。
……自PCの時だけいよーに高い数値を出しよりまして、まだミドル終わってないというのにもうじき80%超えそうですが。これでクライマックスの衝動判定したら確実に100%超えますが。
しかも今度のGMは戦闘きつそうです。そして自PCはキュマピュアの典型的白兵型。……2倍振り、場合によっては3倍振りも覚悟しとこう。
さて、(2)からの続きです。
紆余曲折ありーの、いまだにいまいち理解し切れてないーのありますが、一応当初の目的どおりの進行なのでこのまま邁進しますw
というわけで今日は大詰め、現在侵蝕率に1d10プラスした値を出力です。
現在侵蝕率に1d10足した結果を整形して表示する
こんな感じで整えてみました。
- リザレクトもするスクリプト - ten-youの日記から1d10振る命令の行をコピペ
- 1d10の結果、現在侵蝕率、現在侵蝕率に1d10を足したものをそれぞれ変数に格納
- それぞれの変数、およびスクリプトを呼び出した参加者のニックを整形してNOTICEコマンドで出力
書き換えた結果が以下に↓
function event::onChannelText(prefix, channel, text) { if (text.match(/#シーンイン\+[0-9]+/)) { //配列arrMatchedTextを定義。初期値としてマッチングしたデータを格納。 var arrMatchedText = text.match(/#シーンイン\+[0-9]+/); //現在侵蝕率rateErodeOldを定義。初期値としてarrMatchedText[0]を数値型に変換したものを格納 var rateErodeOld = parseInt(arrMatchedText[0].match(/[0-9]+/)); //1d10をふり、結果をrolledDiceに格納 var rolledDice = parseInt( Math.random() * 10 ) + 1; //現在侵蝕率rateErodeOldと1d10の結果rolledDiceを足した結果をrateErodeNewに格納 var rateErodeNew = rolledDice + rateErodeOld; //全部の結果を表示 send(channel, prefix.nick + 'さんの侵蝕率が1d10=(' + rolledDice + ')+' + rateErodeOld + '= ' + rateErodeNew + ' %になりました'); } }
実行結果はこんな感じに↓
09:10 (ten-you) #シーンイン+60
09:10 (ten-you) ten-youさんの侵蝕率が1d10=(7)+60= 67 %になりました
よしよし。
他のスクリプトとまとめる
せっかくなので、シーンインやリザレクトするスクリプトと一緒にしました。
function event::onChannelText(prefix, channel, text) { //1d10をふり、結果をintDiceに格納 var rolledDice = parseInt( Math.random() * 10 ) + 1; //シーンイン+数値という文字列が発言にあったら、現在侵蝕率に1d10を足して表示 if (text.match(/#シーンイン\+[0-9]+/)){ //配列arrMatchTextを定義。初期値としてマッチングした配列データを格納。 var arrMatchText = text.match(/#シーンイン\+[0-9]+/); //今までの侵蝕率rateErodeOldを定義。初期値としてarrMatchText[0]を数値型に変換したものを格納 var rateErodeOld = parseInt(arrMatchText[0].match(/[0-9]+/)); //今までの侵蝕率rrateErodeOldと1d10の結果rolledDiceを足した結果を最新侵蝕率rateErodeNowに格納 var rateErodeNow = rolledDice + rateErodeOld; //全部の結果を表示 send(channel, prefix.nick + 'さんの侵蝕率が1d10=(' + rolledDice + ')+' + rateErodeOld + '= ' + rateErodeNow + ' %になりました'); } //シーンインで侵蝕率がいくつ上昇したかを表示 else if (text.match(/#シーンイン/)) { send(channel, prefix.nick + 'さんの侵蝕率が ' + rolledDice + ' 上昇しました'); } //1Lvリザレクトをした結果を表示 else if (text.match(/#リザレクト/)) { send(channel, prefix.nick + 'さんのHPが ' + rolledDice + ' 回復、侵蝕率が ' + rolledDice + ' 上昇しました'); } }
で、実行結果。
09:16 (ten-you) #シーンイン+60
09:16 (ten-you) ten-youさんの侵蝕率が1d10=(6)+60= 66 %になりました
09:16 (ten-you) #シーンイン
09:16 (ten-you) ten-youさんの侵蝕率が 3 上昇しました
09:16 (ten-you) #リザレクト
09:16 (ten-you) ten-youさんのHPが 9 回復、侵蝕率が 9 上昇しました
正規表現のあたりにかなりの不安を残すものの、とりあえずいったん終了。
次はまた別のことをやってみたいと思います。
追記(08-12-02)
スクリプトの一部を書き換えました。理由は後日。