• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!

Анализирование скриптов Gothic 1.01e

Phantom95

Участник форума
Регистрация
31 Июл 2014
Сообщения
2.226
Благодарности
1.907
Баллы
370
В этой теме расскажу об основных различиях в скриптах 1.01e от всех последующих версий..

1. Классы практически ничем не отличаются от поздних версий, единственное отличие - наличие параметра PFX эффекта в классе ITEM..
Код:
const int MAX_CHAPTER = 5;
const int MAX_MISSIONS = 5;

class C_Npc
{
    var int id;
    var string name[5];
    var string slot;
    var int npcType;
    var int flags;
    var int attribute[ATR_INDEX_MAX];
    var int protection[PROT_INDEX_MAX];
    var int damage[DAM_INDEX_MAX];
    var int damagetype;
    var int guild;
    var int level;
    var func mission[5];
    var int fight_tactic;
    var int weapon;
    var int voice;
    var int voicePitch;
    var int bodymass;
    var func daily_routine;
    var func start_aistate;
    var string spawnPoint;
    var int spawnDelay;
    var int senses;
    var int senses_range;
    var int aivar[50];
    var string wp;
    var int exp;
    var int exp_next;
    var int lp;
};

class C_Mission
{
    var string name;
    var string description;
    var int duration;
    var int important;
    var func offerConditions;
    var func offer;
    var func successConditions;
    var func success;
    var func failureConditions;
    var func failure;
    var func obsoleteConditions;
    var func obsolete;
    var func running;
};

class C_Item
{
    var int id;
    var string name;
    var string nameID;
    var int hp;
    var int hp_max;
    var int mainflag;
    var int flags;
    var int weight;
    var int value;
    var int damagetype;
    var int damageTotal;
    var int damage[DAM_INDEX_MAX];
    var int wear;
    var int protection[PROT_INDEX_MAX];
    var int nutrition;
    var int cond_atr[3];
    var int cond_value[3];
    var int change_atr[3];
    var int change_value[3];
    var func magic;
    var func on_equip;
    var func on_unequip;
    var func on_state[4];
    var func owner;
    var int ownerGuild;
    var int disguiseGuild;
    var string visual;
    var string visual_change;
    var int visual_skin;
    var string scemeName;
    var int material;
    var string pfx;
    var int munition;
    var int spell;
    var int range;
    var int mag_circle;
    var string description;
    var string text[6];
    var int count[6];
};

class C_Focus
{
    var float npc_longrange;
    var float npc_range1;
    var float npc_range2;
    var float npc_azi;
    var float npc_elevdo;
    var float npc_elevup;
    var int npc_prio;
    var float item_range1;
    var float item_range2;
    var float item_azi;
    var float item_elevdo;
    var float item_elevup;
    var int item_prio;
    var float mob_range1;
    var float mob_range2;
    var float mob_azi;
    var float mob_elevdo;
    var float mob_elevup;
    var int mob_prio;
};

class C_Info
{
    var int npc;
    var int nr;
    var int important;
    var func condition;
    var func information;
    var string description;
    var int trade;
    var int permanent;
};

class C_ITEMREACT
{
    var int npc;
    var int trade_item;
    var int trade_amount;
    var int requested_cat;
    var int requested_item;
    var int requested_amount;
    var func reaction;
};

instance self(C_Npc);
instance other(C_Npc);
instance victim(C_Npc);
instance item(C_Item);
instance hero(C_Npc);

2. Отличия в Constant.d:
Код:
const int ITEM_KAT_RUNE = 1 << 9;
const int NPC_BURN_TICKS_PER_DAMAGE_POINT = 500;
const int DAMAGE_FLY_CM_MAX = 3000;
const int DAMAGE_FLY_CM_MIN = 500;
const int DAMAGE_FLY_CM_PER_POINT = 10;
Отсутствует const int NPC_VOICE_VARIATION_MAX = 10;

3. Папка G_Function В _Intern полностью пуста, в отличии от той, что в финальной версии..

4. В папке AI_Intern отсутствуют файлы AI_MM_CONSTANTS.d (Эти константы прописаны в ZS_MM_MASTER) и BALANCING.d

5. В AI_Constant отсутствуют следующие константы:
Код:
const int AIV_PARTYMEMBER = 36;

const int AIV_SPECIALCOMBATDAMAGEREACTION = 37;

const int AIV_RESPAWN = 38;

const int AIV_LASTTARGET = 39;

