Compare commits

..

32 Commits

Author SHA1 Message Date
e850c56af8 Updated changelog 2022-09-30 16:01:15 +02:00
5fc3db6a05 Check for leftover DLLs from previous versions of Enderal 2022-09-30 13:46:36 +02:00
18ac89e171 Check activators and statics for collision with Skyrim 2022-09-29 22:29:38 +02:00
09f7922554 Added Address Library for 1.6.659; removed INI manipulation, failing in the GOG release 2022-09-29 21:41:38 +02:00
c428861029 Fixed swapped objectives in Call of the Hunt 2022-09-29 21:35:36 +02:00
ff965bc21d Unregister dialog exit listener on normal menu closing 2022-09-27 11:55:13 +02:00
33345cc860 Added Address Library 1.6.640 2022-09-27 11:15:40 +02:00
c38390fbd8 Updated credits 2022-09-20 18:13:58 +02:00
38d110fbdc Updated Enderal DLL to CommonLibSSE-NG 3.5.2 (Skyrim 1.6.629 support) 2022-09-20 16:42:36 +02:00
e708cdef68 Added Address Library for 1.6.629 2022-09-20 14:12:28 +02:00
2ec99f45d2 Updated Steam DLL to CommonLibSSE-NG 3.5.2 (Skyrim 1.6.629 support) 2022-09-20 14:02:17 +02:00
6782dbcde9 Do not use SKSE messaging in the Steam DLL, TestMode is off by default 2022-09-20 13:56:38 +02:00
fec0932935 Bumped version in _00E_PlayerSetUpScript 2022-09-16 21:51:04 +02:00
c68de3a06a Updated build script 2022-09-16 21:22:35 +02:00
b1e3fc8eb0 Minor tweaks and fixes for several meshes from Enderal/Medievalpack and Enderal/Miscellaneous
Fixing my own sins from the sprint commits.
2022-09-16 22:00:22 +03:00
b9e31b898f Updated changelog and build script 2022-09-16 19:52:34 +02:00
39066bb7a7 Fixed Polish translation of "Very Hard" in settings 2022-09-16 19:52:33 +02:00
001a489332 Fixed meshes for vanilla CrateSmalls
The usual stuff: fixed whatever normal, texture and geometry bugs I could find.
2022-09-16 20:25:31 +03:00
d89079e13f Actors, shattered after Arctic Wind, were respawning in frozen state 2022-09-16 18:48:47 +02:00
40e1bb3521 HD version of architecture\solitude\sfloorhouse01_vanilla texture
Replaced the old 512 texture with the 2048 sfloorhouse01 from Skyrim - Textures1.bsa.
This primarily affects the look of the stairwell in Suntemple Chronikum.
2022-09-16 18:24:27 +03:00
0ffda06df7 Reverted the Armor Addon Fix for Qyranians and Arazealeans, was enabling to equip two necklaces and two rings 2022-09-16 16:06:49 +02:00
671b1dc65c Reverted dialoguemenu.swf to the pre-2.0.12 version and replaced quest journal in locked dialogs with a quit prompt. Discarded solution caused increased framerate in menu mode and was making scrolling unusable. 2022-09-14 22:29:15 +02:00
8eba0e00f4 Excluded 7 distant cells from compatibility check - fixes compatibility with cell patchers, like SkyVRaan 2022-09-14 19:40:34 +02:00
bc7488c8d0 Read version from file 2022-09-14 19:33:20 +02:00
27d46d3033 Merge branch 'development' of https://git.eddoursul.win/enderal/enderalse into development 2022-09-12 22:28:13 +03:00
8259b9e196 "Vagrant Dress" cuirass - fixed the neck hole
Quick and dirty fix: plugged the neck with a bunch of triangles using the existing vertices
2022-09-12 22:26:49 +03:00
fc8b1a4418 Updated build script 2022-09-12 20:43:11 +02:00
8cf8d9eb8b Removed redundant fadeout before The Father's arrival scene 2022-09-12 19:52:56 +02:00
2a31ca9305 Updated changelog 2022-09-12 19:34:46 +02:00
25c001ce7f The Father's arrival scene might fail to properly start 2022-09-12 19:20:58 +02:00
1c23af6613 Updated changelog 2022-09-11 13:20:53 +02:00
b0e6578aba During update, add quest potion perks (2.0.12 hotfix 1) 2022-09-11 12:53:39 +02:00
66 changed files with 522 additions and 780 deletions

Binary file not shown.

View File

