AmProsius / gothic-1-community-patch

Gothic 1 Community Patch
Other
48 stars 4 forks source link

Bugs found in the original game using zSpy (DE/EN/PL/EN) #211

Open N1kX94 opened 3 years ago

N1kX94 commented 3 years ago

These points are in the world.zen is not present. Warn: 0 U: SPAWN: Spawnpoint OW_MONSTER_NAVIGATE02 not found. Npc SNAPPER cannot be spawned. .... <oSpawn.cpp,#386> Warn: 0 U: SPAWN: Spawnpoint OW_MONSTER_NAVIGATE02 not found. Npc SNAPPER cannot be spawned. .... <oSpawn.cpp,#386>

There is this point OW_MONSTER_NAVIGATE_02 Need replace in STARTUP_SUB_SURFACE OW_MONSTER_NAVIGATE02 -> OW_MONSTER_NAVIGATE_02

#45

N1kX94 commented 3 years ago

Describe the bug In one chest in the crypt there is an extra comma in the description of the container. Therefore, there is no mana potion in the chest. Warn: 0 B: MOBCONTAINER: Item-Instance not found: , .... <oMobInter.cpp,#2627>

        [% oCMobContainer:oCMobInter:oCMOB:zCVob 64513 16024]
            pack=int:0
            presetName=string:
            bbox3DWS=rawFloat:-35454.0898 2280.677 -15369.6855 -35365.7734 2357.57202 -15269.3906 
            trafoOSToWSRot=raw:ceb5a63e00000000a40c723f000000000000803f00000000a40c72bf00000000ceb5a63e
            trafoOSToWSPos=vec3:-35412.4219 2280.677 -15320.7129
            vobName=string:CHEST
            visual=string:CHESTBIG_OCCHESTMEDIUMLOCKED.MDS
            showVisual=bool:1
            visualCamAlign=enum:0
            cdStatic=bool:0
            cdDyn=bool:1
            staticVob=bool:1
            dynShadow=enum:0
            [visual zCModel 0 16025]
            []
            [ai % 0 0]
            []
            focusName=string:CHEST
            hitpoints=int:10
            damage=int:0
            moveable=bool:0
            takeable=bool:0
            focusOverride=bool:0
            soundMaterial=enum:0
            visualDestroyed=string:
            owner=string:
            ownerGuild=string:
            isDestroyed=bool:0
            stateNum=int:1
            triggerTarget=string:
            useWithItem=string:
            conditionFunc=string:
            onStateFunc=string:
            rewind=bool:0
            locked=bool:-1
            keyInstance=string:ItKe_Focus5
            pickLockStr=string:
            contains=string:FOCUS_5,ITKELOCKPICK:2,ITFOBEER:2,ITAMARROW:45,ITMINUGGET:521,,ITFO_POTION_MANA_03
        []

image WP LOCATION_05_02_STONEHENGE4 image

Expected behavior You need to replace the container with another one contains=string:FOCUS_5,ITKELOCKPICK:2,ITFOBEER:2,ITAMARROW:45,ITMINUGGET:521,ITFO_POTION_MANA_03

N1kX94 commented 3 years ago

One chest has a combination written in the key field Chest in hut in new camp

    [% oCMobContainer:oCMobInter:oCMOB:zCVob 64513 6384]
            pack=int:0
            presetName=string:OC_CHEST_MEDIUM_NC
            bbox3DWS=rawFloat:-55190.5391 2919.41309 1100.78479 -55120.3203 2996.30811 1188.93396 
            trafoOSToWSRot=raw:2bd58e3d0000000068607f3f000000000000803f0000000068607fbf000000002bd58e3d
            trafoOSToWSPos=vec3:-55158.1367 2919.41309 1144.36926
            vobName=string:OC_CHEST_MEDIUM
            visual=string:CHESTBIG_OCCHESTMEDIUMLOCKED.MDS
            showVisual=bool:1
            visualCamAlign=enum:0
            cdStatic=bool:0
            cdDyn=bool:1
            staticVob=bool:1
            dynShadow=enum:0
            [visual zCModel 0 6385]
            []
            [ai % 0 0]
            []
            focusName=string:Chest
            hitpoints=int:10
            damage=int:0
            moveable=bool:0
            takeable=bool:0
            focusOverride=bool:0
            soundMaterial=enum:0
            visualDestroyed=string:
            owner=string:
            ownerGuild=string:
            isDestroyed=bool:0
            stateNum=int:1
            triggerTarget=string:
            useWithItem=string:
            conditionFunc=string:
            onStateFunc=string:
            rewind=bool:0
            locked=bool:-1
            **keyInstance=string:LRL
            pickLockStr=string:**
            contains=string:ItMiNugget:15,ItMi_Stuff_Plate_01,ItMi_Stuff_Cup_01,ItFoRice:3,ItFo_Potion_Water_01:2
        []
N1kX94 commented 3 years ago

Meatbug has no animation R_ROAM1/R_ROAM2/R_ROAM3

Need exclude it in the function ZS_MM_Rtn_Wusel_loop

if (self.guild != GIL_MEATBUG)
{
        if (randomMove == 0) {AI_PlayAni(self, "R_ROAM1");};
        if (randomMove == 1) {AI_PlayAni(self, "R_ROAM2");};
        if (randomMove == 2) {AI_PlayAni(self, "R_ROAM3");};
};

Bloodyfly has no animation R_ROAM1/R_ROAM2/R_ROAM3 Need exclude it in the function ZS_MM_Rtn_Wusel_loop

if (self.guild != GIL_MEATBUG)
&& (self.guild != GIL_BLOODFLY)
{
        if (randomMove == 0) {AI_PlayAni(self, "R_ROAM1");};
        if (randomMove == 1) {AI_PlayAni(self, "R_ROAM2");};
        if (randomMove == 2) {AI_PlayAni(self, "R_ROAM3");};
};

Waran has no animation R_ROAM1/R_ROAM2/R_ROAM3 Need exclude it in the function ZS_MM_Rtn_Roam_loop