const int AIV_TALKBEFOREATTACK = 40;

const int AIV_DEALDAY = 41;

const int AIV_ITEMSCHWEIN = 42;
const int HAI_DIST_HELPATTACKEDCHARGES = 2000;
const int HAI_DIST_ASSESSTOLERATEDENEMY = 1000;

const int HAI_DIST_WATCH = 1500;

const int HAI_DIST_DETECTUSEMOB = 1500;

6. Файлы B_Function и C_Function содержат в себе меньше функций, чем в релизе.

7. В файле BodyStates отличается:
Код:
const int BS_MOD_NUTS = 1 << 9;

8. Раздел Perception:
Код:
func void InitPerceptions() - Perc_SetRange(PERC_ASSESSFIGHTSOUND,HAI_DIST_RANGED);
func void OccupiedPerception() - содержит Npc_PercEnable(self,PERC_OBSERVEINTRUDER,B_OccupiedObserveIntruder);
func void lightsleepperception() - содержит Npc_PercEnable(self,PERC_CATCHTHIEF,zs_catchthief);

9. В B_Humans отсутствует B_AssessTheft.d (перемещано в Story/B) и b_specialcombatdamagereaction.d

10. B_InitMonsterAttitudes.
Есть в отличии от релиза:
Код:
B_SetGuildAttitude(GIL_DEMON,ATT_FRIENDLY,GIL_DMB);
Нет в отличии от релиза:
Код:
b_setguildattitude(GIL_GUR,ATT_FRIENDLY,GIL_DEMON);

b_setguildattitude(GIL_GUR,ATT_NEUTRAL,GIL_MINECRAWLER);
 
b_setguildattitude(GIL_GUR,ATT_NEUTRAL,GIL_SKELETON);
 
b_setguildattitude(GIL_GUR,ATT_NEUTRAL,GIL_UNDEADORC);
 
b_setguildattitude(GIL_GUR,ATT_NEUTRAL,GIL_ZOMBIE);
 
b_setguildattitude(GIL_DEMON,ATT_FRIENDLY,GIL_GUR);
 
b_setguildattitude(GIL_MINECRAWLER,ATT_NEUTRAL,GIL_GUR);
 
b_setguildattitude(GIL_SKELETON,ATT_NEUTRAL,GIL_GUR);
 
b_setguildattitude(GIL_UNDEADORC,ATT_NEUTRAL,GIL_GUR);
 
b_setguildattitude(GIL_ZOMBIE,ATT_NEUTRAL,GIL_GUR);
 
b_setguildattitude(GIL_ORCSHAMAN,ATT_FRIENDLY,GIL_ORCDOG);
 
b_setguildattitude(GIL_ORCWARRIOR,ATT_FRIENDLY,GIL_ORCDOG);
 
b_setguildattitude(GIL_ORCSCOUT,ATT_FRIENDLY,GIL_ORCDOG);
 
b_setguildattitude(GIL_GRD,ATT_FRIENDLY,GIL_ORCSLAVE);
 
b_setguildattitude(GIL_STT,ATT_FRIENDLY,GIL_ORCSLAVE);
 
b_setguildattitude(GIL_TPL,ATT_FRIENDLY,GIL_ORCSLAVE);
 
b_setguildattitude(GIL_ORCSHAMAN,ATT_FRIENDLY,GIL_ORCSHAMAN);
 
b_setguildattitude(GIL_ORCSHAMAN,ATT_FRIENDLY,GIL_ORCWARRIOR);
 
b_setguildattitude(GIL_ORCSHAMAN,ATT_FRIENDLY,GIL_ORCSCOUT);
 
b_setguildattitude(GIL_ORCSHAMAN,ATT_FRIENDLY,GIL_ORCSLAVE);
 
b_setguildattitude(GIL_ORCWARRIOR,ATT_FRIENDLY,GIL_ORCSHAMAN);
 
b_setguildattitude(GIL_ORCWARRIOR,ATT_FRIENDLY,GIL_ORCWARRIOR);
 
b_setguildattitude(GIL_ORCWARRIOR,ATT_FRIENDLY,GIL_ORCSCOUT);
 
b_setguildattitude(GIL_ORCWARRIOR,ATT_FRIENDLY,GIL_ORCSLAVE);
 
b_setguildattitude(GIL_ORCSCOUT,ATT_FRIENDLY,GIL_ORCSHAMAN);
 