@ -2,10 +2,10 @@
<plugin version="0.7.4"> <plugin version="0.7.4">
<TES4 flags="0x00000081" id="00000000" day="0" month="0" lastUserID="0" currentUserID="0" version="44" unknown="0x0000"> <TES4 flags="0x00000081" id="00000000" day="0" month="0" lastUserID="0" currentUserID="0" version="44" unknown="0x0000">
<HEDR> <HEDR>
<struct version="1.70000005" numRecords="42939" nextObjectID="00015977" /> <struct version="1.70000005" numRecords="42922" nextObjectID="00015977" />
</HEDR> </HEDR>
<CNAM>Niseam</CNAM> <CNAM>Niseam</CNAM>
<SNAM>Enderal: Forgotten Stories (Special Edition) 2.0.12</SNAM> <SNAM>Enderal: Forgotten Stories (Special Edition) 2.0.12.3</SNAM>
<MAST>Skyrim.esm</MAST> <MAST>Skyrim.esm</MAST>
<DATA>0</DATA> <DATA>0</DATA>
<MAST>Update.esm</MAST> <MAST>Update.esm</MAST>
@ -18306,7 +18306,6 @@
<TINC>000e6e16</TINC> <TINC>000e6e16</TINC>
<TINV>1</TINV> <TINV>1</TINV>
<TIRS>1139</TIRS> <TIRS>1139</TIRS>
<RNAM>00000019</RNAM>
</RACE> </RACE>
<RACE flags="0x00080000" id="0004e785" day="0" month="0" lastUserID="0" currentUserID="0" version="44" unknown="0x0000"> <RACE flags="0x00080000" id="0004e785" day="0" month="0" lastUserID="0" currentUserID="0" version="44" unknown="0x0000">
<EDID>CowRace</EDID> <EDID>CowRace</EDID>
@ -137601,34 +137600,6 @@
</FLOR> </FLOR>
</GRUP> </GRUP>
<GRUP label="FURN" groupType="0" day="9" month="45" lastUserID="0" currentUserID="0" unknown="0x00000000"> <GRUP label="FURN" groupType="0" day="9" month="45" lastUserID="0" currentUserID="0" unknown="0x00000000">
<FURN flags="0x10000000" id="0001a2ad" day="0" month="0" lastUserID="0" currentUserID="0" version="44" unknown="0x000f">
<EDID>CraftingBlacksmithAnvil</EDID>
<OBND>
<struct min="-32,-10,-33" max="50,94,65" />
</OBND>
<FULL>7607</FULL>
<MODL>Furniture\Clutter\BlacksmithAnvil.nif</MODL>
<MODT count="2">
<unknown3></unknown3>
<unknown5></unknown5>
<unknown4>
<unknownStruct unknown01="1879623364" textureType="0x00736464" unknown02="1969867521" />
<unknownStruct unknown01="1253574659" textureType="0x00736464" unknown02="1969867521" />
</unknown4>
</MODT>
<KSIZ>5</KSIZ>
<KWDA>0006e9c7,00088105,000a56d8,0004f680,000eb60b</KWDA>
<PNAM>0</PNAM>
<FNAM>0</FNAM>
<KNAM>00013794</KNAM>
<MNAM>1207959553</MNAM>
<WBDT>
<struct workbench="1" actorValueSkill="10" />
</WBDT>
<FNPR>
<struct flagsMarkerType="0x0001" flagsMarkerEntryPoint="0x0002" />
</FNPR>
</FURN>
<FURN flags="0x00000000" id="00043282" day="0" month="0" lastUserID="0" currentUserID="0" version="44" unknown="0x0000"> <FURN flags="0x00000000" id="00043282" day="0" month="0" lastUserID="0" currentUserID="0" version="44" unknown="0x0000">
<EDID>_00E_Placeable_CraftingAlchemyWorkbenchNEW</EDID> <EDID>_00E_Placeable_CraftingAlchemyWorkbenchNEW</EDID>
<VMAD version="5" format="2"> <VMAD version="5" format="2">
@ -137781,587 +137752,6 @@
<struct flagsMarkerType="0x0001" flagsMarkerEntryPoint="0x0002" /> <struct flagsMarkerType="0x0001" flagsMarkerEntryPoint="0x0002" />
</FNPR> </FNPR>
</FURN> </FURN>
<FURN flags="0x00000000" id="00068adb" day="0" month="0" lastUserID="0" currentUserID="0" version="44" unknown="0x000c">
<EDID>CraftingCookingFireSpit</EDID>
<OBND>
<struct min="-129,-55,-34" max="123,31,109" />
</OBND>
<FULL>7601</FULL>
<MODL>Furniture\FireSpitCooking.nif</MODL>
<MODT count="2">
<unknown3></unknown3>
<unknown5></unknown5>
<unknown4>
<unknownStruct unknown01="3594530037" textureType="0x00736464" unknown02="2906384854" />
<unknownStruct unknown01="3426394783" textureType="0x00736464" unknown02="2906384854" />
<unknownStruct unknown01="1379563085" textureType="0x00736464" unknown02="2460462734" />
<unknownStruct unknown01="1805171391" textureType="0x00736464" unknown02="2460462734" />
<unknownStruct unknown01="2699304643" textureType="0x00736464" unknown02="1558007136" />
<unknownStruct unknown01="2381386958" textureType="0x00736464" unknown02="1558007136" />
<unknownStruct unknown01="2216632689" textureType="0x00736464" unknown02="1558007136" />
<unknownStruct unknown01="3982807346" textureType="0x00736464" unknown02="1558007136" />
<unknownStruct unknown01="3389168381" textureType="0x00736464" unknown02="1558007136" />
<unknownStruct unknown01="652288620" textureType="0x00736464" unknown02="1558007136" />
</unknown4>
</MODT>
<KSIZ>5</KSIZ>
<KWDA>000a56d8,0006e9c7,00068ada,000a5cb3,000fd0e1</KWDA>
<PNAM>0</PNAM>
<FNAM>0</FNAM>
<KNAM>00013794</KNAM>
<MNAM>1073741825</MNAM>
<WBDT>
<struct workbench="1" actorValueSkill="255" />
</WBDT>
<FNPR>
<struct flagsMarkerType="0x0001" flagsMarkerEntryPoint="0x0002" />
</FNPR>
</FURN>
<FURN flags="0x00000000" id="0006e9c2" day="0" month="0" lastUserID="0" currentUserID="0" version="44" unknown="0x0007">
<EDID>CraftingBlacksmithSharpeningWheel</EDID>
<OBND>
<struct min="-31,-9,-34" max="32,143,68" />
</OBND>
<FULL>7600</FULL>
<MODL>Furniture\Clutter\BlacksmithSharpeningWheelAnimating.nif</MODL>
<MODT count="2">
<unknown3></unknown3>
<unknown5></unknown5>
<unknown4>
<unknownStruct unknown01="3193485295" textureType="0x00736464" unknown02="1969867521" />
<unknownStruct unknown01="466254480" textureType="0x00736464" unknown02="1969867521" />
<unknownStruct unknown01="3723664411" textureType="0x00736464" unknown02="1969867521" />
<unknownStruct unknown01="3349595331" textureType="0x00736464" unknown02="1969867521" />
<unknownStruct unknown01="1411829315" textureType="0x00736464" unknown02="3929839416" />
</unknown4>
</MODT>
<KSIZ>5</KSIZ>
<KWDA>0006e9c7,00088108,000a56d8,0004f6fd,000fd0e1</KWDA>
<PNAM>0</PNAM>
<FNAM>0</FNAM>
<KNAM>00013794</KNAM>
<MNAM>1073741825</MNAM>
<WBDT>
<struct workbench="2" actorValueSkill="10" />
</WBDT>
<FNPR>
<struct flagsMarkerType="0x0001" flagsMarkerEntryPoint="0x0002" />
</FNPR>
</FURN>
<FURN flags="0x00000000" id="000727a1" day="0" month="0" lastUserID="0" currentUserID="0" version="44" unknown="0x000c">
<EDID>CraftingTanningRackMarker</EDID>
<OBND>
<struct min="-56,-10,-34" max="56,112,120" />
</OBND>
<FULL>7599</FULL>
<MODL>Furniture\TanningRackMarker.nif</MODL>
<MODT count="2">
<unknown3></unknown3>
<unknown5></unknown5>
<unknown4>
<unknownStruct unknown01="1328996372" textureType="0x00736464" unknown02="2460462734" />
<unknownStruct unknown01="428701663" textureType="0x00736464" unknown02="2460462734" />
<unknownStruct unknown01="3987547591" textureType="0x00736464" unknown02="314452046" />
<unknownStruct unknown01="1486255527" textureType="0x00736464" unknown02="314452046" />
<unknownStruct unknown01="4130591688" textureType="0x00736464" unknown02="314452046" />
<unknownStruct unknown01="2345674207" textureType="0x00736464" unknown02="314452046" />
</unknown4>
</MODT>
<KSIZ>4</KSIZ>
<KWDA>000727a0,000a56d8,0006e9c7,0007866a</KWDA>
<PNAM>0</PNAM>
<FNAM>0</FNAM>
<KNAM>00013794</KNAM>
<MNAM>1073741825</MNAM>
<WBDT>
<struct workbench="1" actorValueSkill="255" />
</WBDT>
<FNPR>
<struct flagsMarkerType="0x0001" flagsMarkerEntryPoint="0x0002" />
</FNPR>
</FURN>
<FURN flags="0x00000000" id="0009c6ce" day="0" month="0" lastUserID="0" currentUserID="0" version="44" unknown="0x0001">
<EDID>CraftingSmelterMarker1</EDID>
<OBND>
<struct min="-229,-149,-34" max="212,305,254" />
</OBND>
<FULL>7598</FULL>
<MODL>Furniture\SmelterMarker.nif</MODL>
<MODT count="2">
<unknown3></unknown3>
<unknown5></unknown5>
<unknown4>
<unknownStruct unknown01="4099871861" textureType="0x00736464" unknown02="3929839416" />
<unknownStruct unknown01="1662055531" textureType="0x00736464" unknown02="3075339569" />
<unknownStruct unknown01="2884692669" textureType="0x00736464" unknown02="3075339569" />
<unknownStruct unknown01="2205743547" textureType="0x00736464" unknown02="2756990635" />
<unknownStruct unknown01="1417261943" textureType="0x00736464" unknown02="2756990635" />
<unknownStruct unknown01="4248776144" textureType="0x00736464" unknown02="3854867874" />
<unknownStruct unknown01="1406036369" textureType="0x00736464" unknown02="3854867874" />
<unknownStruct unknown01="2696983751" textureType="0x00736464" unknown02="3929839416" />
<unknownStruct unknown01="261620559" textureType="0x00736464" unknown02="861219928" />
<unknownStruct unknown01="2860817006" textureType="0x00736464" unknown02="3929839416" />
<unknownStruct unknown01="3893345188" textureType="0x00736464" unknown02="3929839416" />
<unknownStruct unknown01="3756742260" textureType="0x00736464" unknown02="861219928" />
<unknownStruct unknown01="3842979269" textureType="0x00736464" unknown02="3929839416" />
</unknown4>
</MODT>
<KSIZ>5</KSIZ>
<KWDA>000a56d8,0006e9c7,0009c6c3,000a5cce,000fd0e1</KWDA>
<PNAM>0</PNAM>
<FNAM>0</FNAM>
<KNAM>00013794</KNAM>
<MNAM>1073741825</MNAM>
<WBDT>
<struct workbench="1" actorValueSkill="255" />
</WBDT>
<FNPR>
<struct flagsMarkerType="0x0001" flagsMarkerEntryPoint="0x0002" />
</FNPR>
</FURN>
<FURN flags="0x00000000" id="000bad0c" day="0" month="0" lastUserID="0" currentUserID="0" version="44" unknown="0x0002">
<EDID>CraftingAlchemyWorkbench</EDID>
<OBND>
<struct min="-60,-10,-34" max="60,123,112" />
</OBND>
<FULL>7597</FULL>
<MODL>Furniture\AlchemyWorkbench.nif</MODL>
<MODT count="2">
<unknown3></unknown3>
<unknown5></unknown5>
<unknown4>
<unknownStruct unknown01="2900664440" textureType="0x00736464" unknown02="3659922111" />
<unknownStruct unknown01="2786718006" textureType="0x00736464" unknown02="3659922111" />
<unknownStruct unknown01="1643990641" textureType="0x00736464" unknown02="3929839416" />
<unknownStruct unknown01="854384084" textureType="0x00736464" unknown02="3659922111" />
<unknownStruct unknown01="2317324634" textureType="0x00736464" unknown02="3659922111" />
<unknownStruct unknown01="3134883325" textureType="0x00736464" unknown02="993209382" />
<unknownStruct unknown01="2066803896" textureType="0x00736464" unknown02="993209382" />
<unknownStruct unknown01="2139825103" textureType="0x00736464" unknown02="3929839416" />
<unknownStruct unknown01="2029396392" textureType="0x00736464" unknown02="861219928" />
<unknownStruct unknown01="4222490580" textureType="0x00736464" unknown02="3929839416" />
<unknownStruct unknown01="3756742260" textureType="0x00736464" unknown02="861219928" />
</unknown4>
</MODT>
<KSIZ>5</KSIZ>
<KWDA>0002a40b,0004f6e6,0006e9c7,000a56d8,000fd0e1</KWDA>
<PNAM>0</PNAM>
<FNAM>0</FNAM>
<KNAM>00013794</KNAM>
<MNAM>1073741825</MNAM>
<WBDT>
<struct workbench="5" actorValueSkill="16" />
</WBDT>
<FNPR>
<struct flagsMarkerType="0x0001" flagsMarkerEntryPoint="0x0002" />
</FNPR>
</FURN>
<FURN flags="0x00000000" id="000bad0d" day="0" month="0" lastUserID="0" currentUserID="0" version="44" unknown="0x0000">
<EDID>CraftingEnchantingWorkbench</EDID>
<OBND>
<struct min="-88,-10,-34" max="88,160,166" />
</OBND>
<FULL>7596</FULL>
<MODL>Furniture\EnchantingWorkbench.nif</MODL>
<MODT count="2">
<unknown3></unknown3>
<unknown5>49</unknown5>
<unknown4>
<unknownStruct unknown01="596376629" textureType="0x00736464" unknown02="3659922111" />
<unknownStruct unknown01="750707863" textureType="0x00736464" unknown02="3659922111" />
<unknownStruct unknown01="239999942" textureType="0x00736464" unknown02="3659922111" />
<unknownStruct unknown01="154940878" textureType="0x00736464" unknown02="993209382" />
<unknownStruct unknown01="4237422690" textureType="0x00736464" unknown02="3929839416" />
<unknownStruct unknown01="2520767592" textureType="0x00736464" unknown02="2531152908" />
<unknownStruct unknown01="3043550379" textureType="0x00736464" unknown02="2531152908" />
<unknownStruct unknown01="2006098786" textureType="0x00736464" unknown02="3659922111" />
<unknownStruct unknown01="3109427725" textureType="0x00736464" unknown02="664767518" />
<unknownStruct unknown01="3756340133" textureType="0x00736464" unknown02="664767518" />
<unknownStruct unknown01="2788788993" textureType="0x00736464" unknown02="664767518" />
</unknown4>
</MODT>
<KSIZ>5</KSIZ>
<KWDA>0006e2a3,000a56d8,0006e9c7,0004f6dd,000fd0e1</KWDA>
<PNAM>0</PNAM>
<FNAM>0</FNAM>
<KNAM>00013794</KNAM>
<MNAM>1073741825</MNAM>
<WBDT>
<struct workbench="3" actorValueSkill="23" />
</WBDT>
<FNPR>
<struct flagsMarkerType="0x0001" flagsMarkerEntryPoint="0x0002" />
</FNPR>
</FURN>
<FURN flags="0x00000000" id="000bf9e1" day="0" month="0" lastUserID="0" currentUserID="0" version="44" unknown="0x000c">
<EDID>CraftingBlackSmithForgeWR</EDID>
<VMAD version="5" format="2">
<script name="BlacksmithForge01" status="0">
<property name="FlameDamage" type="1" status="1">
<object formID="000153bd" alias="65535" unused="0x0000" />
</property>
</script>
</VMAD>
<OBND>
<struct min="-154,-157,-38" max="137,344,260" />
</OBND>
<FULL>7595</FULL>
<MODL>Furniture\BlacksmithForgeMarkerWR.nif</MODL>
<MODT count="2">
<unknown3></unknown3>
<unknown5>4</unknown5>
<unknown4>
<unknownStruct unknown01="3249903863" textureType="0x00736464" unknown02="3929839416" />
<unknownStruct unknown01="533228140" textureType="0x00736464" unknown02="3929839416" />
<unknownStruct unknown01="2921338215" textureType="0x00736464" unknown02="861219928" />
<unknownStruct unknown01="4290908030" textureType="0x00736464" unknown02="3929839416" />
<unknownStruct unknown01="3756742260" textureType="0x00736464" unknown02="861219928" />
<unknownStruct unknown01="2984945680" textureType="0x00736464" unknown02="3929839416" />
<unknownStruct unknown01="2618504884" textureType="0x00736464" unknown02="861219928" />
<unknownStruct unknown01="3967850257" textureType="0x00736464" unknown02="3929839416" />
<unknownStruct unknown01="206929423" textureType="0x00736464" unknown02="3929839416" />
<unknownStruct unknown01="3743753636" textureType="0x00736464" unknown02="993209382" />
<unknownStruct unknown01="4099871861" textureType="0x00736464" unknown02="3929839416" />
<unknownStruct unknown01="3569054534" textureType="0x00736464" unknown02="861219928" />
<unknownStruct unknown01="1336364341" textureType="0x00736464" unknown02="3232065151" />
<unknownStruct unknown01="911814939" textureType="0x00736464" unknown02="3232065151" />
<unknownStruct unknown01="4130591688" textureType="0x00736464" unknown02="314452046" />
<unknownStruct unknown01="2345674207" textureType="0x00736464" unknown02="314452046" />
<unknownStruct unknown01="2532311636" textureType="0x00736464" unknown02="1969867521" />
<unknownStruct unknown01="2817548872" textureType="0x00736464" unknown02="1969867521" />
<unknownStruct unknown01="1308762508" textureType="0x00736464" unknown02="2906384854" />
<unknownStruct unknown01="1282835679" textureType="0x00736464" unknown02="2906384854" />
<unknownStruct unknown01="1685963155" textureType="0x00736464" unknown02="1969867521" />
<unknownStruct unknown01="556155462" textureType="0x00736464" unknown02="1969867521" />
<unknownStruct unknown01="1639329509" textureType="0x00736464" unknown02="2906384854" />
<unknownStruct unknown01="1760978452" textureType="0x00736464" unknown02="2906384854" />
<unknownStruct unknown01="4222490580" textureType="0x00736464" unknown02="3929839416" />
<unknownStruct unknown01="1879623364" textureType="0x00736464" unknown02="1969867521" />
<unknownStruct unknown01="1253574659" textureType="0x00736464" unknown02="1969867521" />
</unknown4>
</MODT>
<KSIZ>6</KSIZ>
<KWDA>000a56d8,0006e9c7,000cae0a,0004f680,00088105,000fd0e1</KWDA>
<PNAM>0</PNAM>
<FNAM>0</FNAM>
<KNAM>00013794</KNAM>
<MNAM>1073741825</MNAM>
<WBDT>
<struct workbench="1" actorValueSkill="10" />
</WBDT>
<FNPR>
<struct flagsMarkerType="0x0001" flagsMarkerEntryPoint="0x0002" />
</FNPR>
</FURN>
<FURN flags="0x00000000" id="000cae0b" day="0" month="0" lastUserID="0" currentUserID="0" version="44" unknown="0x0003">
<EDID>CraftingBlackSmithForge</EDID>
<VMAD version="5" format="2">
<script name="BlacksmithForge01" status="0">
<property name="FlameDamage" type="1" status="1">
<object formID="000153bd" alias="65535" unused="0x0000" />
</property>
</script>
</VMAD>
<OBND>
<struct min="-161,-92,-38" max="137,344,260" />
</OBND>
<FULL>7594</FULL>
<MODL>Furniture\BlacksmithForgeMarker.nif</MODL>
<MODT count="2">
<unknown3></unknown3>
<unknown5>4</unknown5>
<unknown4>
<unknownStruct unknown01="3249903863" textureType="0x00736464" unknown02="3929839416" />
<unknownStruct unknown01="533228140" textureType="0x00736464" unknown02="3929839416" />
<unknownStruct unknown01="2921338215" textureType="0x00736464" unknown02="861219928" />
<unknownStruct unknown01="4290908030" textureType="0x00736464" unknown02="3929839416" />
<unknownStruct unknown01="3756742260" textureType="0x00736464" unknown02="861219928" />
<unknownStruct unknown01="2984945680" textureType="0x00736464" unknown02="3929839416" />
<unknownStruct unknown01="2618504884" textureType="0x00736464" unknown02="861219928" />
<unknownStruct unknown01="3967850257" textureType="0x00736464" unknown02="3929839416" />
<unknownStruct unknown01="206929423" textureType="0x00736464" unknown02="3929839416" />
<unknownStruct unknown01="3743753636" textureType="0x00736464" unknown02="993209382" />
<unknownStruct unknown01="4099871861" textureType="0x00736464" unknown02="3929839416" />
<unknownStruct unknown01="3569054534" textureType="0x00736464" unknown02="861219928" />
<unknownStruct unknown01="1685963155" textureType="0x00736464" unknown02="1969867521" />
<unknownStruct unknown01="556155462" textureType="0x00736464" unknown02="1969867521" />
<unknownStruct unknown01="2532311636" textureType="0x00736464" unknown02="1969867521" />
<unknownStruct unknown01="2817548872" textureType="0x00736464" unknown02="1969867521" />
<unknownStruct unknown01="4130591688" textureType="0x00736464" unknown02="314452046" />
<unknownStruct unknown01="2345674207" textureType="0x00736464" unknown02="314452046" />
<unknownStruct unknown01="3437121445" textureType="0x00736464" unknown02="314452046" />
<unknownStruct unknown01="2721764791" textureType="0x00736464" unknown02="314452046" />
<unknownStruct unknown01="3987547591" textureType="0x00736464" unknown02="314452046" />
<unknownStruct unknown01="1486255527" textureType="0x00736464" unknown02="314452046" />
<unknownStruct unknown01="193437980" textureType="0x00736464" unknown02="314452046" />
<unknownStruct unknown01="3499083872" textureType="0x00736464" unknown02="314452046" />
<unknownStruct unknown01="4222490580" textureType="0x00736464" unknown02="3929839416" />
<unknownStruct unknown01="4113219352" textureType="0x00736464" unknown02="2460462734" />
<unknownStruct unknown01="1324142250" textureType="0x00736464" unknown02="2460462734" />
<unknownStruct unknown01="925922830" textureType="0x00736464" unknown02="2460462734" />
<unknownStruct unknown01="1879623364" textureType="0x00736464" unknown02="1969867521" />
<unknownStruct unknown01="1253574659" textureType="0x00736464" unknown02="1969867521" />
</unknown4>
</MODT>
<KSIZ>6</KSIZ>
<KWDA>000a56d8,0006e9c7,000cae0a,0004f680,00088105,000fd0e1</KWDA>
<PNAM>0</PNAM>
<FNAM>0</FNAM>
<KNAM>00013794</KNAM>
<MNAM>1073741825</MNAM>
<WBDT>
<struct workbench="1" actorValueSkill="10" />
</WBDT>
<FNPR>
<struct flagsMarkerType="0x0001" flagsMarkerEntryPoint="0x0002" />
</FNPR>
</FURN>
<FURN flags="0x00000000" id="000d54ff" day="0" month="0" lastUserID="0" currentUserID="0" version="44" unknown="0x0002">
<EDID>CraftingAlchemyWorkbenchTabletop</EDID>
<OBND>
<struct min="-32,-10,-34" max="32,82,87" />
</OBND>
<FULL>7593</FULL>
<MODL>Furniture\AlchemyWorkstation.nif</MODL>
<MODT count="2">
<unknown3></unknown3>
<unknown5></unknown5>
<unknown4>
<unknownStruct unknown01="2900664440" textureType="0x00736464" unknown02="3659922111" />
<unknownStruct unknown01="2786718006" textureType="0x00736464" unknown02="3659922111" />
<unknownStruct unknown01="854384084" textureType="0x00736464" unknown02="3659922111" />
<unknownStruct unknown01="2317324634" textureType="0x00736464" unknown02="3659922111" />
<unknownStruct unknown01="2066803896" textureType="0x00736464" unknown02="993209382" />
<unknownStruct unknown01="3134883325" textureType="0x00736464" unknown02="993209382" />
<unknownStruct unknown01="2139825103" textureType="0x00736464" unknown02="3929839416" />
<unknownStruct unknown01="2029396392" textureType="0x00736464" unknown02="861219928" />
<unknownStruct unknown01="4222490580" textureType="0x00736464" unknown02="3929839416" />
<unknownStruct unknown01="3756742260" textureType="0x00736464" unknown02="861219928" />
<unknownStruct unknown01="1643990641" textureType="0x00736464" unknown02="3929839416" />
</unknown4>
</MODT>
<KSIZ>5</KSIZ>
<KWDA>0002a40b,0004f6e6,0006e9c7,000a56d8,000fd0e1</KWDA>
<PNAM>0</PNAM>
<FNAM>0</FNAM>
<KNAM>00013794</KNAM>
<MNAM>1073741825</MNAM>
<WBDT>
<struct workbench="5" actorValueSkill="16" />
</WBDT>
<FNPR>
<struct flagsMarkerType="0x0001" flagsMarkerEntryPoint="0x0002" />
</FNPR>
</FURN>
<FURN flags="0x00000000" id="000d5501" day="0" month="0" lastUserID="0" currentUserID="0" version="44" unknown="0x0002">
<EDID>CraftingEnchantingWorkbenchTabletop</EDID>
<OBND>
<struct min="-41,-10,-34" max="41,100,139" />
</OBND>
<FULL>7592</FULL>
<MODL>Furniture\EnchantingWorkStation.nif</MODL>
<MODT count="2">
<unknown3></unknown3>
<unknown5>49</unknown5>
<unknown4>
<unknownStruct unknown01="596376629" textureType="0x00736464" unknown02="3659922111" />
<unknownStruct unknown01="750707863" textureType="0x00736464" unknown02="3659922111" />
<unknownStruct unknown01="239999942" textureType="0x00736464" unknown02="3659922111" />
<unknownStruct unknown01="154940878" textureType="0x00736464" unknown02="993209382" />
<unknownStruct unknown01="4237422690" textureType="0x00736464" unknown02="3929839416" />
<unknownStruct unknown01="2006098786" textureType="0x00736464" unknown02="3659922111" />
<unknownStruct unknown01="3109427725" textureType="0x00736464" unknown02="664767518" />
<unknownStruct unknown01="3756340133" textureType="0x00736464" unknown02="664767518" />
<unknownStruct unknown01="2788788993" textureType="0x00736464" unknown02="664767518" />
</unknown4>
</MODT>
<KSIZ>5</KSIZ>
<KWDA>000a56d8,0006e9c7,0006e2a3,0004f6dd,000fd0e1</KWDA>
<PNAM>0</PNAM>
<FNAM>0</FNAM>
<KNAM>00013794</KNAM>
<MNAM>1073741825</MNAM>
<WBDT>
<struct workbench="3" actorValueSkill="23" />
</WBDT>
<FNPR>
<struct flagsMarkerType="0x0001" flagsMarkerEntryPoint="0x0002" />
</FNPR>
</FURN>
<FURN flags="0x00000000" id="000d932f" day="0" month="0" lastUserID="0" currentUserID="0" version="44" unknown="0x000d">
<EDID>CraftingBlacksmithArmorWorkbench</EDID>
<OBND>
<struct min="-71,-84,-34" max="45,79,117" />
</OBND>
<FULL>7591</FULL>
<MODL>furniture\_Rblacksmithworkbench01.nif</MODL>
<MODT count="2">
<unknown3></unknown3>
<unknown5></unknown5>
<unknown4>
<unknownStruct unknown01="4256002273" textureType="0x00736464" unknown02="1969867521" />
<unknownStruct unknown01="2152285176" textureType="0x00736464" unknown02="1969867521" />
<unknownStruct unknown01="359208431" textureType="0x00736464" unknown02="1969867521" />
<unknownStruct unknown01="588387173" textureType="0x00736464" unknown02="1969867521" />
</unknown4>
</MODT>
<KSIZ>6</KSIZ>
<KWDA>000a56d8,0006e9c7,000d932e,000fd0e1,000adb78,0004f6fd</KWDA>
<PNAM>0</PNAM>
<FNAM>0</FNAM>
<KNAM>00013794</KNAM>
<MNAM>1073741825</MNAM>
<WBDT>
<struct workbench="7" actorValueSkill="10" />
</WBDT>
<FNPR>
<struct flagsMarkerType="0x0001" flagsMarkerEntryPoint="0x0002" />
</FNPR>
</FURN>
<FURN flags="0x00000000" id="001010b3" day="0" month="0" lastUserID="0" currentUserID="0" version="44" unknown="0x0009">
<EDID>CraftingCookingPotSm</EDID>
<OBND>
<struct min="-32,-10,-34" max="32,64,94" />
</OBND>
<FULL>7590</FULL>
<MODL>Furniture\SmallCookingPot.nif</MODL>
<MODT count="2">
<unknown3></unknown3>
<unknown5></unknown5>
<unknown4>
<unknownStruct unknown01="4099871861" textureType="0x00736464" unknown02="3929839416" />
<unknownStruct unknown01="3569054534" textureType="0x00736464" unknown02="861219928" />
<unknownStruct unknown01="4205593030" textureType="0x00736464" unknown02="3929839416" />
<unknownStruct unknown01="3594530037" textureType="0x00736464" unknown02="2906384854" />
<unknownStruct unknown01="3426394783" textureType="0x00736464" unknown02="2906384854" />
<unknownStruct unknown01="1379563085" textureType="0x00736464" unknown02="2460462734" />
<unknownStruct unknown01="1805171391" textureType="0x00736464" unknown02="2460462734" />
</unknown4>
</MODT>
<KSIZ>5</KSIZ>
<KWDA>000a56d8,0006e9c7,001010b2,000a5cb3,000fd0e1</KWDA>
<PNAM>0</PNAM>
<FNAM>0</FNAM>
<KNAM>00013794</KNAM>
<MNAM>1073741825</MNAM>
<WBDT>
<struct workbench="1" actorValueSkill="255" />
</WBDT>
<FNPR>
<struct flagsMarkerType="0x0001" flagsMarkerEntryPoint="0x0002" />
</FNPR>
</FURN>
<FURN flags="0x00000000" id="00104110" day="0" month="0" lastUserID="0" currentUserID="0" version="44" unknown="0x0008">
<EDID>CraftingCookingPotLG</EDID>
<OBND>
<struct min="-32,-10,-34" max="32,64,111" />
</OBND>
<FULL>7589</FULL>
<MODL>Furniture\LargeCookingPot.nif</MODL>
<MODT count="2">
<unknown3></unknown3>
<unknown5></unknown5>
<unknown4>
<unknownStruct unknown01="3594530037" textureType="0x00736464" unknown02="2906384854" />
<unknownStruct unknown01="3426394783" textureType="0x00736464" unknown02="2906384854" />
<unknownStruct unknown01="1379563085" textureType="0x00736464" unknown02="2460462734" />
<unknownStruct unknown01="1805171391" textureType="0x00736464" unknown02="2460462734" />
</unknown4>
</MODT>
<KSIZ>5</KSIZ>
<KWDA>000a56d8,0006e9c7,001010b2,000a5cb3,000fd0e1</KWDA>
<PNAM>0</PNAM>
<FNAM>0</FNAM>
<KNAM>00013794</KNAM>
<MNAM>1073741825</MNAM>
<WBDT>
<struct workbench="1" actorValueSkill="255" />
</WBDT>
<FNPR>
<struct flagsMarkerType="0x0001" flagsMarkerEntryPoint="0x0002" />
</FNPR>
</FURN>
<FURN flags="0x00000000" id="00108230" day="0" month="0" lastUserID="0" currentUserID="0" version="44" unknown="0x0007">
<EDID>CraftingCookingPotSmNoHandle</EDID>
<OBND>
<struct min="-32,-10,-34" max="32,64,64" />
</OBND>
<FULL>7588</FULL>
<MODL>Furniture\SmallCookingPotNoHandle.nif</MODL>
<MODT count="2">
<unknown3></unknown3>
<unknown5></unknown5>
<unknown4>
<unknownStruct unknown01="3594530037" textureType="0x00736464" unknown02="2906384854" />
<unknownStruct unknown01="3426394783" textureType="0x00736464" unknown02="2906384854" />
<unknownStruct unknown01="1379563085" textureType="0x00736464" unknown02="2460462734" />
<unknownStruct unknown01="1805171391" textureType="0x00736464" unknown02="2460462734" />
</unknown4>
</MODT>
<KSIZ>5</KSIZ>
<KWDA>000a56d8,0006e9c7,001010b2,000a5cb3,000fd0e1</KWDA>
<PNAM>0</PNAM>
<FNAM>0</FNAM>
<KNAM>00013794</KNAM>
<MNAM>1073741825</MNAM>
<WBDT>
<struct workbench="1" actorValueSkill="255" />
</WBDT>
<FNPR>
<struct flagsMarkerType="0x0001" flagsMarkerEntryPoint="0x0002" />
</FNPR>
</FURN>
<FURN flags="0x00000000" id="0010bfe3" day="0" month="0" lastUserID="0" currentUserID="0" version="44" unknown="0x0005">
<EDID>CraftingCookingPotInvisible</EDID>
<OBND>
<struct min="-32,-10,-34" max="32,64,64" />
</OBND>
<MODL>Furniture\SmallCookingPotNoHandleInv.nif</MODL>
<MODT count="2">
<unknown3></unknown3>
<unknown5></unknown5>
<unknown4>
<unknownStruct unknown01="3594530037" textureType="0x00736464" unknown02="2906384854" />
<unknownStruct unknown01="3426394783" textureType="0x00736464" unknown02="2906384854" />
</unknown4>
</MODT>
<KSIZ>5</KSIZ>
<KWDA>000a56d8,0006e9c7,001010b2,000a5cb3,000fd0e1</KWDA>
<PNAM>0</PNAM>
<FNAM>2</FNAM>
<KNAM>00013794</KNAM>
<MNAM>1073741825</MNAM>
<WBDT>
<struct workbench="1" actorValueSkill="255" />
</WBDT>
<FNPR>
<struct flagsMarkerType="0x0001" flagsMarkerEntryPoint="0x0002" />
</FNPR>
</FURN>
<FURN flags="0x00000000" id="00133d52" day="0" month="0" lastUserID="0" currentUserID="0" version="44" unknown="0x0001">
<EDID>CraftingAlchemyWorkbenchTabletopNoAct</EDID>
<OBND>
<struct min="-32,-10,-34" max="32,82,87" />
</OBND>
<MODL>Furniture\AlchemyWorkstation.nif</MODL>
<MODT count="2">
<unknown3></unknown3>
<unknown5></unknown5>
<unknown4 />
</MODT>
<KSIZ>5</KSIZ>
<KWDA>000a56d8,0002a40b,0006e9c7,0004f6e6,000fd0e1</KWDA>
<PNAM>0</PNAM>
<FNAM>0</FNAM>
<KNAM>00013794</KNAM>
<MNAM>1073741825</MNAM>
<WBDT>
<struct workbench="5" actorValueSkill="16" />
</WBDT>
<FNPR>
<struct flagsMarkerType="0x0001" flagsMarkerEntryPoint="0x0002" />
</FNPR>
</FURN>
<FURN flags="0x20000000" id="00140f38" day="0" month="0" lastUserID="0" currentUserID="0" version="44" unknown="0x0000"> <FURN flags="0x20000000" id="00140f38" day="0" month="0" lastUserID="0" currentUserID="0" version="44" unknown="0x0000">
<EDID>_00E_Placeable_CommonChair01NEW</EDID> <EDID>_00E_Placeable_CommonChair01NEW</EDID>
<VMAD version="5" format="2"> <VMAD version="5" format="2">

