Jump to content

Fixing manually cre file "cannot convert lev_max or %lev_max% to an integer"


Recommended Posts

ERROR: cannot convert lev_max or %lev_max% to an integer

SCS's 'mage_edits_main' function has encountered a file it doesn't know how to patch, ELDOTH.CRE (probably the file was broken by a previous mod). The error message was 'Not_found'. SCS has skipped it and continued with installation, but this may cause instabilities.

 

How do you repair cre file level max. I tried to manipulate the XP/Power Level but no luck there.

The SCS Smarter Mages installs with warnings and this is the only warning there. Since Eldoth.cre is only a joinable npc his AI shouldn't matter that much but still I like my weidu install to be clean by the book.

Link to comment

You can check which mods modified a file.

weidu --change-log eldoth.cre

Maybe that can help people help you ?

Also, you're missing a little bit of information. I can *guess* it's about a BG1 install, but oBG ? BG1EE ? And maybe maybe a weidu.log

setup-stratagems.debug would be nice too but it can get very big.

Then, is that SCS 34.3 ?

Finally, if it's the only creature that fails, it shouldn't create too many instability (uh, I hope?)...

Link to comment

Attempting to trace issue ...

lev_max appears in the allocate_mage_spells function. Run "determine_number_of_spells" on the creature (returning nine values), and define lev_max to be the highest index with a positive number - basically, the highest level spell that the creature can cast. It'll fail to define lev_max if determine_number_of_spells returns all zeros.

determine_number_of_spells is defined in caster_shared.tph, and simply reads the appropriate 2da tables to say how many spells a creature of this level should have. Eldoth, before any mods, is a level 3 bard who has two level 1 spell slots and nothing of any higher levels.

But also, there's a toggle before we get to the main edits; if cre_is_PC returns 1, don't bother. This is a test for player characters and recruitable NPCs. Eldoth should be excluded by it.

So, how could this go wrong? I'm pretty sure the function to build a mage script will choke on a level 1 bard, since they have no spell slots. That's actually probably something worth fixing; there's no need to build a detailed mage script for this creature that isn't actually a spellcaster, but having something that isn't a warning/error would be good.

But that's not enough to cause this problem. Previous mods had to do at least two things:

- Lower Eldoth's level so he doesn't have any spell slots.

- Remove Eldoth from the list of recruitable NPCs that SCS builds; this is tested by parsing PDIALOG.2DA and comparing the creature's script name.

Link to comment
Quote

So, how could this go wrong? I'm pretty sure the function to build a mage script will choke on a level 1 bard, since they have no spell slots. That's actually probably something worth fixing; there's no need to build a detailed mage script for this creature that isn't actually a spellcaster, but having something that isn't a warning/error would be good.

Garrick is spellless bard too and mod added fail wielding Will O'Hara too they don't cause problems with SCS Smarter Mage AI component.

 


 

Quote

 

But that's not enough to cause this problem. Previous mods had to do at least two things:

- Lower Eldoth's level so he doesn't have any spell slots.

- Remove Eldoth from the list of recruitable NPCs that SCS builds; this is tested by parsing PDIALOG.2DA and comparing the creature's script name.

 

I use Vanishing of Skie mod:

https://downloads.weaselmods.net/download/the-vanishing-of-skie-silvershield/

Quote

To keep the balance, Eldoth and Skie both start at level 1, however, to sweeten your game spiced with Eldoth's vile plans and Skie's bitter whining, she received a personal armor, which makes it possible for her to help the team a bit more.

But I did AI components installs previously without any issue/warning or error after installing this mod so it's not related to this mod.

My pdialog.2da is a mess and I don't see any BG1 NPCs. I use EET 'platform'.

 

 
Spoiler

 

[spoiler]


2DA                    V1.0
multig
                       POST_DIALOG_FILE       JOIN_DIALOG_FILE       DREAM_SCRIPT_FILE      25POST_DIALOG_FILE     25JOIN_DIALOG_FILE     25DREAM_SCRIPT_FILE    25OVERRIDE_SCRIPT_FILE
