zelazko Posted April 29, 2023 Posted April 29, 2023 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. Quote
mickabouille Posted April 29, 2023 Posted April 29, 2023 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?)... Quote
jmerry Posted April 29, 2023 Posted April 29, 2023 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. Quote
zelazko Posted April 29, 2023 Author Posted April 29, 2023 (edited) 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 April 29, 2023 by zelazko pdialog.2da, NPCLVLDS.2DA, Eldoth.BCS included in the spoiler tags. Quote
jmerry Posted April 29, 2023 Posted April 29, 2023 (edited) 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 April 29, 2023 by jmerry Quote
zelazko Posted April 29, 2023 Author Posted April 29, 2023 (edited) 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 April 29, 2023 by zelazko Quote
jmerry Posted April 29, 2023 Posted April 29, 2023 Did it roll back the whole component with that error, or did it install the AI changes for other mages? Quote
zelazko Posted April 29, 2023 Author Posted April 29, 2023 (edited) I stopped/quit the SCS install after Smarter AI Mages installed with warning. I have backup of the entire game just before installing SCS. I can always go back. Edited April 29, 2023 by zelazko Quote
jmerry Posted April 29, 2023 Posted April 29, 2023 Installed with warnings. As in, "it installed". Sure, Eldoth didn't get a new mage script, but he was never supposed to in the first place. You don't need to change anything to keep going. Quote
Angel Posted April 29, 2023 Posted April 29, 2023 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. Quote
jmerry Posted April 29, 2023 Posted April 29, 2023 (edited) 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 April 29, 2023 by jmerry Quote
zelazko Posted April 29, 2023 Author Posted April 29, 2023 (edited) 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? 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 April 29, 2023 by zelazko Quote
jmerry Posted April 29, 2023 Posted April 29, 2023 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. Quote
Graion Dilach Posted April 29, 2023 Posted April 29, 2023 (edited) 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 April 29, 2023 by Graion Dilach Quote
zelazko Posted April 30, 2023 Author Posted April 30, 2023 (edited) What and where should I make changes to fix Eldoth.Cre and BGDIALOG.2DA? Edited April 30, 2023 by zelazko Quote
Recommended Posts
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.