View File

@ -144,7 +144,7 @@ Zearderes
TRANSLATION - POLISH VERSION TRANSLATION - POLISH VERSION
led by led by
Anna Łagowska (anathema88/my_summertime) Anna Łagowska (anathema83/my_summertime)
Szymon "Herob" Wrzos Szymon "Herob" Wrzos
Bartłomiej "Święty" Jabłoński Bartłomiej "Święty" Jabłoński
@ -755,7 +755,6 @@ Savior's Pants by Sam04956
Bowlegged jump animation Fix by mirap Bowlegged jump animation Fix by mirap
Magic Runes HD by HXP Magic Runes HD by HXP
XP32 Maximum Skeleton Extended - XPMSE by Groovtama XP32 Maximum Skeleton Extended - XPMSE by Groovtama
Armor Addon Fix for Qyranians and Arazealeans by SatansFetusLegs
Vanilla Script (micro)Optimizations by subhuman0100 Vanilla Script (micro)Optimizations by subhuman0100
Unnecessarily Fixed Fixed Dragon Stalking Fix by tarlazo and KirbonatedBeverage Unnecessarily Fixed Fixed Dragon Stalking Fix by tarlazo and KirbonatedBeverage

View File

@ -6,6 +6,30 @@ See https://en.wiki.sureai.net/Enderal:Patch for the list of official patches up
Beware, spoilers ahead! Beware, spoilers ahead!
2.0.12.4 (2022-09-30)
- Skyrim SE 1.6.640 (Steam) and 1.6.659 (GOG) support.
- Fixed the dialog quit popup appearing in non-locked conversations.
- Making a Wolf Blood in Call of the Hunt led to the objective to drink Chymikum, and vice versa.
2.0.12.3 (2022-09-16)
- Excluded a few distant cells from testing, fixes compatibility with SkyVRaan.
- Reverted dialoguemenu.swf to the pre-2.0.12 version and replaced quest journal in locked dialogs with a quit prompt. Discarded solution caused decreased input delay in menu mode and was making scrolling unusable.
- Reverted the Armor Addon Fix for Qyranians and Arazealeans, was enabling to equip two necklaces and two rings.
- NPCs, shattered after being frozen with Arctic Wind, were respawning in frozen state.
gavrant:
- Fixed a neck hole in Vagrant Dress.
- Mesh improvements in meshes/clutter/common/cratesmall*.nif - textures, normals, geometry issues.
2.0.12.2 (2022-09-12)
- The Father's arrival scene might fail to properly start (reported by KappaPride).
2.0.12.1 (2022-09-11)
- Fixed inability to create quest potions if 2.0.12 was installed during certain quest stages.
2.0.12 (2022-09-08) 2.0.12 (2022-09-08)
- Added Polish translation by Anna Łagowska, Szymon Wrzos, Bartłomiej Jabłoński, and contributors. - Added Polish translation by Anna Łagowska, Szymon Wrzos, Bartłomiej Jabłoński, and contributors.
- Fixed inability to open quest journal in locked dialogs. Modded dialoguemenu.swf requires re-patching to use this fix. - Fixed inability to open quest journal in locked dialogs. Modded dialoguemenu.swf requires re-patching to use this fix.

