游戏里,原住民战士建造限制和原住民交易站是有关的,比如,我在一个夏安部落建造交易站,可以获得10个夏安骑兵建造限制,造两个就可以建造20个骑兵,而当我删除掉一个之后限制又变回了10,这是前提。我想在其他建筑还原类似的功能,比如我希望让中国村民初始上限是20,每建造一个村落+15建造限制,而拆掉村落会让建造限制重新变回去。 我的实现思路:用十二个隐藏科技,其中六个负责+15限制,六个负责-15限制,都设置为无限研发,0秒科技,分别添加科技前提(大于等于/小于),例如,建造一个村落和拆毁一个村落的代码:
- <tech name="ypSettlerAsian1" type="Normal">
- <dbid>6343</dbid>
- <researchpoints>0.0000</researchpoints>
- <status>UNOBTAINABLE</status>
- <flag>Shadow</flag>
- <flag>YPInfiniteTech</flag>
- <prereqs>
- <typecount unit="ypVillage" count="1.00" state="noneState aliveState buildingState" operator="gte"/>
- </prereqs>
- <effects>
- <effect type="TechStatus" status="obtainable">notypSettlerAsian1</effect>
- <effect type="Data" amount="15.00" subtype="BuildLimit" relativity="Absolute">
- <target type="ProtoUnit">ypSettlerAsian</target>
- </effect>
- <effect type="TechStatus" status="unobtainable">ypSettlerAsian1</effect>
- </effects>
- </tech>
复制代码- <tech name="notypSettlerAsian1" type="Normal">
- <dbid>6343</dbid>
- <researchpoints>0.0000</researchpoints>
- <status>UNOBTAINABLE</status>
- <flag>Shadow</flag>
- <flag>YPInfiniteTech</flag>
- <prereqs>
- <typecount unit="ypVillage" count="1.00" state="noneState aliveState buildingState" operator="lt"/>
- </prereqs>
- <effects>
- <effect type="TechStatus" status="obtainable">ypSettlerAsian1</effect>
- <effect type="Data" amount="-15.00" subtype="BuildLimit" relativity="Absolute">
- <target type="ProtoUnit">ypSettlerAsian</target>
- </effect>
- <effect type="TechStatus" status="unobtainable">notypSettlerAsian1</effect>
- </effects>
- </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限制的科技只能作用一次呢,这里的逻辑有什么问题?请大神指教!
|