if (self.guild != GIL_WARAN)
{
        if (randomMove == 0) {AI_PlayAni(self, "R_ROAM1");};
        if (randomMove == 1) {AI_PlayAni(self, "R_ROAM2");};
        if (randomMove == 2) {AI_PlayAni(self, "R_ROAM3");};
};

Wolf has no animation R_ROAM2/R_ROAM3 Need exclude it in the function ZS_MM_Rtn_Roam_loop

if (self.guild != GIL_WARAN)
{
        if (randomMove == 0) {AI_PlayAni(self, "R_ROAM1");};
        if (self.guild != GIL_WOLF)
        {
                if (randomMove == 1) {AI_PlayAni(self, "R_ROAM2");};
                if (randomMove == 2) {AI_PlayAni(self, "R_ROAM3");};
        };
};

Ani goblin has no animation R_ROAM2/R_ROAM3 Need exclude it in the function ZS_MM_Rtn_Rest_Loop

    if (randomMove == 0) {AI_PlayAni(self, "R_ROAM1");};
    if (self.guild != GIL_GOBBO)
    {
            if (randomMove == 1) {AI_PlayAni(self, "R_ROAM2");};
            if (randomMove == 2) {AI_PlayAni(self, "R_ROAM3");};
    };
N1kX94 commented 3 years ago

I don't know if this can be done by scripts, then these WP's are not connected to the world grid

[waypoint0 zCWaypoint 0 16849] wpName=string:LOCATION_28_07 waterDepth=int:0 underWater=bool:0 position=vec3:23871.457 -553.283813 27821.3516 direction=vec3:0.86651814 0 -0.499145567 [] [waypoint1 zCWaypoint 0 16850] wpName=string:MOVEMENT_OW_PATH_SCAVENGER13_SPAWN02 waterDepth=int:0 underWater=bool:0 position=vec3:-30125.0918 863.352051 10757.9727 direction=vec3:0.342089623 0 -0.939667344 [] [waypoint2 zCWaypoint 0 16851] wpName=string:NC_PATH098 waterDepth=int:0 underWater=bool:0 position=vec3:-45475.0859 1549.67297 12704.335 direction=vec3:-0.906307757 0 0.4226183 [] [waypoint3 zCWaypoint 0 16852] wpName=string:NC_PATH17_MOVEMENT4 waterDepth=int:0 underWater=bool:0 position=vec3:-54638.6953 2550 2278.75439 direction=vec3:0 0 1 [] [waypoint4 zCWaypoint 0 16853] wpName=string:NC_SPAWN_DAM_LURKER_MOVEMENT waterDepth=int:0 underWater=bool:0 position=vec3:-54086.2852 2760.26343 19919.7832 direction=vec3:0.866025269 0 -0.500000298 [] [waypoint5 zCWaypoint 0 16854] wpName=string:OW_PATH_BLOODFLY02_SPAWN01 waterDepth=int:0 underWater=bool:0 position=vec3:19259.6973 -1413.37891 12750.3457 direction=vec3:0 0 1 [] [waypoint6 zCWaypoint 0 16855] wpName=string:OW_PATH_BLOODFLY11_SPAWN01 waterDepth=int:0 underWater=bool:0 position=vec3:51230.0156 -3699.99976 -25344.0469 direction=vec3:0 0 1 [] [waypoint7 zCWaypoint 0 16856] wpName=string:PATH_WALD_OC_MOLERATSPAWN waterDepth=int:0 underWater=bool:0 position=vec3:17322.2109 254.069626 6116.21875 direction=vec3:-0.587783217 0 -0.809018493 [] [waypoint8 zCWaypoint 0 16857] wpName=string:SPAWN_MOLELRAT_TOTU_LEFT_PLAT4 waterDepth=int:0 underWater=bool:0 position=vec3:6982.24316 6892.5498 24840.6035 direction=vec3:0.295047104 0 0.955482721 [] [waypoint9 zCWaypoint 0 16858] wpName=string:SPAWN_OW_BLOODFLY_C3 waterDepth=int:0 underWater=bool:0 position=vec3:-25134.9434 -759.669128 14444.8408 direction=vec3:0 0 1 [] [waypoint10 zCWaypoint 0 16859] wpName=string:SPAWN_OW_GOBBO_01_01 waterDepth=int:0 underWater=bool:0 position=vec3:8760.68164 7523.67871 23301.748 direction=vec3:0.295048207 0 0.955482364 [] [waypoint11 zCWaypoint 0 16860] wpName=string:SPAWN_OW_GOBBO_WATERFALLCAVE_2 waterDepth=int:0 underWater=bool:0 position=vec3:-28920.0664 -509.656311 14950.9443 direction=vec3:0.52992171 0 0.848046601 [] [waypoint12 zCWaypoint 0 16861] wpName=string:SPAWN_OW_MOLERAT_CAVE1_OC waterDepth=int:0 underWater=bool:0 position=vec3:-12786.3711 -764.572815 5610.146 direction=vec3:0.19508782 0 -0.980785787 [] [waypoint13 zCWaypoint 0 16862] wpName=string:SPAWN_OW_SCA_01_BADITS2 waterDepth=int:0 underWater=bool:0 position=vec3:-12387.7041 1228.80603 22852.4199 direction=vec3:-0.642976344 0 0.765886068 [] [waypoint14 zCWaypoint 0 16863] wpName=string:SPAWN_OW_SHADOWBEAST1_PSIWOOD_02 waterDepth=int:0 underWater=bool:0 position=vec3:26297.3848 -13.0862656 5814.8457 direction=vec3:-0.866253793 0 0.499604225 [] [waypoint15 zCWaypoint 0 16864] wpName=string:SPAWN_OW_SNAPPER_WOOD05_05 waterDepth=int:0 underWater=bool:0 position=vec3:-20598.166 130.852966 21888.416 direction=vec3:0.341741502 0 -0.939794004 [] [waypoint16 zCWaypoint 0 16865] wpName=string:SPAWN_OW_WARAN_DEMON_01 waterDepth=int:0 underWater=bool:0 position=vec3:-16446.4473 2519.74463 -30634.2129 direction=vec3:-0.984610021 0 -0.174765736 [] [waypoint17 zCWaypoint 0 16866] wpName=string:SPAWN_OW_WOLF_NEARSHADOW_PSIWOOD_02 waterDepth=int:0 underWater=bool:0 position=vec3:26351.3516 223.448914 3820.78882 direction=vec3:-0.86625272 0 0.499606073 [] [waypoint18 zCWaypoint 0 16867] wpName=string:SPAWN_SCAVENGER2_TOTU_LEFT_PLAT2 waterDepth=int:0 underWater=bool:0 position=vec3:7426.44971 6769.7583 21276.3887 direction=vec3:0.295047104 0 0.955482721 [] [waypoint19 zCWaypoint 0 16868] wpName=string:SPAWN_SCAVENGER_TOTU_LEFT_PLAT waterDepth=int:0 underWater=bool:0 position=vec3:4731.95166 7158.51611 23855.168 direction=vec3:0.295048207 0 0.955482364 []