BIN
SKSE/Plugins/EnderalSE.dll (Stored with Git LFS)

Binary file not shown.

BIN
SKSE/Plugins/EnderalSteam.dll (Stored with Git LFS)

Binary file not shown.

View File

@ -0,0 +1 @@
version = 2.0.12.4

BIN
SKSE/Plugins/versionlib-1-6-629-0.bin (Stored with Git LFS) Normal file

Binary file not shown.

BIN
SKSE/Plugins/versionlib-1-6-640-0.bin (Stored with Git LFS) Normal file

Binary file not shown.

BIN
SKSE/Plugins/versionlib-1-6-659-0.bin (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,6 +1,6 @@
Enderal Credits.txt Enderal Credits.txt
Report a bug in Enderal SE.url Report a bug in Enderal SE.url
Enderal SE v2.0.12 Changelog.txt Enderal SE v2.0.12.4 Changelog.txt
Enderal - Forgotten Stories.esm Enderal - Forgotten Stories.esm
Enderal - Forgotten Stories.ini Enderal - Forgotten Stories.ini
E - Update.bsa E - Update.bsa
@ -30,8 +30,11 @@ Scripts\SKI_FavoritesManager.pex
Scripts\SKI_ConfigMenu.pex Scripts\SKI_ConfigMenu.pex
SKSE\Plugins\EnderalSE.dll SKSE\Plugins\EnderalSE.dll
SKSE\Plugins\EnderalSE.ini SKSE\Plugins\EnderalSE.ini
SKSE\Plugins\EnderalVersion.ini
SKSE\Plugins\version-1-5-97-0.bin SKSE\Plugins\version-1-5-97-0.bin
SKSE\Plugins\versionlib-1-6-353-0.bin SKSE\Plugins\versionlib-1-6-353-0.bin
SKSE\Plugins\versionlib-1-6-640-0.bin
SKSE\Plugins\versionlib-1-6-659-0.bin
SKSE\SKSE.ini SKSE\SKSE.ini
Skyrim.esm Skyrim.esm
Update.esm Update.esm

View File

@ -145,7 +145,7 @@ Zearderes
TRANSLATION - POLISH VERSION TRANSLATION - POLISH VERSION
led by led by
Anna Łagowska (anathema88/my_summertime) Anna Łagowska (anathema83/my_summertime)
Szymon "Herob" Wrzos Szymon "Herob" Wrzos
Bartłomiej "Święty" Jabłoński Bartłomiej "Święty" Jabłoński
@ -756,7 +756,6 @@ Savior's Pants by Sam04956
Bowlegged jump animation Fix by mirap Bowlegged jump animation Fix by mirap
Magic Runes HD by HXP Magic Runes HD by HXP
XP32 Maximum Skeleton Extended - XPMSE by Groovtama XP32 Maximum Skeleton Extended - XPMSE by Groovtama
Armor Addon Fix for Qyranians and Arazealeans by SatansFetusLegs
Vanilla Script (micro)Optimizations by subhuman0100 Vanilla Script (micro)Optimizations by subhuman0100
Unnecessarily Fixed Fixed Dragon Stalking Fix by tarlazo and KirbonatedBeverage Unnecessarily Fixed Fixed Dragon Stalking Fix by tarlazo and KirbonatedBeverage

View File

@ -145,7 +145,7 @@ Zearderes
TRANSLATION - POLISH VERSION TRANSLATION - POLISH VERSION
led by led by
Anna Łagowska (anathema88/my_summertime) Anna Łagowska (anathema83/my_summertime)
Szymon "Herob" Wrzos Szymon "Herob" Wrzos
Bartłomiej "Święty" Jabłoński Bartłomiej "Święty" Jabłoński
@ -756,7 +756,6 @@ Savior's Pants by Sam04956
Bowlegged jump animation Fix by mirap Bowlegged jump animation Fix by mirap
Magic Runes HD by HXP Magic Runes HD by HXP
XP32 Maximum Skeleton Extended - XPMSE by Groovtama XP32 Maximum Skeleton Extended - XPMSE by Groovtama
Armor Addon Fix for Qyranians and Arazealeans by SatansFetusLegs
Vanilla Script (micro)Optimizations by subhuman0100 Vanilla Script (micro)Optimizations by subhuman0100
Unnecessarily Fixed Fixed Dragon Stalking Fix by tarlazo and KirbonatedBeverage Unnecessarily Fixed Fixed Dragon Stalking Fix by tarlazo and KirbonatedBeverage

BIN
interface/dialoguemenu.swf (Stored with Git LFS)

Binary file not shown.

Binary file not shown.

BIN
meshes/clutter/common/cratesmall01.nif (Stored with Git LFS) Normal file

Binary file not shown.

BIN
meshes/clutter/common/cratesmall01eeco.nif (Stored with Git LFS) Normal file

Binary file not shown.

BIN
meshes/clutter/common/cratesmall02.nif (Stored with Git LFS) Normal file

Binary file not shown.

BIN
meshes/clutter/common/cratesmall03.nif (Stored with Git LFS) Normal file

Binary file not shown.

BIN
meshes/clutter/common/cratesmall03eeco.nif (Stored with Git LFS) Normal file

Binary file not shown.

BIN
meshes/clutter/common/cratesmall04.nif (Stored with Git LFS) Normal file

Binary file not shown.

BIN
meshes/clutter/common/cratesmalllong01.nif (Stored with Git LFS) Normal file

Binary file not shown.

BIN
meshes/clutter/common/cratesmalllong01eeco.nif (Stored with Git LFS) Normal file

Binary file not shown.

BIN
meshes/clutter/common/cratesmalllong02.nif (Stored with Git LFS) Normal file

Binary file not shown.

BIN
meshes/clutter/common/cratesmalllong03.nif (Stored with Git LFS) Normal file

Binary file not shown.

BIN
meshes/clutter/common/cratesmalllong04.nif (Stored with Git LFS) Normal file

Binary file not shown.

BIN
meshes/clutter/common/cratesmalllong04eeco.nif (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
meshes/enderal/medievalpack/door01.nif (Stored with Git LFS)

Binary file not shown.

BIN
meshes/enderal/medievalpack/door02.nif (Stored with Git LFS)

Binary file not shown.

BIN
meshes/enderal/medievalpack/towerbase.nif (Stored with Git LFS)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -6,7 +6,7 @@ message("Using toolchain file ${CMAKE_TOOLCHAIN_FILE}.")
######################################################################################################################## ########################################################################################################################
project( project(
EnderalSE EnderalSE
VERSION 1.0.0 VERSION 1.1.0
DESCRIPTION "Enderal SE DLL" DESCRIPTION "Enderal SE DLL"
LANGUAGES CXX) LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD 23)

View File

@ -81,7 +81,7 @@ inline void CheckSkyrimCells()
// FormIDs of all Skyrim cells. // FormIDs of all Skyrim cells.
// 9 of them are commented out, because they are cells in Enderal as well. // 9 of them are commented out, because they are cells in Enderal as well.
uint32_t formids[582] = { uint32_t formids[574] = {
0x0004B8FB, 0x0004B8FB,
0x000352C7, 0x000352C7,
0x000161E7, 0x000161E7,
@ -95,7 +95,7 @@ inline void CheckSkyrimCells()
0x000A8B23, 0x000A8B23,
0x000918D3, 0x000918D3,
0x0004761B, 0x0004761B,
0x0003CBCB, //0x0003CBCB,
0x00016A07, 0x00016A07,
0x00015233, 0x00015233,
0x000138CF, 0x000138CF,
@ -143,7 +143,7 @@ inline void CheckSkyrimCells()
0x000161F1, 0x000161F1,
0x00015251, 0x00015251,
0x00013A7D, 0x00013A7D,
0x00030442, //0x00030442,
0x000152AA, 0x000152AA,
0x00013A72, 0x00013A72,
0x000571B4, 0x000571B4,
@ -326,7 +326,7 @@ inline void CheckSkyrimCells()
0x000C9DAB, 0x000C9DAB,
0x000A1793, 0x000A1793,
0x00094BAB, 0x00094BAB,
0x00030313, //0x00030313,
0x00016DFF, 0x00016DFF,
0x000152A7, 0x000152A7,
0x0007FCDD, 0x0007FCDD,
@ -468,7 +468,7 @@ inline void CheckSkyrimCells()
0x00015237, 0x00015237,
0x00077289, 0x00077289,
0x00075669, 0x00075669,
0x0002FD85, //0x0002FD85,
0x000165B5, 0x000165B5,
0x0003FC8F, 0x0003FC8F,
0x000165AB, 0x000165AB,
@ -542,7 +542,7 @@ inline void CheckSkyrimCells()
0x0001F358, 0x0001F358,
0x00016780, 0x00016780,
0x00015268, 0x00015268,
0x0002F83E, //0x0002F83E,
0x0002529E, 0x0002529E,
0x00016776, 0x00016776,
0x000161FE, 0x000161FE,
@ -599,7 +599,7 @@ inline void CheckSkyrimCells()
0x00015267, 0x00015267,
0x001052FD, 0x001052FD,
0x00104871, 0x00104871,
0x0002F83D, //0x0002F83D,
0x00016775, 0x00016775,
0x000152C1, 0x000152C1,
0x0001525D, 0x0001525D,
@ -632,7 +632,7 @@ inline void CheckSkyrimCells()
0x0009CCDE, 0x0009CCDE,
//0x0007284E, //0x0007284E,
0x00067F2A, 0x00067F2A,
0x0003016A, //0x0003016A,
0x000198DE, 0x000198DE,
0x000169FE, 0x000169FE,
0x000165B2, 0x000165B2,
@ -674,7 +674,7 @@ inline void CheckSkyrimCells()
0x00027D1C 0x00027D1C
}; };
for (int i = 0; i < 582; i++) { for (int i = 0; i < 574; i++) {
const auto* form = RE::TESForm::LookupByID(formids[i]); const auto* form = RE::TESForm::LookupByID(formids[i]);
if (form && form->Is(RE::FormType::Cell)) { if (form && form->Is(RE::FormType::Cell)) {
logger::warn("Detected invalid cell: {:08X}", formids[i]); logger::warn("Detected invalid cell: {:08X}", formids[i]);
@ -1331,3 +1331,217 @@ inline void CheckEnderalNPCs()
} }
} }
} }
inline void CheckEnderalActivators()
{
// Base forms of Enderal activators, having collisions with Skyrim
uint32_t formids[46] = {
0x20A1C,
0x23AB1,
0x36739,
0x3BCA5,
0x3BCB3,
0x3C570,
0x3C57F,
0x43BEB,
0x43BEE,
0x447D3,
0x469F6,
0x469F8,
0x469FA,
0x469FC,
0x46ADE,
0x46AEA,
0x69F89,
0x69F8C,
0x6A00D,
0x6A00E,
0x6A00F,
0x6A010,
0x6A011,
0x6A013,
0x6A016,
0x6A024,
0x6A025,
0x6A026,
0x6A027,
0x6A029,
0x6A02A,
0x6A02B,
0x6A02C,
0x6A02D,
0x6A02E,
0x6A030,
0x6A032,
0x6A033,
0x77358,
0xADC71,
0xB35AB,
0xB35B4,
0xB35B5,
0xB6282,
0x106644,
0x1080DA
};
for (int i = 0; i < 46; i++) {
const auto* form = RE::TESForm::LookupByID(formids[i]);
if (!form || !form->Is(RE::FormType::Activator)) {
logger::warn("Detected invalid activator: {:08X}", formids[i]);
NotifyInvalidForm(form);
}
}
}
inline void CheckEnderalStatics()
{
// Base forms of Enderal statics, having collisions with Skyrim
uint32_t formids[138] = {
0x15C6F,
0x1725C,
0x20BC9,
0x20BDF,
0x23E46,
0x2E6F8,
0x2EC26,
0x2EE3F,
0x31949,
0x3194B,
0x3195B,
0x31974,
0x327AD,
0x328D7,
0x33F45,
0x34944,
0x34946,
0x34BCD,
0x36747,
0x36775,
0x36779,
0x3700B,
0x3742A,
0x37667,
0x37668,
0x37C01,
0x3A1C2,
0x3BCE3,
0x3BCE7,
0x3C58A,
0x3ECAA,
0x41449,
0x4B258,
0x4B25A,
0x565F0,
0x6717B,
0x6717C,
0x6717D,
0x69524,
0x69525,
0x69526,
0x69527,
0x6A034,
0x6A035,
0x6A036,
0x6A037,
0x6A038,
0x6A039,
0x6A03A,
0x6A03B,
0x6A03C,
0x6A03D,
0x6A03E,
0x6A03F,
0x6A040,
0x6A041,
0x6A042,
0x6A045,
0x6A046,
0x6A047,
0x6A048,
0x6A049,
0x6A04A,
0x6A04B,
0x6A04C,
0x6A04D,
0x6A04F,
0x6A050,
0x6A051,
0x6A052,
0x6A053,
0x6A054,
0x6A057,
0x6A058,
0x6A059,
0x6A05A,
0x6A094,
0x6D230,
0x6D233,
0x6D235,
0x6D23F,
0x6D24D,
0x6D253,
0x6D257,
0x6FEEA,
0x6FEED,
0x6FEEE,
0x6FEEF,
0x6FEF0,
0x6FEF1,
0x6FEF2,
0x6FEF3,
0x6FEF4,
0x6FEF5,
0x6FEF6,
0x6FEF7,
0x6FEF8,
0x6FEF9,
0x6FEFA,
0x6FEFD,
0x904B1,
0x904B2,
0x904B3,
0x904B4,
0x904B5,
0x904B6,
0x904B7,
0x904B8,
0x904B9,
0x904BA,
0x904BB,
0x904BC,
0x904BD,
0x904BE,
0x904BF,
0x904C0,
0xDAAF3,
0xDAAF5,
0xDAAF8,
0xDAAFC,
0xDAAFE,
0xDAB01,
0xE49F3,
0xE4A12,
0xE77BF,
0xE77C0,
0xE77C1,
0xE77C2,
0xE77C3,
0xE77C4,
0xE77C5,
0xE77C6,
0xE77C7,
0xE77C8,
0xE77C9,
0xE77CA,
0xE77CB,
0xE77CF
};
for (int i = 0; i < 138; i++) {
const auto* form = RE::TESForm::LookupByID(formids[i]);
if (!form || !form->Is(RE::FormType::Static)) {
logger::warn("Detected invalid static: {:08X}", formids[i]);
NotifyInvalidForm(form);
}
}
}