b_setguildattitude(GIL_ORCSCOUT,ATT_FRIENDLY,GIL_ORCWARRIOR);
 
b_setguildattitude(GIL_ORCSCOUT,ATT_FRIENDLY,GIL_ORCSCOUT);
 
b_setguildattitude(GIL_ORCSCOUT,ATT_FRIENDLY,GIL_ORCSLAVE);
 
b_setguildattitude(GIL_ORCSLAVE,ATT_FRIENDLY,GIL_ORCSHAMAN);
 
b_setguildattitude(GIL_ORCSLAVE,ATT_FRIENDLY,GIL_ORCWARRIOR);
 
b_setguildattitude(GIL_ORCSLAVE,ATT_FRIENDLY,GIL_ORCSCOUT);
 
b_setguildattitude(GIL_ORCSLAVE,ATT_FRIENDLY,GIL_ORCSLAVE);

11. В Test_Scripts отсутствуют - СharacterHelper, StoryHelper, TestModelle_Roman

12. В ZS_Babe отсутствуют - b_babe_assessplayer, zs_babe_sitaround, zs_bathing_babe, zs_charlotte_dance

13. В ZS_Humans отсутствует - zs_upset

14. Species.d - Отличия в instance GIL_VALUES(C_GILVALUES):
Отсутсвуют -
Код:
disable_autoroll[GIL_HUMAN] = 0;

surface_align[GIL_HUMAN] = 0;
 
turn_speed[GIL_HUMAN] = 270;
disable_autoroll[GIL_SCAVENGER] = 0;

surface_align[GIL_SCAVENGER] = 0;
---
Многие параметры имеют другие значаения..

15. В Amulette присутствует:
Код:
instance BESCHWцRUNGSAMULETT(C_Item)
{
    name = "Amulett der Erleuchtung";
    mainflag = ITEM_KAT_MAGIC;
    flags = ITEM_AMULET;
    value = 300;
    visual = "ItMi_Amulet_03.3ds";
    visual_skin = 0;
    material = MAT_METAL;
    on_equip = equip_beschwцrungsamulett;
    on_unequip = unequip_beschwцrungsamulett;
    description = "Dдmonenbeschwцrung";
    text[0] = "Schwarz wie die Seele";
    text[1] = "Schwarz wie die Nacht";
    text[2] = "Schwarz wie das Bцse";
    text[3] = "Schwarz verheisst Macht";
    text[5] = NAME_Value;
    count[5] = value;
};

func void equip_beschwцrungsamulett()
{
};

func void unequip_beschwцrungsamulett()
{
};

16. В Animaltrophy отсутствуют инстанции сердец големов..

17. В Armor всё привычное, но отличаются параметры защиты и стоимости, также есть 3 инстанции для доспехов из руды: лёгкие, средние и тяжёлые.

18. Artifacts, руна телепорта в дом баронов, в релизе её переделают на телепорт к укуркам + сами руны телепортов имеют текстуры, которые им не подходят, например телепорт к магам воды зеленого цвета.

19. Misk - За лютню не дают опыта при использовании, также как и за косяки болотной травы. в инстанции горящего факела есть параметры урона:
Код:
damage[DAM_INDEX_BARRIER] = 2;
damagetype = DAM_FIRE;
Также отсутствует вторая монета - ITMI_STUFF_OLDCOIN_02,

20. MissionItems2 - в альманахе отсутствует текст.

21. Орочий талисман не имеет параметров защиты при использовании.

22. Ranged_Weapons - у луков и арбалетов другие параметры урона и стоимости, "Лук Смерти" имеет название "Убийца Троллей", нет тяжёлого и боевого арбалета.