AERIE                  AERIEP                 AERIEJ                 AERIED                 AERIE25P               AERIE25J               AERIE25D               aeri25
ANOMEN                 ANOMENP                ANOMENJ                ANOMEND                ANOME25P               ANOME25J               ANOME25D               anom25
CERND                  CERNDP                 CERNDJ                 CERNDD                 CERND25P               CERND25J               CERNDD                 cern25
EDWIN                  EDWINP                 EDWINJ                 EDWIND                 EDWIN25P               EDWIN25J               EDWIND                 edwi25
HAERDALIS              HAERDAP                HAERDAJ                HAERDAD                HAERD25P               HAERD25J               HAERDAD                haer25
IMOEN2                 IMOEN2P                IMOEN2J                IMOEN2D                IMOEN25P               IMOEN25J               IMOEN2D                imoe25
JAHEIRA                JAHEIRAP               JAHEIRAJ               JAHEIRAD               JAHEI25P               JAHEI25J               JAHEI25D               jahe25
JAN                    JANP                   JANJ                   JAND                   JAN25P                 JAN25J                 JAND                   jan25
KELDORN                KELDORP                KELDORJ                KELDORD                KELDO25P               KELDO25J               KELDORD                keld25
KORGAN                 KORGANP                KORGANJ                KORGAND                KORGA25P               KORGA25J               KORGAND                korg25
MAZZY                  MAZZYP                 MAZZYJ                 MAZZYD                 MAZZY25P               MAZZY25J               MAZZYD                 mazz25
MINSC                  MINSCP                 MINSCJ                 MINSCD                 MINSC25P               MINSC25J               MINSCD                 mins25
NALIA                  NALIAP                 NALIAJ                 NALIAD                 NALIA25P               NALIA25J               NALIAD                 nali25
VALYGAR                VALYGARP               VALYGARJ               VALYGARD               VALYG25P               VALYG25J               VALYGARD               valy25
VICONIA                VICONIP                VICONIJ                VICOND                 VICON25P               VICON25J               VICON25D               vico25
YOSHIMO                YOSHP                  YOSHJ                  YOSHD                  YOSHP                  YOSHJ                  YOSHD                  yosh25
TTXAN                  TTXANP                 TTXANJ                 TTXAND                 TTXANP                 TTXANJ                 TTXAND                 ***
TTBRAN                 TTBRANP                TTBRANJ                TTBRAND                TTBRANP                TTBRANJ                TTBRAND                ***
TTIMOEN                TTIMOENP               TTIMOENJ               TTIMOEND               TTIMOENP               TTIMOENJ               TTIMOEND               ***
TTJAHEIR               TTJAHEIP               TTJAHEIJ               TTJAHEID               TTJAHEIP               TTJAHEIJ               TTJAHEID               ***
TTMINSC                TTMINSCP               TTMINSCJ               TTMINSCD               TTMINSCP               TTMINSCJ               TTMINSCD               ***
SAREVOK                SAREV25P               SAREV25J               SAREV25D               SAREV25P               SAREV25J               SAREV25D               ***
IDIOT01                IDIOTP                 IDIOTP                 ***                    IDIOTP                 IDIOTP                 ***                    ***
RASAAD                 RASAADP                RASAADJ                RASAADD                RASAA25P               RASAA25J               RASAA25D               RASA25
WILSON                 WILSONP                WILSONJ                WILSOND                WILSO25P               WILSO25J               WILSO25D               WILSON25
DORN                   DORNP                  DORNJ                  DORND                  DORN25P                DORN25J                DORN25D                DORN25
OHHFAK                 OHHFAK                 OHHFAK                 OHHFAKD                ****                   ****                   ****                   OHHFAK25
HEXXAT                 HEXXATP                HEXXATJ                HEXXATD                HEXXA25P               HEXXA25J               HEXXA25D               HEXXA25
NEERA                  NEERAP                 NEERAJ                 NEERAD                 NEERA25P               NEERA25J               NEERA25D               NEER25
FABIO                  BHFABIOP               BHFABIOJ               ***                    ***                    ***                    ***                    ***
Valen                  ValenP                 ValenJ                 ValenD                 ValenP                 ValenJ                 Valen                  Valen
K#SHEENA               SHEENAP                SHEENAJ                SHEENAD                SHEENAP                SHEENAJ                SHEENAD                K#SHEENA
K#SHEEN2               SHEENAP                SHEENAJ                SHEENAD                SHEENAP                SHEENAJ                SHEENAD                K#SHEENA
M#AMBER                M#AMBERP               M#AMBERJ               M#AMBERD               M#AMB25P               M#AMB25J               M#AMB25D               m#amb25
MWAriena               MWArnP                 MWArnJ                 MWArnD                 MWArnP25               MWArnJ25               MWArnD25               MWArn25
RCHLOE                 RCHLOEP                RCHLOEJ                CHLOED                 RCHLOEP                RCHLOEJ                RCHLOE25D              ***
HGSLV01                ***                    EhlastJ                ***                    EhlastP                EhlastJ                EhlastD
FHFRN                  FHFRNP                 FHFRNJ                 FHFRND                 FHF25P                 FHF25J                 FHF25D                 FHF25
MWKido                 MWKidP                 MWKidJ                 MWKidD                 MWKidP25               MWKidJ25               MWKidD25               MWKid25
Kim                    KimP                   KimJ                   KimD                   KimP                   KimJ                   KimD                   Kim
KINDREK                KINDREKP               KINDREKJ               KINDREKD               KIND25P                KIND25J                KINDR25D               KINDRE25
PMOrel                 PMOrelP                PMOrelJ                PMOrelD                PMOrelP                PMOrelJ                PMOrelD                PM_Orel
k-rose                 k-roseP                k-roseJ                k-roseD                k-rose25P              k-rose25J              k-rose25D              k-rose25
SAERILETH              SAERILEP               SAERILEJ               SAERILED               SAERI25P               SAERI25J               SAERI25D               SAERIL25
D#Silver               D#SILVP                D#SILVER
D#Sbansh               D#SbansP               D#Sbansh               D#Sbansh               D#SbansP               D#Sbansh               D#Sbansh               D#Sbansh
TASHIA                 TASHIAP                TASHIAJ                TASHIAD                TASHI25P               TASHI25J               TASHI25D               tash25
SELENCE                SELENCEP               SELENCEJ               ***                    ***                    ***                    ***                    ***
CHARLOTT               CHARLOTP               CHARLOTJ               ***                    ***                    ***                    ***                    ***
BOLIVAR                BOLIVARP               BOLIVARJ               ***                    ***                    ***                    ***                    ***
TOMASTM                TOMASTOP               TOMASTOJ               ***                    ***                    ***                    ***                    ***
Wulfg2                 Wulfg2P                Wulfg2J                ***                    Wulfg2P                Wulfg2J                ***                    ***
Reg2                   Reg2P                  Reg2J                  ***                    Reg2P                  Reg2J                  ***                    ***
Driz2                  Driz2P                 Driz2J                 ***                    Driz2P                 Driz2J                 ***                    ***
Brue2                  Brue2P                 Brue2J                 ***                    Brue2P                 Brue2J                 ***                    ***
Catt2                  Catt2P                 Catt2J                 ***                    Catt2P                 Catt2J                 ***                    ***
Enter2                 Enter2P                Enter2J                ***                    Enter2P                Enter2J                ***                    ***
Jarlax2                Jarlax2P               Jarlax2J               ***                    Jarlax2P               Jarlax2J               ***                    ***
Tapio                  TapioP                 TapioJ                 ***                    TapioP                 TapioJ                 ***                    ***
Randall                RandallP               RandallJ               ***                    RandallP               RandallJ               ***                    ***
Alissa1                Alissa1P               Alissa1J               ***                    Alissa1P               Alissa1J               ***                    ***
Mordrg                 MordrgP                MordrgJ                ***                    MordrgP                MordrgJ                ***                    ***
IYLOS                  LK#IYSP                LK#IYSJ                LK#IYSD                LK#IYLP                LK#IYLJ                LK#IYTD                LK#IYLO
DSBARDO                BARDOP                 BARDOJ                 ***                    ***                    ***                    ***                    ***
DSBUB                  BUBP                   BUBJ                   ***                    ***                    ***                    ***                    ***
CONCHOBHAIR            CONCHOP                CONCHOJ                ***                    ***                    ***                    ***                    ***
CUCHOINNEACH           CUCHOINP               CUCHOINJ               ***                    ***                    ***                    ***                    ***
FERTHGIL               FERTHP                 FERTHJ                 ***                    ***                    ***                    ***                    ***
JETLAYA                JETLAP                 JETLAJ                 ***                    ***                    ***                    ***                    ***
KEIRIA                 KEIRIP                 KEIRIJ                 ***                    ***                    ***                    ***                    ***
SKEEZER                SKEEZP                 SKEEZJ                 ***                    ***                    ***                    ***                    ***
THORFINN               THORFP                 THORFJ                 ***                    ***                    ***                    ***                    ***
WILL                   WILLP                  WILLJ                  ***                    ***                    ***                    ***                    ***
CLFHSFNX               CLFHSFNP               CLFHSFNJ               CLFHSFND
Hubelpot               sc#hubp                sc#hubj                sc#hubd                sc#hb25p               sc#hb25j               sc#hb25d               sc#hub25
SOLA                   SOLA                   SOLA                   SOLA                   SOLA                   SOLA                   SOLA                   SOLA
SOLAUFEIN              SOLA                   SOLA                   SOLA                   SOLA                   SOLA                   SOLA                   SOLA
J#Kelsey               J#KlsyP                J#KlsyJ                J#KlsyD                J#Kls25P               J#Kls25J               J#Kls25D               J#Klsy25
Keto                   FWKetoP                FWKetoJ                KetoD                  FWKet25P               FWKet25J               Keto25D                Keto25
NATH                   FHNATP                 FHNATJ                 FHNATD                 FHN25P                 FHN25J                 FHN25D                 FHN25
C#Brage                C#BrageP               C#BrageJ               C#BrageD               C#BrageP               C#BrageJ               C#Brg25D               C#Brag25
rh#Adrian rh#adrP rh#adrj rh#adrD rh#ad25p rh#ad25j rh#ad25d rh#ad25
CMALORA      CMALORAP           CMALORAJ          CMALORAD       CMALO25P           CMALO25J              CMALO25D              CMALO25
ADANGEL      ADANGELP           ADANGELJ          ADANGELD       ADANG25P           ADANG25J              ADANG25D              ADANG25
Anishai AnishaiP AnishaiJ AnishaiD AnishaiP AnishaiJ AnishaiD Anishai25
A#MURN A#MURNP A#MURNJ A#MURND
ACBre ACBreP ACBreJ ACBreD ACBre25P ACBre25J ACBre25D ACBre25
T2VAL T2VALP T2VALJ T2VALD
RH#ISRA RH#ISRAP RH#ISRAJ RH#ISRAD
GV#DAVE GV#DAVEP GV#DAVEJ GV#DAVED 
GV#FLAR GV#FLARP GV#FLARJ GV#FLARD 
GV#LITT GV#LITTP GV#LITTJ GV#LITTD 
GV#MOID GV#MOIDP GV#MOIDJ GV#MOIDD 
GV#VYND GV#VYNDP GV#VYNDJ GV#VYNDD 
GV#ALAN
GV#BRIA
GV#JEFF
GV#KELL
GV#PAM
GV#PHIL
GV#THUN
GV#SIGU
GV#KRAK
GV#MARI
GV#WINK
GV#PIER
thalan
FHLSEB FHLSEBP FHLSEBJ FHLSEBD FHLS25P FHLS25J FHLS25D FHLS25
FHLAND FHLANDP FHLANDJ FHLANDD FHLA25P FHLA25J FHLA25D FHLA25
Haiass HaiassP HaiassJ HaiassD Haiass25 Haiass25P Haiass25J Haiass25D
Kova   Z#kovaP Z#kovaJ Z#kovaD Z#kv25P Z#kovaJ Z#kv25D Z#kova
Kiyone Z#kiyoP Z#kiyoJ Z#kiyoD Z#ky25P Z#kiyoJ Z#ky25D Z#kiyone
Arath LK#ARATP LK#ARATJ LK#ARATD LK#AR25P LK#AR25J LK#AR25D LK#AR25
YxYve YxYveP YxYveJ YxYveD YxYv25P YxYv25J YxYv25D YxYv25
Varshoon VxVarP VxVarJ VxVarD VxVar25P VxVar25J VxVar25D VxVar25
L#BRIST L#BRISTP L#BRISTJ L#BRISTD
L#WALAH L#WALAHP L#WALAHJ L#WALAHD
L#2WALAH L#2WHP L#2WHJ L#2WHD L#2WH25P L#2WH25J L#2WH25D L#2WH25
l#2verr l#2verrP l#2verrJ l#2verrD l#2ve25P l#2ve25J l#2ve25D l#2ve25
l#2phal l#2phalP l#2phalJ l#2phalD l#2ph25P l#2ph25J l#2ph25D l#2ph25
QUAYLE 1xQUAYP 1xQUAYJ 1xQUAYD 1xQU25P 1xQU25J 1xQU25D 1xQU25
L#KHALID L#KHAP L#KHAJ L#KHAD L#KHA25P L#KHA25J L#KHA25D L#KHA25
g#tyris     g#tyrisp     g#tyrisj    g#tyrisd  g#trs25p     g#trs25j   g#trs25d   g#tyrs25
K#Sarah K#SarahP K#SarahJ K#SarahD K#Sar25P K#Sar25J K#Sar25D K#Sara25
O#Tiax        O#TiaxP             O#TiaxJ            O#TiaxD             O#Tia25P             O#Tia25J             O#Tia25D       O#Tia25S
LRIRENIC     Jonel25P           Jonel25J          Jonel25D       Jonel25P           Jonel25J              Jonel25D              Jonel25
LK#YESLK LK#YESP LK#YESJ LK#YESD LK#YE25P LK#YE25J LK#YE25D LK#YES25
l#2sdskie l#2sdskP l#2sdskJ l#2sdskD l#2sd25P l#2sd25J l#2sd25D l#2sd25
L#2EDDRD L#2EDP L#2EDJ L#2EDD L#2ED25P L#2ED25J L#2ED25D L#2ED25
O#Bran        O#BranP             O#BranJ            O#BranD             O#Bra25P             O#Bra25J             O#Bra25D       O#Bra25S
O#Coran        O#CoranP             O#CoranJ            O#CoranD             O#Cor25P             O#Cor25J             O#Cor25D       O#Cor25S
C#Solaufein     C#SolauP     C#SolauJ     C#SolauD     C#SolauP     C#SolauJ         C#SolauD     C#Solau
P#KIVAN P#KIVP P#KIVJ P#KIVD P#KI25P P#KI25J P#KI25D P#KI25
P#DEHER P#DEHP P#DEHJ P#DEHD P#DE25P P#DE25J P#DE25D P#DE25
X3mily        X3milyP    X3milyJ X3milyD
X3Helga X3HelgaP X3HelgaJ X3HelgaD
X3Kale X3KaleP X3KaleJ X3KaleD
X3Rec X3RecP X3RecJ X3RecD
X3VIEN X3VienP X3VienJ X3vienD
C0Aura        C0AuraP    C0AuraJ    C0AuraD
T#DACE T#DACEP T#DACEJ T#DACED T#DAC25P T#DAC25J T#DAC25D T#DAC25
NINDE LK#NINDP LK#NINDJ LK#NIND LK#NI25P LK#NI25J LK#NI25D LK#NI25
!SARTOB !SARP !SARJ !SARD !SAR25P !SAR25J !SAR25D !SARTOB
O#XAN        O#XANP             O#XANJ            O#XAND             O#XAN25P             O#XAN25J             O#XAN25D       O#XAN25S
P_Dusk        P_DuskP             P_DuskJ            P_DuskD             P_Dus25P             P_Dus25J             P_Dus25D       P_Dus25S
b!gavin2    b!gavp     b!gavj     b!gavd     b!gav25p     b!gav25j     b!gav25d     b!gav25s
Nephele LK#NEPP LK#NEPJ LK#NEPD LK#NE25P LK#NE25J LK#NE25D LK#NE25
L3Petsy L3PetsyP L3PetsyJ L3PetsyD L3Pet25P L3Pet25J L3Pet25D L3Pet25
E3Fade      E3FadeP      E3FadeJ      E3FadeD      E3Fad25P      E3Fad25J      E3Fad25D        E3Fade25
rh#isra2 rh#isrp rh#isrj rh#isrd rh#is25p rh#is25j rh#is25d rh#is25
C0Sirene        C0Sire2P             C0Sire2J            C0Sire2D             C0Sir25P             C0Sir25J        C0Sir25D        C0Sire25
l0will l0willP l0willJ l0willD l0wil25P l0wil25J l0wil25D l0wil25
L#Fou L#FouP L#FouJ L#FouD L#Fou25P L#Fou25J L#Fou25D L#Fou25
C0Paina        C0PainaP             C0PainaJ            C0PainaD             C0Pai25P             C0Pai25J             C0Pai25D       C0Pai25S
X3Emi        X3EmiP             X3EmiJ            X3EmiD             X3Emi25P             X3Emi25J        X3Emi25D        X3Emi25
X3Hel        X3HelP             X3HelJ            X3HelD             X3Hel25P             X3Hel25J        X3Hel25D        X3Hel25
X3Kal        X3KalP             X3KalJ            X3KalD             X3Kal25P             X3Kal25J        X3Kal25D        X3Kal25
X3Reb        X3RebP             X3RebJ            X3RebD             X3Reb25P             X3Reb25J        X3Reb25D        X3Reb25
X3Vie        X3VieP             X3VieJ            X3VieD             X3Vie25P             X3Vie25J        X3Vie25D        X3Vie25

