어제의 뒤를 이어, 계속 러취프에 대한 글...


남아있는 짜증은...주력 양산병 라인을 골렘이 차지하고 있다는 것인데,
평범한 일꾼 대신 나오는 진흙골렘이야 오히려 반가운 녀석이지만,
도끼병 대신 나오는 나무골렘이 심각하게 문제가 된다...
철골렘이나 가고일은 스탯이라도 먹어주잖아.

문제점을 요약해보면...
1. 업그레이드가 뭔가요?
2. 백병 유닛은 다 어디 간거죠?
3. 장궁병은 왜 없나요?

첫번째 문제는...보통 초반에 뽑아둔 유닛이 안죽고 레벨업 잘해서 승급 많이 찍으면...역전의 용사 대우를 받을 수 있지?
기술 발전에 따라 서서히 수준 높은 유닛으로 전직시켜 줄 수 있으니까. 뭐 몇몇 예외(오크같은)도 있기는 한데...
다른 문명이었다면, 나무골렘이 철골렘으로 업그레이드 될 것을...얘들은 완전히 따로 논단 말이야.
나무골렘이 철골렘보다 좋은 점이 하나도 없다보니(생산력?), 이걸 초반에 많이 뽑고 싶은 생각이 안든다는게 문제의 출발점이지.
그렇다고 안뽑아...? 투석병만 가지고 지키기에도 한계가 있잖아...
게다가 투석병 역시...전직이 안돼! 저격병? 훗...정찰계열에서 오는 게 더 이익인데다, 네마리가 끝이잖아!
결국 화승총병을(뽑을 수 있게 된다면) 따로 뽑아줘야 된다는 이야기이므로...이녀석도 업그레이드 그딴거 꾸역꾸역...

두번째 문제는...전사들의 경우, 자신들이 백병 계열로는 처음이자 마지막으로 생산되는 유닛이라는 거지.
생산 안해도 얻을 수 있는 근접전 유닛이 뭐 조금 있기야 있겠지. 해골을 소환하거나, 원더 짓고 용병을 고용하거나...
문제는, 백병 계열이 해야 할 인간방패 역할을 맡을 유닛이 부족하다는 사태가...
마법사나, 기타 공격용 유닛(상대적으로 방어를 잘 못하는)을 보호하기 위해서는, 백병 유닛이 꼭 필요해.
다름 아닌 호위 승급 때문이지. 배너야 종특으로 궁수들도 달고 다니지만, 원래 백병 계열만 레벨업해서 달고 다니는 거잖아?
그런데 이놈들은...전사? 나오지도 않을거고. 해골하고 용병? 경험치가 없어서 딴데가서 싸움 좀 해야 달 수 있지...
백병 유닛이 없다는 것이 간단한 문제로 끝나지 않는 이유...물론 이 문제는 종교로 땜빵이 가능하니까, 그쪽으로 해결해 볼 수는 있겠다.

세번째 문제는...방어전, 특히 도시방어의 든든한 축인 장궁병의 부재...
가고일이 쓰레기는 아니다만, 이놈은 그냥 맞고 버티는 역할이지 화살을 미리 쏴준다던가 하지는 않잖아.
뭐 기병에 털리지 않는다는 장점이 있다고 볼 수도 있는데, 골렘이라는 것이 보통은 약점으로 작용하거든.
왜냐고? 수리병이 붙어야 하는데 수리병은 다름아닌 마법사들이고, 이 마법사를 위에서 얘기 했듯이 저격으로부터 지켜주기가 쉽지 않거든.
그나마 도시에 있으면 괜찮지만...주변 초토화 되는 꼴 보기 싫으면 전선에 나가서 막거나, 요격을 해야 하는데...이게 택도 없잖아.
짱쎈 누군가가 대표로 나서서 막고, 훈련 승급 한두개 정도 붙은 장궁병들이 싸우기 전에 미리 화살 몇대 박아주면 막기가 훨씬 수월할 터인데,
엄호사격해 줄 녀석은 역시나 종교로 땜빵해야 할 수준이고, 막으러 나서는 놈은 보통 턴마다 회복되는 양이 적을 수 밖에 없는지라...