23. Содержимое Written (из финальной версии, здесь нет его) находится в _Misk_/Goettergabe.d. В нём есть контент, которого уже нет в поздних версиях:
Код:
instance STUNDENBUCH(C_Item)
{
    name = "Stundenbuch";
    mainflag = ITEM_KAT_DOCS;
    flags = 0;
    value = 100;
    visual = "ItWr_Book_01.3ds";
    material = MAT_LEATHER;
    scemeName = "MAP";
    description = "Stundenbuch";
    text[5] = NAME_Value;
    count[5] = value;
};
instance HORN_UND_KRALLE(C_Item)
{
    name = "Horn und Kralle";
    mainflag = ITEM_KAT_DOCS;
    flags = 0;
    value = 100;
    visual = "ItWr_Book_01.3ds";
    material = MAT_LEATHER;
    scemeName = "MAP";
    description = "Horn und Kralle";
    text[5] = NAME_Value;
    count[5] = value;
};
instance TIERFLEISCH(C_Item)
{
    name = "Tierfleisch";
    mainflag = ITEM_KAT_DOCS;
    flags = 0;
    value = 100;
    visual = "ItWr_Book_01.3ds";
    material = MAT_LEATHER;
    scemeName = "MAP";
    description = "Tierfleisch";
    text[5] = NAME_Value;
    count[5] = value;
};
instance TROPHAEEN_ZAEHNE(C_Item)
{
    name = "Trophдen: Zдhne";
    mainflag = ITEM_KAT_DOCS;
    flags = 0;
    value = 100;
    visual = "ItWr_Book_01.3ds";
    material = MAT_LEATHER;
    scemeName = "MAP";
    description = "Trophдen: Zдhne";
    text[5] = NAME_Value;
    count[5] = value;
};
instance FELLE_UND_HAEUTE(C_Item)
{
    name = "Felle und Hдute";
    mainflag = ITEM_KAT_DOCS;
    flags = 0;
    value = 100;
    visual = "ItWr_Book_01.3ds";
    material = MAT_LEATHER;
    scemeName = "MAP";
    description = "Felle und Hдute";
    text[5] = NAME_Value;
    count[5] = value;
};
instance UEBER_DIE_ORKS(C_Item)
{
    name = "Ьber die Orks";
    mainflag = ITEM_KAT_DOCS;
    flags = 0;
    value = 100;
    visual = "ItWr_Book_01.3ds";
    material = MAT_LEATHER;
    scemeName = "MAP";
    description = "Ьber die Orks";
    text[5] = NAME_Value;
    count[5] = value;
};
instance KRANKHEITEN_UND_GIFTE(C_Item)
{
    name = "Krankheiten und Gifte";
    mainflag = ITEM_KAT_DOCS;
    flags = 0;
    value = 100;
    visual = "ItWr_Book_02_05.3ds";
    material = MAT_LEATHER;
    scemeName = "MAP";
    description = "Krankheiten und Gifte";
    text[5] = NAME_Value;
    count[5] = value;
};
instance VISIONEN_UND_TRAEUME(C_Item)
{
    name = "Visionen und Trдume";
    mainflag = ITEM_KAT_DOCS;
    flags = 0;
    value = 100;
    visual = "ItWr_Book_02_03.3ds";
    material = MAT_LEATHER;
    scemeName = "MAP";
    description = "Visionen und Trдume";
    text[5] = NAME_Value;
    count[5] = value;
};
instance FOLTERMETHODEN(C_Item)
{
    name = "Foltermethoden";
    mainflag = ITEM_KAT_DOCS;
    flags = 0;
    value = 100;
    visual = "ItWr_Book_02_05.3ds";
    material = MAT_LEATHER;
    scemeName = "MAP";
    description = "Foltermethoden";
    text[0] = "Wie bringe ich sie alle zum Reden";
    text[1] = "Nachhilfemethoden";
    text[2] = "fьr Anfдnger und Folterknechte";
    text[5] = NAME_Value;
    count[5] = value;
};
instance BOGEN_UND_ARMBRUST(C_Item)
{
    name = "Bogen und Armbrust";
    mainflag = ITEM_KAT_DOCS;
    flags = 0;
    value = 100;
    visual = "ItWr_Book_02_03.3ds";
    material = MAT_LEATHER;
    scemeName = "MAP";
    description = "Bogen und Armbrust";
    text[5] = NAME_Value;
    count[5] = value;
};

instance ITWRLETTER4BLACKSMITH(C_Item)
{
    name = "Brief an Schmied";
    mainflag = ITEM_KAT_DOCS;
    flags = 0;
    value = 15;
    visual = "ItWr_Scroll_01.3DS";
    material = MAT_LEATHER;
    scemeName = "MAP";
    description = "Brief an Schmied";
    text[0] = "Es ist ein Brief an den Schmied im Alten Lager.";
};
Книга Die_Gruft имеет описание.
Содержимое Food (Аналогично) находится в _Misk_/ItFoApple.d

24. Улу-Мулу при использовании прибавляет силу на 5 единиц.