NPCLVLDS.2DA:

2DA V1.0
****
           2          3          4          5          6          7          8          9          10         11         12         13         14         15         16         17         18         19         20         
Kivan      ****       Kivan4     Kivan4     Kivan6     Kivan6     Kivan6     Kivan6     Kivan6     Kivan6     Kivan6     Kivan6     Kivan6     Kivan6     Kivan6     Kivan6     Kivan6     Kivan6     Kivan6     Kivan6     
Alora      ****       ****       ****       Alora6     Alora6     Alora6     Alora6     Alora6     Alora6     Alora6     Alora6     Alora6     Alora6     Alora6     Alora6     Alora6     Alora6     Alora6     Alora6     
Minsc      Minsc2     Minsc4     Minsc4     Minsc6     Minsc7     Minsc7     Minsc7     Minsc7     Minsc7     Minsc7     Minsc7     Minsc7     Minsc7     Minsc7     Minsc7     Minsc7     Minsc7     Minsc7     Minsc7     
Dynaheir   Dynahe2    Dynahe4    Dynahe4    Dynahe6    Dynahe7    Dynahe7    Dynahe7    Dynahe7    Dynahe7    Dynahe7    Dynahe7    Dynahe7    Dynahe7    Dynahe7    Dynahe7    Dynahe7    Dynahe7    Dynahe7    Dynahe7    
Yeslick    ****       ****       Yeslic5    Yeslic5    Yeslic5    Yeslic5    Yeslic5    Yeslic5    Yeslic5    Yeslic5    Yeslic5    Yeslic5    Yeslic5    Yeslic5    Yeslic5    Yeslic5    Yeslic5    Yeslic5    Yeslic5    
Coran      ****       ****       Coran5     Coran5     Coran5     Coran5     Coran5     Coran5     Coran5     Coran5     Coran5     Coran5     Coran5     Coran5     Coran5     Coran5     Coran5     Coran5     Coran5     
Ajantis    ****       Ajanti4    Ajanti4    Ajanti6    Ajanti6    Ajanti6    Ajanti6    Ajanti6    Ajanti6    Ajanti6    Ajanti6    Ajanti6    Ajanti6    Ajanti6    Ajanti6    Ajanti6    Ajanti6    Ajanti6    Ajanti6    
Khalid     Khalid2    Khalid4    Khalid4    Khalid6    Khalid7    Khalid7    Khalid7    Khalid7    Khalid7    Khalid7    Khalid7    Khalid7    Khalid7    Khalid7    Khalid7    Khalid7    Khalid7    Khalid7    Khalid7    
Jaheira    Jaheir2    Jaheir4    Jaheir4    Jaheir6    Jaheir7    Jaheir7    Jaheir7    Jaheir7    Jaheir7    Jaheir7    Jaheir7    Jaheir7    Jaheir7    Jaheir7    Jaheir7    Jaheir7    Jaheir7    Jaheir7    Jaheir7    
Garrick    Garric2    Garric4    Garric4    Garric6    Garric6    Garric6    Garric6    Garric6    Garric6    Garric6    Garric6    Garric6    Garric6    Garric6    Garric6    Garric6    Garric6    Garric6    Garric6    
Safana     ****       Safana4    Safana4    Safana6    Safana7    Safana7    Safana7    Safana7    Safana7    Safana7    Safana7    Safana7    Safana7    Safana7    Safana7    Safana7    Safana7    Safana7    Safana7    
Faldorn    ****       ****       Faldor5    Faldor5    Faldor5    Faldor5    Faldor5    Faldor5    Faldor5    Faldor5    Faldor5    Faldor5    Faldor5    Faldor5    Faldor5    Faldor5    Faldor5    Faldor5    Faldor5    
Branwen    ****       ****       Branwe5    Branwe5    Branwe5    Branwe5    Branwe5    Branwe5    Branwe5    Branwe5    Branwe5    Branwe5    Branwe5    Branwe5    Branwe5    Branwe5    Branwe5    Branwe5    Branwe5    
Quayle     ****       Quayle4    Quayle4    Quayle6    Quayle6    Quayle6    Quayle6    Quayle6    Quayle6    Quayle6    Quayle6    Quayle6    Quayle6    Quayle6    Quayle6    Quayle6    Quayle6    Quayle6    Quayle6    
Xan        ****       Xan4       Xan4       Xan6       Xan6       Xan6       Xan6       Xan6       Xan6       Xan6       Xan6       Xan6       Xan6       Xan6       Xan6       Xan6       Xan6       Xan6       Xan6       
Skie       ****       ****       ****       Skie6      Skie6      Skie6      Skie6      Skie6      Skie6      Skie6      Skie6      Skie6      Skie6      Skie6      Skie6      Skie6      Skie6      Skie6      Skie6      
Eldoth     ****       ****       Eldoth5    Eldoth5    Eldoth5    Eldoth5    Eldoth5    Eldoth5    Eldoth5    Eldoth5    Eldoth5    Eldoth5    Eldoth5    Eldoth5    Eldoth5    Eldoth5    Eldoth5    Eldoth5    Eldoth5    
Xzar       Xzar2      Xzar4      Xzar4      Xzar6      Xzar6      Xzar6      Xzar6      Xzar6      Xzar6      Xzar6      Xzar6      Xzar6      Xzar6      Xzar6      Xzar6      Xzar6      Xzar6      Xzar6      Xzar6      
Montaron   Montar2    Montar4    Montar4    Montar6    Montar6    Montar6    Montar6    Montar6    Montar6    Montar6    Montar6    Montar6    Montar6    Montar6    Montar6    Montar6    Montar6    Montar6    Montar6    
Tiax       ****       Tiax4      Tiax4      Tiax6      Tiax6      Tiax6      Tiax6      Tiax6      Tiax6      Tiax6      Tiax6      Tiax6      Tiax6      Tiax6      Tiax6      Tiax6      Tiax6      Tiax6      Tiax6      
Kagain     Kagain2    Kagain4    Kagain4    Kagain6    Kagain6    Kagain6    Kagain6    Kagain6    Kagain6    Kagain6    Kagain6    Kagain6    Kagain6    Kagain6    Kagain6    Kagain6    Kagain6    Kagain6    Kagain6    
Sharteel   ****       Sharte4    Sharte4    Sharte6    Sharte6    Sharte6    Sharte6    Sharte6    Sharte6    Sharte6    Sharte6    Sharte6    Sharte6    Sharte6    Sharte6    Sharte6    Sharte6    Sharte6    Sharte6    
Edwin      Edwin2     Edwin4     Edwin4     Edwin6     Edwin7     Edwin7     Edwin7     Edwin7     Edwin7     Edwin7     Edwin7     Edwin7     Edwin7     Edwin7     Edwin7     Edwin7     Edwin7     Edwin7     Edwin7     
Viconia    ****       Viconi4    Viconi4    Viconi6    Viconi7    Viconi7    Viconi7    Viconi7    Viconi7    Viconi7    Viconi7    Viconi7    Viconi7    Viconi7    Viconi7    Viconi7    Viconi7    Viconi7    Viconi7    
Imoen      Imoen2     Imoen4     Imoen4     Imoen6     Bdimoen    Bdimoen    Bdimoen    Bdimoen    Bdimoen    Bdimoen    Bdimoen    Bdimoen    Bdimoen    Bdimoen    Bdimoen    Bdimoen    Bdimoen    Bdimoen    Bdimoen    
Neera      Neera2     Neera4     Neera4     Neera6     Neera7     Neera7     Neera7     Neera7     Neera7     Neera7     Neera7     Neera7     Neera7     Neera7     Neera7     Neera7     Neera7     Neera7     Neera7     
Dorn       Dorn2      Dorn4      Dorn4      Dorn6      Dorn7      Dorn7      Dorn7      Dorn7      Dorn7      Dorn7      Dorn7      Dorn7      Dorn7      Dorn7      Dorn7      Dorn7      Dorn7      Dorn7      Dorn7      
Rasaad     Rasaad2    Rasaad4    Rasaad4    Rasaad6    Rasaad7    Rasaad7    Rasaad7    Rasaad7    Rasaad7    Rasaad7    Rasaad7    Rasaad7    Rasaad7    Rasaad7    Rasaad7    Rasaad7    Rasaad7    Rasaad7    Rasaad7    
Baeloth    Baeloth    Baeloth    Baeloth    Baeloth    Baelot7    Baelot7    Baelot7    Baelot7    Baelot7    Baelot7    Baelot7    Baelot7    Baelot7    Baelot7    Baelot7    Baelot7    Baelot7    Baelot7    Baelot7    
Bdcaelar   ****       ****       ****       ****       Bdcaelar   Bdcaelar   Bdcaelar   Bdcaelar   Bdcaelar   Bdcaelar   Bdcaelar   Bdcaelar   Bdcaelar   Bdcaelar   Bdcaelar   Bdcaelar   Bdcaelar   Bdcaelar   Bdcaelar   
Mkhiin     ****       ****       ****       ****       Bdmkhi7    Bdmkhi7    Bdmkhi7    Bdmkhi7    Bdmkhi7    Bdmkhi7    Bdmkhi7    Bdmkhi7    Bdmkhi7    Bdmkhi7    Bdmkhi7    Bdmkhi7    Bdmkhi7    Bdmkhi7    Bdmkhi7    
Corwin     ****       ****       ****       ****       Corwin7    Corwin7    Corwin7    Corwin7    Corwin7    Corwin7    Corwin7    Corwin7    Corwin7    Corwin7    Corwin7    Corwin7    Corwin7    Corwin7    Corwin7    
Glint      ****       ****       ****       ****       Glint7     Glint7     Glint7     Glint7     Glint7     Glint7     Glint7     Glint7     Glint7     Glint7     Glint7     Glint7     Glint7     Glint7     Glint7     
Voghiln    ****       ****       ****       ****       Voghil7    Voghil7    Voghil7    Voghil7    Voghil7    Voghil7    Voghil7    Voghil7    Voghil7    Voghil7    Voghil7    Voghil7    Voghil7    Voghil7    Voghil7    

 

