도비엘로 개선이라고 해야 할까...

원래의 컨셉을 살리면서 강화하기가 참 쉽지 않다.
나면서부터 사기인--; 발제라프랑 비교하면, 존재 자체가 죄악인 이놈들은 이 뭐...

늑대를 조달해 보려고.
사실 광역 주문...월드 스펠로만 늑대를 조달할 수 있다고 생각할 수 있는데, 크게 틀린 것은 아니다.
늑대 무리가 전투에서 승리할 경우, 매우 낮은 확률로--; 늑대 유닛을 하나 얻을 수 있기 때문에...거기에 기대기는 참 힘들기 때문이지.
후반으로 갈 수록 늑대 무리가 이길만한 적은 남지가 않거든. 애 낳을려다 자기 목숨이 먼저 왔다갔다 하니...

그래서 안정적인 늑대 조달 계획(?)을 마련해 보고자 하는 것이다.
뭐...고작 늑대따위 얻는다고 강해질 것 같지는 않지만, 그러니까 해볼만한 것 아니겠어? 갑자기 세지면 그것도 골치아프니...
요는 그 방법이지.
도비엘로는 의외로 전용/대체 유닛이 많다.(백병 쪽으로) 문제는 이게 어디서나 돈으로 업그레이드를 하게 만드려고 해 둔 것이다 보니 성능에서 큰 차이를 보이는 것이 아니라, 거의 이름만 다른 유닛 수준이라는 거...
이걸 의외로 활용해 볼 수 있지. 늑대 무리처럼, 전투에서 승리하면 일정 확률로 늑대를 받는 거야.
...근데 왜 인간(어쨌든 엘프나 언데드 같은 것은 아니잖아)이 늑대를 치느냔 말이야. 이왕 새끼치려면 전사라도 한마리 더 만들어 내던지...

그래서 생각한 것이...늑대를 도시에 집어넣으면 늑대 우리가 되어, 도시에 소소한 즐거움;을 주잖아?
즐거움 수준에서 그치는 게 아니고, 늑대 우리를 보유한 도시에서 늑대가 자동으로 튀어나오게 만들어 보자...라는 것이지.
문제는...확률인데, 당연히 100% 따위는 할 수 없다. 아무리 구려도 공짜 유닛인데 어떻게...
낮게 해놔도...쉐아임과 비슷한 문제가 생기지. 도시 숫자가 많아지면 어찌되든 튀어나오게 된다는 것...실제로 쉐아임 해보면 아마게돈 카운터를 떨구기 보다는, 도시를 다닥다닥 붙여 짓는게 훨씬 더 유리해. 뭐 차원의 문 갯수 자체가 늘어나면 아마게돈 카운터가 낮아도 답이 없거든.(덤으로 한계도 늘잖아)

자동이 아니라 돈으로 뺄 수도 있는데...뭐 구인 길드가 하는 거랑 다를게 없잖아 그럼. 그건 구현하기도 쉬울거고. 아예 도비엘로는 용병이 아니라 늑대가 고용된다거나...

그래서, 확률이 조절되도록 해보겠다. 인구수가 많으면 확률이 떨어지게 하는 것이지.
음...도비엘로를 강하게 만드는 비책이 아닌가...? 근데 섣부른 강화는 게임 불감증의 원인이 되...쿨럭쿨럭!
하지만 개조일람의 목적은, 꼭 이대로 해라~의 의미가 아니라, 여러 응용에 있는 것이므로 큰 문제는 없다고 본다.

자 그럼...자동으로 어쩌구 하는 것이니 필연적으로 CvEventManager.py파일을 열어야겠지. 거기서 doCrusade 항목으로 찾아가자.
그 밑을 보면...

if pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_KHAZAD'):
cf.doTurnKhazad(iPlayer)

if pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_LUCHUIRP'):
cf.doTurnLuchuirp(iPlayer)

이런 부분이 있지. 뭐 설명이 딱히 필요 없을 수준인데...턴 넘길 때마다 카자드일 경우는 뭐해라, 러취프일 경우는 뭐해라, 라고 호출하는 것이지. 앞에 cf.가 붙어있는 이유는 당연히 지금 연 파일이 아니라, CustomFunctions.py 안에 들어있는 함수를 호출하는 거라서 그렇고...
자 그럼 해야 할 일은...그 밑에(아니면 사이에)
if pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_DOVIELLO'):
cf.doTurnDoviello(iPlayer)
이렇게 끼워 넣는 거지. 다 됐으면 저장하고 닫고...CvEventManager.py파일을 열어서 doTurn 항목으로 찾아가자.
구문이 둘 있지. 당연히 def doTurnKhazad하고 def doTurnLuchuirp인데, 뭐 내용은 뻔하지? 두 드워프가 턴랙을 일으키는 원인이 거기 들어있지--;
뭐 당연히, 지금 하는 짓도 도비엘로로 하여금 턴랙을 유발케 하는 것이다--; 포기하려면 지금이야!

자 포기 안한 사람들을 위해...적당히 이걸 끼워 넣으라고.
def doTurnDoviello(self, iPlayer):
pPlayer = gc.getPlayer(iPlayer)
if pPlayer.getNumCities() > 0:
iWolf = gc.getInfoTypeForString('UNIT_WOLF')
for pyCity in PyPlayer(iPlayer).getCityList():
pCity = pyCity.GetCy()
if pCity.getNumRealBuilding(gc.getInfoTypeForString('BUILDING_WOLF_PEN')) > 0:
if CyGame().getSorenRandNum(pCity.getPopulation() + 1, "Wolf") == 0:
newUnit = pPlayer.initUnit(iWolf, pCity.getX(), pCity.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_SOUTH)

좀 어려운가...결과는 뭐냐면,
매턴, 늑대 우리가 있는 도시마다 (해당 도시의 인구 + 1)의 역수에 해당하는 확률로 늑대를 받는 거야.
그러니까 막 만든 도시(인구 1짜리)에 늑대를 하나 집어 넣어서 늑대 우리를 만들면, 인구가 2로 늘기 전까지는 매턴 50%확률로 늑대가 나오겠지.
그러다 인구가 2로 늘면? 그때부터는 33%확률로 늑대가 나올거고, 3으로 늘면 25%확률로...점점 감소하겠지.
뭐 늑대 많이 먹자고 인구를 안늘려? 그러다가는 연구가 딸려서 망할 가능성이 높지. 안그래도 연구에는 잼병인데...
이정도면 적절히 조절이 되려나? 음 도시가 무지 많으면 한두 도시 정도는 진정한 늑대 우리로 써먹는 일도 생기겠구만. 쩝...
 
죠니 사사키가 작성한 글입니다.
,