N1kX94 commented 3 years ago

NPC Graham uses a point that doesn't exist in the world.

FUNC VOID Rtn_start_573 ()
{
    TA_Sleep        (22,30,06,00,"OCR_HUT_76");
    TA_SitAround    (06,00,07,00,"OCR_OUTSIDE_HUT_76"); 
    TA_StandAround  (07,00,11,00,"**OCR_OUSIDE_HUT_77_INSERT**");
    TA_WashSelf     (11,00,11,30,"OCR_LAKE_4");
    TA_RepairHut    (11,30,12,00,"OCR_OUTSIDE_HUT_76");
    TA_Boss         (12,00,18,00,"OCR_HUT_76");
    TA_SitCampfire  (18,00,22,30,"**OCR_OUSIDE_HUT_77_INSERT**");
};

Need replace OCR_OUSIDE_HUT_77_INSERT -> OCR_OUTSIDE_HUT_77_INSERT

Fixed https://github.com/AmProsius/gothic-1-community-patch/issues/214#issue-842819134

N1kX94 commented 3 years ago

This dialog must be one-time, otherwise it's an endless diary entry.

instance DIA_Gravo_Influence(C_INFO)
{
    npc             = Vlk_572_Gravo;
    nr              = 2;
    condition       = DIA_Gravo_Influence_Condition;
    information     = DIA_Gravo_Influence_Info;
    //permanent     = 1;,
    permanent       = 0;
    description     = "Kannst du mir sagen, wer hier zu den einflussreichen Leuten gehцrt?";
};    
N1kX94 commented 3 years ago

NPC Guy uses a point that doesn't exist in the world. Warn: 0 U: NPC: No Route found :Guy \ VLK_530_GUY (OCR_OUTSIDE_ARENA_BENCH_2) .... <oNpc_Move.cpp,#1459>

FUNC VOID Rtn_start_530 ()
{
    TA_Sleep        (23,00,07,00,"OCR_HUT_25");
    TA_SitAround    (07,00,08,00,"OCR_OUTSIDE_HUT_25");
    TA_Smalltalk    (08,00,17,00,"OCR_OUTSIDE_HUT_27"); //mit Stt 306
    TA_SitAround    (17,00,19,05,"OCR_OUTSIDE_ARENA_BENCH_2");
    TA_ArenaSpectator(19,05,23,00,"OCR_ARENA_07");
};

Need replace OCR_OUTSIDE_ARENA_BENCH_2 -> OCR_OUTSIDE_ARENA_BENCH2 Fixed #215

N1kX94 commented 3 years ago

Describe the bug In the original sfx scripts, the necessary sound instance is missing, so no additional sounds are heard at night. Warn: 0 C: zSndMSS(zCSndSys_MSS::LoadSoundFXByIdentifier): Sound Identifier "WOOD_NIGHT2" unknown ! .... <zSndMSS.cpp,#1066>

Expected behavior You need to add this sound instance to sfx. dat INSTANCE Wood_Night2(C_SFX_DEF) {file= "night_wood.wav"; vol = 70; };

N1kX94 commented 3 years ago

Describe the bug The original game resources are missing the justwhite.tga texture Warn: 0 D: Texture not found 'JUSTWHITE.TGA', using default-texture .... <zTexture.cpp,#1324>

The texture is used in pfx.d and pfxmagic.d