View File

@ -34,18 +34,8 @@ namespace {
void InitializeMessaging() void InitializeMessaging()
{ {
GetMessagingInterface()->RegisterListener([](MessagingInterface::Message* message) { GetMessagingInterface()->RegisterListener([](MessagingInterface::Message* message) {
if (message->type == MessagingInterface::kPostLoad) { if (message->type == MessagingInterface::kPostLoad) {
if (DataFileExists("Dawnguard.esm") || DataFileExists("Dragonborn.esm") || DataFileExists("HearthFires.esm") || DataFileExists("Update.esm")) {
MessageBoxW(NULL, L"Skyrim DLCs are incompatible with Enderal.", L"Error", MB_OK | MB_ICONERROR);
exit(EXIT_FAILURE);
}
if (DataFileExists("Unofficial Skyrim Special Edition Patch.esp")) {
MessageBoxW(NULL, L"Unofficial Skyrim Special Edition Patch is incompatible with Enderal.", L"Error", MB_OK | MB_ICONERROR);
exit(EXIT_FAILURE);
}
CheckCCMods();
if (g_settings.at("StayAtSystemPage")) { if (g_settings.at("StayAtSystemPage")) {
if (const auto pluginInfo = GetLoadInterface()->GetPluginInfo("StayAtSystemPage"); pluginInfo) { if (const auto pluginInfo = GetLoadInterface()->GetPluginInfo("StayAtSystemPage"); pluginInfo) {
MessageBoxW(NULL, L"Stay At The System Page is already included in Enderal, please, disable it.", L"Error", MB_OK | MB_ICONERROR); MessageBoxW(NULL, L"Stay At The System Page is already included in Enderal, please, disable it.", L"Error", MB_OK | MB_ICONERROR);
@ -59,11 +49,6 @@ namespace {
} }
} }
SetINISettings();
EventListener::Install();
} else if (message->type == MessagingInterface::kPostPostLoad) {
SKSE::GetModCallbackEventSource()->AddEventSink(EventListener::GetSingleton());
} else if (message->type == MessagingInterface::kDataLoaded) { } else if (message->type == MessagingInterface::kDataLoaded) {
const auto dataHandler = RE::TESDataHandler::GetSingleton(); const auto dataHandler = RE::TESDataHandler::GetSingleton();
if (dataHandler) { if (dataHandler) {
@ -77,21 +62,37 @@ namespace {
} }
} }
if (!RE::BSScript::Internal::VirtualMachine::GetSingleton()->TypeIsValid("UI")) {
RE::DebugMessageBox("Unable to detect SKSE scripts, make sure SKSE is properly installed.");
}
bool bScripts = RE::BSScript::Internal::VirtualMachine::GetSingleton()->TypeIsValid("PRKF__00E_CraftQuestPotionPe_0300146D"); bool bScripts = RE::BSScript::Internal::VirtualMachine::GetSingleton()->TypeIsValid("PRKF__00E_CraftQuestPotionPe_0300146D");
bool bSounds = RE::BSResourceNiBinaryStream("sound/fx/enderal/laughingchild.wav").good();
bool bVoices = RE::BSResourceNiBinaryStream("sound/voice/enderal - forgotten stories.esm/vt_calia/fs_mq18c__0002a4ed_1.fuz").good();
bool bMeshes = RE::BSResourceNiBinaryStream("meshes/enderal/loadscreenart/loadscreenundercity.nif").good();
bool bTextures = RE::BSResourceNiBinaryStream("textures/enderal/forgottenstories/theriantrophist/theriantrophistrecipe.dds").good();
bool bInterface = RE::BSResourceNiBinaryStream("interface/00e_heromenu.swf").good(); bool bInterface = RE::BSResourceNiBinaryStream("interface/00e_heromenu.swf").good();
if (!bScripts || !bSounds || !bVoices || !bMeshes || !bTextures || !bInterface) { if (!bScripts || !bInterface) {
MessageBoxW(NULL, L"One or more of Enderal's BSA archives are not loaded. Make sure Enderal - Forgotten Stories.esm is enabled and revalidate your files.", L"Error", MB_OK | MB_ICONERROR); RE::DebugMessageBox("E - Misc.bsa is not loaded or is outdated. Make sure Enderal - Forgotten Stories.esm is enabled and revalidate your files.");
exit(EXIT_FAILURE); }
bool bSounds = RE::BSResourceNiBinaryStream("sound/fx/enderal/laughingchild.wav").good();
if (!bSounds) {
RE::DebugMessageBox("E - Sounds.bsa is not loaded. Make sure Enderal - Forgotten Stories.esm is enabled and revalidate your files.");
}
bool bVoices = RE::BSResourceNiBinaryStream("sound/voice/enderal - forgotten stories.esm/vt_calia/fs_mq18c__0002a4ed_1.fuz").good();
if (!bVoices) {
RE::DebugMessageBox("L - Voices.bsa is not loaded. Make sure Enderal - Forgotten Stories.esm is enabled and revalidate your files.");
}
bool bMeshes = RE::BSResourceNiBinaryStream("meshes/enderal/loadscreenart/loadscreenundercity.nif").good();
if (!bMeshes) {
RE::DebugMessageBox("E - Meshes.bsa is not loaded. Make sure Enderal - Forgotten Stories.esm is enabled and revalidate your files.");
} }
CheckIncompatibleMods(); CheckIncompatibleMods();
} else if (message->type == MessagingInterface::kPreLoadGame) {
//
} else if ((message->type == MessagingInterface::kPostLoadGame && message->data) || message->type == MessagingInterface::kNewGame) { } else if ((message->type == MessagingInterface::kPostLoadGame && message->data) || message->type == MessagingInterface::kNewGame) {
NewGameCount(true); NewGameCount(true);
} }
@ -101,6 +102,31 @@ namespace {
SKSEPluginLoad(const LoadInterface* skse) { SKSEPluginLoad(const LoadInterface* skse) {
std::string filenames[4] = {
"fs.dll",
"fs_se.dll",
"fs_skse_functions.dll",
"FlatMapMarkersEnderal.dll"
};
for (int i = 0; i < 4; i++) {
if (std::filesystem::exists(std::format("Data\\SKSE\\Plugins\\{}", filenames[i]))) {
MessageBoxA(NULL, std::format("Found a leftover file from a previous version of Enderal SE. Please, delete Data\\SKSE\\Plugins\\{}.", filenames[i]).c_str(), "Error", MB_OK | MB_ICONERROR);
exit(EXIT_FAILURE);
}
}
if (DataFileExists("Dawnguard.esm") || DataFileExists("Dragonborn.esm") || DataFileExists("HearthFires.esm") || DataFileExists("Update.esm")) {
MessageBoxW(NULL, L"Skyrim DLCs are incompatible with Enderal.", L"Error", MB_OK | MB_ICONERROR);
exit(EXIT_FAILURE);
}
if (DataFileExists("Unofficial Skyrim Special Edition Patch.esp")) {
MessageBoxW(NULL, L"Unofficial Skyrim Special Edition Patch is incompatible with Enderal.", L"Error", MB_OK | MB_ICONERROR);
exit(EXIT_FAILURE);
}
CheckCCMods();
GetLoadInterface(skse); GetLoadInterface(skse);
InitializeLogging(); InitializeLogging();
@ -114,6 +140,8 @@ SKSEPluginLoad(const LoadInterface* skse) {
Init(skse); Init(skse);
InitializeMessaging(); InitializeMessaging();
SKSE::GetModCallbackEventSource()->AddEventSink(EventListener::GetSingleton());
GetPapyrusInterface()->Register(Papyrus::Bind); GetPapyrusInterface()->Register(Papyrus::Bind);
if (!IsVR()) { if (!IsVR()) {

View File

@ -2,6 +2,7 @@
#include "CheckInvalidForms.h" #include "CheckInvalidForms.h"
#include <SimpleIni.h> #include <SimpleIni.h>
#include <regex>
inline const SKSE::LoadInterface* GetLoadInterface(const SKSE::LoadInterface* loadInterface = nullptr) inline const SKSE::LoadInterface* GetLoadInterface(const SKSE::LoadInterface* loadInterface = nullptr)
{ {
@ -33,30 +34,25 @@ inline bool IsVR()
return GetLoadInterface()->RuntimeVersion() == SKSE::RUNTIME_VR_1_4_15 || GetLoadInterface()->RuntimeVersion() == SKSE::RUNTIME_LATEST_VR; return GetLoadInterface()->RuntimeVersion() == SKSE::RUNTIME_VR_1_4_15 || GetLoadInterface()->RuntimeVersion() == SKSE::RUNTIME_LATEST_VR;
} }
inline void SetINISettings()
{
auto* setting = RE::INIPrefSettingCollection::GetSingleton()->GetSetting("bFreebiesSeen:General");
if (setting && !setting->GetBool()) {
setting->data.b = true;
RE::INIPrefSettingCollection::GetSingleton()->WriteSetting(setting);
}
setting = RE::INISettingCollection::GetSingleton()->GetSetting("bInvalidateOlderFiles:Archive");
if (setting && !setting->GetBool()) {
setting->data.b = true;
RE::INISettingCollection::GetSingleton()->WriteSetting(setting);
}
setting = RE::INISettingCollection::GetSingleton()->GetSetting("bModManagerMenuEnabled:General");
if (setting && setting->GetBool()) {
setting->data.b = false;
RE::INISettingCollection::GetSingleton()->WriteSetting(setting);
}
}
inline void CheckIncompatibleMods() inline void CheckIncompatibleMods()
{ {
RE::ConsoleLog::GetSingleton()->Print("Loaded SureAI's Enderal: Forgotten Stories | Special Edition v2.0.12 by Eddoursul and contributors"); bool bPrinted = false;
if (std::filesystem::exists("Data\\SKSE\\Plugins\\EnderalVersion.ini")) {
CSimpleIniA ini;
ini.SetUnicode(false);
ini.SetMultiKey(false);
ini.LoadFile("Data/SKSE/Plugins/EnderalVersion.ini");
const char* version = ini.GetValue("", "version", "2.0.x");
std::regex version_expr("^[\\d\\.]+$");
if (std::regex_match(version, version_expr)) {
RE::ConsoleLog::GetSingleton()->Print(std::format("Loaded SureAI's Enderal: Forgotten Stories | Special Edition v{} by Eddoursul and contributors", version).c_str());
bPrinted = true;
}
}
if (!bPrinted) {
RE::ConsoleLog::GetSingleton()->Print("Loaded SureAI's Enderal: Forgotten Stories | Special Edition v2.0.x by Eddoursul and contributors");
}
CheckBlacklist(); CheckBlacklist();
CheckWorldspaces(); CheckWorldspaces();
@ -65,6 +61,8 @@ inline void CheckIncompatibleMods()
CheckEnderalCells(); CheckEnderalCells();
CheckEnderalContainers(); CheckEnderalContainers();
CheckEnderalNPCs(); CheckEnderalNPCs();
CheckEnderalActivators();
CheckEnderalStatics();
} }
inline void LoadINI(std::map<std::string, bool>* settings, const char* iniPath) inline void LoadINI(std::map<std::string, bool>* settings, const char* iniPath)

View File

@ -1,15 +1,15 @@
{ {
"registries": [ "registries": [
{ {
"kind": "git", "kind": "git",
"repository": "https://gitlab.com/colorglass/vcpkg-colorglass", "repository": "https://gitlab.com/colorglass/vcpkg-colorglass",
"baseline": "5a11d06fd1b2d7cd6339d6aea48d450309e89cc1", "baseline": "bbd09a56b951d86dec3ea484ec183d00b013b486",
"packages": [ "packages": [
"commonlibsse-ng", "commonlibsse-ng",
"gluino", "gluino",
"script-extender-common", "script-extender-common",
"skse" "skse"
] ]
} }
] ]
} }

View File

@ -6,7 +6,7 @@ message("Using toolchain file ${CMAKE_TOOLCHAIN_FILE}.")
######################################################################################################################## ########################################################################################################################
project( project(
EnderalSteam EnderalSteam
VERSION 1.0.0 VERSION 1.0.1
DESCRIPTION "Enderal SE Steam Support" DESCRIPTION "Enderal SE Steam Support"
LANGUAGES CXX) LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD 23)

View File

@ -10,7 +10,7 @@ namespace Achievements {
{ {
std::map<std::string, bool> settings{ std::map<std::string, bool> settings{
{ "SendAchievementsToLE", false }, { "SendAchievementsToLE", false },
{ "TestMode", true }, { "TestMode", false },
{ "ShowWarningOnInitFail", true } { "ShowWarningOnInitFail", true }
}; };
LoadINI(&settings, "Data/SKSE/Plugins/EnderalSteam.ini"); LoadINI(&settings, "Data/SKSE/Plugins/EnderalSteam.ini");
@ -36,9 +36,9 @@ namespace Achievements {
bool success = SteamAPI_Init(); bool success = SteamAPI_Init();
if (success) { if (success) {
logger::info("Steam api init was successfull"); logger::info("{}", "Steam api init was successfull");
} else { } else {
logger::error("Error while initializing the steam api"); logger::error("{}", "Error while initializing the steam api");
if (settings.at("ShowWarningOnInitFail")) { if (settings.at("ShowWarningOnInitFail")) {
RE::DebugMessageBox("Unable to initialize Steam achievements. Try to restart the game and the Steam client. This warning can be disabled in SKSE\\Plugins\\EnderalSteam.ini."); RE::DebugMessageBox("Unable to initialize Steam achievements. Try to restart the game and the Steam client. This warning can be disabled in SKSE\\Plugins\\EnderalSteam.ini.");
} }
@ -47,12 +47,12 @@ namespace Achievements {
SteamInstance(new AchievementHolder()); SteamInstance(new AchievementHolder());
} }
else { else {
logger::info("Already initialized steam api, skipping it"); logger::info("{}", "Already initialized steam api, skipping it");
} }
} }
catch (const std::exception& ex) { catch (const std::exception& ex) {
std::string msg = "Exception while initializing the Steam API, steam achievements will not be available: " + std::string(ex.what()); std::string msg = "Exception while initializing the Steam API, steam achievements will not be available: " + std::string(ex.what());
logger::error(msg.c_str()); logger::error("{}", msg.c_str());
if (settings.at("ShowWarningOnInitFail")) { if (settings.at("ShowWarningOnInitFail")) {
RE::DebugMessageBox("Unable to initialize Steam achievements. Try to restart the game and the Steam client. This warning can be disabled in SKSE\\Plugins\\EnderalSteam.ini."); RE::DebugMessageBox("Unable to initialize Steam achievements. Try to restart the game and the Steam client. This warning can be disabled in SKSE\\Plugins\\EnderalSteam.ini.");
} }
@ -66,30 +66,30 @@ namespace Achievements {
void AchievementHolder::onUserStatsReceived(UserStatsReceived_t * event) { void AchievementHolder::onUserStatsReceived(UserStatsReceived_t * event) {
try { try {
std::string msg = "User id: " + std::to_string(event->m_steamIDUser.ConvertToUint64()) + ", game id: " + std::to_string(event->m_nGameID) + ", success state: " + std::to_string(event->m_eResult); std::string msg = "User id: " + std::to_string(event->m_steamIDUser.ConvertToUint64()) + ", game id: " + std::to_string(event->m_nGameID) + ", success state: " + std::to_string(event->m_eResult);
logger::info(msg.c_str()); logger::info("{}", msg.c_str());
uint32 achievementCount = this->stats->GetNumAchievements(); uint32 achievementCount = this->stats->GetNumAchievements();
msg = "There are " + std::to_string(achievementCount) + " achievements"; msg = "There are " + std::to_string(achievementCount) + " achievements";
logger::info(msg.c_str()); logger::info("{}", msg.c_str());
} }
catch (const std::exception& ex) { catch (const std::exception& ex) {
std::string msg = "Exception during steam callback: onUserStatsReceived. Failed to print data: " + std::string(ex.what()); std::string msg = "Exception during steam callback: onUserStatsReceived. Failed to print data: " + std::string(ex.what());
logger::info(msg.c_str()); logger::info("{}", msg.c_str());
} }
} }
bool AchievementHolder::setAchievementUnlocked(const char * achievementName) bool AchievementHolder::setAchievementUnlocked(const char * achievementName)
{ {
std::string msg = "Unlocking achievement: " + std::string(achievementName); std::string msg = "Unlocking achievement: " + std::string(achievementName);
logger::info(msg.c_str()); logger::info("{}", msg.c_str());
bool success = this->stats->SetAchievement(achievementName); bool success = this->stats->SetAchievement(achievementName);
if (!success) { if (!success) {
logger::error("Error while unlocking achievement"); logger::error("{}", "Error while unlocking achievement");
return false; return false;
} }
success = this->stats->StoreStats(); success = this->stats->StoreStats();
if (!success) { if (!success) {
logger::error("Error while storing unlocked achievement"); logger::error("{}", "Error while storing unlocked achievement");
} }
return success; return success;
} }

View File

@ -19,11 +19,9 @@ auto EventListener::ProcessEvent(
-> RE::BSEventNotifyControl -> RE::BSEventNotifyControl
{ {
if (a_event->opening && a_event->menuName == "Main Menu") { if (a_event->opening && a_event->menuName == "Main Menu") {
SKSE::GetTaskInterface()->AddTask([]() {
logger::info("Main menu opened, trying to init steam API.");
Achievements::startSteam();
});
RE::UI::GetSingleton()->RemoveEventSink<RE::MenuOpenCloseEvent>(GetSingleton()); RE::UI::GetSingleton()->RemoveEventSink<RE::MenuOpenCloseEvent>(GetSingleton());
logger::info("{}", "Main menu opened, trying to init steam API.");
Achievements::startSteam();
} }
return RE::BSEventNotifyControl::kContinue; return RE::BSEventNotifyControl::kContinue;

View File

@ -24,15 +24,6 @@ namespace {
spdlog::set_default_logger(std::move(log)); spdlog::set_default_logger(std::move(log));
spdlog::set_pattern("[%l] %v"s); spdlog::set_pattern("[%l] %v"s);
} }
void InitializeMessaging()
{
GetMessagingInterface()->RegisterListener([](MessagingInterface::Message* message) {
if (message->type == MessagingInterface::kPostLoad) {
EventListener::Install();
}
});
}
} }
SKSEPluginLoad(const LoadInterface* skse) { SKSEPluginLoad(const LoadInterface* skse) {
@ -46,7 +37,8 @@ SKSEPluginLoad(const LoadInterface* skse) {
logger::info("{} {} is loading...", plugin->GetName(), version); logger::info("{} {} is loading...", plugin->GetName(), version);
Init(skse); Init(skse);
InitializeMessaging();
EventListener::Install();
GetPapyrusInterface()->Register(Papyrus::Bind); GetPapyrusInterface()->Register(Papyrus::Bind);

View File

@ -6,7 +6,7 @@ namespace Papyrus
bool Bind(VM* a_vm) bool Bind(VM* a_vm)
{ {
if (!a_vm) { if (!a_vm) {
logger::critical("couldn't get VM State"sv); logger::critical("{}", "couldn't get VM State"sv);
return false; return false;
} }

View File

@ -11,7 +11,7 @@ namespace Papyrus::PapyrusFunctions
return SteamInstance()->setAchievementUnlocked(achievement.c_str()); return SteamInstance()->setAchievementUnlocked(achievement.c_str());
} else { } else {
RE::DebugNotification(std::format("Achievement unlocked: {}", achievement.c_str()).c_str()); RE::DebugNotification(std::format("Achievement unlocked: {}", achievement.c_str()).c_str());
logger::info(std::format("Achievement unlocked: {}", achievement.c_str()).c_str()); logger::info("{}", std::format("Achievement unlocked: {}", achievement.c_str()).c_str());
return true; return true;
} }
} }
@ -19,6 +19,6 @@ namespace Papyrus::PapyrusFunctions
inline void Bind(VM& a_vm) inline void Bind(VM& a_vm)
{ {
BIND(CallUnlockAchievement); BIND(CallUnlockAchievement);
logger::info("Registered CallUnlockAchievement"sv); logger::info("{}", "Registered CallUnlockAchievement"sv);
} }
} }

View File

@ -73,6 +73,6 @@ inline void LoadINI(std::map<std::string, bool>* settings, const char* iniPath)
} }
} catch (const std::exception& e) { } catch (const std::exception& e) {
logger::error(e.what()); logger::error("{}", e.what());
} }
} }

View File

@ -1,15 +1,15 @@
{ {
"registries": [ "registries": [
{ {
"kind": "git", "kind": "git",
"repository": "https://gitlab.com/colorglass/vcpkg-colorglass", "repository": "https://gitlab.com/colorglass/vcpkg-colorglass",
"baseline": "5a11d06fd1b2d7cd6339d6aea48d450309e89cc1", "baseline": "bbd09a56b951d86dec3ea484ec183d00b013b486",
"packages": [ "packages": [
"commonlibsse-ng", "commonlibsse-ng",
"gluino", "gluino",
"script-extender-common", "script-extender-common",
"skse" "skse"
] ]
} }
] ]
} }

View File

@ -1,7 +1,7 @@
{ {
"$schema": "https://raw.githubusercontent.com/microsoft/vcpkg/master/scripts/vcpkg.schema.json", "$schema": "https://raw.githubusercontent.com/microsoft/vcpkg/master/scripts/vcpkg.schema.json",
"name": "enderal-se-steam", "name": "enderal-se-steam",
"version-string": "1.0.0", "version-string": "1.0.1",
"port-version": 0, "port-version": 0,
"description": "Enderal SE Steam Support", "description": "Enderal SE Steam Support",
"homepage": "https://eddoursul.win/mods/enderal-se/", "homepage": "https://eddoursul.win/mods/enderal-se/",

View File

@ -10,11 +10,11 @@ Auto State Default
Debug.Trace(self + ", OnEffectStart (Default): akTarget = " + akTarget + "; akCaster = " + akCaster) Debug.Trace(self + ", OnEffectStart (Default): akTarget = " + akTarget + "; akCaster = " + akCaster)
FrozenActor = akCaster FrozenActor = akCaster
If FrozenActor && FrozenActor.GetAVPercentage("Health") > 0.1 && FrozenActor.HasPerk(_00E_FrozenPerk) == False If FrozenActor && FrozenActor.GetActorValuePercentage("Health") > 0.1 && FrozenActor.HasPerk(_00E_FrozenPerk) == False
_00E_A1_ArcticWindFreezeM.Play(akTarget) _00E_A1_ArcticWindFreezeM.Play(akTarget)
FrozenActor.AddPerk(_00E_FrozenPerk) FrozenActor.AddPerk(_00E_FrozenPerk)
FrozenActor.EnableAI(False) FrozenActor.EnableAI(False)
FrozenActor.SetAV("Paralysis", 1.0) ; Prevents movement and attacking. FrozenActor.SetActorValue("Paralysis", 1.0) ; Prevents movement and attacking.
GoToState("Frozen") GoToState("Frozen")
EndIf EndIf
@ -120,7 +120,11 @@ EndState
State Finished State Finished
; Do nothing Event OnEffectFinish(Actor akTarget, Actor akCaster)
FrozenActor.SetActorValue("Paralysis", 0)
FrozenActor.EnableAI(True)
FrozenActor.RemovePerk(_00E_FrozenPerk)
EndEvent
EndState EndState
@ -167,7 +171,7 @@ EndFunction
Function EnableTargetAI() Function EnableTargetAI()
If bReenabledAI == False If bReenabledAI == False
bReenabledAI = True bReenabledAI = True
FrozenActor.SetAV("Paralysis", 0) FrozenActor.SetActorValue("Paralysis", 0)
;/ If PositionMarkerRef ;/ If PositionMarkerRef
FrozenActor.MoveTo(PositionMarkerRef) FrozenActor.MoveTo(PositionMarkerRef)
EndIf /; EndIf /;

View File

@ -281,25 +281,24 @@ Function StartSC06()
FS_NQR05_SC06_ActivationTriggerREF.Disable() FS_NQR05_SC06_ActivationTriggerREF.Disable()
; transform the player back if currently a werewolf, due to being used as actor in scenes in SC06 ; transform the player back if currently a werewolf, due to being used as actor in scenes in SC06
_FS_TheriantrophistControlQuest.TransformBackIfTransformed() _FS_TheriantrophistControlQuest.TransformBackIfTransformed()
FS_NQR05_SC06_FatherArrival.ForceStart()
FadeToBlackIMOD.Apply()
Wait(2.5)
FadeToBlackHoldIMOD.ApplyCrossFade() FadeToBlackHoldIMOD.ApplyCrossFade()
Timescale.SetValue(0.01) ; preventing the time from advancing during this lengthy scene
Levelsystem.SkipTimeToHour(18.75)
_00E_FS_NQR05_SiteWeatherSnow.ForceActive(True)
Levelsystem.SetAllowIdleChatter(false) Levelsystem.SetAllowIdleChatter(false)
Timescale.SetValue(0.1) ; preventing the time from advancing during this lengthy scene
Levelsystem.SkipTimeToHour(18.75)
Wait(2.5)
_00E_FS_NQR05_SiteWeatherSnow.ForceActive(True)
FS_NQR05_SC05_GateREF.SetOpen(False) FS_NQR05_SC05_GateREF.SetOpen(False)
FS_NQR05_SC05_GateREF.BlockActivation(True) FS_NQR05_SC05_GateREF.BlockActivation(True)
_00E_TeleportGlobal.SetValueInt(1) _00E_TeleportGlobal.SetValueInt(1)
PlayerREF.MoveTo(FS_NQR05_SC06_WallMarkerREF) PlayerREF.MoveTo(FS_NQR05_SC06_WallMarkerREF)
Game.DisablePlayerControls() Game.DisablePlayerControls()
FS_NQR05_SC06_FatherArrival.ForceStart()
EndFunction EndFunction
Function FadeBack() Function FadeBack()
; Called in Phase 2, FS_NQR05_SC06_FatherArrival ; Called in Phase 1, FS_NQR05_SC06_FatherArrival
; FadeToBlackHoldIMOD.Remove() ; FadeToBlackHoldIMOD.Remove()
; FS_NQR05_ZaraahREF.Enable() ; FS_NQR05_ZaraahREF.Enable()
FadeToBlackBackIMOD.ApplyCrossFade() FadeToBlackBackIMOD.ApplyCrossFade()

View File

@ -1,7 +1,7 @@
Scriptname _00E_PlayerSetUpScript extends ObjectReference Scriptname _00E_PlayerSetUpScript extends ObjectReference
{Initializes all the necessary Quests, maintains the player, contains various OnPlayerLoadGame() failsafes. This script is important for proper updating, do not overwrite it.} {Initializes all the necessary Quests, maintains the player, contains various OnPlayerLoadGame() failsafes. This script is important for proper updating, do not overwrite it.}
Float Property CURRENT_PATCH_VERSION = 2.12 AutoReadOnly Float Property CURRENT_PATCH_VERSION = 2.124 AutoReadOnly
;===================================================================================== ;=====================================================================================
@ -170,6 +170,17 @@ Function Update_212()
PlayerREF.AddPerk(Game.GetFormFromFile(0x14CF9, "Enderal - Forgotten Stories.esm") as Perk) ; _00E_SE_2_0_12_UpgradePerk PlayerREF.AddPerk(Game.GetFormFromFile(0x14CF9, "Enderal - Forgotten Stories.esm") as Perk) ; _00E_SE_2_0_12_UpgradePerk
EndFunction EndFunction
Function Update_212_hotfix1()
Quest rNQ05 = Game.GetFormFromFile(0x1C82F, "Enderal - Forgotten Stories.esm") as Quest
if rNQ05.GetCurrentStageID() >= 30 && rNQ05.GetCurrentStageID() < 40
PlayerREF.AddPerk(Game.GetFormFromFile(0x14CF6, "Enderal - Forgotten Stories.esm") as Perk) ; _00E_FS_NQ05_CraftPotionPerk
endif
Quest rNQ07 = Game.GetFormFromFile(0x1CA09, "Enderal - Forgotten Stories.esm") as Quest
if rNQ07.GetCurrentStageID() == 115
PlayerREF.AddPerk(Game.GetFormFromFile(0x14CF7, "Enderal - Forgotten Stories.esm") as Perk) ; _00E_FS_NQ07_CraftPotionPerk
endif
EndFunction
;===================================================================================== ;=====================================================================================
; ALL UPDATES ; ALL UPDATES
@ -267,6 +278,9 @@ Function Maintenance()
If fPatchVersion < 2.12 If fPatchVersion < 2.12
Update_212() Update_212()
EndIf EndIf
If fPatchVersion < 2.121
Update_212_hotfix1()
EndIf
fPatchVersion = CURRENT_PATCH_VERSION fPatchVersion = CURRENT_PATCH_VERSION
endif endif

View File

@ -134,27 +134,59 @@ endFunction
Function DisableDialogueQuitting() Global Function DisableDialogueQuitting() Global
{Disables the TAB Key during dialogue. Resets automatically upon dialogue exit via Goodbye.} {Disables the TAB Key during dialogue. Resets automatically upon dialogue exit via Goodbye.}
if UI.IsMenuOpen("Dialogue Menu") if ! UI.IsMenuOpen("Dialogue Menu")
UnregisterDialogQuitKey()
return
endif
if UI.GetBool("Dialogue Menu", "_root.DialogueMenu_mc.bEnableTab") != true
; Suspected non-Enderal dialoguemenu.swf replacer, rechecking value in order to be sure.
UI.InvokeBool("Dialogue Menu", "_root.DialogueMenu_mc.SetVariable", True)
if UI.GetBool("Dialogue Menu", "_root.DialogueMenu_mc.bEnableTab") != true if UI.GetBool("Dialogue Menu", "_root.DialogueMenu_mc.bEnableTab") != true
; Suspected non-Enderal dialoguemenu.swf replacer, rechecking value in order to be sure. Debug.Notification("Detected incompatible dialoguemenu.swf!")
UI.InvokeBool("Dialogue Menu", "_root.DialogueMenu_mc.SetVariable", True)
if UI.GetBool("Dialogue Menu", "_root.DialogueMenu_mc.bEnableTab") != true
Debug.Notification("Detected incompatible dialoguemenu.swf!")
endif
endif endif
endif endif
UI.InvokeBool("Dialogue Menu", "_root.DialogueMenu_mc.SetVariable", False) UI.InvokeBool("Dialogue Menu", "_root.DialogueMenu_mc.SetVariable", False)
Quest Levelsystem = Game.GetForm(0x10AA2) as Quest
Levelsystem.RegisterForKey(1) ; Escape
Levelsystem.RegisterForKey(15) ; Tab
int iControllerKey = Input.GetMappedKey("Tween Menu", 0x02)
if iControllerKey > -1
Levelsystem.RegisterForKey(iControllerKey) ; Controller
endif
Levelsystem.RegisterForMenu("Dialogue Menu")
EndFunction EndFunction
Function EnableDialogueQuitting() Global Function EnableDialogueQuitting() Global
{Disables the TAB Key during dialogue. Resets automatically upon dialogue exit via Goodbye.} {Disables the TAB Key during dialogue. Resets automatically upon dialogue exit via Goodbye.}
UI.InvokeBool("Dialogue Menu", "_root.DialogueMenu_mc.SetVariable", True) UI.InvokeBool("Dialogue Menu", "_root.DialogueMenu_mc.SetVariable", True)
UnregisterDialogQuitKey()
EndFunction EndFunction
function UnregisterDialogQuitKey() Global
Quest Levelsystem = Game.GetForm(0x10AA2) as Quest
Levelsystem.UnregisterForAllKeys()
Levelsystem.UnregisterForMenu("Dialogue Menu")
endfunction
Event OnKeyDown(Int KeyCode)
if UI.IsMenuOpen("Dialogue Menu")
if ! UI.IsMenuOpen("MessageBoxMenu") && ! UI.GetBool("Dialogue Menu", "_root.DialogueMenu_mc.bEnableTab")
if (Game.GetFormFromFile(0x163D, "Update.esm") as Message).Show() == 1
Game.QuitToMainMenu()
endif
endif
else
UnregisterDialogQuitKey()
endif
EndEvent
Function RefreshFace() Global Function RefreshFace() Global
String facegen = "bUseFaceGenPreprocessedHeads:General" String facegen = "bUseFaceGenPreprocessedHeads:General"
@ -937,6 +969,8 @@ Event OnMenuClose(String MenuName)
If MenuName == "Book Menu" If MenuName == "Book Menu"
MTToRemove.Remove() MTToRemove.Remove()
UnregisterForMenu("Book Menu") UnregisterForMenu("Book Menu")
elseif MenuName == "Dialogue Menu"
UnregisterDialogQuitKey()
EndIf EndIf
EndEvent EndEvent
@ -1366,6 +1400,7 @@ Message Property _00E_Levelsystem_sEldritchBloodAttackTargetMarked Auto
Message Property _00E_Levelsystem_sEldritchBloodAttackVictimMarkingRemoved Auto Message Property _00E_Levelsystem_sEldritchBloodAttackVictimMarkingRemoved Auto
Message Property _00E_Levelsystem_sEldritchBloodVictimMarkingRemoved Auto Message Property _00E_Levelsystem_sEldritchBloodVictimMarkingRemoved Auto
Message Property _00E_Levelsystem_sGhostwalkEnemyTooCloseToWall Auto Message Property _00E_Levelsystem_sGhostwalkEnemyTooCloseToWall Auto
Message Property _00E_DialogueQuitGame Auto
ObjectReference Property PlayerVisionStartMarker Auto Hidden ObjectReference Property PlayerVisionStartMarker Auto Hidden
ObjectReference Property PlayerVisionFailsaveMarker Auto Hidden ObjectReference Property PlayerVisionFailsaveMarker Auto Hidden

View File

@ -381,9 +381,9 @@ Function _UpdateNQ11(Potion newPotion)
If bDoneChymikum && bDoneDarkBlood If bDoneChymikum && bDoneDarkBlood
_SetNewStageNQ11(17) _SetNewStageNQ11(17)
ElseIf bDoneChymikum
_SetNewStageNQ11(15)
ElseIf bDoneDarkBlood ElseIf bDoneDarkBlood
_SetNewStageNQ11(15)
ElseIf bDoneChymikum
_SetNewStageNQ11(16) _SetNewStageNQ11(16)
EndIf EndIf
EndIf EndIf

Binary file not shown.

Binary file not shown.