Eldoth.BCS file:

 
IF
    GlobalLT("ENDOFBG1","GLOBAL",2)
    Global("RE1_GirdleGenderEldoth","GLOBAL",0)
    Gender("Eldoth",FEMALE)  // Eldoth
    HasItem("BELT05","Eldoth")  // Girdle of Gender
    InParty(Myself)
    Detect(Player1)
    !StateCheck(Player1,CD_STATE_NOTVALID)
    CombatCounter(0)
    !See([ENEMY])
THEN
    RESPONSE #100
        SetGlobal("RE1_GirdleGenderEldoth","GLOBAL",1)
END

IF
    GlobalLT("ENDOFBG1","GLOBAL",2)
    Global("RE1_GirdleGenderEldoth","GLOBAL",1)
    InParty(Myself)
    Detect(Player1)
    !StateCheck(Player1,CD_STATE_NOTVALID)
    CombatCounter(0)
    !See([ENEMY])
THEN
    RESPONSE #100
        StartDialogueNoSet(Player1)
END

IF
    !GlobalGT("BD_PLOT","GLOBAL",0)
    Global("P#CREL1","GLOBAL",0)
    RealGlobalTimerExpired("P#CRoReactionTime","GLOBAL")
    Global("P#CoRomReaction","GLOBAL",1)
    !Global("P#CoranRomanceInactive","GLOBAL",1)
    Global("P#CoranMatch","GLOBAL",1)
    Global("P#CoranFriend","GLOBAL",1)
    !StateCheck(Myself,CD_STATE_NOTVALID)
    !StateCheck(Player1,CD_STATE_NOTVALID)
    InParty("coran")  // Coran
    !StateCheck("coran",CD_STATE_NOTVALID)  // Coran
    InParty(Myself)
    See(Player1)
    CombatCounter(0)
    !See([ENEMY])
THEN
    RESPONSE #100
        SetGlobal("P#CREL1","GLOBAL",1)
        Interact(Player1)
END

IF
    !GlobalGT("BD_PLOT","GLOBAL",0)
    Global("P#CREL1","GLOBAL",1)
    InParty(Myself)
    !StateCheck(Myself,CD_STATE_NOTVALID)
    !StateCheck(Player1,CD_STATE_NOTVALID)
    InParty("coran")  // Coran
    !StateCheck("coran",CD_STATE_NOTVALID)  // Coran
THEN
    RESPONSE #100
        Interact(Player1)
END

IF
    !GlobalGT("BD_PLOT","GLOBAL",0)
    InParty("eldoth")  // Eldoth
    RealGlobalTimerExpired("X#EldPoetPri","GLOBAL")
    OR(2)
        Global("X#PRIELD","GLOBAL",1)
        Global("X#PRIELD","GLOBAL",2)
THEN
    RESPONSE #100
        SetGlobal("X#PRIELD","GLOBAL",3)
END

