elin吧 关注:14,914贴子:108,447

论吃奶的正确姿势

只看楼主收藏回复

相关逻辑写在TraitDrinkMilkMother的OnDrink方法中
吧主快来加精
不加不写


IP属地:云南1楼2024-11-29 21:09回复
    首先,开头就是一个大大的
    if (c.Evalue(1232) > 0)
    { // 一大段逻辑
    }
    else
    {
    base.OnDrink(c);
    }
    这意味着,如果你不是小宝宝,那么你只能享受正常的饮食效果


    IP属地:云南2楼2024-11-29 21:10
    回复
      接下来我们讨论那一大段逻辑是什么
      首先
      c.SetFeat(1232, c.Evalue(1232) - 1);
      你的吃奶次数-=1
      目前应该没有Feat 1232的恢复方法(除非你上Mod把PC变成小宝宝(虽然我没试过,但便捷性Mod真能这么搞))这意味着喝奶次数有限,请谨慎选择


      IP属地:云南3楼2024-11-29 21:13
      回复
        然后是计算奶的相关数据
        Chara chara = CharaGen.Create(base.owner.c_idRefCard);
        chara.SetLv(Mathf.Clamp(5 + base.owner.encLV * 5, 1, 20 + EClass.pc.Evalue(237)));
        Debug.Log(chara.id + "/" + chara.LV);
        List<Element> list = chara.elements.ListBestAttributes();
        List<Element> list2 = chara.elements.ListBestSkills();
        int num = 100;
        int num2 = 0;
        base指代的是TraitDrinkMilkMother
        owner是奶
        c_idRefCard是产奶的物种
        于是这里的做法是,造一个临时chara,设置等级为(5+5*(encLV,也就是每多+1,多升5级。+9的奶会制作50级的临时chara),下限1,上限是PC的237(大概率是驯兽)等级+20)
        下面,取出这个新人最熟练的能力,与最熟练的技能,开始主循环


        IP属地:云南4楼2024-11-29 21:17
        收起回复
          foreach (Element item in list)
          {
          Element element = c.elements.GetElement(item.id);
          int num3 = item.ValueWithoutLink * (element.Potential - element.vTempPotential) / num / 2;
          if (num3 > 0)
          {
          num2 += num3;
          Debug.Log(item.source.alias + "/" + num3 + " org:" + item.ValueWithoutLink);
          c.elements.ModBase(item.id, num3);
          }
          num += 50;
          }
          num = 100;
          foreach (Element item2 in list2)
          {
          Element element2 = c.elements.GetElement(item2.id);
          if (element2 != null && element2.ValueWithoutLink != 0)
          {
          int num4 = item2.ValueWithoutLink * (element2.Potential - element2.vTempPotential) / num / 2;
          if (num4 > 0)
          {
          Debug.Log(item2.source.alias + "/" + num4 + " org:" + item2.ValueWithoutLink);
          c.elements.ModBase(item2.id, num4);
          }
          num += 50;
          }
          }
          c.feat += base.owner.encLV;
          这两个主循环的逻辑是类似的,一个是技能,一个是能力,都可以合并讲解
          首先,ModBase的意思是增加基础值
          然后,基础值增加幅度为item.ValueWithoutLink * (element.Potential - element.vTempPotential) / num / 2;
          后面的num/2可以简单地理解为,最高加成的技能到最低加成的技能,分别除以200 300 400 500 ......


          IP属地:云南5楼2024-11-29 21:20
          回复
            很好
            在这里作者统计了num2,但并没有利用到这个变量
            一度让我以为我触发了Elin的另一个BUG
            ……其实并没有


            IP属地:云南7楼2024-11-29 21:22
            回复
              这里需要特地解释一下
              item.ValueWithoutLink * (element.Potential - element.vTempPotential) / num / 2;
              这句话
              因为这是ModBase中被增加的数值
              首先,element.Potential - element.vTempPotential这句话并不是说,基础潜能减去临时潜能
              而是说,不包括临时潜能(日常吃东西加的潜能)在内的其他潜能(差不多就是加号左边的潜能)
              请注意,小妹妹的肉加的是加号左边的潜能,上限50点
              这就是我说的,正确的喝奶姿势:如果有小妹妹的肉,一定要吃;如果有多余的,一定要吃完。两块肉获得10点全潜能提升,30块获得50点全潜能提升
              你还在想什么?


              IP属地:云南8楼2024-11-29 21:26
              回复
                在这里,如果希望继续分析每一种奶加的属性点数,并不非常容易
                比如你需要把人物职业(需注意,因为人物是由id创建的临时人物,所以这里的职业指的是初始职业),种族和source(还没玩到这里不知道source具体指代什么)都加在一起
                ElementContainer elementContainer = new ElementContainer();
                elementContainer.ApplyElementMap(this.uid, SourceValueType.Chara, this.Chara.job.elementMap, this.LV);
                elementContainer.ApplyElementMap(this.uid, SourceValueType.Chara, this.Chara.race.elementMap, this.LV);
                elementContainer.ApplyElementMap(this.uid, SourceValueType.Chara, this.Chara.source.elementMap, 1, invert: false, applyFeat: true);
                这种东西肯定不是贴吧里面能说得清楚的
                有空的话我会整理一下相关表格,送去wiki(相信我,你们不会想在贴吧里面看表格的)
                假设你已经获得了人物的各属性值(比如,拿听诊器确认了之前计算出的等级对应的野生生物的各项属性)
                那么,喝奶时候,
                增加此生物最强属性 * 宝宝潜能/200
                增加此生物次强属性 * 宝宝潜能/300
                增加此生物第三强属性 * 宝宝潜能/400
                增加此生物第四强属性 * 宝宝潜能/500
                ……
                对技能,也是这个比例,在这里就不重复水字数了


                IP属地:云南9楼2024-11-29 21:33
                收起回复
                  最后的收尾部分
                  c.feat += base.owner.encLV;(这个在上面多复制了一句,不过没关系,反正上面还没讲解到这里)
                  if (c.Evalue(1232) == 0)
                  {
                  c.Say("grow_adult", c);
                  c.PlaySound("mutation");
                  c.PlayEffect("mutation");
                  }
                  else
                  {
                  c.Say("grow_baby", c);
                  c.PlaySound("ding_potential");
                  }
                  c.PlayEffect("buff");
                  EClass.pc.ModExp(237, 100);
                  宝宝的feat(我不确定是不是等级或者专长点)增加encLV点(+9的奶+9点)
                  如果宝宝的1232feat消失,那么播放宝宝成人动画,否则播放另一段话
                  PC获得100点驯兽经验
                  结束喂奶流程


                  IP属地:云南10楼2024-11-29 21:35
                  回复
                    综上,如果你有什么加基础潜能的方法
                    一定要喂给宝宝
                    50点基础潜能
                    至少相当于每个奶多了1/3有效成分
                    以及,如果供奶者的属性和一定,那么宝宝喝自己的奶,收益最高
                    顺便,对于奶,最重要的只有两条
                    一条是,奶是谁产的
                    另一条,到底+几
                    更多内容等我有时间再写吧


                    IP属地:云南11楼2024-11-29 21:38
                    回复
                      还要先喂小妹妹的肉?


                      IP属地:广西来自Android客户端12楼2024-11-29 21:44
                      收起回复
                        feat应该是专长点,也就说属性受驯兽等级限制,专长点应该没受限制。+几奶就几点。


                        IP属地:四川来自Android客户端13楼2024-11-29 21:58
                        回复
                          驯兽系统完全没达到设计目的吧,根本不在驯兽滚雪球,估计后面会砍野怪掉奶。


                          IP属地:安徽来自Android客户端14楼2024-11-29 22:28
                          回复
                            目前不吃掉落者本身的属性和专业领域的加成,没办法自我迭代。
                            全靠打高层怪借奶。


                            IP属地:广东来自Android客户端15楼2024-11-29 23:11
                            收起回复
                              可惜我小小花園發展度已經-50了 沒辦法實行


                              IP属地:中国台湾16楼2024-11-29 23:14
                              回复