25. Также в отличии от финальной версии здесь присутствует вот такая функция восприятий у орков:
Код:
func void OrcDefaultPerc()
{
    if(self.guild == GIL_ORCSLAVE)
    {
        OrcSlavePerc();
        return;
    };
    Npc_PercEnable(self,PERC_ASSESSPLAYER,B_Orc_ObserveIntruder);
    Npc_PercEnable(self,PERC_ASSESSENEMY,B_Orc_ObserveIntruder);
    Npc_PercEnable(self,PERC_ASSESSFIGHTER,B_Orc_ObserveIntruder);
    Npc_PercEnable(self,PERC_OBSERVEINTRUDER,B_Orc_ObserveIntruder);
    Npc_PercEnable(self,PERC_OBSERVESUSPECT,B_Orc_ObserveIntruder);
    Npc_PercEnable(self,PERC_DRAWWEAPON,B_Orc_DrawWeapon);
    Npc_PercEnable(self,PERC_ASSESSTHREAT,B_Orc_AssessSomethingEvil);
    Npc_PercEnable(self,PERC_ASSESSWARN,B_Orc_AssessWarn);
    Npc_PercEnable(self,PERC_ASSESSDAMAGE,B_Orc_AssessDamage);
    Npc_PercEnable(self,PERC_ASSESSOTHERSDAMAGE,ZS_Orc_WatchFight);
    Npc_PercEnable(self,PERC_ASSESSMURDER,B_Orc_AssessMurder);
    Npc_PercEnable(self,PERC_ASSESSDEFEAT,B_Orc_AssessDefeat);
    Npc_PercEnable(self,PERC_ASSESSMAGIC,B_AssessMagic);
    Npc_PercEnable(self,PERC_ASSESSCASTER,B_Orc_AssessSomethingEvil);
    Npc_PercEnable(self,PERC_ASSESSTALK,ZS_Talk);
    Npc_SetPercTime(self,0.0001);
    Npc_SetPercTime(self,3);
};

func void OrcDefaultPercDoing()
{
    if(self.guild == GIL_ORCSLAVE)
    {
        OrcSlavePerc();
        return;
    };
    Npc_PercEnable(self,PERC_ASSESSDAMAGE,B_Orc_AssessDamage);
    Npc_PercEnable(self,PERC_ASSESSMURDER,B_Orc_AssessMurder);
    Npc_PercEnable(self,PERC_ASSESSOTHERSDAMAGE,ZS_Orc_WatchFight);
    Npc_PercEnable(self,PERC_ASSESSWARN,B_Orc_AssessWarn);
    Npc_PercEnable(self,PERC_ASSESSTALK,ZS_Talk);
};

func void OrcDeepSleepPerc()
{
    if(self.guild == GIL_ORCSLAVE)
    {
        OrcSlavePerc();
        return;
    };
    Npc_PercEnable(self,PERC_ASSESSDAMAGE,B_Orc_AssessDamage);
};

func void OrcLightSleepPerc()
{
    if(self.guild == GIL_ORCSLAVE)
    {
        OrcSlavePerc();
        return;
    };
    Npc_PercEnable(self,PERC_ASSESSDAMAGE,B_Orc_AssessDamage);
    Npc_PercEnable(self,PERC_ASSESSFIGHTSOUND,B_Orc_ObserveIntruder);
    Npc_PercEnable(self,PERC_ASSESSTALK,B_Orc_ObserveIntruder);
    Npc_PercEnable(self,PERC_ASSESSCALL,B_Orc_ObserveIntruder);
};

26. В папке "B" отсутствует много функций.

27.В папке "CHAPTER" есть только B_Kapitelwechsel.d
Вот что в нём содержится:
Код:
func void B_Kapitelwechsel(var int neues_Kapitel)
{
    var C_Npc YBerion;
    var C_Npc Templer;
    var C_Npc Templer_1;
    var C_Npc Novize;
    var C_Npc Novize_1;
    Kapitel = neues_Kapitel;
    if(neues_Kapitel == 2)
    {
        PrintDebugNpc(PD_MISSION,"---=== DAS ZWEITE KAPITEL ===---");
    }
    else if(neues_Kapitel == 3)
    {
        PrintDebugNpc(PD_MISSION,"---=== DAS DRITTE KAPITEL ===---");
        YBerion = Hlp_GetNpc(GUR_1200_YBerion);
        YBerion.attribute[ATR_HITPOINTS] = 1;
        Templer = Hlp_GetNpc(TPL_1431_Templer);
        Templer.senses = hero.senses;
        Templer_1 = Hlp_GetNpc(TPL_1430_Templer);
        Templer_1.senses = hero.senses;
        Novize = Hlp_GetNpc(NOV_1319_Novize);
        Novize.senses = hero.senses;
        Novize_1 = Hlp_GetNpc(NOV_1319_Novize);
        Novize_1.senses = hero.senses;
    }
    else if(neues_Kapitel == 4)
    {
        PrintDebugNpc(PD_MISSION,"---=== DAS VIERTE KAPITEL ===---");
    }
    else if(neues_Kapitel == 5)
    {
        PrintDebugNpc(PD_MISSION,"---=== DAS FЬNFTE KAPITEL ===---");
    }
    else if(neues_Kapitel == 6)
    {
        PrintDebugNpc(PD_MISSION,"---=== DAS SECHSTE KAPITEL ===---");
    };
};