IF
    !GlobalGT("BD_PLOT","GLOBAL",0)
    Global("X#PRIELD","GLOBAL",3)
    InParty(Myself)
    !StateCheck(Myself,CD_STATE_NOTVALID)
    InMyArea(Player1)
    !StateCheck(Player1,CD_STATE_NOTVALID)
    CombatCounter(0)
    !See([ENEMY])
THEN
    RESPONSE #100
        PlaySong(G3Blank)
        PlaySound("eldot99")
        StartDialogueNoSet(Player1)
END

IF
    !GlobalGT("BD_PLOT","GLOBAL",0)
    AreaCheck("BG0153")  // E Baldur's Gate: Thieves' Guild
    Global("X#EUETGFTFT","GLOBAL",0)
    InParty(Myself)
    !StateCheck(Myself,CD_STATE_NOTVALID)
    InMyArea(Player1)
    !StateCheck(Player1,CD_STATE_NOTVALID)
    CombatCounter(0)
    !See([ENEMY])
THEN
    RESPONSE #100
        SetGlobal("X#EUETGFTFT","GLOBAL",1)
END

IF
    !GlobalGT("BD_PLOT","GLOBAL",0)
    Global("X#EUETGFTFT","GLOBAL",1)
    InParty(Myself)
    !StateCheck(Myself,CD_STATE_NOTVALID)
    InMyArea(Player1)
    !StateCheck(Player1,CD_STATE_NOTVALID)
THEN
    RESPONSE #100
        PlaySong(G3Blank)
        PlaySound("eldot99")
        StartDialogueNoSet(Player1)
END

IF
    !GlobalGT("BD_PLOT","GLOBAL",0)
    AreaCheck("BG0132")  // W Baldur's Gate: Lady's House
    Global("X#EUETOTFTFT","GLOBAL",0)
    InParty(Myself)
    !StateCheck(Myself,CD_STATE_NOTVALID)
    InMyArea(Player1)
    !StateCheck(Player1,CD_STATE_NOTVALID)
    CombatCounter(0)
    !See([ENEMY])
THEN
    RESPONSE #100
        SetGlobal("X#EUETOTFTFT","GLOBAL",1)
END

IF
    !GlobalGT("BD_PLOT","GLOBAL",0)
    Global("X#EUETOTFTFT","GLOBAL",1)
    InParty(Myself)
    !StateCheck(Myself,CD_STATE_NOTVALID)
    InMyArea(Player1)
    !StateCheck(Player1,CD_STATE_NOTVALID)
THEN
    RESPONSE #100
        PlaySong(G3Blank)
        PlaySound("eldot99")
        StartDialogueNoSet(Player1)
END

IF
    !GlobalGT("BD_PLOT","GLOBAL",0)
    AreaCheck("BG2608")  // Candlekeep: Library L1
    Global("X#EOFFOCL","GLOBAL",0)
    InParty(Myself)
    !StateCheck(Myself,CD_STATE_NOTVALID)
    InMyArea(Player1)
    !StateCheck(Player1,CD_STATE_NOTVALID)
    CombatCounter(0)
    !See([ENEMY])
THEN
    RESPONSE #100
        SetGlobal("X#EOFFOCL","GLOBAL",1)
END

IF
    !GlobalGT("BD_PLOT","GLOBAL",0)
    Global("X#EOFFOCL","GLOBAL",1)
    InParty(Myself)
    !StateCheck(Myself,CD_STATE_NOTVALID)
    InMyArea(Player1)
    !StateCheck(Player1,CD_STATE_NOTVALID)
THEN
    RESPONSE #100
        PlaySong(G3Blank)
        PlaySound("eldot99")
        StartDialogueNoSet(Player1)
END

IF
    !GlobalGT("BD_PLOT","GLOBAL",0)
    AreaCheck("BG0133")  // Baldur's Gate Docks: Low Lantern D1
    Global("X#EORTFLOTLL","GLOBAL",0)
    InParty(Myself)
    !StateCheck(Myself,CD_STATE_NOTVALID)
    InMyArea(Player1)
    !StateCheck(Player1,CD_STATE_NOTVALID)
    CombatCounter(0)
    !See([ENEMY])
THEN
    RESPONSE #100
        SetGlobal("X#EORTFLOTLL","GLOBAL",1)
END

IF
    !GlobalGT("BD_PLOT","GLOBAL",0)
    Global("X#EORTFLOTLL","GLOBAL",1)
    InParty(Myself)
    !StateCheck(Myself,CD_STATE_NOTVALID)
    InMyArea(Player1)
    !StateCheck(Player1,CD_STATE_NOTVALID)
THEN
    RESPONSE #100
        PlaySong(G3Blank)
        PlaySound("eldot99")
        StartDialogueNoSet(Player1)
END

IF
    !GlobalGT("BD_PLOT","GLOBAL",0)
    InParty(Myself)
    Global("X#DreamTimerStarted","GLOBAL",0)
THEN
    RESPONSE #100
        RealSetGlobalTimer("X#DreamTalk","GLOBAL",THREE_TURNS)
        SetGlobal("X#DreamTimerStarted","GLOBAL",1)
END

IF
    !GlobalGT("BD_PLOT","GLOBAL",0)
    AreaCheck("BG0112")  // Baldur's Gate Undercellars
    InParty("skie")  // Skie
    Dead("skie")  // Skie
    OR(2)
        Dead("slythe")  // Slythe
        Dead("krystin")  // Krystin
    Global("X#ELPC1","LOCALS",0)
    InParty(Myself)
    CombatCounter(0)
    !See([ENEMY])
    !ActuallyInCombat()
    See(Player1)
    !StateCheck(Myself,CD_STATE_NOTVALID)
    !StateCheck(Player1,CD_STATE_NOTVALID)
THEN
    RESPONSE #100
        SetGlobal("X#ELPC1","LOCALS",1)
END

IF
    !GlobalGT("BD_PLOT","GLOBAL",0)
    Global("X#ELPC1","LOCALS",1)
    InParty(Myself)
    CombatCounter(0)
    !See([ENEMY])
    !ActuallyInCombat()
    See(Player1)
    !StateCheck(Myself,CD_STATE_NOTVALID)
    !StateCheck(Player1,CD_STATE_NOTVALID)
THEN
    RESPONSE #100
        PlaySong(G3Blank)
        PlaySound("eldot99")
        StartDialogueNoSet(Player1)
END

IF
    !GlobalGT("BD_PLOT","GLOBAL",0)
    AreaCheck("BG0112")  // Baldur's Gate Undercellars
    Dead("krystin")  // Krystin
    InParty("skie")  // Skie
    Global("X#ELPC2","LOCALS",0)
    InParty(Myself)
    CombatCounter(0)
    !See([ENEMY])
    See(Player1)
    !StateCheck("skie",CD_STATE_NOTVALID)  // Skie
    !StateCheck(Myself,CD_STATE_NOTVALID)
    !StateCheck(Player1,CD_STATE_NOTVALID)
THEN
    RESPONSE #100
        SetGlobal("X#ELPC2","LOCALS",1)
END

IF
    !GlobalGT("BD_PLOT","GLOBAL",0)
    InParty("skie")  // Skie
    Global("X#ELPC2","LOCALS",1)
    InParty(Myself)
    CombatCounter(0)
    !See([ENEMY])
    See(Player1)
    !StateCheck("skie",CD_STATE_NOTVALID)  // Skie
    !StateCheck(Myself,CD_STATE_NOTVALID)
    !StateCheck(Player1,CD_STATE_NOTVALID)
THEN
    RESPONSE #100
        PlaySong(G3Blank)
        PlaySound("eldot99")
        StartDialogueNoSet(Player1)
END

IF
    Global("#L_SayGoodbye","LOCALS",0)
    Global("#L_SayGoodbyeSet","LOCALS",0)
THEN
    RESPONSE #100
        SetGlobal("#L_SayGoodbye","LOCALS",1)
        SetGlobal("#L_SayGoodbyeSet","LOCALS",1)
END

IF
    Global("RescuedSkie","GLOBAL",0)
    AreaCheck("L#SSS1")
THEN
    RESPONSE #100
        SetGlobal("RescuedSkie","GLOBAL",30)
        SetGlobal("EldothMove","GLOBAL",3)
END

IF
    InParty(Myself)
    AreaCheck("BG0800")  // E Baldur's Gate
    Global("RescuedSkie","GLOBAL",30)
THEN
    RESPONSE #100
        SetGlobalTimer("fl#eldothransomtimer","GLOBAL",TWO_DAYS)
        SetGlobal("RescuedSkie","GLOBAL",1)
END

IF
    InParty(Myself)
    !See([ENEMY])
    CombatCounter(0)
    PartyHasItem("L#SSFIGU")  // Figurine
    Global("L#SSQUEST","GLOBAL",1)