INSTANCE HUMAN_WASHSELF1 (C_PARTICLEFX)
{
     ppsvalue = 600.000000000;
     ppsscalekeys_s = "1";
     ppsissmooth = 1;
     ppsfps = 20.000000000;
     shptype_s = "CIRCLE";
     shpfor_s = "object";
     shpoffsetvec_s = "0 1 0";
     shpdistribtype_s = "RAND";
     shpdistribwalkspeed = 0.001000000;
     shpdim_s = "10";
     shpscalekeys_s = "1";
     shpscaleislooping = 1;
     shpscaleissmooth = 1;
     shpscalefps = 2.000000000;
     dirmode_s = "DIR";
     dirangleheadvar = 30.000000000;
     dirangleelev = 90.000000000;
     dirangleelevvar = 30.000000000;
     velavg = 0.200000003;
     velvar = 0.050000001;
     lsppartavg = 1000.000000000;
     lsppartvar = 200.000000000;
     flygravity_s = "0 -0.0005 0";
     visname_s = "WASHSELF2.TGA";
     visorientation_s = "VELO";
     vistexisquadpoly = 1;
     vistexanifps = 15.000000000;
     vistexaniislooping = 1;
     vistexcolorstart_s = "255 255 255";
     vistexcolorend_s = "100 200 255";
     vissizestart_s = "2 2";
     vissizeendscale = 10.000000000;
     visalphafunc_s = "BLENND";
     visalphastart = 255.000000000;
     trlfadespeed = 1.500000000;
     trltexture_s = "JUSTWHITE.TGA";
     trlwidth = 0.500000000;
};
INSTANCE HUMAN_WASHSELF2 (C_PARTICLEFX)
{
     ppsvalue = 2000.000000000;
     ppsscalekeys_s = "1";
     ppsissmooth = 1;
     ppsfps = 40.000000000;
     shptype_s = "CIRCLE";
     shpfor_s = "object";
     shpoffsetvec_s = "0 1 0";
     shpdistribtype_s = "RAND";
     shpdistribwalkspeed = 0.001000000;
     shpdim_s = "10";
     shpscalekeys_s = "1";
     shpscaleislooping = 1;
     shpscaleissmooth = 1;
     shpscalefps = 2.000000000;
     dirmode_s = "DIR";
     dirangleheadvar = 60.000000000;
     dirangleelev = 90.000000000;
     dirangleelevvar = 60.000000000;
     velavg = 0.200000003;
     velvar = 0.050000001;
     lsppartavg = 500.000000000;
     lsppartvar = 200.000000000;
     flygravity_s = "0 -0.0005 0";
     visname_s = "WASHSELF2.TGA";
     visorientation_s = "VELO";
     vistexisquadpoly = 1;
     vistexanifps = 15.000000000;
     vistexaniislooping = 1;
     vistexcolorstart_s = "255 255 255";
     vistexcolorend_s = "100 200 255";
     vissizestart_s = "3 3 ";
     vissizeendscale = 5.000000000;
     visalphafunc_s = "BLEND";
     visalphastart = 255.000000000;
     trlfadespeed = 1.500000000;
     trltexture_s = "JUSTWHITE.TGA";
     trlwidth = 0.400000006;
};
INSTANCE MFX_DESTROYUNDEAD_SOUL_CLOUD (C_PARTICLEFX)
{
     ppsvalue = 30.000000000;
     ppsscalekeys_s = "1 1 1 1 0.6 0.6 0.3 0.3";
     ppsissmooth = 1;
     ppsfps = 3.000000000;
     shptype_s = "SPHERE";
     shpfor_s = "OBJECT";
     shpoffsetvec_s = "0 0 0";
     shpdistribtype_s = "RAND";
     shpdistribwalkspeed = 1.000000000;
     shpdim_s = "5";
     shpscalekeys_s = "1";
     shpscaleissmooth = 1;
     shpscalefps = 3.000000000;
     dirmode_s = "RAND";
     dirfor_s = "object";
     dirmodetargetfor_s = "OBJECT";
     dirmodetargetpos_s = "0 0 0";
     dirangleheadvar = 89.000000000;
     dirangleelev = 89.000000000;
     dirangleelevvar = 15.000000000;
     velavg = 0.010000000;
     lsppartavg = 2000.000000000;
     flygravity_s = "0 0.0001 0";
     visname_s = "STOMPERDUST.TGA";
     visorientation_s = "VELO";
     vistexisquadpoly = 1;
     vistexanifps = 6.000000000;
     vistexaniislooping = 1;
     vistexcolorstart_s = "0 100 255";
     vistexcolorend_s = "0 0 255";
     vissizestart_s = "1 1";
     vissizeendscale = 50.000000000;
     visalphafunc_s = "ADD";
     visalphastart = 255.000000000;
     trltexture_s = "JUSTWHITE.TGA";
};
INSTANCE MFX_CONTROL_TARGET (C_PARTICLEFX)
{
     ppsvalue = 1000.000000000;
     ppsislooping = 1;
     shptype_s = "SPHERE";
     shpfor_s = "object";
     shpdistribtype_s = "RAND";
     shpdistribwalkspeed = 0.000300000;
     shpdim_s = "120";
     shpscalekeys_s = "1 2";
     shpscaleislooping = 1;
     shpscaleissmooth = 1;
     shpscalefps = 1.000000000;
     dirmode_s = "TARGET";
     dirfor_s = "OBJECT";
     dirmodetargetfor_s = "OBJECT";
     velavg = 0.100000001;
     velvar = 0.010000000;
     lsppartavg = 1000.000000000;
     flygravity_s = "0";
     visname_s = "MFX_SLEEP_STAR.TGA";
     visorientation_s = "VELO3D";
     vistexisquadpoly = 1;
     vistexanifps = 10.000000000;
     vistexaniislooping = 1;
     vistexcolorstart_s = "255 255 255";
     vistexcolorend_s = "255 255 255";
     vissizestart_s = "10 100";
     vissizeendscale = 1.000000000;
     visalphafunc_s = "ADD";
     visalphastart = 255.000000000;
     trltexture_s = "JUSTWHITE.TGA";
};

Expected behavior

  1. You can take the original white.tga texture and compile it by naming it justwhite.tga
  2. Change the texture usage in the pfx instance to white.tga
N1kX94 commented 3 years ago

Error in spelling the WP name. You need to replace the name with capital letters. Warn: 0 U: NPC: No Route found :Рудокоп \ VLK_506_BUDDLER (OCR_Hut_15) .... <oNpc_Move.cpp,#1459>

FUNC VOID Rtn_start_506 ()
{
    TA_Sleep        (23,00,06,30,"OCR_HUT_15");
    TA_StandAround  (06,30,11,00,"OCR_OUTSIDE_HUT_15");
    TA_RepairHut    (11,00,17,00,"OCR_HUT_15"); //TA_RepairHut  (11,00,17,00,"OCR_Hut_15");
    TA_SitCampfire  (17,00,23,00,"OCR_OUTSIDE_HUT_15");
};

Fixed #216

N1kX94 commented 3 years ago

Error in spelling the WP name. You need to replace the name with capital letters. 139:06 Warn: 0 U: NPC: No Route found :Soelder \ SLD_750_SOELDNER (FMC_Path19) .... <oNpc_Move.cpp,#1459>

FUNC VOID Rtn_FMCstart_750 ()
{
    TA_GuardPalisade    (01,00,13,00, "FMC_PATH19");
    TA_GuardPalisade    (13,00,01,00, "FMC_PATH19"); //TA_GuardPalisade (13,00,01,00, "FMC_Path19");
};

Fixed #217

AmProsius commented 3 years ago

@N1kX94 thanks for sharing these! I will create separate issues from your comments so we will be able to fix them one by one.

N1kX94 commented 3 years ago

Offtop. No problem. I just decided that it would be more convenient for me to write all the errors in one topic, it will be more convenient for you to see them there. I will edit the messages and mark what you have corrected.

Describe the bug In the original zen file, there are 1 items that have lost their connection to the scripts.