func int C_IsChapter(var int chapter)
{
    if(Kapitel == chapter)
    {
        return TRUE;
    };
};

28. Events гораздо более пустой чем релизе, отсутствуют функции для работы многих лебедок, спавна нпс в храме спящего, и скрипт сна - pc_sleep.

29. Новые НПС:
GRD_207_HUNTER
ORG_856_MARVIN
NOV_1304_Uzul (Самой инстанции нет в Готик.дат, но есть упоминание о нём в OU.CSL)
SFB_1002_AIKO
SFB_1004_GARBAR
SFB_1005_MIHAI
SFB_1006_GORNIOS
SFB_1007_ARTO (При этом присутствует и барон Арто в Сл)
SFB_1008_THREP
SFB_1009_CAER
SFB_1010_KILAN
SFB_1011_HEREK (При этом присутствует и рудокоп Херек в Сл)
SFB_1012_WEEZE
SFB_1013_DAGGER
SFB_1014_SWINEY
SFB_1015_OLDMAN
В СтартАп эти скребки не вставлены, видимо сделаны для какой то другой отдельной демки.
Отмечу, что у многих нпс присутствует распорядок дня, сделанный специально под события ORCASSAULT, от которого отказались 9 января из-за недостатка времени на доработку остальных событий.

30. В StoryGlobal очень мало содержимого:
Код:
const int ZivilAnquatschDist = 300;
var int Kapitel;
var int Points_OC;
var int Points_NC;
var int Points_ST;
var int Knows_GetTeeth;
var int Knows_GetClaws;
var int Knows_GetFur;
var int Knows_GetHide;
var int Knows_GetMCMandibles;
var int Knows_GetMCPlates;
var int Knows_GetBFSting;
var int Knows_GetUluMulu;
var int LesterGuide;
var int Aaron_lock;
var int Snipes_deal;
var int Ian_gearwheel;
var int CorKalom_BringBook;
var int CorKalom_BringMCQBalls;
var int YBerion_BringFocus;
var int PresseTourJanuar2001;
var int CorAngar_FindHerb;
var int Yberion_dead;
var int BaalLukor_BringParchment;
var int CorAngar_SendToNC;
var int Saturas_BringFoci;
var int MonasteryRuin_GateOpen;