THEN
    RESPONSE #100
        SetGlobal("L#SSQUEST","GLOBAL",2)
END

IF
    Global("L#SSQUEST","GLOBAL",2)
THEN
    RESPONSE #100
        StartDialogOverride("ELDOTJ",Player1)
END

IF
    InParty(Myself)
    !See([ENEMY])
    CombatCounter(0)
    AreaCheck("BG2300")  // Friendly Arm Inn
    See("REPTRAP3")
    Global("L#SSQUEST","GLOBAL",5)
THEN
    RESPONSE #100
        SetGlobal("L#SSQUEST","GLOBAL",6)
END

IF
    Global("L#SSQUEST","GLOBAL",6)
THEN
    RESPONSE #100
        StartDialogOverride("ELDOTJ",Player1)
END

IF
    InParty(Myself)
    !See([ENEMY])
    CombatCounter(0)
    Global("L#SSQUEST","GLOBAL",9)
    GlobalTimerExpired("L#SSMESTIME","GLOBAL")
THEN
    RESPONSE #100
        SetGlobal("L#SSQUEST","GLOBAL",10)
END

IF
    Global("L#SSQUEST","GLOBAL",10)
THEN
    RESPONSE #100
        StartDialogOverride("ELDOTJ",Player1)
END

IF
    !AreaType(IWDAREA)
    !InPartyAllowDead(Myself)
    GlobalGT("CHAPTER","GLOBAL",13)
THEN
    RESPONSE #100
        DestroySelf()
END

IF
    !AreaType(IWDAREA)
    !InPartyAllowDead(Myself)
    GlobalGT("CHAPTER","GLOBAL",7)
    Global("K#PartySoD","LOCALS",0)
THEN
    RESPONSE #100
        DestroySelf()
END

IF
    !AreaType(IWDAREA)
    Die()
    !InParty(Myself)
    OR(12)
        AreaCheck("OH1000")
        AreaCheck("BG5600")  // Random Encounter: Plains1
        AreaCheck("BG5601")  // Random Encounter: Plains2
        AreaCheck("BG5700")  // Random Encounter: Canyon1
        AreaCheck("BG5701")  // Random Encounter: Canyon2
        AreaCheck("BG5800")  // Random Encounter: Cliff1
        AreaCheck("BG5801")  // Random Encounter: Cliff2
        AreaCheck("BG5900")  // Random Encounter: Grassland1
        AreaCheck("BG5901")  // Random Encounter: Grassland2
        AreaCheck("BG6000")  // Random Encounter: Forest1
        AreaCheck("BG6001")  // Random Encounter: Forest2
        AreaCheck("BG6100")  // Random Encounter: Road
THEN
    RESPONSE #100
        DestroySelf()
END

IF
    !AreaType(IWDAREA)
    !InParty(Myself)
    CheckSpellState(Myself,STORY_MODE)
THEN
    RESPONSE #100
        ReallyForceSpellDeadRES("OHSMODE3",Myself)  // No such index
        Continue()
END

IF
    !AreaType(IWDAREA)
    OR(2)
        Global("DORN_ROMANCE_FIGHT","GLOBAL",13)
        Global("DORN_ROMANCE_FIGHT","GLOBAL",19)
    UnselectableVariable(0)
THEN
    RESPONSE #100
        ReallyForceSpellRES("K#UNSELE",Myself)  // No such index
        SetGlobal("DORN_ROMANCE_ATTACKED","LOCALS",1)
END

IF
    !AreaType(IWDAREA)
    Global("DORN_ROMANCE_FIGHT","GLOBAL",19)
    Dead("DORN")  // Dorn
THEN
    RESPONSE #100
        MakeUnselectable(0)
        ReallyForceSpellRES("K#UNSELR",Myself)  // No such index
        SetGlobal("DORN_ROMANCE_FIGHT","GLOBAL",99)
        StartDialog("ELDOTZ",Player1)
END

IF
    !AreaType(IWDAREA)
    OR(2)
        Global("DORN_ROMANCE_FIGHT","GLOBAL",13)
        Global("DORN_ROMANCE_FIGHT","GLOBAL",19)
    See("DORN")  // Dorn
    !StateCheck(Myself,STATE_MIRRORIMAGE)
    HaveSpell(WIZARD_MIRROR_IMAGE)  // SPWI212.SPL (Mirror Image)
THEN
    RESPONSE #100
        Spell(Myself,WIZARD_MIRROR_IMAGE)  // SPWI212.SPL (Mirror Image)
END

IF
    !AreaType(IWDAREA)
    OR(2)
        Global("DORN_ROMANCE_FIGHT","GLOBAL",13)
        Global("DORN_ROMANCE_FIGHT","GLOBAL",19)
    See("DORN")  // Dorn
    CheckStatGT(Myself,4,ARMORCLASS)
    HaveSpell(WIZARD_ARMOR)  // SPWI102.SPL (Armor)
THEN
    RESPONSE #100
        Spell(Myself,WIZARD_ARMOR)  // SPWI102.SPL (Armor)
END

IF
    !AreaType(IWDAREA)
    OR(2)
        Global("DORN_ROMANCE_FIGHT","GLOBAL",13)
        Global("DORN_ROMANCE_FIGHT","GLOBAL",19)
    See("DORN")  // Dorn
    HaveSpell(WIZARD_MAGIC_MISSILE)  // SPWI112.SPL (Magic Missile)
THEN
    RESPONSE #100
        Spell("DORN",WIZARD_MAGIC_MISSILE)  // Dorn
END

IF
    !AreaType(IWDAREA)
    OR(2)
        Global("DORN_ROMANCE_FIGHT","GLOBAL",13)
        Global("DORN_ROMANCE_FIGHT","GLOBAL",19)
    See("DORN")  // Dorn
    HaveSpell(WIZARD_LARLOCH_MINOR_DRAIN)  // SPWI119.SPL (Larloch's Minor Drain)
THEN
    RESPONSE #100
        Spell("DORN",WIZARD_LARLOCH_MINOR_DRAIN)  // Dorn
END

IF
    !AreaType(IWDAREA)
    OR(2)
        Global("DORN_ROMANCE_FIGHT","GLOBAL",13)
        Global("DORN_ROMANCE_FIGHT","GLOBAL",19)
    See("DORN")  // Dorn
    HaveSpell(WIZARD_LIGHTNING_BOLT)  // SPWI308.SPL (Lightning Bolt)
THEN
    RESPONSE #100
        Spell("DORN",WIZARD_LIGHTNING_BOLT)  // Dorn
END

IF
    !AreaType(IWDAREA)
    OR(2)
        Global("DORN_ROMANCE_FIGHT","GLOBAL",13)
        Global("DORN_ROMANCE_FIGHT","GLOBAL",19)
    See("DORN")  // Dorn
    HaveSpell(WIZARD_MELF_ACID_ARROW)  // SPWI211.SPL (Melf's Acid Arrow)
THEN
    RESPONSE #100
        Spell("DORN",WIZARD_MELF_ACID_ARROW)  // Dorn
END

IF
    !AreaType(IWDAREA)
    OR(2)
        Global("DORN_ROMANCE_FIGHT","GLOBAL",13)
        Global("DORN_ROMANCE_FIGHT","GLOBAL",19)
    See("DORN")  // Dorn
    HaveSpell(WIZARD_FLAME_ARROW)  // SPWI303.SPL (Flame Arrow)
THEN
    RESPONSE #100
        Spell("DORN",WIZARD_FLAME_ARROW)  // Dorn
END

IF
    !AreaType(IWDAREA)
    OR(2)
        Global("DORN_ROMANCE_FIGHT","GLOBAL",13)
        Global("DORN_ROMANCE_FIGHT","GLOBAL",19)
    See("DORN")  // Dorn
THEN
    RESPONSE #100
        Attack("DORN")  // Dorn
END

IF
    !AreaType(IWDAREA)
    Global("DORN_ROMANCE_ATTACKED","LOCALS",1)
    !ActuallyInCombat()
THEN
    RESPONSE #100
        StartDialog("ELDOTZ",Player1)
END

IF
    !AreaType(IWDAREA)
    See("Sharteel")  // Shar-Teel
    InParty(Myself)
    Global("Eldothfight","GLOBAL",1)
THEN
    RESPONSE #100
        LeaveParty()
        SetDialog("EldotP")
END

IF
    !AreaType(IWDAREA)
    See("Sharteel")  // Shar-Teel
    Global("Eldothfight","GLOBAL",1)
THEN
    RESPONSE #100
        DialogInterrupt(FALSE)
        Continue()
END

IF
    !AreaType(IWDAREA)
    !See("Sharteel")  // Shar-Teel
    Global("Eldothfight","GLOBAL",1)