[% oCItem:zCVob 0 389]
            pack=int:0
            presetName=string:
            bbox3DWS=rawFloat:-3368.93799 774.225525 -3598.11743 -3326.7417 787.268127 -3555.23706 
            trafoOSToWSRot=raw:526f5b3f0000000089d9033f000000000000803f0000000089d903bf00000000526f5b3f
            trafoOSToWSPos=vec3:-3347.83984 780.768127 -3576.67725
            vobName=string:DIE_GRUFT
            visual=string:
            showVisual=bool:0
            visualCamAlign=enum:0
            cdStatic=bool:1
            cdDyn=bool:1
            staticVob=bool:0
            dynShadow=enum:0
            [visual % 0 0]
            []
            [ai % 0 0]
            []
            itemInstance=string:
        []

image WP OCC_BARONS_UPSTAIRS_RIGHT_BACK_EXIT

Expected behavior You need to restore the connection of the item with the instance from the scripts, or add the book to the same place

N1kX94 commented 3 years ago

Describe the bug In the Russian localization of Snowball, the authors made a mistake in the menu, which is why the item is not in its position. https://imgur.com/Be4aZAH

Expected behavior you need to correct the wrong posx position to the correct one (only RUS)

instance MENUITEM_LOADSAVE_LEVELNAME(C_MENU_ITEM_DEF)
{
    type = MENU_ITEM_TEXT;
    text[0] = "Мир:";
    posx = SAVEGAME_X2; //posx = -4000;
    posy = 3960;
    fontname = MENU_FONT_SMALL;
    flags = flags & ~IT_SELECTABLE;
};

instance MENUITEM_LOADSAVE_LEVELNAME_VALUE(C_MENU_ITEM_DEF)
{
    type = MENU_ITEM_TEXT;
    text[0] = "";
    posx = SAVEGAME_X2; //posx = -4000;
    posy = 3960 + 320;
    dimx = 8192 - posx;
    dimy = 350;
    fontname = MENU_FONT_SMALL;
    flags = flags & ~IT_SELECTABLE;
};
N1kX94 commented 3 years ago

Describe the bug After talking to Lares, the player does not know about the existence of Gorn, because an incorrect assignment occurs.

FUNC VOID ORG_801_Lares_BringListAnteil_Info()
{
    AI_Output (other, self,"ORG_801_Lares_BringListAnteil_15_00"); //Sie haben den Konvoi schon überfallen? Was ist mein Anteil bei der Sache?
    AI_Output (self, other,"ORG_801_Lares_BringListAnteil_11_01"); //Geh zu Gorn. Er wird dir etwas geben.
    var C_NPC gorn; gorn = Hlp_GetNpc(PC_Fighter);
    if (gorn.aivar[AIV_FINDABLE]==TRUE)
    {
        AI_Output (other, self,"ORG_801_Lares_BringListAnteil_15_02"); //Ich kenne Gorn. Er ist kein Mitglied der Bande. Er ist ein Söldner der Magier.
        AI_Output (self, other,"ORG_801_Lares_BringListAnteil_11_03"); //Ja, das ist richtig.
        AI_Output (other, self,"ORG_801_Lares_BringListAnteil_15_04"); //War er an der Sache beteiligt?
        AI_Output (self, other,"ORG_801_Lares_BringListAnteil_11_05"); //Es ist nicht gut für dich, wenn du zu viel weißt. Geh einfach zu ihm und hol dir deinen Anteil ab.
    };
    B_LogEntry(CH1_JoinNC, "Gorn der Söldner war auf mysteriöse Art und Weise in den Überfall auf den Konvoi beteiligt. Von ihm kann ich mir meinen Anteil abholen.");
    gorn.aivar[AIV_FINDABLE]==TRUE;
};

Expected behavior You need to fix the possibility of finding out about the existence of Gorn after the dialog.

N1kX94 commented 3 years ago

List of fixes in scripts when the Gothic Engine was created https://worldofplayers.ru/threads/36041/#post-1073860

N1kX94 commented 3 years ago

Describe the bug The mobsi object has a non-existent item registered image WP OW_OM_ENTRANCE01

        [% oCMobFire:oCMobInter:oCMOB:zCVob 18433 14226]
            pack=int:0
            presetName=string:
            bbox3DWS=rawFloat:-6254.104 1136.61316 -13623.71 -6187.89404 1356.81091 -13561.7793 
            trafoOSToWSRot=raw:3d5ae1bebc4b3fbdfe8e653f7cdc0ebd30b07f3fc6f20e3d3db265bf496082bc7be9e1be
            trafoOSToWSPos=vec3:-6216.09521 1138.06165 -13591.1494
            vobName=string:OW_FIREPLACE_HIGH2_01
            visual=string:FIREPLACE_HIGH2.ASC
            showVisual=bool:1
            visualCamAlign=enum:0
            cdStatic=bool:0
            cdDyn=bool:1
            staticVob=bool:1
            dynShadow=enum:0
            [visual zCModel 0 14227]
            []
            [ai % 0 0]
            []
            focusName=string:TORCH
            hitpoints=int:10
            damage=int:0
            moveable=bool:0
            takeable=bool:0
            focusOverride=bool:0
            soundMaterial=enum:0
            visualDestroyed=string:
            owner=string:
            ownerGuild=string:
            isDestroyed=bool:0
            stateNum=int:1
            triggerTarget=string:
            useWithItem=string:ITLSTORCGBURNING
            conditionFunc=string:
            onStateFunc=string:
            rewind=bool:0
            fireSlot=string:BIP01 FIRE
            fireVobtreeName=string:FIRETREE_MEDIUM.ZEN
        []

Expected behavior You need to correct the name of the instance of the item being used ITLSTORCGBURNING -> ITLSTORCHBURNING

N1kX94 commented 3 years ago

Describe the bug The three mobsi-object use a regular torch, not a burning torch one. image WP -> NC_PATH2_AROUND_PIT_05

