Minecraft IC2EXP 杂交机制 Posted on 2020年2月16日 | In Game ## IC作物生长机制 ### 空气质量计算 作物空气质量受到高度、周围 3 × 3 范围内方块、和上方是否有方块遮挡影响 具体计算过程为: 1. AirQuality = ( 高度 - 64 ) / 15,有效值范围为 0 ~ 4 2. AirQuality += fresh/2,这里的 fresh 为周围是否有作物或固体方块,初始值为9,每检测到一个作物和固体方块 -1,fresh为整形,不存在0.5的情况 3. 如果作物可以直接看到天空(被玻璃遮挡视为可以看到天空),则 AirQuality += 2 三步计算完就是最终的作物的空气质量值,空气质量可以达到 10 点,但这在大规模种植时几乎是不可能达到的 ### 土壤湿度计算 作物土壤湿度受到生物群系、耕地湿度、储水量的影响 具体计算过程为: 1. 取作物所在生物群系湿度加成为基础值,IC和GT均未发现这一项内容的实现,也就是Humidity = 0,不排除有其他 mod 通过 IC 提供的 api 实现该内容 2. 如果该作物所在耕地实体附加值大于等于7,即耕地材质为湿润时,Humidity += 2 3. 如果储水量大于5,Humidity += 2 4. Humidity += ( 储水量 + 24 ) / 25 作物的储水量可以通过以下两种方式增加: 1. 手持水合单元右键作物:这种方式效果较差,这种方式可以将储水量补充到 180 点 2. 作物监管机:其机制为当作物储水量小于 200 点时,从作物监管机的内部存储抽取水补充到 200 点 因此,土壤湿度可以达到 12 点 ### 土壤肥力计算 作物土壤肥力受到生物群系、作物下方土方块数量、施肥的影响 具体计算过程为: 1. 取作物所在生物群系肥力加成为基础值,IC内部实现的肥力最高的生物群系为丛林和沼泽,各群系具体值见下表 2. 检测耕地下方土壤厚度,Nutrient += dirt,有效值为 0 ~ 3 3. Nutrient += ( 肥料储量 + 19 ) / 20 | 生物群系 | 肥力加成 | | ------------ | ------------ | | 丛林 | 10 | | 沼泽 | 10 | | 蘑菇岛 | 5 | | 森林 | 5 | | 河流 | 2 | | 平原 | 0 | | 干草原(SAVANNA) | -2 | | HILLS | -5 | | 山峰(Mountain) | -5 | | 废土 | -8 | | 末地 | -10 | | 下界 | -10 | | DEAD | -10 | 耕地的肥料储量可以通过以下两种方式增加: 1. 手持肥料右键作物:这种方式在肥料储量小于 100 时,增加 100 点肥料 2. 作物监管机:这种方式在肥料储量小于 100 时,增加 90 点肥料 因此,土壤肥力可以达到 18 ~ 23 点 ### 生长速度计算 作物具有四个属性: - 品种 - 生长速度 Gr - 产量 Ga - 抗性 Re 具体生长速度计算如下: 1. 基础值为 rate = 3 + random.nextInt(7) + Gr,也就是在作物Gr属性+3的基础上加上一个0-7的随机数 2. 当环境因素大于作物生长需要时,rare ×= efficiency,need = ( Tier - 1 ) × 4 + Gr + Ga + Re,Environment = 加权求和(AirQuality, Humidity, Nutrient) × 5,大多数作物为直接求和,少数为加权,efficiency = (100 + Environment - need ) / 100 3. 当 Environment < need 时,neg = need - Environment,base ×= (100 - neg) / 100,如果 neg 大于 25,还有几率枯萎,这个几率与抗性有关 作物每次生产会累积 rate 点,作物每个阶段需要积累 作物等级 Tier × 200 点才能生长到下一个阶段,GT作物可能会大于 200 点。 ** 注意:Gr不要超过23点,大于23点时会使周围作物变为杂草 ** ### 关于除草剂 在作物监管机中使用除草剂或手持使用均会抑制杂草生成,但会降低作物抗性,正常生长过程中无需添加除草剂 ## IC作物杂交机制 ### 杂交过程 作物每次尝试杂交会有2/3概率失败,如果成功则搜索周围四株植物,如果符合杂交要求的植物不足两株,则杂交失败,杂交成功判断通过后会将各个亲本有可能产生的子代可能求和,然后产生随机数,决定杂交出子代的品种,子代属性则为亲本属性的平均值加减一个随机数 ### 杂交要求 1. 可以生长 2. 旁边的作物可以杂交 3. 根据 Gr 和 Re 计算概率 计算过程如下: 1. base = 4 2. Gr >= 16,base += 1 3. Gr >= 30,base += 1(与2叠加) 4. Re >= 28,base += 27 - Re 如果 base 大于 0 到 20 的随机数,则符合杂交条件 ### 杂交概率 产生原作物的权重为500 产生新作物的权重计算过程如下: 1. 检查新旧作物的五种隐藏属性(GT代码中认为这五种属性为Chemical、Food、Defensive、Color、Weed),delta = new - old,weight += 2 - delta 2. 比较新旧作物的属性(reed, fire等等),每个相同的属性 weight += 5 3. 新作物比旧作物等级高时,每高一级,weight -= 2 4. 新作物比旧作物等级低时,每低一级,weight -= 1 权重有效值大于0,小于0时改为0