31. Есть названия у всех мобов в Text.d, в поздних версиях их уберут:
Код:
const string MOBNAME_BACKPACK_1 = "n/a";
const string MOBNAME_CRATE = "Kiste";
const string MOBNAME_CHEST = "Truhe";
const string MOBNAME_BED = "Bett";
const string MOBNAME_DOOR = "Tьr";
const string MOBNAME_CAMP = "Lagerfeuer";
const string MOBNAME_TORCH = "Fackel";
const string MOBNAME_TORCHHOLDER = "Fackel";
const string MOBNAME_BARBQ_SCAV = "Scavenger am Spiess";
const string MOBNAME_BARRELO_OC = "leeres Fass";
const string MOBNAME_BENCH = "Bank";
const string MOBNAME_ANVIL = "Amboss";
const string MOBNAME_BUCKET = "Wasser-Eimer";
const string MOBNAME_FORGE = "Schmiede-Feuer";
const string MOBNAME_GRINDSTONE = "Schleifstein";
const string MOBNAME_WHEEL = "Winde";
const string MOBNAME_LAB = "Alchemie-Labor";
const string MOBNAME_BOOK = "Buch";
const string MOBNAME_CHAIR = "Stuhl";
const string MOBNAME_CAULDRON = "Kessel";
const string MOBNAME_THRONE = "Thron";
const string MOBNAME_PAN = "Pfanne";
const string MOBNAME_REPAIR = "Brett";
const string MOBNAME_WATERPIPE = "Wasserpfeife";
const string MOBNAME_LADDER = "Leiter";
const string MOBNAME_SWITCH = "Schalter";
const string MOBNAME_BARONSTHRONE = "Erzbaron Thron";
const string MOBNAME_ORE = "Erzklumpen";
const string MOBNAME_ROPEWAY = "Austauschplatz";
const string MOBNAME_STOMPER = "Erz-Stampfer";
const string MOBNAME_BELLOW = "Blasebalg";
const string MOBNAME_STONEMILL = "Steinmьhle";
const string MOBNAME_ORC_MUMMY = "Mumie";
const string MOBNAME_PILLAR = "Sдule";
const string MOBNAME_BASKET_RICE = "Reiskorb";
const string MOBNAME_DRUM = "Trommel";
const string MOBNAME_GROUND_SLOT = "n/a";
const string MOBNAME_HERB_PSI = "Krautstampfer";
const string MOBNAME_IDOL = "Statuette";
const string MOBNAME_LEAN_WALL = "Geheimtьr (nicht    Sichtbar)";
const string MOBNAME_ORCDRUM = "Orctrommel";
const string MOBNAME_TARGETSTONE = "TargetStone";

Ну а теперь самое интересное - диалоги..

32. В версии 1.01e не до конца переделаны старые диалоги из более ранних версий готики:
Например, у Ларса присутствует 2 квеста: ему нужно принести кольцо и элексир быстрого лечения.
Ещё у Мордрага появляется магическая вода в инвентаре, после того как гг берёт квест на его изгнание из СЛ, если гг пойдёт с Мордрагом в НЛ, то он даст её и скажет отнести Ларесу (В релизе этот момент заменили на принесение кольца)
У Идола Намиба также есть 2 квеста, которые потом переделают и перенесут на других нпс - Монополия на Болотник (Продержался вплоть до 1.04d (!)) и Помощь Братству, цель которого принести 20 стеблей болотника.
По квесту помощь братству спавнятся "Агрессивные Шершни" их инстанция есть и в релизной версии, вот:
Код:
instance HELPBROTHERS_BLOODFLY(MST_DEFAULT_BLOODFLY)

{
 
set_bloodfly_visuals();
    Npc_SetToFistMode(self);

CreateInvItems(self,itat_bloodfly_01,2);

name[0] = "Агрессивный шершень";

};

33. Для создания Улу-Мулу нужно принести Когти Шныга (!), зуб болотожёра и язык огненной ящерецы. Кстати, сам Улу-Мулу является амулетом (!)

34. Стражник Хантер учит стрельбе из арбалета за 10 и 20 лп за 1 и 2 уровень соответстенно.

35. Стражник на нижнем ярусе старой шахты не пропускает гг до тех пор, пока тот не принесет шестеренку Яну и не получит разрешение.

36. Шантажист по пути в новый лагерь требует у гг 3 куска руды за проход.

37. Изначально планировали сделать поединок с Гор Ханисом, скорее всего не успели это реализовать или даже забыли, также как и возможность делать ставки.
Код:
instance DIA_Scatty_WhatDoYouDo(C_Info)
{
    npc = GRD_210_Scatty;
    nr = 1;
    condition = DIA_Scatty_WhatDoYouDo_Condition;
    information = DIA_Scatty_WhatDoYouDo_Info;
    permanent = 0;
    description = "Was machst du hier?";
};

func int DIA_Scatty_WhatDoYouDo_Condition()
{
    return 1;
};

func void DIA_Scatty_WhatDoYouDo_Info()
{
    AI_Output(other,self,"DIA_Scatty_WhatDoYouDo_15_00");    //Was machst du hier?
    AI_Output(self,other,"DIA_Scatty_WhatDoYouDo_09_01");    //Ich kьmmere mich um die Arena. Organisiere die Wetten, heuere neue Kдmpfer an und so weiter...
};


var int Scatty_ChargeKirgo;
var int Scatty_ChargeKharim;
var int Scatty_ChargeGorHanis;

instance DIA_Scatty_JoinOC(C_Info)
{
    npc = GRD_210_Scatty;
    nr = 1;
    condition = DIA_Scatty_JoinOC_Condition;
    information = DIA_Scatty_JoinOC_Info;
    permanent = 0;
    description = "Ich will mich dem Lager anschlieЯen. Kannst du mir dabei helfen?";
};