[% oCMobFire:oCMobInter:oCMOB:zCVob 18433 7173]
            pack=int:0
            presetName=string:
            bbox3DWS=rawFloat:-55985.9492 2140.36548 2962.65088 -55886.3906 2188.81616 3067.09985 
            trafoOSToWSRot=raw:a23441bf0000000078f3273f000000000000803f0000000077f327bf00000000a23441bf
            trafoOSToWSPos=vec3:-55941.8359 2152.85864 3022.53711
            vobName=string:NC_FIREPLACE_STONE
            visual=string:FIREPLACE_NCSTONE.ASC
            showVisual=bool:1
            visualCamAlign=enum:0
            cdStatic=bool:1
            cdDyn=bool:1
            staticVob=bool:0
            dynShadow=enum:0
            [visual zCModel 0 7174]
            []
            [ai % 0 0]
            []
            focusName=string:Torch
            hitpoints=int:0
            damage=int:0
            moveable=bool:0
            takeable=bool:0
            focusOverride=bool:0
            soundMaterial=enum:0
            visualDestroyed=string:
            owner=string:
            ownerGuild=string:
            isDestroyed=bool:0
            stateNum=int:1
            triggerTarget=string:
            useWithItem=string:ITLSTORCH
            conditionFunc=string:
            onStateFunc=string:
            rewind=bool:0
            fireSlot=string:BIP01 FIRE
            fireVobtreeName=string:FIRETREE_SMALL.ZEN
        []

image WP -> NC_PATH2_AROUND_PIT_05

[% oCMobFire:oCMobInter:oCMOB:zCVob 18433 7175]
            pack=int:0
            presetName=string:
            bbox3DWS=rawFloat:-56875.7422 2139.90039 3048.55518 -56770.8203 2188.35107 3147.36011 
            trafoOSToWSRot=raw:b98d24bf00000000791b44bf000000000000803f00000000791b443f00000000ba8d24bf
            trafoOSToWSPos=vec3:-56815.5195 2152.39355 3103.4895
            vobName=string:NC_FIREPLACE_STONE
            visual=string:FIREPLACE_NCSTONE.ASC
            showVisual=bool:1
            visualCamAlign=enum:0
            cdStatic=bool:1
            cdDyn=bool:1
            staticVob=bool:0
            dynShadow=enum:0
            [visual zCModel 0 7176]
            []
            [ai % 0 0]
            []
            focusName=string:Torch
            hitpoints=int:0
            damage=int:0
            moveable=bool:0
            takeable=bool:0
            focusOverride=bool:0
            soundMaterial=enum:0
            visualDestroyed=string:
            owner=string:
            ownerGuild=string:
            isDestroyed=bool:0
            stateNum=int:1
            triggerTarget=string:
            useWithItem=string:ITLSTORCH
            conditionFunc=string:
            onStateFunc=string:
            rewind=bool:0
            fireSlot=string:BIP01 FIRE
            fireVobtreeName=string:FIRETREE_SMALL.ZEN
        []

image WP NC_PATH07

[% oCMobFire:oCMobInter:oCMOB:zCVob 18433 7177]
            pack=int:0
            presetName=string:
            bbox3DWS=rawFloat:-54617.0039 2634.25781 3583.78882 -54509.9766 2682.7085 3658.97095 
            trafoOSToWSRot=raw:77379e3e000000006f78733f000000000000803f000000006e7873bf0000000075379e3e
            trafoOSToWSPos=vec3:-54572.7578 2646.75098 3619.15747
            vobName=string:NC_FIREPLACE_STONE
            visual=string:FIREPLACE_NCSTONE.ASC
            showVisual=bool:1
            visualCamAlign=enum:0
            cdStatic=bool:1
            cdDyn=bool:1
            staticVob=bool:0
            dynShadow=enum:0
            [visual zCModel 0 7178]
            []
            [ai % 0 0]
            []
            focusName=string:Torch
            hitpoints=int:0
            damage=int:0
            moveable=bool:0
            takeable=bool:0
            focusOverride=bool:0
            soundMaterial=enum:0
            visualDestroyed=string:
            owner=string:
            ownerGuild=string:
            isDestroyed=bool:0
            stateNum=int:1
            triggerTarget=string:
            useWithItem=string:ITLSTORCH
            conditionFunc=string:
            onStateFunc=string:
            rewind=bool:0
            fireSlot=string:BIP01 FIRE
            fireVobtreeName=string:
        []

Expected behavior It is necessary to replace the used item with another one Need replace ITLSTORCH -> ITLSTORCHBURNING

N1kX94 commented 3 years ago

Describe the bug The NPCs are trying to use animations that aren't present in Humans.mds Warn: 0 D: zModel.cpp(zCModel::StartAni): Ani not found: R_BED_RANDOM_2 .... <zModel.cpp,#2407>

func void B_TossAndTurn ()
{
    PrintDebugNpc       (PD_ZS_FRAME, "B_TossAndTurn" );

    Npc_ClearAIQueue    (self);
    AI_PlayAni          (self,  "R_BED_RANDOM_2");
};

Expected behavior You must prevent the NPC from using this animation

func void B_TossAndTurn ()
{
    PrintDebugNpc       (PD_ZS_FRAME, "B_TossAndTurn" );

    Npc_ClearAIQueue    (self);
    //AI_PlayAni            (self,  "R_BED_RANDOM_2");
};
N1kX94 commented 3 years ago

Describe the bug NPCs don't wake up when a nearby hero goes sideways, goes backwards, and jumps.

Expected behavior It is necessary to correct the behavior of the NPC and make it wake up when the Hero jumps, goes sideways or backwards.

Fix for G2 https://forum.worldofplayers.de/forum/threads/1536360-Sämtliche-schlafende-NPCs-und-Monster-ignorieren-den-Spieler-trotz-BS_RUN?highlight=1076027

Need to adapt for Gothic 1.

N1kX94 commented 3 years ago

Describe the bug In the old mine, there are sound vobs that use non-existent instances of sounds. Warn: 0 C: zSndMSS(zCSndSys_MSS::LoadSoundFXByIdentifier): Sound Identifier "MINEAMBIENCE1" unknown ! .... <zSndMSS.cpp,#1066> Warn: 0 C: zSndMSS(zCSndSys_MSS::LoadSoundFXByIdentifier): Sound Identifier "MINEAMBIENCE2" unknown ! .... <zSndMSS.cpp,#1066>

Expected behavior You need to add sound instances to sfx.dat