이중 3번...장궁병 부재는 그냥 두겠다. 이것은 카자드와 공유하는 문제니까. 어쩌면 안좋은 의미의 종특 같아서...
다만 1,2번은 한꺼번에 해결하는 방법을...어떻게? 새 주문을 만드는데...
예전에 뽑아둔 나무골렘을 써먹을 수 있으면서, 동시에 가고일이나 철골렘이 아군의 허약한 유닛을 지켜줄 수 있도록 하는 것이다.
시리즈 25번 글에 보면, 골렘의 마개조가 어떤 것인지 볼 수 있겠지 >.<
비슷하게 가되, 조건을 좀 덜 먼치킨스럽게 한다고 보면 된다.

우선 주문이니까 CIV4SpellInfos.xml
        <SpellInfo>
            <Type>SPELL_ZZZ_GOLEM</Type>
            <Description>TXT_KEY_ZZZ_GOLEM</Description>
            <Civilopedia>TXT_KEY_SPELL_PLACEHOLDER_PEDIA</Civilopedia>
            <UnitInStackPrereq>UNIT_WOOD_GOLEM</UnitInStackPrereq>
            <bHasCasted>1</bHasCasted>
            <PyResult>spellZZZGOLEM(pCaster)</PyResult>
            <PyRequirement>reqZZZGOLEM(pCaster)</PyRequirement>
            <Effect>EFFECT_SPELL1</Effect>
            <Sound>AS3D_SPELL_INSPIRATION</Sound>
            <Button>Art/Interface/Buttons/Units/Wood Golem.dds</Button>
        </SpellInfo>

보기 좋게 해야지. CIV4GameText_FFH2.xml
    <TEXT>
        <Tag>TXT_KEY_ZZZ_GOLEM</Tag>
        <English>Lumber Recycle</English>
        <L1 /><L2 /><L3 /><L4 />
    </TEXT>

마지막으로 실제 조건 및 구현부. CvSpellInterface.py
def reqZZZGOLEM(caster):
iUnit = pCaster.getUnitType() 
if iUnit == gc.getInfoTypeForString('UNIT_IRON_GOLEM') or iUnit == gc.getInfoTypeForString('UNIT_GARGOYLE'):
if not caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_GUARDSMAN')):
return True
return False

def spellZZZGOLEM(caster):
pPlot = caster.plot()
for i in range(pPlot.getNumUnits()):
pUnit = pPlot.getUnit(i)
if pUnit.getOwner() == caster.getOwner():
if pUnit.getUnitType() == gc.getInfoTypeForString('UNIT_WOOD_GOLEM'):
pUnit.kill(True, 0)
caster.setHasPromotion(gc.getInfoTypeForString('PROMOTION_GUARDSMAN'), True)
# caster.setHasPromotion(gc.getInfoTypeForString('PROMOTION_HERO'), True)
break

철골렘이나 가고일이 쓸 수 있는데,
 스택에 나무골렘이 있고, 자신이 호위 승급을 가지고 있지 않다면,
 스택내 나무골렘을 하나 제거하고 호위 승급을 붙이는 것이다.

뭐 긴 과정에 비해 하는 일은 매우 적긴 한데, 부족하다 싶으면 붙여주는 승급의 숫자를 늘리면 그만이니까...
주석처리된 부분은 영웅 승급을 붙여준다는 소린데, 골렘은 어차피 승급을 못찍으므로 영웅 승급따위는 있어도 아무 소용 없지.
필요하다면 주석을 지우고, 다른 승급으로 바꿔주면 되겠다. 물론 그 밑으로 주욱~ 길게 더 늘려 써도 상관 없겠고...
게임 불감증은 알아서 조절하게^^;
 
죠니 사사키가 작성한 글입니다.
,