THEN
    RESPONSE #100
        DialogInterrupt(TRUE)
        Continue()
END

IF
    !AreaType(IWDAREA)
    Dead("Sharteel")  // Shar-Teel
    Global("Eldothfight","GLOBAL",1)
THEN
    RESPONSE #100
        DialogInterrupt(TRUE)
        SetGlobal("Eldothfight","GLOBAL",0)
END

IF
    !AreaType(IWDAREA)
    Global("Eldothfight","GLOBAL",1)
    See("Sharteel")  // Shar-Teel
    !StateCheck(Myself,STATE_MIRRORIMAGE)
    HaveSpell(WIZARD_MIRROR_IMAGE)  // SPWI212.SPL (Mirror Image)
THEN
    RESPONSE #100
        Spell(Myself,WIZARD_MIRROR_IMAGE)  // SPWI212.SPL (Mirror Image)
END

IF
    !AreaType(IWDAREA)
    Global("Eldothfight","GLOBAL",1)
    See("Sharteel")  // Shar-Teel
    CheckStatGT(Myself,4,ARMORCLASS)
    HaveSpell(WIZARD_ARMOR)  // SPWI102.SPL (Armor)
THEN
    RESPONSE #100
        Spell(Myself,WIZARD_ARMOR)  // SPWI102.SPL (Armor)
END

IF
    !AreaType(IWDAREA)
    Global("Eldothfight","GLOBAL",1)
    See("Sharteel")  // Shar-Teel
    HaveSpell(WIZARD_MAGIC_MISSILE)  // SPWI112.SPL (Magic Missile)
THEN
    RESPONSE #100
        Spell("Sharteel",WIZARD_MAGIC_MISSILE)  // Shar-Teel
END

IF
    !AreaType(IWDAREA)
    Global("Eldothfight","GLOBAL",1)
    See("Sharteel")  // Shar-Teel
    HaveSpell(WIZARD_LARLOCH_MINOR_DRAIN)  // SPWI119.SPL (Larloch's Minor Drain)
THEN
    RESPONSE #100
        Spell("Sharteel",WIZARD_LARLOCH_MINOR_DRAIN)  // Shar-Teel
END

IF
    !AreaType(IWDAREA)
    Global("Eldothfight","GLOBAL",1)
    See("Sharteel")  // Shar-Teel
    HaveSpell(WIZARD_LIGHTNING_BOLT)  // SPWI308.SPL (Lightning Bolt)
THEN
    RESPONSE #100
        Spell("Sharteel",WIZARD_LIGHTNING_BOLT)  // Shar-Teel
END

IF
    !AreaType(IWDAREA)
    Global("Eldothfight","GLOBAL",1)
    See("Sharteel")  // Shar-Teel
    HaveSpell(WIZARD_MELF_ACID_ARROW)  // SPWI211.SPL (Melf's Acid Arrow)
THEN
    RESPONSE #100
        Spell("Sharteel",WIZARD_MELF_ACID_ARROW)  // Shar-Teel
END

IF
    !AreaType(IWDAREA)
    Global("Eldothfight","GLOBAL",1)
    See("Sharteel")  // Shar-Teel
    HaveSpell(WIZARD_FLAME_ARROW)  // SPWI303.SPL (Flame Arrow)
THEN
    RESPONSE #100
        Spell("Sharteel",WIZARD_FLAME_ARROW)  // Shar-Teel
END

IF
    !AreaType(IWDAREA)
    Global("Eldothfight","GLOBAL",1)
    See("Sharteel")  // Shar-Teel
THEN
    RESPONSE #100
        Attack("Sharteel")  // Shar-Teel
END

IF
    !AreaType(IWDAREA)
    !Global("X#SkieLeftEldoth","GLOBAL",1)
    GlobalTimerExpired("RescueSkie","GLOBAL")
    Global("RescuedSkie","GLOBAL",0)
    InParty("Eldoth")  // Eldoth
THEN
    RESPONSE #100
        Dialogue([PC])
END

IF
    !AreaType(IWDAREA)
    InParty(Myself)
    See("Skie")  // Skie
    Range("Skie",10)  // Skie
    Global("FindEldoth","GLOBAL",0)
    Global("RescuedSkie","GLOBAL",0)
THEN
    RESPONSE #100
        SetGlobal("RescuedSkie","GLOBAL",1)
        ActionOverride("Skie",Dialogue([PC]))
END

IF
    !AreaType(IWDAREA)
    InParty(Myself)
    See("Skie")  // Skie
    Range("Skie",10)  // Skie
    Global("FindEldoth","GLOBAL",1)
    Global("RescuedSkie","GLOBAL",0)
THEN
    RESPONSE #100
        SetGlobal("RescuedSkie","GLOBAL",1)
        Dialogue("skie")  // Skie
END

IF
    !AreaType(IWDAREA)
    GlobalTimerExpired("fl#eldothransomtimer","GLOBAL")
    Global("fl#eldothransomtalk","LOCALS",0)
    InParty("Eldoth")  // Eldoth
    InParty("Skie")  // Skie
THEN
    RESPONSE #100
        IncrementGlobal("fl#eldothransomtalk","LOCALS",1)
        Dialogue(Player1)
END

IF
    !AreaType(IWDAREA)
    Global("BD_JOINXP","LOCALS",0)
    InParty(Myself)
    XPGT(Player1,31999)
    XPLT(Myself,32000)
THEN
    RESPONSE #100
        SetInterrupt(FALSE)
        SetGlobal("BD_JOINXP","LOCALS",1)
        ChangeStat(Myself,XP,32000,SET)
        AddSpecialAbility("SPWI205")  // Horror
        SetInterrupt(TRUE)
END

IF
    !AreaType(IWDAREA)
    Global("BD_JOINXP","LOCALS",0)
    InParty(Myself)
    XPGT(Player1,15999)
    XPLT(Myself,16000)
THEN
    RESPONSE #100
        SetInterrupt(FALSE)
        SetGlobal("BD_JOINXP","LOCALS",1)
        ChangeStat(Myself,XP,16000,SET)
        AddSpecialAbility("SPWI205")  // Horror
        SetInterrupt(TRUE)
END

IF
    !AreaType(IWDAREA)
    Global("BD_JOINXP","LOCALS",0)
    InParty(Myself)
    XPGT(Player1,7999)
    XPLT(Myself,8000)
THEN
    RESPONSE #100
        SetInterrupt(FALSE)
        SetGlobal("BD_JOINXP","LOCALS",1)
        ChangeStat(Myself,XP,8000,SET)
        AddSpecialAbility("SPWI205")  // Horror
        SetInterrupt(TRUE)
END

IF
    !AreaType(IWDAREA)
    Global("BD_JOINXP","LOCALS",0)
    InParty(Myself)
    XPGT(Player1,3999)
    XPLT(Myself,4000)
THEN
    RESPONSE #100
        SetInterrupt(FALSE)
        SetGlobal("BD_JOINXP","LOCALS",1)
        ChangeStat(Myself,XP,4000,SET)
        SetInterrupt(TRUE)
END

IF
    !AreaType(IWDAREA)
    Global("BD_JOINXP","LOCALS",0)
    InParty(Myself)
    XPGT(Player1,1999)
    XPLT(Myself,2000)
THEN
    RESPONSE #100
        SetInterrupt(FALSE)
        SetGlobal("BD_JOINXP","LOCALS",1)
        ChangeStat(Myself,XP,2000,SET)
        SetInterrupt(TRUE)
END

IF
    !AreaType(IWDAREA)
    Global("BD_JOINXP","LOCALS",0)
    InParty(Myself)
THEN
    RESPONSE #100
        SetInterrupt(FALSE)
        SetGlobal("BD_JOINXP","LOCALS",1)
        SetInterrupt(TRUE)
END

IF
    GlobalGT("B!GavinFinger","GLOBAL",0)
    GlobalLT("B!GavinFinger","GLOBAL",3)
    Global("B!EldothFinger","GLOBAL",0)
    InParty(Myself)
    InParty("B!GAVIN")  // Gavin
    InMyArea("B!GAVIN")  // Gavin
    !StateCheck(Myself,CD_STATE_NOTVALID)
    !StateCheck("B!GAVIN",CD_STATE_NOTVALID)  // Gavin
THEN
    RESPONSE #100
        SetGlobal("B!EldothFinger","GLOBAL",1)
END

IF
    Global("B!EldothFinger","GLOBAL",1)
    InParty(Myself)
    InParty("B!GAVIN")  // Gavin
    InMyArea("B!GAVIN")  // Gavin
    !StateCheck(Myself,CD_STATE_NOTVALID)
    !StateCheck("B!GAVIN",CD_STATE_NOTVALID)  // Gavin
