收起左侧

[求助] 复刻类似原住民交易站对原住民建造限制的影响

[复制链接]
mrf发表于 2021-7-26 12:46:36
游戏里,原住民战士建造限制和原住民交易站是有关的,比如,我在一个夏安部落建造交易站,可以获得10个夏安骑兵建造限制,造两个就可以建造20个骑兵,而当我删除掉一个之后限制又变回了10,这是前提。我想在其他建筑还原类似的功能,比如我希望让中国村民初始上限是20,每建造一个村落+15建造限制,而拆掉村落会让建造限制重新变回去。
我的实现思路:用十二个隐藏科技,其中六个负责+15限制,六个负责-15限制,都设置为无限研发,0秒科技,分别添加科技前提(大于等于/小于),例如,建造一个村落和拆毁一个村落的代码:
  1. <tech name="ypSettlerAsian1" type="Normal">
  2. <dbid>6343</dbid>
  3. <researchpoints>0.0000</researchpoints>
  4. <status>UNOBTAINABLE</status>
  5. <flag>Shadow</flag>
  6. <flag>YPInfiniteTech</flag>
  7. <prereqs>
  8. <typecount unit="ypVillage" count="1.00" state="noneState aliveState buildingState" operator="gte"/>
  9. </prereqs>
  10. <effects>
  11. <effect type="TechStatus" status="obtainable">notypSettlerAsian1</effect>
  12. <effect type="Data" amount="15.00" subtype="BuildLimit" relativity="Absolute">
  13. <target type="ProtoUnit">ypSettlerAsian</target>
  14. </effect>
  15. <effect type="TechStatus" status="unobtainable">ypSettlerAsian1</effect>
  16. </effects>
  17. </tech>
复制代码
  1. <tech name="notypSettlerAsian1" type="Normal">
  2. <dbid>6343</dbid>
  3. <researchpoints>0.0000</researchpoints>
  4. <status>UNOBTAINABLE</status>
  5. <flag>Shadow</flag>
  6. <flag>YPInfiniteTech</flag>
  7. <prereqs>
  8. <typecount unit="ypVillage" count="1.00" state="noneState aliveState buildingState" operator="lt"/>
  9. </prereqs>
  10. <effects>
  11. <effect type="TechStatus" status="obtainable">ypSettlerAsian1</effect>
  12. <effect type="Data" amount="-15.00" subtype="BuildLimit" relativity="Absolute">
  13. <target type="ProtoUnit">ypSettlerAsian</target>
  14. </effect>
  15. <effect type="TechStatus" status="unobtainable">notypSettlerAsian1</effect>
  16. </effects>
  17. </tech>
复制代码
我在中国初始科技中添加了<effect type="TechStatus" status="obtainable">ypSettlerAsian1</effect>,其余2-6个村庄的科技是一样的,此处不赘述。
我的逻辑是,建造一个村落之后,激活ypSettlerAsian1科技,然后让notypSettlerAsian1变为可用(obtainable),增加15建造限制,再禁用掉自己(因为我设置了无限研发并且是0秒科技,不禁用掉自己会一直研发(小羽说3次));当拆毁村落时,激活notypSettlerAsian1科技,让ypSettlerAsian1变为obtainable可用,减少15建造限制,再禁用掉自己(同样是无限0秒科技)。以期达到造一个+15,拆一个-15的效果。
————————
问题是,这样写完,当我建造完一个村落,能增加15建造限制,拆毁村落也的确能让限制重新变回20,但是当我再次建造村落时这个上限仍然是20,也就是说那个ypSettlerAsian1只产生了一次作用。同样地,当我第二次拆毁村落时也没有在20基础上再扣掉15,可以知道notypSettlerAsian1也只作用了一次。我不知道问题出在哪里,以及该如何解决。我添加了无限研发语句,也在拆毁后激活的科技里添加了obtainable选项,但是为什么那个+15限制的科技只能作用一次呢,这里的逻辑有什么问题?请大神指教!
こはね发表于 2021-7-26 21:02:58
此问题应该无解
こはね发表于 2021-7-27 08:10:17
关于两个科技来回运行,请参考https://www.aoebbs.net/thread-738-1-1.html
mrf发表于 2021-7-27 12:00:19
啊这,那能不能告知这么写哪里有问题,因为无缘无故不可能无法实现呀,谢谢
跳转到