特定の建物から特定のユニットへスキル追加

MOD/作成情報/特定の建物から特定のユニットへスキル追加
Last-modified: 2008-03-16 23:42:49

MOD/作成情報
生産された特定のユニットにスキルを与える建物作りたい

788 :名無しさんの野望:2008/03/16(日) 22:54:25 ID:Ay46MjyB
CvEventManager.pyを自分のMODに適切な場所コピーして、
onUnitBuildメソッド(ユニット生産イベント)に以下みたいなこと書くといい。

以下は「市場があれば戦士に水陸両用をセットする」という内容
BUILDING_MARKET(市場)やUNIT_WARRIOR(戦士)とPROMOTION_AMPHIBIOUS(水陸両用)を適宜書き直してね。

def onUnitBuilt(self, argsList): 
(中略) 
 player = PyPlayer(city.getOwner()) 
  
 iMarket = gc.getInfoTypeForString("BUILDING_MARKET") 
 iWarrior = gc.getInfoTypeForString("UNIT_WARRIOR") 
 if city.isHasBuilding(iMarket) and unit.getUnitType() == iWarrior: 
   iPromotion = gc.getInfoTypeForString("PROMOTION_AMPHIBIOUS") 
   unit.setHasPromotion(iPromotion, true) 
  
 CvAdvisorUtils.unitBuiltFeats(city, unit) 
(以下略)


スキルを複数つける場合

      iPromotion = gc.getInfoTypeForString("PROMOTION_AMPHIBIOUS") 
     unit.setHasPromotion(iPromotion, true) 
     iPromotion = gc.getInfoTypeForString("PROMOTION_AMPHIBIOUS_1") 
   unit.setHasPromotion(iPromotion, true) 
   iPromotion = gc.getInfoTypeForString("PROMOTION_AMPHIBIOUS_2") 
   unit.setHasPromotion(iPromotion, true) 
   iPromotion = gc.getInfoTypeForString("PROMOTION_AMPHIBIOUS_3") 
   unit.setHasPromotion(iPromotion, true) 
   iPromotion = gc.getInfoTypeForString("PROMOTION_AMPHIBIOUS_9999") 
   unit.setHasPromotion(iPromotion, true)