THEN
    RESPONSE #100
        StartDialogueNoSet("B!GAVIN")  // Gavin
END

Edited by zelazko
pdialog.2da, NPCLVLDS.2DA, Eldoth.BCS included in the spoiler tags.
Link to comment

The mess of PDIALOG.2DA is mostly cosmetic, but it doesn't have the BG1 NPCs; it looks like a ton of mod NPCs were added onto the BG2 list, and the BG1/SoD list was never merged in. Because EET doesn't do that at all; it creates a new BGDIALOG file to cover the BG1 and SoD campaigns, and updates the CAMPAIGN.2DA file to refer to it.

SCS fails to take this into account; it only looks at PDIALOG.2DA when defining its cre_is_PC function, and thus misses BG1-only NPCs in EET games. This is a failure to build for EET compatibility. (The offending function is defined in the SFO library, as part of lib_cre.tpa.)

[Edit: The above paragraph is in error. SCS reads both PDIALOG.2DA and any corresponding files referenced in CAMPAIGN.2DA to build the table that CREs are tested against; I just missed it the first time around]

Note also that if a joinable NPC is mistakenly given an SCS AI script, that script will be stripped when they actually join the party, like everything outside the override slot. Initial spell knowledge and memorization might be affected for spellcasting NPCs. Other than that, it's a pretty minor impact.

(While CAMPAIGN.2DA is present in vanilla BGEE and BG2EE, not much is done with it. SoD is the only campaign with a row in that table; the role of PDIALOG with respect to the standard BG1, SoA, and ToB campaigns is hardcoded.)

Edited by jmerry
Link to comment

 

6 minutes ago, jmerry said:

 

SCS fails to take this into account; it only looks at PDIALOG.2DA when defining its cre_is_PC function, and thus misses BG1-only NPCs in EET games. This is a failure to build for EET compatibility. (The offending function is defined in the SFO library, as part of lib_cre.tpa.)

In layman user terms. What should I do? Remove Eldoth.CRE file from override folder before Smarter Mages AI component installation? For AI components I always install them one at the time given how long it takes for SCS to install don't want to overload the system.

Edited by zelazko
Link to comment
1 hour ago, jmerry said:

The mess of PDIALOG.2DA is mostly cosmetic, but it doesn't have the BG1 NPCs; it looks like a ton of mod NPCs were added onto the BG2 list, and the BG1/SoD list was never merged in. Because EET doesn't do that at all; it creates a new BGDIALOG file to cover the BG1 and SoD campaigns, and updates the CAMPAIGN.2DA file to refer to it.

SCS fails to take this into account; it only looks at PDIALOG.2DA when defining its cre_is_PC function, and thus misses BG1-only NPCs in EET games. This is a failure to build for EET compatibility. (The offending function is defined in the SFO library, as part of lib_cre.tpa.

As is typical for @DavidW the code for this is behind several abstraction layers, but the array script_name_pdialog that CRE_is_PC uses does get filled with both the contents of PDIALOG.2DA and any additional tables defined in CAMPAIGN.2DA.  The relevant code is in read_in_PCs in sfo/general/lib_macro.tpa which in turn is called from lib/always.tph.

Link to comment

Yeah, I found that eventually. SCS does get that part right. It doesn't help the confusion that there's a second iteration of basically the same thing, with different names, in the sfo2e library also included with SCS.

Which, coming back to this particular issue ... Eldoth would have been moved to BGDIALOG.2DA. Which does get read to the table. What's the script name for the version of Eldoth in that 2DA file, and what's the script name for ELDOTH.CRE? If they don't match (which would be the fault of mods altering him), then that CRE file won't get recognized as a joinable character, and the AI assignment functions will try to run on it.

This is also why Garrick didn't throw a warning; his level 1 incarnation was properly recognized as a joinable character.

Edited by jmerry
Link to comment
3 hours ago, jmerry said:

What's the script name for the version of Eldoth in that 2DA file, and what's the script name for ELDOTH.CRE?

ZWRLgTk.png

Eldoth.BCS and Eldoth.cre. The file and script name match.

 

BGDIALOG.2DA:

POST_DIALOG_FILE  JOIN_DIALOG_FILE  DREAM_SCRIPT_FILE

ELDOTH            ELDOTP            ELDOTJ            ELDOTD

Spoiler

2DA               V1.0
0
                  POST_DIALOG_FILE  JOIN_DIALOG_FILE  DREAM_SCRIPT_FILE
KIVAN             KIVANP            KIVANJ            KIVAND
ALORA             ALORAP            ALORAJ            ALORAD
MINSC             MINSCP_           MINSCJ_           MINSCD_
DYNAHEIR          DYNAHP            DYNAHJ            DYNAHD
YESLICK           YESLIP            YESLIJ            YESLID
CORAN             CORANP            CORANJ            CORAND
AJANTIS           AJANTP            AJANTJ            AJANTD
KHALID            KHALIP            KHALIJ            KHALID
JAHEIRA           JAHEIP            JAHEIJ            JAHEID
GARRICK           GARRIP            GARRIJ            GARRID
SAFANA            SAFANP            SAFANJ            SAFAND
FALDORN           FALDOP            FALDOJ            FALDOD
BRANWEN           BRANWP            BRANWJ            BRANWD
QUAYLE            QUAYLP            QUAYLJ            QUAYLD
XAN               XANP              XANJ              XAND
SKIE              SKIEP             SKIEJ             SKIED
ELDOTH            ELDOTP            ELDOTJ            ELDOTD
XZAR              XZARP             XZARJ             XZARD
MONTARON          MONTAP            MONTAJ            MONTAD
TIAX              TIAXP             TIAXJ             TIAXD
KAGAIN            KAGAIP            KAGAIJ            KAGAID
SHARTEEL          SHARTP            SHARTJ            SHARTD
EDWIN             EDWINP_           EDWINJ_           EDWIND_
VICONIA           VICONP            VICONJ            VICOND_
IMOEN2            IMOENP_           IMOEN2_           IMOEND_
NEERA             NEERAP_           NEERAJ_           NEERAD_
DORN              DORNP_            DORNJ_            DORND_
RASAAD            RASAADP_          RASAADJ_          RASAADD_
BAELOTH           BAELOTHP          BAELOTHJ          BAELOTHD
TTXAN             TTXANP            TTXANJ
TTBRAN            TTBRANP           TTBRANJ
TTIMOEN           TTIMOENP          TTIMOENJ
TTJAHEIR          TTJAHEIP          TTJAHEIJ
TTMINSC           TTMINSCP          TTMINSCJ
CMTNIK            CMTNIKP           CMTNIKJ           CMTNIKD
CMTTHOR           CMTTHORP          CMTTHORJ          CMTTHORD
F_JARLAXE         F_JARLAP          F_JARLAJ          ***
F_ARTEMIS         F_ARTEMP          F_ARTEMJ          ***
F_CATTIBR         F_CATTIP          F_CATTIJ          ***
F_BRUENOR         F_BRUENP          F_BRUENJ          ***
F_REGIS2          F_REGISP          F_REGISJ          ***
F_DRIZZT          F_DRIZTP          F_DRIZTJ          ***
F_WULFGAR         F_WULFGP          F_WULFGJ          ***
l#1verr           l#1verrP          l#1verrJ          l#1verrD
V#1whi            V#1whiP           V#1whiJ           V#1whiD
C0Sirene          C0SirenP          C0SirenJ          C0SirenD
Tenya             B2#TenyP          B2#TenyJ
B2#Aeri           B2#AeriP
C0Drake           C0DrakeP          C0DrakeJ          C0DrakeD
RL#MARG           RL#MARGP          RL#MARGJ          RL#MARGD          RL#MARG25P        RL#MARG25J        RL#MARG25D        RL#MARG25
C#Brage     C#BrageP     C#BrageJ     C#BrageD
J#Indi       J#IndiP            J#IndiJ          J#IndiD
SUFINCH          SUFINCHP          SUFINCHJ          SUFINCHD  
B!GAVIN   B!GAVINP   B!GAVINJ   B!GAVIND

 

Edited by zelazko
Link to comment

So ... the general AI component has already gone through and failed to identify him as a PC, improperly making its changes. The mage script vanilla Eldoth has is already gone, leaving another reason for the mage component to skip him. PC identification isn't failing for the obvious reason, as his script name (not the override script, but the line above that) matches a row in the BGDIALOG file with enough entries. I don't get it.

Link to comment

While Vanishing voids the memorized spell slots, it leaves the MAGE5.BCS script intact in the Race slot. I acknowledge this thread already looked at more depth into this warning than I ever did nor am I ever attempted to check this with the script voided, but I always assumed that was the cause of the issue.

Edited by Graion Dilach
Link to comment

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...