Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

신 만드는 방법 번역 #116

Closed
Gittourarmy opened this issue May 13, 2020 · 2 comments
Closed

신 만드는 방법 번역 #116

Gittourarmy opened this issue May 13, 2020 · 2 comments
Labels
기능 추가 기능을 추가하고 싶을때

Comments

@Gittourarmy
Copy link
Collaborator

Written on 2017/02/15 by Cerol.
번역 : Gittourarmy

Gods are the biggest decision you make for your character after character
creation in Crawl. There's a large variety of them, they're each focused
on one narrow element, and they've gone though many changes and revisions
each version. They're also one of the more complex things to add into the
game, as they can affect almost any gameplay element or add their own
unique ones in.
돌죽에서 캐릭터를 만들고 나서 네가 하게 되는 커다란 결정 중 하나는 바로 신을 선택하는 것이다. 돌죽에는 신이 굉장히 많고, 각각의 신은 하나의 좁은 요소에 집중한다. 게다가 게임플레이 중에 나타날 요소들에 영향을 미칠 수 있는데다가, 자신만의 요소를 갖고 있기도 하기 때문에, 신은 게임에 넣기 매우 복잡한 대상 중 하나이다.

Today, we will add in Ralph, Demon Prince of Apathy to the Crawl pantheon.
He's not known for doing much, or caring much about his followers.
He does so little, his followers reace similar levels of apathy because
he can't be bothered to stop his divine power from transferring. His
followers, in turn, become so apathetic that even those attacking them
with bloodlust in their hearts get bored and look elsewhere.
오늘, 우리는 냉담한 악마 왕자, 랄프를 돌죽 만신전에 추가해보고자 한다. 그는 신도들에게 뭔가 많이 해주거나, 신경써주는 걸로는 알려져 있지 않다. 그는 정말 적은 일을 하며, 자신의 신성한 힘이 전해지는 것을 막는 것조차 귀찮기 때문에, 그의 추종자들은 비슷한 수준의 냉담함에 도달하게 된다. 그의 신도들은 너무 냉담해져서 강력한 살인 충동을 느끼며 공격하는 사람들조차 지루하게 만들고, 다른 곳을 찾게끔 한다.(역주 : reace가 reach의 오자일 가능성이 있어 그렇게 번역함.)

We're going to give a passive powers for Ralph: a Chei-style speed drop.
We're also going to give Ralph an active ability that does nothing to
restore piety, to demonstrate how to attach talents to a deity.
우리는 이제 랄프에게 수동적인 권능들을 줄 것인데, 이는 체이-스타일의 속도 감소 효과다. 또한 신심을 회복시키는 데에는 아무런 도움이 되지 않지만, 신위에 합당한 능력을 부여하는 방법을 시연하기 위해서 랄프에게 능동적인 권능도 줘볼까 한다.

However, Ralph doesn't care much for the standard piety system. We'll
look at it, but we won't give him any way to gain or lose piety normally.
Because we don't bother with piety for Ralph, we will make sure you have
access to both of his powers at 0 piety.
하지만, 랄프는 딱히 지금의 표준적인 신앙도 시스템에 신경쓰지 않는다. 우리도 살펴보긴 할테지만, 그에게 정상적인 방법으로 신앙도를 잃거나, 얻는 방법을 주진 않을 것이다. 왜냐하면 랄프에 대한 신앙도에 별로 신경 쓰고 싶지 않고, 네가 신앙도를 0을 갖고 있더라도 그의 권능에 접근할 수 있도록 하고 싶기 때문이다.