INSTANCE MINEAMBIENCE1(C_SFX_DEF) {file= "MINEAMBIENCE01.wav";                  vol = 80;           };
INSTANCE MINEAMBIENCE2(C_SFX_DEF) {file= "MINEAMBIENCE01.wav";                  vol = 80;           };
N1kX94 commented 3 years ago

There is no such sound file in the original files Warn: 0 C: zSndMSS.h(zCWaveData::zCWaveData): Wave not found: ZS_MEDITATE_OM.WAV .... <zSndMSS.cpp,#3587>

Either add such an audio file, taking any svm, or rewrite the function to use $Om

N1kX94 commented 3 years ago

There is no such sound file in the original files Warn: 0 C: zSndMSS.h(zCWaveData::zCWaveData): Wave not found: DIA_BAALNAMIB_FIRSTTALK_MUTE_15_00.WAV .... <zSndMSS.cpp,#3587>

Add an empty stub file as a solution.

N1kX94 commented 3 years ago

Describe the bug The mobsi object does not have a file name that is used as lighting. image WP NC_PATH07

[% oCMobFire:oCMobInter:oCMOB:zCVob 18433 7177]
            pack=int:0
            presetName=string:
            bbox3DWS=rawFloat:-54617.0039 2634.25781 3583.78882 -54509.9766 2682.7085 3658.97095 
            trafoOSToWSRot=raw:77379e3e000000006f78733f000000000000803f000000006e7873bf0000000075379e3e
            trafoOSToWSPos=vec3:-54572.7578 2646.75098 3619.15747
            vobName=string:NC_FIREPLACE_STONE
            visual=string:FIREPLACE_NCSTONE.ASC
            showVisual=bool:1
            visualCamAlign=enum:0
            cdStatic=bool:1
            cdDyn=bool:1
            staticVob=bool:0
            dynShadow=enum:0
            [visual zCModel 0 7178]
            []
            [ai % 0 0]
            []
            focusName=string:Torch
            hitpoints=int:0
            damage=int:0
            moveable=bool:0
            takeable=bool:0
            focusOverride=bool:0
            soundMaterial=enum:0
            visualDestroyed=string:
            owner=string:
            ownerGuild=string:
            isDestroyed=bool:0
            stateNum=int:1
            triggerTarget=string:
            useWithItem=string:ITLSTORCH
            conditionFunc=string:
            onStateFunc=string:
            rewind=bool:0
            fireSlot=string:BIP01 FIRE
            fireVobtreeName=string:
        []

Expected behavior You need to add a call to the object FIRETREE_SMALL.ZEN fireVobtreeName=string:FIRETREE_SMALL.ZEN

N1kX94 commented 3 years ago

Describe the bug Many functions use global arguments instead of local arguments.

Expected behavior You need to correct the wrong arguments for the correct ones.

Here are some examples:

//////////////////////////////////////////////////////////////////////////
//  B_GotoFP
//  ========
//  Geht zum nächsten freien Freepoint. Checkt, ob der NSC nicht schon
//  dort steht!
//////////////////////////////////////////////////////////////////////////
func void   B_GotoFP (var C_NPC slf, var string fp)
{
    PrintDebugNpc           (PD_TA_LOOP,    "B_GotoFP");

    if !(Npc_IsOnFP(self,fp))
    {
        PrintDebugString    (PD_TA_CHECK,   "...nicht auf passendem Freepoint ", fp);

        if (Wld_IsNextFPAvailable(self,fp))
        {
            PrintDebugString(PD_TA_CHECK,   "Gehe zu Freepoint ", fp);
            AI_SetWalkmode  (self,  NPC_WALK);
            AI_GotoNextFP   (self,  fp);
        };
    };
};

change to

func void   B_GotoFP (var C_NPC slf, var string fp)
{
    PrintDebugNpc           (PD_TA_LOOP,    "B_GotoFP");

    if !(Npc_IsOnFP(slf,fp))
    {
        PrintDebugString    (PD_TA_CHECK,   "...nicht auf passendem Freepoint ", fp);

        if (Wld_IsNextFPAvailable(slf,fp))
        {
            PrintDebugString(PD_TA_CHECK,   "Gehe zu Freepoint ", fp);
            AI_SetWalkmode  (slf,   NPC_WALK);
            AI_GotoNextFP   (slf,   fp);
        };
    };
};
func void B_SetFaceExpression (var C_NPC slf, var C_NPC oth)
{
    PrintDebugNpc       (PD_ZS_FRAME,   "B_SetFaceExpression");

    var int attitude;

    attitude = Npc_GetTempAttitude(slf, oth);

    if (Npc_IsInState(self, ZS_Flee) || self.aivar[AIV_WASDEFEATEDBYSC])
    {
        PrintDebugNpc       (PD_ZS_CHECK,   "...to frightened!");
        Mdl_StartFaceAni    (self,  "S_FRIGHTENED", 1,  -1);
    }
    else if (attitude == ATT_FRIENDLY)
    {
        PrintDebugNpc       (PD_ZS_CHECK,   "...to friendly!");
        Mdl_StartFaceAni    (self,  "S_NEUTRAL",    1,  -1);
    }
    else if (attitude == ATT_NEUTRAL)
    {
        PrintDebugNpc       (PD_ZS_CHECK,   "...to neutral!");
        Mdl_StartFaceAni    (self,  "S_NEUTRAL",    1,  -1);
    }
    else if (attitude == ATT_ANGRY)
    {
        PrintDebugNpc       (PD_ZS_CHECK,   "...to angry!");
        Mdl_StartFaceAni    (self,  "S_ANGRY",      1,  -1);
    }
    else if (attitude == ATT_HOSTILE)
    {
        PrintDebugNpc       (PD_ZS_CHECK,   "...to hostile!");
        Mdl_StartFaceAni    (self,  "S_HOSTILE",    1,  -1);
    };
};

