kimjoy2002 / crawl

Dungeon Crawl: Stone Soup Korean fork repository
Other
29 stars 20 forks source link

상위 독마법 만들기 #11

Closed kimjoy2002 closed 4 years ago

kimjoy2002 commented 4 years ago

로붕이들의 한을 풀어버릴 씹사기 주문을 만들자...

modgolem commented 4 years ago

에링야의 뿌리송곳 Eringya's Rootspike

5레벨 독/파괴 이 주문은 독을 지닌 뿌리식물을 날카롭게 솟아올린다. 뿌리의 날카로움은 독으로부터 보호받는 적에게도 유효한 상처를 입힐 수 있다. 뿌리식물은 당신의 발밑에서부터 뻗어나가는 것이므로, 당신이 숙련될수록 더 멀리까지 솟아올릴 수 있다.

인접한 2타일 안의 적 하나를 지정하여 즉시 독40% + 물리60% 피해를 줍니다. 스펠파워가 늘어날수록 사거리가 늘어나, 최대 인접한 5타일 안의 적에게 시전 가능합니다.

올그레브의 마지막 자비 Olgreb's Last Mercy

7레벨 독 대마법사 올그레브가 말년에 고안한 주문으로, 중독된 자의 몸에 쌓인 독소를 강렬하게 반응시킨다. 대상이 살아남는다면 독소는 모두 사라지지만, 죽는다면 대상의 몸은 그대로 폭발하여 주변을 휩쓴다.

시야 안의 중독된 적 하나를 지정하여 중독 중첩을 전부 해제합니다. 해제된 중독 중첩에 비례하여 저항할 수 없는 피해를 주고, 이 피해로 적이 죽으면 그로부터 1타일 범위의 폭발을 일으킵니다. 폭발의 피해는 대상의 최대 HP가 높을수록 강해집니다.

modgolem commented 4 years ago

rootspike 뿌리송곳 주문 gui 추가

modgolem commented 4 years ago

last_mercy 마지막 자비 주문 gui 추가

modgolem commented 4 years ago

독선 Poison Gland

venom_gland_nocharm (독) venom_gland (독/부여술)

5레벨 독 ( 또는 독/부여술 ) 시전자의 근접 공격에 치명적인 독선을 심어두는 주문이다. 근접 공격이 명중하면 독선의 맹독이 상처를 타고 스며들어, 대상의 독 저항을 조금씩 깎아낸다.

시전시 Gland 버프를 받습니다. Gland 상태에서 근접 공격을 맞추면 독 저항을 한 단계씩 깎습니다. 독에 취약(rPois-)해질 때까지 중첩됩니다. 스펠파워가 늘어날수록 Gland 상태의 지속시간이 늘어납니다.

레퍼런스 image https://github.com/Floodkiller/crawl/pull/19 (gooncrawl) 여기선 4레벨 독/주술로 virulence를 넣었어요. 이쪽은 몹버전 스펠을 그대로 가져온거라 독 면역이면 못 뚫는데, 아마 mon-cast.cc 에서... { SPELL_VIRULENCE, _hex_logic(SPELL_VIRULENCE, [](const monster &caster) { return caster.get_foe()->res_poison(false) < 3; }, 6) }, 이거 수정하면 독 면역인 적 상대로도 저항깎기 가능할 것 같아요!

player.cc 에서 찾아보면... int player_res_poison(bool calc_unid, bool temp, bool items) 여기서 if (you.duration[DUR_POISON_VULN]) rp--; 같은 식으로 저항을 깎는데, 보시면 알겠지만 플레이어의 경우 독 저항/면역 구분은 rp+/rp+++로 따지더라고요. 독 저항은 1단계/3단계(면역) 밖에 없는거죠. 왜냐면...

bool player::immune_to_hex(const spell_type hex) const 에서 case SPELL_VIRULENCE: return res_poison() == 3; 유일하게 독저를 깎을 수 있는 수단인(거미폼처럼 전환하는게 아니라 '차감'으로 따지는) virulence는 rp+++라면 아예 면역인걸로 쳐서 효과가 없거든요. 마찬가지로 beam.cc에서도 case BEAM_VIRULENCE: return player_res_poison(false) >= 3; 라고 처리를 해둬서, 플레이어가 독 면역(rp+++)일 땐 아예 DUR_POISON_VULN에 걸릴 일이 없게 만드는 식으로 되어 있어요.