First up, as usual, is enum.h to declare that Ralph exists:
늘 그랬던 것처럼, 처음은 enum.h를 보는 것이다. 여기에서 랄프의 존재를 선언한다.
enum god_type {
GOD_NO_GOD = 0,
GOD_ZIN,
// TRIMMING MOST DEITIES 대부분의 신들 생략
GOD_HEPLIAKLQANA,
GOD_RALPH, // End of the list, before NUM_GODS 신들의 목록은 언제나 NUM_GODS 이전에.
NUM_GODS, // always after last god 언제나 마지막 신 다음에.

We're also going to need to declare an altar feature for Ralph, otherwise
it's going to be very hard to worship him. This is in enum dungeon_feature_type.
It's super important to ensure that you add your new alter either outside
of the MAJOR_VERSION checks, or inside on that uses ==. There's one with

, which ignore the entries in that block, and several deities have an
altar in each for some reason. The new entry should appear at the end of
the list for save compatibility,
또한, 우리는 랄프의 제단 기능을 선언할 필요가 있다, 그렇지 않으면 그를 믿는 게 아주 어려워질 수 있다. 이는 enum dungeon_featue_type에서 한다. 버전 관리 : 네가 새로운 제단을 추가할 때, MAJOR_VERSION 밖에 추가할 것인지, 아니면, ==를 써서 그 안에 추가할 것인지 확실히 하는 건, 진짜 완전 중요하다. >를 이용하면, 그 블록 안에 있는 모든 항목들을 다 무시하고, 어떤 이유로 여러 신이 각각 제단을 가지고 있습니다.(역주 : 뭔소리인지 모르겠는데) 새로운 항목은 항상 항목의 마지막에 등장해야 세이브의 호환성을 지킬 수 있다.

