種袋採取
準拠: industrialcraft-2-2.2.517-experimental
概要
成長した作物を持つ支柱を左クリックすると、収穫を行いつつ種袋をその場にドロップする。このようなIC2Cropからの種袋の入手を種袋採取、または単に採取という(TileEntityCrop#pick)。
採取はIC2Cropのシステムで作物苗を移植するためのもっとも基本的な手段であり、支柱に存在する作物を遺伝子データや解析データとともに手元に残すことができる。
種袋採取イベントには手動と自動の区別があり処理も異なるが、自動種袋採取はバニラIC2では行われることは無い。
因みに、種袋採取を行わずとも種袋を得る方法も考えられる。逆に種袋採取が行われても必ず種袋がドロップするとは限らない。
手動種袋採取が行われる条件
支柱を左クリックすると作物種の左クリックイベント(CropCard#leftclick)が呼び出されるが、そのイベント処理では規定の動作で手動種袋採取が行われる。
2.2.517現在、IC2Exp本体ではこれ以外の方法で手動種袋採取が行われることは無い。また、以下の作物は左クリックイベントに独自の挙動が存在する。
- 雑草は種袋採取を発生せずに左クリックイベントを終える
自動種袋採取が行われる条件
2.2.517現在、IC2Exp本体ではこれが行われることはない。
種袋採取の試み(TileEntityCrop#pick)
種袋採取イベントの発生時、支柱は次の処理を行う。この処理により真を返した場合、種袋採取の試みは成功したという。収穫物や種の有無にかかわらず、種袋採取の試みが成功した場合は作物の成長レベルが低下する。
まず、支柱に植物が無い場合、何も行わずに偽を返す。
自動収穫を行い、真であった(収穫が試行可能な状況であった(CropCard#canBeHarvested))かどうかをボーナスとして記憶する。
この時点で支柱に存在する作物は収穫可能であった場合、収穫後のサイズとなる。第一確率(firstChance)を
基本種袋採取確率*1.1^Resistance とおく。
ドロップ数をひとまず0とおく。
ボーナスが真であった場合{
min( (第一確率+1)*0.8 ,
1) の確率でドロップ数を1増やす。 …………………①
第二確率(chance)を基本種袋採取確率+Growth/100とおく。
自動であった場合、第二確率を0.8倍にする。
Gain値が23を超えた場合、第二確率を0.95^(Gainが23を超えた分)倍にする。
min( 第二確率 , 1) の確率でドロップ数を1増やす。 ……………………………②
}そうでなくて{
min( 第一確率*1.5 ,1)の確率でドロップ数を1増やす。 …………………………③
}
ドロップ数の分だけ作物種から種袋の取得を行い、全てのアイテムをワールドにドロップするが、
取得したアイテムが種袋以外のアイテムであった場合、そのアイテムスタックのNBTタグを削除する。
真を返す。
基本種袋採取確率(CropCard#dropSeedChance:float)
次のような処理によってbase値を決定し、これが基本種袋採取確率となる。収穫が試行可能な作物の場合、収穫後のサイズで計算することに注意。
base
= 成長サイズ倍率S * 0.8^Tier
S= 成長サイズが1であった場合: 0
成長サイズが2であった場合: 0.25
成長サイズがそれ以外の場合: 0.5
このメソッドはオーバーライド可能であるが、2.2.517現在、IC2Exp本体でオーバーライドしている作物種は無い。
種袋の取得(CropCard#getSeeds)
規定の動作では支柱に存在する作物の作物種・GGR値・解析状況を含む種袋を生成して返すが、返す種袋の情報が作物列挙に個別に記してある場合、それに従ってアイテムを生成して返す。
実際のドロップ数
確率表
第一確率は、次のように変形できる。
第一確率
=成長サイズ倍率S * 0.8^Tier * 1.1^Resistance
= 成長サイズ倍率S * e^(Tier*(log e 0.8) +
Resistance*(log e 1.1))
≒ 成長サイズ倍率S * e^((log e 1.1)*Resistance - (-log
e 0.8)*Tier)
これより、Tierが1上昇すると同じ第一確率を維持するためには
(-log e 0.8)/(log e 1.1)
= -log 1.1 0.8
≒ 2.341
のResistanceが必要であることが分かる。
第二確率は、Tierが大きいほどGrowthによる恩恵が大きい。
以下に計算過程で現れる各値を成長サイズごとに計算した表を載せる。
以下に上記の処理中での番号の部分に相当する確率を成長サイズごとに計算した表を載せる。
②ドロップ判定においては手動・Gain23以下である場合の値を表す。Gainが24以上である場合、②ドロップ判定に補正がかかる。
計算例
バグの記事に詳しい。
トリビア
- 各ドロップ確率は入手できる条件を満たしていればパラメータによって0になることはない。よって、たくさんの作物株を用意すれば収穫率は乏しくとも種袋を入手することはできる。
- 作物種の最大成長サイズが3に届かない場合、その作物種が個別に基本種袋採取確率を設定していない場合は、ペナルティのかかった採取確率で採取するしかない。
最終更新:2015年05月31日 19:19