그런데 몹은 rPois++가 가능하죠? 그러니까 우리가 독 면역인 적에게 virulence로 저항깎기를 하려면... 우선 beam.cc에서 bool ench_flavour_affects_monster 여기 있는 case BEAM_VIRULENCE: rc = (mon->res_poison() < 3); break; 를 수정하기만 하면 될겁니다...

logal-image commented 4 years ago

멋져 학파 개성도 분명하고 독저항해제 마법이 근접공격을 요구하는 점도 지금은 거의 소실된 단검법사 컨셉의 명맥을 잇는거 같아서 매력적이야 아이콘도 이뻐 좀 신경쓰이는 부분이 있는데, 뿌리송곳에 이펙트를 추가할 순 없을까? airstike도 그렇지만 모든 단일 스마이트 마법이 아무 이펙트도 없어서 허전해.. 투사체 없는 pain도 피격 이펙트는 있는데 아쉬움 +마지막 자비는 스마이트로 정상 작동 하는데 공격 경로는 파이어볼처럼 표시되네 (장애물에 가로막힐듯이 보임)

kimjoy2002 commented 4 years ago

구현된 세 마법 모두 현재 버전에서 구현해놨음 가능하면 그랜드그리모어나 아카식 레코드처럼 새로운 독마법 최종티어 책을 하나 더 만들어서 거기에 몰아두고 싶은데 혹시 추천할만한 책 이름있음?

modgolem commented 4 years ago

구현된 세 마법 모두 현재 버전에서 구현해놨음 가능하면 그랜드그리모어나 아카식 레코드처럼 새로운 독마법 최종티어 책을 하나 더 만들어서 거기에 몰아두고 싶은데 혹시 추천할만한 책 이름있음?

거장의 회고록 The Memoirs of the virtuoso

전설적인 독술사, 올그레브는 대마법사다운 최후를 맞이했다. 여기엔 올그레브가 '그 마법'이라 부르던 궁극의 독 마법을 찾아 떠난 여정이 쓰여 있다. 마지막 챕터에서, 올그레브는 마침내 찾아낸 '그 마법'을 자기자신에게 시전하여, 독 학파를 완성시켰다는 유언과 함께 안식에 든다. The legendary poisoner, Olgreb has reached the end as archmage. Here is the journey he took in search of the ultimate poison spell he called 'the spell'. In the last chapter, Olgreb rests with the testament to complete the school of poison magic, by casting to himself 'the spell' he finally found.

드디어 독 학파에 7,8,9레벨 주문이 생기기 시작할테니... 올그레브께서도 편히 쉬실 겁니다

logal-image commented 4 years ago

마지막 자비의 폭발 데미지가 썩 높지 않은데 괜찮을까? 마무리 데미지는 준수한데 폭발데미지는 그 2할도 못미치는거 같어 개발목적을 생각하면 마무리 데미지를 낮추더라도 폭발 데미지는 높아야하는거 아닐까 싶은데.. 나도 긴가민가해서 의견 좀

kimjoy2002 commented 4 years ago

마무리 데미지는 사실상 이그나이트 포이즌보다 1.5배 정도 쎈 데미지고 지금 폭발데미지는 평균적으로 타겟이 된 몬스터의 딱 최대체력만큼 주변에 데미지를 준다고 보면 됨 그래서 폭발 대상이 약하면 약할수록 약해짐 독면역없는 몹은 보통 더 약하다는걸 생각하면 기대 데미지가 약한거같긴한데 나도 최대체력 비례뎀을 좀만 더 줄이고 고정데미지를 늘리는게 좋을거같음

kimjoy2002 commented 4 years ago

마무리 데미지를 기본 데미지를 약간 증가시킴 체감이 될진 모르겠지만 어쨌든 구현이 되었으니 이슈는 닫음 혹시나 새 독마법이나 밸런스 관련된 문제가 있다면 새 이슈를 열어줘

kimjoy2002 commented 4 years ago

내가 계산함수를 잘못알고있었네. 낮게 나오는 이유가 있었음. 최대체력의 25%만 적용되고있었음 다시 100%로 해뒀음