    enum dungeon_feature_type
    {
        DNGN_UNSEEN = 0,                   // must be zero 0이어야 됨
        DNGN_CLOSED_DOOR,
        // TRIMMING ALL SORTS OF THINGS 이런 종류들 나머지 싹 다 자름
        DNGN_ALTAR_RU,
        DNGN_ALTAR_PAKELLAS,
        DNGN_ALTAR_USKAYAW,
        DNGN_ALTAR_HEPLIAKLQANA,
        DNGN_ALTAR_ECUMENICAL,
        DNGN_ENDLESS_SALT,
        DNGN_ALTAR_RALPH, //our new one! 우리가 추가한 거!
        NUM_FEATURES,
        // LATER ENTRIES TRIMMED TOO 밑의 항목들은 생략됨

Our first side-trip is into terrain.cc, to attach Ralph to his altar:
우리 여정의 첫 잔가지는 terrain.cc로 가는 거데, 랄프를 그의 제단에 붙혀두고 싶기 때문이다.
static const pair<god_type, dungeon_feature_type> _god_altars[] =
{ GOD_ZIN, DNGN_ALTAR_ZIN },
{ GOD_SHINING_ONE, DNGN_ALTAR_SHINING_ONE },
//TRIM THE REST 나머지 싹 다 자름
{ GOD_RALPH, DNGN_ALTAR_RALPH },
}

We have to make a side-trip into describe-god.cc, because of an ASSERT
that fails if we don't. Add a set of entries into *divine_title[][8],
keeping in order to match god_type enum order like so:
그 다음으로는 describe-god.cc로 간다. 이걸 하지 않으면 실패로 간주된다.
static const char *divine_title[][8] =
{
// TRIMMED 생략
// Hepliaklqana -- memory/ancestry theme 헤플리아클카나 -- 기억/조상의 테마
{"Damnatio Memoriae", "Hazy", "@adj@ Child", "Storyteller",
"Brooding", "Anamnesiscian", "Grand Scion", "Unforgettable"},
// Ralph. Ralph doesn't care. 랄프, 랄프는 별 신경 안씀.
{"Dude", "Dude", "Dude", "Dude",
"Dude", "Dude", "Dude", "Dude"},

Normally those titles are a ranked list from 0 (penance) to 7(maximum
piety). Ralph doesn't care about titles. The other deities have a good
themed set of titles for followers. Keep yours in line by staying thematic.
기본적으로 이 호칭들은 0(참회)에서 7(최대 신앙도)로 랭크된다. 랄프는 호칭에는 별 신경을 안쓰지만 다른 신들은 신도들에게 줄, 테마에 맞는 훌륭한 호칭들을 갖고 있다. 이처럼 신을 만들 때에는, 테마에 맞도록 잘 가다듬어보자.

While we're here, we should also look at _describe_god_wrath_causes() to
set up the descriptor for our wrath on abandonment. Ralph, like Ru, won't
care. If you make another good god, you'll want to edit this to match and
include yours.
여기까지 왔으면, 우리는 _describe_god_wrath_causes()를 보고 배교자에 대한 우리의 분노를 대행할 서술자를 설정할 필요가 있다. 랄프의 경우는, 루처럼 딱히 신경 안쓴다. 만약 네가 더 좋은 신을 만들고 싶다면, 이를 수정해서 네 자신의 요소들을 포함하고 이에 맞도록 수정하고 싶을 거다.
static string _describe_god_wrath_causes(god_type which_god)
{
if (which_god == GOD_RU || which_god == GOD_RALPH)
return ""; // no wrath 징벌 없음
// TRIM THE REST 나머지 생략~

We also have a mandatory update to godconduct.cc, to add an entry to
divine_peeves() and divine_likes() so that we can define out what our
deity does or doesn't like. About half the gods use an empty set, and
the others have at least one special thing they don't like. This is
where you set the behaviors for piety gain/loss and penance, and most of
the behaviors you'll likely want are already implemented. Ralph will use
the empty default sets. Once again, these are ordered in the god_type
enum order:
우리는 또한 godconduct.cc에서 필수적인 업데이트를 해야하는데, divine_peeves()와 divine_likes()에 항목을 추가해서, 우리 신이 뭘 좋아하고 뭘 싫어하는 지를 정의해야 한다. 약 반이나 되는 신이 빈 집합을 쓰고, 나머지는 최소한 하나 정도는 싫어하는 걸 갖고 있다. 여기는 그러니까, 신앙도를 얻고/잃는 행동들과 참회에 대한 조건을 설정해주는 곳이다. 네가 넣고 싶어할만한 행동들은 대부분은 이미 구현되어 있을 것이다. 랄프는 기본적인 빈 집합을 쓸 것이다. 다시 한번, 이는 god_type enum의 순서대로 정렬되어야 한다.
static peeve_map divine_peeves[] =
{
// GOD_NO_GOD
peeve_map(),
// GOD_ZIN,
{
{ DID_CANNIBALISM, RUDE_CANNIBALISM_RESPONSE },
{ DID_ATTACK_HOLY, GOOD_ATTACK_HOLY_RESPONSE },
{ DID_KILL_HOLY, GOOD_KILL_HOLY_RESPONSE },
{ DID_DESECRATE_HOLY_REMAINS, GOOD_DESECRATE_HOLY_RESPONSE },
{ DID_EVIL, GOOD_EVIL_RESPONSE },
{ DID_ATTACK_FRIEND, _on_attack_friend("you attack allies") },
{ DID_ATTACK_NEUTRAL, {
"you attack neutral beings", false,
1, 0,
" forgives your inadvertent attack on a neutral, just this once."
} },
{ DID_ATTACK_IN_SANCTUARY, {
"you attack monters in a sanctuary", false,
1, 1
} },
{ DID_UNCLEAN, {
"you use unclean or chaotic magic or items", true,
1, 1, " forgives your inadvertent unclean act, just this once."
} },
{ DID_CHAOS, {
"you polymorph monsters", true,
1, 1, " forgives your inadvertent chaotic act, just this once."
} },
{ DID_DELIBERATE_MUTATING, {
"you deliberately mutate or transform yourself", true,
1, 0, " forgives your inadvertent chaotic act, just this once."
} },
{ DID_DESECRATE_SOULED_BEING, {
"you butcher sentient beings", true,
5, 3
} },
{ DID_CAUSE_GLOWING, { nullptr, false, 1 } },
},
// TRIM THE REST 나머지 생략
// GOD_RALPH
peeve_map(), //blank default list. 빈 기본 목록.
};

    static like_map divine_likes[] =
    {
        // GOD_NO_GOD
        like_map(),
        // GOD_ZIN,
        {
            { DID_KILL_UNCLEAN, _on_kill("you kill unclean or chaotic beings", MH_DEMONIC, true) },
            { DID_KILL_CHAOTIC, _on_kill(nullptr, MH_DEMONIC, true) },
        },
        // TRIMMING AGAIN 생략!
        // GOD_RALPH
        like_map(), //blank default list. 빈 기본 목록.
    };

(역주: //는 주석 처리로, 실제 컴파일 시에는 영향이 없습니다. GOD_**는 따로 번역하지 않았는데 이유는 이게 enum이거든요.)

These look a little complex, mostly because the only example of existing
gods included is Zin, who has a complex set of dislikes and specific
likes. If a feature is already handled by a deity, adding it to your new
one is a matter of cut and paste. If your god has a way of handling piety
beyond the existing methods (exploring or killing things, mostly), you
will need to add in custom handlers based on the existing ones. Ralph
doesn't grant piety or penance, because he doesn't care either way.
이 작업들은 약간 복잡해보일 수 있는데, 왜냐하면 지금 존재하는 신들 중에서 예시로 제시된게 진이고, 진은 정말 복잡한 호불호의 목록을 갖고 있기 때문이다. 만약 어떤 신에 의해 어떤 기능이 다루어지고 있다면, 이를 네 새로운 신에 추가하는 건 그냥 복붙을 하는 거 밖엔 안된다. 만약 네 신이 존재하는 방법 말고 다른 방법의 신앙도 처리를 요구한다면(예를 들어 폭발사라든지), 아마 존재하는 다른 것에 기반한 네 자신만의 처리기를 추가해야할 것이다. 랄프는 딱히 신앙도를 부여하거나, 참회를 내리지는 않는데, 왜냐하면 딱히 신경을 안 쓴다..

Now we need to go into godwrath.cc and give a descriptor to our new god's
wrath to avoid another ASSERT. Again, in god_type order:
또다른 실패를 막으려면, 이제 godwrath.cc에 들어가서 새로운 신의 분노에 대해 서술자를 넣어야 한다. 또다시, god_type의 순서대로,
static const char *_god_wrath_adjectives[] =
{
"bugginess", // NO_GOD
"wrath", // Zin
"wrath", // the Shining One (unused)
//TRIM MOST OF THEM HERE
"memory", // Hepliaklqana (unused)
"apathy", //Ralph (unused)
};

Next is editing feature-data.h to describe the new altar. Without an
altar, the only way to worship your deity is through the faded altar
roulette. Altars are a feature_def type, which is explained in feature.h,
but altars are so common, they get a shortcut method. Colours are defined
in the "VColour str_to_tile_colour(string colour)" function in colour.cc,
so check there if you want to use a color and aren't sure if it exists
or not. That's all we care about for now, so let's make a new one:
그런 다음에, feature-data.h를 수정하여 새로운 제단에 대해 서술하자. 제단이 없다면, 신을 믿을 유일한 방법은 퇴색되어버린 제단을 통한 룰렛뿐이다. 제단들은 feature_def 타입이며, feature.h에 설명이 되어 있다. 하지만 제단들이 너무 흔하면, 지름길 같은 게 생길 수 있다. 색은 colour.cc에 있는 "VColour str_to_tile_colour(string colour)"에 정의되어 있고, 만약 네가 어떤 색을 따로 쓰고 싶거나, 이게(색이? 신이?) 진짜 있는지, 없는지 확인해보고 싶으면 이걸 체크해보면 된다.
ALTAR(DNGN_ALTAR_USKAYAW, "hide-covered altar of Uskayaw", "altar_uskayaw", ETC_INCARNADINE),
ALTAR(DNGN_ALTAR_HEPLIAKLQANA, "hazy altar of Hepliaklqana", "altar_hepliaklqana", LIGHTGREEN),
ALTAR(DNGN_ALTAR_RALPH, "barely carved altar of Ralph", "altar_ralph", LIGHTGREY),

Easy part's done. Ralph and his altars exist. Again, this should also
require some work on tiles for completeness, but tiles will be a
separate tutorial.
쉬운 과정은 모두 끝났다. 랄프와 그의 제단은 이제 존재한다. 다시, 우리는 완벽함을 위해 타일을 만들어주어야 한다. 그러나 타일에 대한 튜토리얼은 따로 분리해두었다.
The majority of basic deity code is in religion.cc. Lots of other checks
are scattered out across the code base, but this is the basic starting
point to make functions and check for things. First on this list is
defining out our powers for the ^ screen:
기본적인 신의 코드의 주요한 부분은 religion.cc에 있다. 체크할 사항들의 많은 부분들이 코드 여기저기에 흩어져있긴 하지만, 이 부분은 요소를 확인하고, 요소에 대한 함수를 만드는 기본적인 시작점이 된다. 이 목록들의 첫 부분은 ^ 화면에서 나타나는 권능을 정의하는 부분이다.
//These entries must match the order of god_type enum.
const vector<god_power> god_powers[NUM_GODS] =
{
// no god
{ },

        // Zin
        { { 1, ABIL_ZIN_RECITE, "recite Zin's Axioms of Law" },
          { 2, ABIL_ZIN_VITALISATION, "call upon Zin for vitalisation" },
          { 3, ABIL_ZIN_IMPRISON, "call upon Zin to imprison the lawless" },
          { 5, ABIL_ZIN_SANCTUARY, "call upon Zin to create a sanctuary" },
          {-1, ABIL_ZIN_DONATE_GOLD, "donate money to Zin" },
          { 7, ABIL_ZIN_CURE_ALL_MUTATIONS,
               "Zin will cure all your mutations... once.",
               "Zin is no longer ready to cure all your mutations." },
        },
        // TRIM THE REST 나머지는 생략합니다.

        // Ralph, at the bottom as usual. 랄프는, 늘 그랬든 제일 밑에.
        // Entries with an ability grant you an activated ability at 
        // the listed piety breakpoint. Ones without it just light 
        // up at the appropriate piety level. Implement them elsewhere in the code.
        // 능력과 함께 제시된 각 항목은, 주어진 신앙도 분기점에서 어떤 권능이 활성화될 지를 제시합니다.
        // 이게 없는 경우 적절한 신앙도 수준에서 켜지게 됩니다. 코드 어딘가에 이를 구현해두십시오. 

        // stars needed, ability name, description. 필요한 별, 능력 이름, 설명.
        { { 0, "You move slowly and without purpose", "You move at normal speed." },
          { 0, ABIL_RALPH_NOTHING, "do absolutely nothing" },
        },

and we'll need to go back to enum.h to create those abilities as
covered in the ability/mutation writeup. Assume I've done so in the same
was as the ability tutorial, I won't paste that code block in here.
그리고 우리는 enum.h로 돌아가서 권능/변이 작성 작업에서 다뤘던 것처럼 이러한 권능들을 생성한다.
어빌리티에 대한 튜토리얼에서 했던 것처럼 하면 되므로, 여기에 코드 블록을 따로 붙여넣진 않겠다.

Also in religion.cc are the basic functions we'll need to handle our god's
full name, excommunication/desertion penalties, and decaying piety and
wrath timers. Ralph doesn't have either of those last 2, but we'll show
you where they get handled, and you'll more than likely be happy to copy
an existing entry for your new deity in mose cases. You may also want to
update the divine_retribution() function to handle the things your god
does when angry.
또한 religion.cc에는 우리 신의 전체 이름, 파문에 대한 처벌, 그리고 감소하는 신앙과 징벌 타이머를 처리하는 데에 필수적인 기보적인 함수들이 있다. 랄프는 마지막 두 개를 갖고 있지 않지만, 우리는 어디가 이걸 다루고 있는 지를 보여줄 것이다. 대부분의 경우 네 새로운 신을 위해 여기 있는 이미 존재하는 항목을 복사하기를 원할 것이다.
void excommunication(bool voluntary, god_type new_god)
{
// TRIMMING EARLY LOGIC
switch (old_god)
{
case GOD_XOM:
_set_penance(old_god, 50);
break;
case GOD_RALPH:
// Ralph doesn't care if you leave him. He didn't care if you followed him either.
break;
// TRIM MORE CODE.
}

    string god_name(god_type which_god, bool long_name)
    {
        switch (which_god)
        {
        case GOD_NO_GOD:        return "No God";
        case GOD_RANDOM:        return "random";
        case GOD_NAMELESS:      return "nameless";
        case GOD_ZIN:           return "Zin";
        case GOD_SHINING_ONE:   return "the Shining One";}
        // TRIM
        case GOD_RALPH:        return "Ralph"

    void handle_god_time(int /*time_delta*/)
    {
         // TRIMMING WRATH CHECK AND OTHER DEITIES PIETY DECAY
            case GOD_GOZAG:
            case GOD_XOM:
            case GOD_RALPH:
                // Gods without normal piety do nothing each tick.
                return;
        // TRIM THE REST

For most deities, godwrath.cc will be necessary. The upside is that for
gods with wrath, adding this is very free-form. You need to add in a line
like this to divine_retribution() to handle wrath occuring:
대부분의 신들에게, godwrath.cc는 매우 중요하다. 분노하고 있는 신에게 이를 추가하는 건 매우 자유로운 형식이다. 징벌 발생을 처리하기 위해, 밑에서 하는 것처럼 divine_retribution()의 줄마다 추가해주면 된다.
bool divine_retribution(god_type god, bool no_bonus, bool force)
{
// TRIM SANITY CHECKS
switch (god)
{
// One in ten chance that Xom might do something good...
case GOD_XOM:
xom_acts(abs(you.piety - HALF_MAX_PIETY),
frombool(one_chance_in(10)));
break;
case GOD_SHINING_ONE: do_more = _tso_retribution(); break;
// Ralph wouldn't actually do anything, just for demonstration.
case GOD_RALPH : do_more = _ralph_retribution(); break;

There's no example to do here for this, since Ralph doesn't care, and each
retribution function just does whatever the angry god might do, independent
of anything else, and returns true when it's done. Most of these also call
on other functions in this file to handle things like which monsters to
summon against your and such. There's lots of examples with the existing
deity's wraths.
랄프가 딱히 신경을 안 쓰는 관계로, 여기에는 그걸 위한 예시는 없다. 각각의 보복용 함수는 화난 신이 할 만한 것이라면 뭐든 하고, 만약 이게 수행되면 참을 반환한다. 이러한 보복용 함수의 대부분은 다른 함수들을 호출하기도 하며, 어떤 몬스터가 적대적으로 소환될 것인지 등을 처리한다. 기존에 존재하는 신의 분노에는 예가 많이 있다.

So, we're finally out of the deity interaction stuff, and on to the fun
parts: the divine benefits. For ABIL_RALPH_SLOW, we're going to find where
Chei slows you down, and add Ralph to those checks. This is a small block
in player.cc, and we will modify it slightly:
그리고, 이제 우리는 신의 상호작용 요소를 벗어났고, 이제 좀 더 재밌는 부분에 왔다. 신앙에 따른 이득 부분이다. ABIL_RALPH_SLOW를 위해선, 일단 체이가 느리게 만드는 부분을 찾아야 하고, 랄프에 이걸 넣어줘야 한다. 이는 player.cc에 있는 작은 블록이고, 우리는 이걸 약간 수정해야 한다.
// Cheibriados
if (have_passive(passive_t::slowed))
mv += 2 + min(div_rand_round(you.piety, 20), 8);
else if (player_under_penance(GOD_CHEIBRIADOS))
mv += 2 + min(div_rand_round(you.piety_max[GOD_CHEIBRIADOS], 20), 8);
// Ralph
if (you_worship(GOD_RALPH))
mv += 5; // Ralph doesn't care to do any math for this.

For ABIL_RALPH_NOTHING, we are creating a new ability that wastes 500
uninterrupted turns not caring about anything. Because we don't care
what happens. This is to build up piety with the prince of apathy.
ABIL_RALPH_NOTHING에 대해, 아무 것도 신경쓰지 않고 방해받지 않는 500턴을 소모하는 새로운 권능을 추가해볼 것이다. 왜냐하면 우리는 아무것도 신경쓰지 않기 때문이다. 이는 냉담한 왕자의 신앙을 쌓기 위한 용도이다.

Multi-turn actions are handled in delay.cc and delay.h, so we'll need to
look there. Here each type of delay has been class-ified, so we can
implement our own pretty easily.
다중-턴 행동은 delay.cc와 delay.h에서 처리된다, 그래서 우리는 거길 볼 필요가 있다. 여기는 딜레이의 각 타입이 분류되어 있으며, 따라서 우리가 구현하고자 하는 걸 좀 더 쉽게 할 수 있다.

    // in delay.h:
    // Copied from AscnedingStairsDelay
    class RalphDelay : public Delay
    {
        void finish() override;
    public:
        RalphDelay(int dur) : Delay(dur)
        { }

        bool try_interrupt() override;

        bool is_stairs() const override
        {
            return false;
        }

        const char* name() const override
        {
            return "ralph_nothing";
        }
    };

    // and in delay.cc:
    void RalphDelay::finish()
    {
        // You regain all piety for this
        mpr("You feel very apathetic. Too apathetic to intentionally sit still.");
        you.piety = 200;
    }
    bool RalphDelay::try_interrupt()
    {
        mpr("You don't care about whatever that is.");
        return false;
    }

Now this should only need one small change into ability.cc to activate:
a case in the _do_abilty switch:
이제 우리는 ability.cc에 약간의 변화를 주어 이를 활성화시키면 된다:

    case ABIL_RALPH_NOTHING:
        start_delay<RalphDelay>(500);
        break;

Our active ability on our new deity should now be hooked up and working, and
that should be the last of the stuff Ralph grants a follower. Whatever you
have your deity do, the typical functions you'll call are you_worship(GOD_NAME_HERE)
and piety_breakpoint(star_number) to make conditional checks for your
passive powers. You can also use you.religion and you.piety when dealing
directly with the player object.
우리의 새로운 신에게 준 능동적 권능은 이제 연결되었고 작동할 것이다. 이는 신도에게 랄프가 하사할 마지막 요소가 될 것이다. 네가 네 신에게 무얼 시키든 간에, 네가 호출할 전형적인 함수는 you_worship(GOD_NAME_HERE)와 piety_breakpoint(star_number)일 것이다. 이들은 네 수동적 권능을 위한 조건을 점검하는 함수들이다. 물론 you.religion이나 you.piety를 이용해서 플레이어 객체를 직접 처리할 수도 있다.

We should also add in entries into the text database for Ralph, to fill
in the important blocks of text when you read over what a deity does. These
are stored in plain text files, and entries are split with a long string of
percent signs and the title of the entry. We can just copy the headers
and change the name and our entries should be used without any actual
code work. They're organized, but they're searched so we do not have to
add our entries in a specific order (though we should follow the existing
ordering). We'll use the writeups below in /dat/descipt/gods.txt:
랄프를 위해서 텍스트 데이터베이스에 신이 뭘하는 지를 말해주는 중요한 텍스트 블록을 채우기 위해서 항목을 추가할 필요가 있다. 이는 평문의 텍스트 파일로 저장이 될것이고, 각 항목들은 긴 퍼센트 기호(%)와 항목의 제목로 분리되어 있다. 헤더들을 그냥 복사해서 이름만 바꾸면 된다. 실제로 코드로 구현되지 않은 것들을 제외한 항목들만 기술할 것이다. 조직되어는 있지만, 검색이 되기 때문에 이는 특정 순서로 항목을 추가할 필요는 없다 (하지만 편의를 위해 기존 순서를 따르는 게 좋고, 그렇게 하자.) 이제 /dat/descipt/gods.txt에 아래의 글을 작성하자. :

밑에건 번역 안함.
%%%%
Ralph

    Ralph is the Demon Prince of Apathy, appointed to his position by a
    cruel superior tired of his lazy ways.
    He sits on a rock somewhere deep in the Abyss, where lesser demons
    throws rocks at him when they are bored.
    So powerful is Ralph that even the rocks, in midflight, get bored
    and lose the will to finish flying towards him, and fall gently
    to the ground. Lugonu would certainly expel him  from his domain,
    were he able to bring himself to bother with such a meaningless
    underling.
    %%%%
    Ralph powers

    Ralph's intense uncaring is contagious, and those that decide to
    try to worship him find themselves also able to weather any change
    around them without feeling compelled to react to it. They also
    find themselves wandering slower than normal, without any real
    drive to move quickly to any particular destination. There might
    be other consequences, but who can be be bothered to find them?
    %%%%
    Ralph wrath

    Ralph doesn't feel wrath. Ralph might not have even noticed you
    following him in the first place, should you decide to abandon
    Ralph. There's no penalty for leaving Ralph, much like there was
    no benefit to following him in the first place.

Summary:
- enum.h to update god_type and dungeon_feature_type, and ability_type.
- describe-god.cc to grant a title to our new god and handle
explanations for abandonment.
- godconduct.cc to handle what grants piety (likes) and gets penance (peeves).
- godwrath.cc to handle punishment when angered.
- feature-data.h to create the altars.
- religion.cc for declaring your deities powers, full name, and
abandonment punishment.
- use you_worship(GOD_NAME_HERE), you.piety, and piety_breakpoint(star_count)
elsewhere in code for conditional behavior based on piety levels.
- update /dat/descipt/gods.txt with the flavor text entries for your new god.
There should be 3 of them, and separate them with 4 %'s and the title on the next line.

요약:
- enum.h에서 update god_type, dungeon_feature_type, ability_type.
- describe-god.cc에서 우리의 새 신에 대한 호칭을 주고, 배교에 대한 설명을 처리하도록 하자.
- godconduct.cc에서 신앙도가 어떻게 주어지고, 참회가 어떻게 주어지는 지를 처리하자.
- godwrath.cc에서 신의 분노에 따른 징벌에 대해 처리하자.
- feature-data.h에서 제단을 생성하자.
- religion.cc에서 우리 신의 권능과, 전체 이름, 그리고 배교 시의 징벌에 대해 선언하자.
- you_worship(GOD_NAME_HERE), you.piety, and piety_breakpoint(star_count)를 써서 신앙도 수준에 기반한 조건부 행동들에 대한 코드를 어딘가에 작성하자.
- 네 새로운 신에 대한 플레이버 텍스트 항목을 /dat/descipt/gods.txt에다 업데이트 하자.
거기는 아마 3개의 항목이 있을 것인데, 이들을 4개의 연달은 %와 그 다음 줄에 쓰여진 제목으로 구분하기로 하자.

@Gittourarmy Gittourarmy added the 기능 추가 기능을 추가하고 싶을때 label May 13, 2020
@magatonman
Copy link

사실 Demon Prince는 악마 왕자보다는 악마 군주가 맞는 번역 커흠

@Gittourarmy
Copy link
Collaborator Author

아 영알못 인증했네ㅜㅜ

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
기능 추가 기능을 추가하고 싶을때
Projects
None yet
Development

No branches or pull requests

2 participants