dosinabox / g2nr_unofficial_update

Исходники скриптов, релизы, хотфиксы и тестовые версии неофициального обновления для игры "Готика 2: Ночь Ворона".
https://worldofplayers.ru/threads/36817
The Unlicense
13 stars 1 forks source link

Молитвы Инносу #268

Closed Kor-Angar closed 3 years ago

Kor-Angar commented 4 years ago

Так же хотел предложить(попросить) опционально поправить молитвы Инносу для нейтрала и послушника. сейчас нейтрал получает манну (мент и наём не получают), а послушник не получает силу.

Хотелось бы прировнять гильдии нейтрал=послушник=мент=наём=онд в плане бонусов от Инноса. так как Белиар штрафует только Пала и Мага :-)

dosinabox commented 3 years ago

Вынесла все молитвы в одну функцию для удобства под возможные изменения и для чистоты кода. Все бонусы правильные?

func void B_Pray(var int gold)
{
    var int zufall;
    zufall = Hlp_Random(100);
    if(C_PrayedToday())
    {
        PrintScreen(Print_BlessNone,-1,-1,FONT_Screen,2);
    }
    else if(gold == 0)
    {
        if(zufall < 5)
        {
            B_BlessAttribute(hero,ATR_HITPOINTS_MAX,1);
        }
        else
        {
            PrintScreen(Print_BlessNone,-1,-1,FONT_Screen,2);
        };
    }
    else if(gold == PrayAmountSmall)
    {
        B_BlessAttribute(hero,ATR_HITPOINTS_MAX,1);
    }
    else if(gold == PrayAmountMedium)
    {
        B_BlessAttribute(hero,ATR_HITPOINTS_MAX,2);
    }
    else if(gold == PrayAmountBig)
    {
        if((Stats_Blessings_Str < 10) && (hero.guild != GIL_KDF) && (hero.guild != GIL_NOV) && (zufall < 50))
        {
            B_BlessAttribute(hero,ATR_STRENGTH,1);
        }
        else if((Stats_Blessings_Dex < 10) && (hero.guild != GIL_KDF) && (hero.guild != GIL_NOV) && (zufall >= 50))
        {
            B_BlessAttribute(hero,ATR_DEXTERITY,1);
        }
        else if((Stats_Blessings_MaxMana < 20) && (hero.guild != GIL_SLD) && (hero.guild != GIL_DJG))
        {
            B_BlessAttribute(hero,ATR_MANA_MAX,1);
        }
        else
        {
            B_BlessAttribute(hero,ATR_HITPOINTS_MAX,3);
        };
    };
    PrayDay = Wld_GetDay();
    if(PrayDay == 0)
    {
        PrayDayOne = TRUE;
    };
    if(gold > 0)
    {
        Npc_RemoveInvItems(hero,ItMi_Gold,gold);
        Stats_Blessings_GoldGiven += gold;
        AI_PrintScreen(ConcatStrings(IntToString(gold),PRINT_GoldGiven),-1,YPOS_GoldGiven,FONT_ScreenSmall,2);
    };
};
Kor-Angar commented 3 years ago

вроде правильно. на всякий случай я вот тут выписывал бонусы https://steamcommunity.com/sharedfiles/filedetails/?id=2361240610

може сразу заложить возможность что то в дальнейшем менять? так по моему удобнее читать

