dosinabox / g2nr_unofficial_update

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

Драконы #224

Closed Kor-Angar closed 4 years ago

Kor-Angar commented 4 years ago

Привет. Я опционально попробовал вернуть бессмертия Дракону Огненному. Срабатывает

instance Dragon_Fire(Mst_Default_Dragon_Fire)
{
    name[0] = "‘еоматар";   
    if(GuildlessMode == FALSE)
    {
        flags = NPC_FLAG_IMMORTAL;
    };  
    B_SetVisuals_Dragon_Fire(); 
    Npc_SetToFistMode(self);
};

можно вернуть опционально смертность огненному дракону в неофициальное обновление?



//****************************
//  Firedragon Prototype        
//****************************

PROTOTYPE Mst_Default_Dragon_Fire(C_Npc)            
{
    name                    = "Feuerdrache";
    guild                   = GIL_DRAGON;
    aivar[AIV_MM_REAL_ID]           = ID_DRAGON_FIRE;
    level                   = 500;

    bodyStateInterruptableOverride = TRUE;

    //----- Attribute ----  
    attribute   [ATR_STRENGTH]      =   200;
    attribute   [ATR_DEXTERITY]     =   200;
    attribute   [ATR_HITPOINTS_MAX] =   1000;
    attribute   [ATR_HITPOINTS]     =   1000;
    attribute   [ATR_MANA_MAX]      =   1000;
    attribute   [ATR_MANA]      =   1000;

    //------ Protections ----   
    protection  [PROT_BLUNT]        =   170;
    protection  [PROT_EDGE]     =   170;
    protection  [PROT_POINT]        =   170;    
    protection  [PROT_FIRE]     =   170;
    protection  [PROT_FLY]      =   170;    
    protection  [PROT_MAGIC]        =   170;

    //------ Damage Types ----  
    damagetype              =   DAM_FIRE|DAM_FLY;
//  damage      [DAM_INDEX_BLUNT]   =   0;
//  damage      [DAM_INDEX_EDGE]    =   0;
//  damage      [DAM_INDEX_POINT]   =   0;
    damage      [DAM_INDEX_FIRE]    =   149;
    damage      [DAM_INDEX_FLY]     =   1; //Opfer fliegt fьr Fire+Fly
//  damage      [DAM_INDEX_MAGIC]   =   0;

    //----- Kampf-Taktik ----   
    fight_tactic    =   FAI_DRAGON;

    //----- Sense & Ranges ---- 
    senses          =   SENSE_HEAR | SENSE_SEE | SENSE_SMELL;
    senses_range    =   PERC_DIST_DRAGON_ACTIVE_MAX;

    aivar[AIV_MM_FollowTime]    = FOLLOWTIME_MEDIUM;
    aivar[AIV_MM_FollowInWater] = FALSE;

    //aivar[AIV_MaxDistToWp]        = 700;
    aivar[AIV_OriginalFightTactic]  = FAI_DRAGON;

    //----- Daily Routine ----
    start_aistate               = ZS_MM_Rtn_DragonRest;

    aivar[AIV_MM_RestStart]     = OnlyRoutine;
};

//******************
//  Visuals
//******************

func void B_SetVisuals_Dragon_Fire()
{
    Mdl_SetVisual           (self,  "Dragon.mds");
    //                              Body-Mesh               Body-Tex    Skin-Color  Head-MMS    Head-Tex    Teeth-Tex   ARMOR
    Mdl_SetVisualBody       (self,  "Dragon_FIRE_Body",     DEFAULT,    DEFAULT,    "",         DEFAULT,    DEFAULT,    -1);
};

//*****************
//  Firedragon
//*****************

INSTANCE Dragon_Fire    (Mst_Default_Dragon_Fire)
{
    name                =   "Feomathar";
    //flags             =   NPC_FLAG_IMMORTAL;
    B_SetVisuals_Dragon_Fire();
    Npc_SetToFistMode(self);
};

//**************************
//  Firedragon Dragonisland
//*************************

INSTANCE Dragon_Fire_Island (Mst_Default_Dragon_Fire)
{
    name                =   "Feodaron";
    flags               =   NPC_FLAG_IMMORTAL;
    B_SetVisuals_Dragon_Fire();
    Npc_SetToFistMode(self);
};
dosinabox commented 4 years ago

а зачем?

Kor-Angar commented 4 years ago

Что бы убить его в начале второй главы через свиток "уменьшить монстра".Всегда думал, что это глюк, а сейчас мне стало казаться что это авторская задумка 😀 хочу проверить на сколько это адекватно убивать дракона во 2 главе. 

dosinabox commented 4 years ago