func void B_ResetFaceExpression (var C_NPC slf)
{
    PrintDebugNpc       (PD_ZS_FRAME,   "B_ResetFaceExpression");

    Mdl_StartFaceAni    (self,  "S_NEUTRAL",    1,  -1);
};
func void B_SetFaceExpression (var C_NPC slf, var C_NPC oth)
{
    PrintDebugNpc       (PD_ZS_FRAME,   "B_SetFaceExpression");

    var int attitude;

    attitude = Npc_GetTempAttitude(slf, oth);

    if (Npc_IsInState(slf, ZS_Flee) || slf.aivar[AIV_WASDEFEATEDBYSC])
    {
        PrintDebugNpc       (PD_ZS_CHECK,   "...to frightened!");
        Mdl_StartFaceAni    (slf,   "S_FRIGHTENED", 1,  -1);
    }
    else if (attitude == ATT_FRIENDLY)
    {
        PrintDebugNpc       (PD_ZS_CHECK,   "...to friendly!");
        Mdl_StartFaceAni    (slf,   "S_NEUTRAL",    1,  -1);
    }
    else if (attitude == ATT_NEUTRAL)
    {
        PrintDebugNpc       (PD_ZS_CHECK,   "...to neutral!");
        Mdl_StartFaceAni    (slf,   "S_NEUTRAL",    1,  -1);
    }
    else if (attitude == ATT_ANGRY)
    {
        PrintDebugNpc       (PD_ZS_CHECK,   "...to angry!");
        Mdl_StartFaceAni    (slf,   "S_ANGRY",      1,  -1);
    }
    else if (attitude == ATT_HOSTILE)
    {
        PrintDebugNpc       (PD_ZS_CHECK,   "...to hostile!");
        Mdl_StartFaceAni    (slf,   "S_HOSTILE",    1,  -1);
    };
};

func void B_ResetFaceExpression (var C_NPC slf)
{
    PrintDebugNpc       (PD_ZS_FRAME,   "B_ResetFaceExpression");

    Mdl_StartFaceAni    (slf,   "S_NEUTRAL",    1,  -1);
};

In B_ZS.d too

AmProsius commented 3 years ago

@N1kX94 I'm incredibly thankful for your contributions! I currently don't have the time to create individual issues for each of the bugs, but I will eventually. Right now my focus is to wrap up v1.1.0.

N1kX94 commented 3 years ago

Describe the bug The NPC ID is not true, which is why the NPC can perform someone else's routine

Expected behavior The NPC IDs are correct.

Additional context NPC instances that have the wrong ID

instance CS_Eskorte5 (Npc_Default)
{
id = 3028; -> id = 3029;
***
};
instance CS_Eskorte6 (Npc_Default)
{
***
 id = 3028; -> id = 3030;
***
};

Fixed #124

instance GRD_280_Gardist (Npc_Default)
{
***
id  = 230; -> id  = 280
***
};

Why do they need to change? Because 400, 401, 402 belong to the Mage Water

instance IEFan2 (Npc_Default)
{
***
id = 400; -> id = 410;
***
};
FUNC VOID Rtn_concert_400 ()  -> FUNC VOID Rtn_concert_410 () 
UNC VOID Rtn_off_400 () -> UNC VOID Rtn_off_410 () 
instance IEFan3 (Npc_Default)
{
id = 401; -> id = 411;
};
FUNC VOID Rtn_concert_401 () -> FUNC VOID Rtn_concert_411 () 
FUNC VOID Rtn_off_401 () -> FUNC VOID Rtn_off_411 () 
instance IEFan4 (Npc_Default)
{
id = 402; -> id = 412;
};
FUNC VOID Rtn_concert_402 () -> FUNC VOID Rtn_concert_412 () 
FUNC VOID Rtn_off_402 () -> FUNC VOID Rtn_off_412 () 
instance NOV_1313_Novize (Npc_Default)
{
id =1310; -> id =1313;
};
instance NOV_1314_Novize (Npc_Default)
{
id = 1310; -> id = 1314;
};
instance SFB_1036_Schuerfer(Npc_Default)
{
id = 1006; -> id = 1036;
};
instance SLD_708_Soeldner (Npc_Default)
{
id = 856; -> id = 708;
};
instance SLD_738_Soeldner (Npc_Default)
{
id = 728; -> id = 738;
};

336 belongs to Kavalorn

instance STT_336_Schatten (Npc_Default)
{
    //-------- primary data --------
    name        =       NAME_Schatten;
    npctype         =       NPCTYPE_AMBIENT;
    guild       =       GIL_STT;
    level       =       5;

    voice       =       10;
    id          =       336; -> id = 339

    //-------- abilities --------
    attribute[ATR_STRENGTH]         =   20;
    attribute[ATR_DEXTERITY]        =   20;
    attribute[ATR_MANA_MAX]         =   0;
    attribute[ATR_MANA]             =   0;  
    attribute[ATR_HITPOINTS_MAX]    =   100;
    attribute[ATR_HITPOINTS]        =   100;

    //-------- visuals --------
    //          animations
    Mdl_SetVisual       (self,"HUMANS.MDS");
    Mdl_ApplyOverlayMds (self,"Humans_Relaxed.mds");
    //          body mesh     ,bdytex,skin,head mesh     ,headtex,teethtex,ruestung
    Mdl_SetVisualBody (self,"hum_body_Naked0", 0, 1,"Hum_Head_Pony", 56,  1, STT_ARMOR_M);

    B_Scale (self);
    Mdl_SetModelFatness(self,-1);

    fight_tactic    =   FAI_HUMAN_COWARD; 

    //-------- Talente -------- 

    ////Npc_SetTalentSkill (self, NPC_TALENT_BOW,1);
    Npc_SetTalentSkill (self, NPC_TALENT_1H,1); 

    //-------- inventory --------

    EquipItem   (self, ItMw_1H_Sword_Short_01);
    EquipItem   (self, ItRw_Bow_Small_05);
    CreateInvItems  (self, ItAmArrow, 15);
    CreateInvItem   (self, ItFo_Potion_Water_01);
    CreateInvItems  (self, ItFoBeer, 2);

    //-------------Daily Routine-------------
    daily_routine = Rtn_FMstart_336; -> daily_routine = Rtn_FMstart_339;
};

FUNC VOID Rtn_FMstart_336 () -> Rtn_FMstart_339 
{
    TA_SitAround (0,00,13,00,  "FM_162");
    TA_SitAround (13,00,00,00, "FM_162");
};