else if(gold == PrayAmountBig)
    {
        if((Shrine_STR_Bonus < 10) && (zufall < 50))
        {
            if НовыеМолитвы == false
            && hero.guild != GIL_KDF 
            && hero.guild != GIL_NOV
            {
                B_BlessAttribute(hero,ATR_STRENGTH,1);
                Shrine_STR_Bonus += 1;
            }
            else if hero.guild != GIL_KDF
            {
                B_BlessAttribute(hero,ATR_STRENGTH,1);
                Shrine_STR_Bonus += 1;
            };
        }
        else if((Shrine_DEX_Bonus < 10) && (zufall >= 50))
        {
            if НовыеМолитвы == false
            && hero.guild != GIL_KDF 
            && hero.guild != GIL_NOV
            {
                B_BlessAttribute(hero,ATR_DEXTERITY,1);
                Shrine_DEX_Bonus += 1;
            }
            else if hero.guild != GIL_KDF
            {
                B_BlessAttribute(hero,ATR_DEXTERITY,1);
                Shrine_DEX_Bonus += 1;
            };

        }
        else if((Shrine_MANA_Bonus < 20) 
        {
            if  НовыеМолитвы == false
            &&  hero.guild != GIL_SLD
            &&  hero.guild != GIL_DJG
            {
                B_BlessAttribute(hero,ATR_MANA_MAX,1);
                Shrine_MANA_Bonus += 1;
            }
            else if hero.guild == GIL_KDF
                 || hero.guild == GIL_PAL
            {
                B_BlessAttribute(hero,ATR_MANA_MAX,1);
                Shrine_MANA_Bonus += 1;
            };
        }
        else
        {
            B_BlessAttribute(hero,ATR_HITPOINTS_MAX,3);
        };
    };
Kor-Angar commented 3 years ago

ещё оригинальная механика не даёт возможность паладину сразу получать ману. Хотя мана по ЛОРу идёт в приоритете и является самым ценным бонусом :-)

else if(gold == PrayAmountBig)
    {
        if  НовыеМолитвы == true
        &&  Shrine_MANA_Bonus < 20
        {
            if  hero.guild == GIL_KDF
            ||  hero.guild == GIL_PAL
            {
                B_BlessAttribute(hero,ATR_MANA_MAX,1);
                Shrine_MANA_Bonus += 1;
            };
        }
        else if((Shrine_STR_Bonus < 10) && (zufall < 50))
        {
            if НовыеМолитвы == false
            && hero.guild != GIL_KDF 
            && hero.guild != GIL_NOV
            {
                B_BlessAttribute(hero,ATR_STRENGTH,1);
                Shrine_STR_Bonus += 1;
            }
            else if hero.guild != GIL_KDF
            {
                B_BlessAttribute(hero,ATR_STRENGTH,1);
                Shrine_STR_Bonus += 1;
            };
        }
        else if((Shrine_DEX_Bonus < 10) && (zufall >= 50))
        {
            if НовыеМолитвы == false
            && hero.guild != GIL_KDF 
            && hero.guild != GIL_NOV
            {
                B_BlessAttribute(hero,ATR_DEXTERITY,1);
                Shrine_DEX_Bonus += 1;
            }
            else if hero.guild != GIL_KDF
            {
                B_BlessAttribute(hero,ATR_DEXTERITY,1);
                Shrine_DEX_Bonus += 1;
            };

        }
        else if((Shrine_MANA_Bonus < 20) 
        {
            if  НовыеМолитвы == false
            &&  hero.guild != GIL_SLD
            &&  hero.guild != GIL_DJG
            {
                B_BlessAttribute(hero,ATR_MANA_MAX,1);
                Shrine_MANA_Bonus += 1;
            };
        }
        else
        {
            B_BlessAttribute(hero,ATR_HITPOINTS_MAX,3);
        };
    };
dosinabox commented 3 years ago

може сразу заложить возможность что то в дальнейшем менять?

Сама возможность - это как раз эта отдельная функция, в которой находится вся логика. Кому надо - тот легко её поменяет. А если сейчас таких изменений нет и не планируются, то перегружать код не стоит.

Kor-Angar commented 3 years ago

не очень понятно. но видимо так задумано.

Kor-Angar commented 3 years ago

давай я уйду от игры в слова. а напишу ответ по существу твоего вопроса: "Все бонусы правильные?" - перманентные бонусы правильные. но ввиду того что код был переписан, надо потестить в игре так как возможны при пожертвованиях не в 100 золотых приятные сюрпризы ;-)

image

dosinabox commented 3 years ago

Протестируй на досуге, это уже в релизе 26 версии.