Условия в инстанциях - очень плохо. Даже если компилятор это "хавает", а в игре работает. Нужен другой подход.

Kor-Angar commented 4 years ago

А в диалоге с НПС можно поменять? 

Kor-Angar commented 4 years ago

А в диалоге с НПС можно поменять?

например через диалог с Хагеным или Гарантом?

dosinabox commented 4 years ago

Можно в диалоге. Можно при первой загрузке мира. Можно по скрипту (из книги, от помощника) или триггеру.

Kor-Angar commented 4 years ago

а можешь пожалуйста сделать через диалог с Хагеным, когда происходит переход во вторую главу. можно использовать какую нибудь имеющую переменную, например GuildlessMode, что бы новые не создавать.

dosinabox commented 4 years ago

Из другого мира нельзя - дракон не существует в памяти. Предлагаю при загрузке мира долины при второй главе. Это нужно только тебе?

Kor-Angar commented 4 years ago

Из другого мира нельзя - дракон не существует в памяти. Предлагаю при загрузке мира долины при второй главе.

давай так.

Это нужно только тебе?

сейчас да. не думаю что кто то еще допускает что это авторская задумка :-)

dosinabox commented 4 years ago

А почему просто не изменить флаг бессмертия в самой инстанции дракона?

Kor-Angar commented 4 years ago

Можно и так. Ноя же твою последнюю сборку буду играть. А я их не перекомпилирую со своими правками. Играю всегда с твоими чистыми файлами

Kor-Angar commented 3 years ago

Ледяно дракон не агрессирует. стал самым слабым. может ему всё таки молнию убрать? или поменять на ледяное копьё? или сделать заморозку + ледяное копьё?

dosinabox commented 3 years ago

Тут только тестировать и подбирать самое подходящее. Попробуешь на своей сборке?

Kor-Angar commented 3 years ago

Можно попробовать, напиши куда ему что вставит. 

dosinabox commented 3 years ago

Можно попробовать, напиши куда ему что вставит.

func int B_SelectSpell(var C_Npc slf,var C_Npc oth)
{
    ...
    if(slf.aivar[AIV_MM_REAL_ID] == ID_DRAGON_ICE)
    {
//      if(!Npc_HasItems(slf,ItRu_InstantFireball))
        if(!Npc_HasItems(slf,ItRu_ThunderBall))
        {
//          CreateInvItems(slf,ItRu_InstantFireball,1);
            CreateInvItems(slf,ItRu_ThunderBall,1);
        };
        if(Npc_GetDistToNpc(slf,oth) > FIGHT_DIST_DRAGON_MAGIC)
        {
//          B_ReadySpell(slf,SPL_InstantFireball,SPL_COST_InstantFireball);
            B_ReadySpell(slf,SPL_ChargeZap,SPL_COST_ChargeZap);
            return TRUE;
        }
        else
        {
            return FALSE;
        };
    };
    ...
};
dosinabox commented 3 years ago

Последний диалог с последним живым драконом Миненталя:

func void DIA_DragonTalk_Main_4_Info()
{
    AI_Output(other,self,"DIA_DragonTalk_Main_4_15_00");    //Как мне найти вашего хозяина?
    AI_Output(self,other,"DIA_DragonTalk_Main_4_20_01");    //Он находится в своих покоях в сплошной скале Чертогов Ирдората и ожидает там свою судьбу.
    AI_Output(self,other,"DIA_DragonTalk_Main_4_20_02");    //Пока он не сможет установить в этом мире порядок, которого он заслуживает, он будет ждать там в глубокой медитации и...
    AI_Output(other,self,"DIA_DragonTalk_Main_4_15_03");    //Давай опустим детали. Просто скажи мне, где находятся эти священные чертоги Ирдората.
    AI_Output(self,other,"DIA_DragonTalk_Main_4_20_04");    //Ха-ха-ха. Ты разочаровал меня, жалкий человечишка. Ты вынес все опасности и одолел большинство из нас, а теперь ты не можешь даже использовать полученные тобой знания.
    AI_Output(self,other,"DIA_DragonTalk_Main_4_20_05");    //Если слово Ирдорат ничего не значит для тебя, то тебе лучше отправиться к своим магам и попросить их, чтобы тебе позволили заниматься их мирскими делами.
    AI_Output(self,other,"DIA_DragonTalk_Main_4_20_06");    //Так как, очевидно, ты еще не готов взвалить на себя ношу их высшего знания.
    Log_CreateTopic(TOPIC_BuchHallenVonIrdorath,LOG_MISSION);
    Log_SetTopicStatus(TOPIC_BuchHallenVonIrdorath,LOG_Running);
    B_LogEntry(TOPIC_BuchHallenVonIrdorath,"Говорят, что повелитель драконов нашел прибежище в огромной скале священных Чертогов Ирдората. Ммм... Это что-то знакомое. И где я читал о них?");
    B_NPC_IsAliveCheck(OLDWORLD_ZEN);
    DragonTalk_Exit_Free = TRUE;
};