func int DIA_Scatty_JoinOC_Condition()
{
    return 1;
};

func void DIA_Scatty_JoinOC_Info()
{
    var C_Npc Kirgo;
    var C_Npc Kharim;
    var C_Npc GorHanis;
    AI_Output(other,self,"DIA_Scatty_JoinOC_15_00");    //Ich will mich dem Lager anschlieЯen. Kannst du mir dabei helfen?
    AI_Output(self,other,"DIA_Scatty_JoinOC_09_01");    //Wenn du es schaffst, mich zu beeindrucken - vielleicht.
    AI_Output(self,other,"DIA_Scatty_JoinOC_09_02");    //Einige der besten Kдmpfer aller drei Lager kommen hier her um sich zu messen.
    AI_Output(self,other,"DIA_Scatty_JoinOC_09_03");    //Fordere einen von ihnen heraus und kдmpfe gegen ihn. Je nach dem, wie gut du dich schlдgst, wird mein Urteil ьber dich ausfallen.
    Scatty_ChargeKirgo = LOG_RUNNING;
    Scatty_ChargeKharim = LOG_RUNNING;
    Scatty_ChargeGorHanis = LOG_RUNNING;
    Kirgo = Hlp_GetNpc(GRD_251_Kirgo);
    Kirgo.aivar[AIV_WASDEFEATEDBYSC] = FALSE;
    Kirgo.aivar[AIV_HASDEFEATEDSC] = FALSE;
    Kharim = Hlp_GetNpc(Sld_729_Kharim);
    Kharim.aivar[AIV_WASDEFEATEDBYSC] = FALSE;
    Kharim.aivar[AIV_HASDEFEATEDSC] = FALSE;
    GorHanis = Hlp_GetNpc(Tpl_1422_GorHanis);
    GorHanis.aivar[AIV_WASDEFEATEDBYSC] = FALSE;
    GorHanis.aivar[AIV_HASDEFEATEDSC] = FALSE;
};
38. Страж склепа имеет инстанцию с названием ZOMBIEORCHUNTER, а не ZOMBIETHEKEEPER.

39. На болоте неподалеку от Гор на Рана присутствовал раненый болотожер.
В СтартАп:
Код:
Wld_InsertNpc(HurtSwampshark,"PATH_AROUND_PSI09");
Инстанция
Код:
instance HurtSwampshark(Mst_Default_Swampshark)
{
    name[0] = "verletzter Sumpfhai";
    attribute[ATR_HITPOINTS] = 20;
    Set_Swampshark_Visuals();
    Npc_SetToFistMode(HurtSwampshark);
40. Ксардас отдавал гг "письмо для кузнеца", которое нужно было передать Стоуну. Стоун ковал для гг доспехи из руды: лёгкие - за 1000 кусков, средние - за 5000, тяжёлые - за 10000.

41. Роско обучает гг взлому замков, подкрадыванию и карманной краже.

42. Диего одет в одеяние призрака и имеет при себе лишь свой лук, оружия ближнего боя у него не имеется..

43. Горн обучает ловкости :D и стрельбе из арбалета (1 уровень)

44. Лестер стоит у входа в болотный лагерь, в превью это отчётливо видно, при чём он там даже в 1 главе..
Код:
func void Rtn_start_4()
{
    TA_Stay(8,0,23,0,"PSI_START");
    TA_Stay(23,0,8,0,"PSI_START");
};
--------------------------------------------------------------------------------------------------------------------------------

Вроде всё самое интересное назвал, отмечу ещё, что большая часть старых диалогов уже была переделана к этой версии, например вырезаны диалоги с такими нпс как Кантар, Брюс, Райан, Фокс, Марус и т.д. Также уже переделан квест на Лечение Юбериона, в этой версии ему уже нужно принести травы, а не элексир как было ранее, также переделан квест Рекруты для Братства, где нужно было отдать "Болотник для Рудокопов" одному из рудокопов (Возможно Дасти), чтобы переманить его на сторону укурков...
Также вырезаны все катсцены, которые были в ранних версиях, некоторые из них заменили на видео..

Вообщем большая часть инфы уже прояснилась, осталось только найти сентябрьскую демо версию, где всё это ещё не порезано..
 
Последнее редактирование:
Сверху Снизу