홀리 버전을 만들어 보자!

뜬금없이 무슨소리야...하라고 쓴거다. 실제로 홀리 버전은 내일 한번 만들어 보고...

모카의 가마솥이 유닛에게 재활의 기회;;를 주는 것은 사실인데,
거기서 새로이 환생;하는 유닛들은 죄다 악마 아니면 언데드...
뭐, 다소 사악한 문명이거나, 성향을 그쪽으로 바꿨다면(알겠지만, 성향을 악으로 바꾸는 것은 잿빛의 사악한 종교를 채택해야 한다!) 어울리지만, 선량한 세력이거나, 아니면 아예 머큐리안 같은 문명이라면 악마나 언데드가 나오는 것이 오히려 뜬금 없을 수밖에 없지.
그러나...게임에서는 그런 것에 대한 배려가 전혀 없어. 짤없이 악마와 언데드가 넘치는 가마솥...
사실 가마솥에서 재생된다는게; 모 야겜에서 서번트로도 출연하시는...섬뜩한 마녀라는 평을 받으시는 그분의 일화가 생각나기는 하는데...

일단, 분명히 재활용하라고 넣어둔 원더니까, 좀더 재미있고 컨셉(?)이란 것에 맞게 써보자는 얘기지.
뭐 죽기 전에 가지고 있던 신앙에 의거하여, 마네나 천사로 환생하기도 하는데...딱히 그렇게 보기도 좀 민망한 부분이 좀 있지.
애당초 유닛 하나가 한 명을 뜻하는 것이 아니거든. F9키를 눌러서 나오는 통계를 보면 알 수 있겠지만, 그래픽 상 그리 보이는 것이지 사실 몇백~몇천의 집합이야.
뭐 유닛 하나만 대표로 보이거나 많으면 너댓 정도 보이는 경우도 있지만, 야튼 그 숫자와는 전혀 상관이 없지.
그러다 보니 사악한 유닛이 하나 죽었는데 마네는 둘 나온다거나 하는 것이 꼭 이상하게 볼 일만은 아니야.

그러나...선 성향에서 악마나 언데드가 나오는 것까지는, 마초 김정률 선생의 데이몬에 나오는 데스나이트들처럼 그럴수도 있다 치자 이거야...
머큐리안에서 천사가 아니라 악마가 나오는 것은 대체 어떻게 핑계를 댈 생각인 거지?
물론 머큐리안으로 그리 자주 플레이하는 편은 아닌데...게다가 모카의 가마솥에서 유닛이 죽는다는 게 사실 발제라프가 아니면 의도적으로 할 방법이 거의 없기도 하고.
그렇지만 이상한 것은 이상한 거지.


그래서 뜯어 고쳐 보았어!(결론은 에디팅~ 잇힝~)

간단하게...머큐리안의 경우 그냥 천사를 주는 방법이 있겠지.
이바닥의 아이돌--; CvEventManager.py 파일을 열어보자. 거기서 iUnit = cf.getUnholyVersion(unit) 구문을 찾아가면...
if pCity.getNumRealBuilding(gc.getInfoTypeForString('BUILDING_MOKKAS_CAULDRON')) > 0:
if pCity.getOwner() == unit.getOwner():
iUnit = cf.getUnholyVersion(unit)
if iUnit != -1:
newUnit = pPlayer.initUnit(iUnit, pCity.getX(), pCity.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_SOUTH)
newUnit.setHasPromotion(gc.getInfoTypeForString('PROMOTION_DEMON'), True)
newUnit.setDamage(50, PlayerTypes.NO_PLAYER)
newUnit.finishMoves()
사실 def onUnitKilled(self, argsList): 구문의 하위에 속하지. 뭐 그런데 관여 부분이 좀 한정되어 있거든.

모카의 가마솥이 있는 도시에서 내 유닛이 죽었다면, 그 유닛의 사악한 버전--;을 구해서 되돌려 주는 거야.
 물론 멀쩡한 것은 아니고 피가 반토막 난 상태(치료하면 된다)에 이동도 끝난 상태이기는 하지만...야튼 유닛을 되돌려 준단 말이야.

거기만 잠깐 손보자고. 머큐리안일 경우만 한정해서, 그때는 천사를 주고 그 외에는 그냥 언홀리 버전으로...
천사 외에 다른 것을 줄 수도 있어. 그러나 명심해야 할 것은...반드시 살아있지 않는 유닛으로 줄 것!
if pCity.getOwner() == unit.getOwner():
iUnit = cf.getUnholyVersion(unit)
if pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_MERCURIANS'):
iUnit = gc.getInfoTypeForString('UNIT_ANGEL')
if iUnit != -1:
티어나 병종에 의한 구분 없이 천사로 바꾸는 것인데...
예고했다시피 그건 내일 해보자고^^; 다른 파일을 추가로 건드릴 생각이라서...

다만 여기서 그치지 않고, 성향이 선일 경우에 악마(나 언데드)가 아니라 천사를 준다면...(뭐 머큐리안은 어지간하면 선 성향 유지하겠지?)
if pCity.getOwner() == unit.getOwner():
iUnit = cf.getUnholyVersion(unit)
if pPlayer.getAlignment() == gc.getInfoTypeForString('ALIGNMENT_EVIL'):
iUnit = gc.getInfoTypeForString('UNIT_ANGEL')
if iUnit != -1:
이렇게 만들 수 있겠지.
물론 둘을 동시에 적용할 수도 있어. 머큐리안이 문어교나 그림자교를 채택하면 중립으로 떨어지기도 하니까. 그럼 or를 써서 조건 두개를 붙여야겠지.
다만 선 성향의 문명에게 천사를 주는 것은 오히려 싫어할 가능성이 있는데...
 머큐리안은 애초에 천사를 받아서 그걸 상위 천사로 바꿀 수 있으나, 그 외의 세력은 천사에서 더이상 발전시킬 방법이 없다는 게 문제라서... 
이것이 홀리 버전이 따로 필요한 이유이기도 해. 머큐리안에게만 적용시킨다면 그냥 천사만 줘도 문제 없잖아.

살아있지 않은 유닛으로 줘야 하는 이유는 당연하지? 살아있는 유닛을 덜컥 줘버리면 이모탈이나 다름 없잖아...네버엔딩 스토리...
  
죠니 사사키가 작성한 글입니다.
,