Последним драконом может быть любой дракон? Может ли Горн драться с каким-либо драконом?

Kor-Angar commented 3 years ago

Последним драконом может быть любой дракон?

да

Может ли Горн драться с каким-либо драконом?

нет


Горна и Ангара убирают из мира во время диалога с Драконом? :-)

Kor-Angar commented 3 years ago

Можно попробовать, напиши куда ему что вставит.

может проще сделать переменную и просто у помощника переключать закл? тогда можно полноценно протестить не только мне в рамках моей сборке но и всем не равнодушным? :-)

dosinabox commented 3 years ago

Горна и Ангара убирают из мира во время диалога с Драконом? :-)

Да. Я думаю, что эту B_NPC_IsAliveCheck нужно перенести в момент убийства последнего дракона, когда MIS_AllDragonsDead становится TRUE (после которой переход в Хоринис начнет пятую главу).

может проще сделать переменную и просто у помощника переключать закл?

Можно. Распиши варианты, сделаю.

Kor-Angar commented 3 years ago

Можно. Распиши варианты, сделаю.

dosinabox commented 3 years ago

Кулак воды, Молния, Малая огненная буря - сразу нет) Они используются непрерывно и доходит до вылета: 20210308194138_1

Для тестирования: https://dropmefiles.com/8mnSU

Нужно начало новой игры. Заклинание по умолчанию - Огненный шар, как в оригинале.

Kor-Angar commented 3 years ago

А леденая стрела? 19:50, 8 марта 2021 г., dosinabox notifications@github.com: Кулак воды, Молния, Малая огненная буря - сразу нет) Они используются непрерывно и доходит до вылета:

Для тестирования: https://dropmefiles.com/8mnSU Нужно начало новой игры. Заклинание по умолчанию - Огненный шар, как в оригинале.

—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or unsubscribe. -- Отправлено из мобильного приложения Яндекс.Почты

dosinabox commented 3 years ago

А леденая стрела?

Хороша. Надо дамаг проверить.

Kor-Angar commented 3 years ago

Кулак воды, Молния, Малая огненная буря - сразу нет)

малая огненная буря была прекрасна :-) https://www.youtube.com/watch?v=u6uQI2mF5AA


мне визуально ледяное копьё не очень понравилось. я бы попробовал сделать новую руну - копию ледяной стрелы (ItRu_Icebolt), но с более высоким ущербом(например 90)

dosinabox commented 3 years ago

у ледяного копья 100 - слишком много?

dosinabox commented 3 years ago

огненный шар - 75

Kor-Angar commented 3 years ago

Сложно сказать. От игрока зависит. В принципе это касается в первую очередь  лучник паладина, так как у него меньше всего защит от магии и он может профукать Амулет к защите от магии который есть в продаже у  Кантара в случае его посадки. В таком случае 100 ущерба будет много 😀Но дракона можно убить и свитками например. Мы кстати хотели уменьшить время на заморозку от волны для ледяного дракона. 22:46, 8 марта 2021 г., dosinabox notifications@github.com: у ледяного копья 100 - слишком много?

—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or unsubscribe. -- Отправлено из мобильного приложения Яндекс.Почты

dosinabox commented 3 years ago

Как оставить на релиз? Огненный шар как в оригинале, шаровую молнию как сейчас, или ледяное копье?

Kor-Angar commented 3 years ago

Не шаровую молнию. Это точно. Она слабее чем огненный шар. Можно поставить копье и собрать обратную связь. Или поставить огненный шар и предложить протестить. А отдельное Заклинание леденую стрелы не хочешь? 😀10:38, 9 марта 2021 г., dosinabox notifications@github.com: Как оставить на релиз? Огненный шар как в оригинале, шаровую молнию как сейчас, или ледяное копье?

—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or unsubscribe. -- Отправлено из мобильного приложения Яндекс.Почты

dosinabox commented 3 years ago

Новые заклинания - очень муторно и долго. Особенно с новыми визуалами.

Kor-Angar commented 3 years ago

А добавь тогда просто деляную стрелу, что бы опциона но можно было включить. 18:16, 9 марта 2021 г., dosinabox notifications@github.com: Новые заклинания - очень муторно и долго. Особенно с новыми визуалами.

—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or unsubscribe. -- Отправлено из мобильного приложения Яндекс.Почты