// -------------------------------------------- // Basics BACKUP ~white/backup~ AUTHOR ~Lava~ // README ~white/readme.txt~ // Crossplatform var stuff blatantly stolen from cmorgan/gavin/bg1npc/isra! ALWAYS ACTION_IF FILE_EXISTS_IN_GAME ~neera.dlg~ THEN BEGIN /*Tell the player it is using BG:EE stuff */ PRINT ~BG:EE install detected~ INCLUDE ~white\library\liam_bgee_vars.tpa~ END ELSE BEGIN ACTION_IF FILE_EXISTS_IN_GAME ~FW0100.are~ THEN BEGIN /* Tell the player it is using Tutu stuff */ PRINT ~Tutu install detected.~ INCLUDE ~white\library\g3_tutu_cpmvars.tpa~ END ELSE BEGIN ACTION_IF FILE_EXISTS_IN_GAME ~AR7200.are~ THEN BEGIN /* Tell the player it is using BGT stuff */ PRINT ~BGT install detected.~ INCLUDE ~white\library\g3_bgt_cpmvars.tpa~ /* Tell the player it is not Tutu or BGT */ END ELSE BEGIN FAIL ~Please install on BG:EE, Tutu or BGT.~ END END END END // -------------------------------------------- // White NPC Mod v1.00 // -------------------------------------------- // Component setup BEGIN ~White NPC for BG:EE, BGT and TuTu~ // Adds custom IsValidForPartyDialogue state used throughout cath APPEND ~STATE.IDS~ // adds custom IsValidForPartyDialogue state ~0x80101FEF CD_STATE_NOTVALID~ UNLESS ~CD_STATE_NOTVALID~ // Fixing Imoen's dialogue file /* Tutu: Giving Imoen a banter file entry in the interdi.2da */ ACTION_IF FILE_EXISTS_IN_GAME ~FW0100.are~ THEN BEGIN APPEND ~interdia.2da~ ~IMOEN _BIMOEN~ UNLESS ~_\(BIMOEN\|bimoen\)~ END /* BGT: Giving Imoen a banter file if the Fixpack isn't installed */ ACTION_IF NOT (FILE_EXISTS_IN_GAME ~cdbehbla.pro~) AND (FILE_EXISTS_IN_GAME ~AR7200.are~) THEN BEGIN ACTION_IF FILE_EXISTS_IN_GAME ~saradush.mve~ THEN BEGIN COPY_EXISTING ~interdia.2da~ ~override~ SET_2DA_ENTRY 17 1 2 ~BIMOEN2~ // fixes ToB version BUT_ONLY_IF_IT_CHANGES END ELSE BEGIN APPEND ~interdia.2da~ ~IMOEN BIMOEN2~ // fixes SoA version UNLESS ~BIMOEN2~ END END /* Imoen BIMOEN.DLG rebuild */ ACTION_IF NOT (FILE_EXISTS_IN_GAME ~_bimoen.dlg~) AND (FILE_EXISTS_IN_GAME ~FW0100.are~) THEN BEGIN COMPILE ~white/dialogues/x#bimoen_tutu.d~ END ELSE BEGIN ACTION_IF NOT (FILE_EXISTS_IN_GAME ~bimoen2.dlg~) AND (FILE_EXISTS_IN_GAME ~AR7200.are~) THEN BEGIN COMPILE ~white/dialogues/x#bimoen_bgt.d~ END END /* ACTION.IDS and TRIGGER.IDS patching to ToB - thanks, Cam, if you read it */ /* and GTIMES.IDS, ANIMATE.IDS patching to ToB, courtesy of the BG2 Fix Pack */ INCLUDE ~white\library/ids_entries_cleanup.tph~ /* Tutu Area Script Assignment Patching: All Areas Script ID'd */ ACTION_IF FILE_EXISTS_IN_GAME ~FW0100.are~ THEN BEGIN INCLUDE ~white\library/tutu_area_script_assign.tph~ END /* Area Type Flagging */ /* ToSC only: Tutu and BGT */ ACTION_IF (FILE_EXISTS_IN_GAME ~FW1500.are~) OR (FILE_EXISTS_IN_GAME ~ARW500.are~) THEN BEGIN // if TotSC is installed COPY_EXISTING ~%IsleofBalduranN%.are~ ~override~ ~%IsleofBalduranS%.are~ ~override~ ~%DurlagsTower%.are~ ~override~ ~%Farmlands%.are~ ~override~ READ_BYTE "0x48" "flags" WRITE_BYTE "0x48" ("%flags%" BOR "0b00010001") BUT_ONLY_IF_IT_CHANGES END /* FOREST and OUTDOOR: Tutu and BGT */ ACTION_IF (FILE_EXISTS_IN_GAME ~FW0100.are~) OR (FILE_EXISTS_IN_GAME ~AR7200.are~) THEN BEGIN COPY_EXISTING ~%FishingVillage%.are~ ~override~ ~%Peldvale%.are~ ~override~ ~%LionsWay%.are~ ~override~ ~%CoastWay%.are~ ~override~ ~%Larswood%.are~ ~override~ ~%ShipwrecksCoast%.are~ ~override~ ~%HighHedge%.are~ ~override~ ~%MutaminsGarden%.are~ ~override~ ~%Lighthouse%.are~ ~override~ ~%RedCanyons%.are~ ~override~ ~%SouthBeregostRoad%.are~ ~override~ ~%Ulcaster%.are~ ~override~ ~%ArchaeologicalSite%.are~ ~override~ ~%FishermansLake%.are~ ~override~ ~%NorthNashkelRoad%.are~ ~override~ ~%LonelyPeaks%.are~ ~override~ ~%FirewineBridge%.are~ ~override~ ~%BearRiver%.are~ ~override~ ~%ValleyoftheTombs%.are~ ~override~ ~%DryadFalls%.are~ ~override~ ~%FireLeafForest%.are~ ~override~ ~%GibberlingMountains%.are~ ~override~ READ_BYTE "0x48" "flags" WRITE_BYTE "0x48" ("%flags%" BOR "0b00010001") BUT_ONLY_IF_IT_CHANGES /* OUTDOOR ONLY: Tutu and BGT */ COPY_EXISTING ~%GnollStronghold%.are~ ~override~ ~%NashkelMines%.are~ ~override~ ~%FriendlyArmInn%.are~ ~override~ ~%Temple%.are~ ~override~ ~%NashkelCarnival%.are~ ~override~ READ_BYTE "0x48" "flags" WRITE_BYTE "0x48" ("%flags%" BOR "0b00000001") BUT_ONLY_IF_IT_CHANGES /* CITY and OUTDOOR */ COPY_EXISTING ~%WyrmsCrossing%.are~ ~override~ ~%Candlekeep_Ch6%.are~ ~override~ ~%Gullykin%.are~ ~override~ READ_BYTE "0x48" "flags" WRITE_BYTE "0x48" ("%flags%" BOR "0b00001001") BUT_ONLY_IF_IT_CHANGES END //////////////////////////////////// // Compiling dialogue files///////// //////////////////////////////////// COMPILE EVALUATE_BUFFER ~white/dialogues/v#1whi.d~ COMPILE EVALUATE_BUFFER ~white/dialogues/v#1whiB.d~ COMPILE EVALUATE_BUFFER ~white/dialogues/v#1whiJ.d~ COMPILE EVALUATE_BUFFER ~white/dialogues/v#1en.d~ //////////////////////////////////// // Compiling script files/////////// //////////////////////////////////// COMPILE EVALUATE_BUFFER ~white/scripts/v#1whi.baf~ COMPILE EVALUATE_BUFFER ~white/scripts/v#1whiD.baf~ COMPILE EVALUATE_BUFFER ~white/scripts/v#1CS.baf~ ACTION_IF FILE_EXISTS_IN_GAME ~FW0100.are~ THEN BEGIN // Area scripts EXTEND_TOP ~_ar3900.bcs~ ~white/scripts/ar3900.baf~ EVALUATE_BUFFER EXTEND_TOP ~_ar3901.bcs~ ~white/scripts/ar3901.baf~ EVALUATE_BUFFER EXTEND_TOP ~_ar5200.bcs~ ~white/scripts/ar5200.baf~ EVALUATE_BUFFER EXTEND_TOP ~_ar2002.bcs~ ~white/scripts/ar2002.baf~ EVALUATE_BUFFER EXTEND_TOP ~_ar0146.bcs~ ~white/scripts/ar0146.baf~ EVALUATE_BUFFER END ELSE BEGIN ACTION_IF FILE_EXISTS_IN_GAME ~AR7200.are~ THEN BEGIN // Area scripts EXTEND_TOP ~AR9799.bcs~ ~white/scripts/ar3900.baf~ EVALUATE_BUFFER EXTEND_TOP ~AR9798.bcs~ ~white/scripts/ar3901.baf~ EVALUATE_BUFFER EXTEND_TOP ~AR4200.bcs~ ~white/scripts/ar5200.baf~ EVALUATE_BUFFER EXTEND_TOP ~AR7246.bcs~ ~white/scripts/ar0146.baf~ EVALUATE_BUFFER END ELSE BEGIN ACTION_IF FILE_EXISTS_IN_GAME ~neera.dlg~ THEN BEGIN // Area scripts EXTEND_TOP ~ar3900.bcs~ ~white/scripts/ar3900.baf~ EVALUATE_BUFFER EXTEND_TOP ~ar3901.bcs~ ~white/scripts/ar3901.baf~ EVALUATE_BUFFER EXTEND_TOP ~ar5200.bcs~ ~white/scripts/ar5200.baf~ EVALUATE_BUFFER EXTEND_TOP ~ar2002.bcs~ ~white/scripts/ar2002.baf~ EVALUATE_BUFFER EXTEND_TOP ~ar0146.bcs~ ~white/scripts/ar0146.baf~ EVALUATE_BUFFER END END END ////////////////////////////// // Add BGEE stuff///////////// ////////////////////////////// ACTION_IF FILE_EXISTS_IN_GAME ~neera.dlg~ THEN BEGIN COMPILE EVALUATE_BUFFER ~white/dialogues/bgee.d~ END ///////////////////////////////// // Copying images and creatures// ///////////////////////////////// ACTION_IF (FILE_EXISTS_IN_GAME ~FW0100.are~) OR (FILE_EXISTS_IN_GAME ~ar7200.are~) THEN BEGIN COPY ~white/bmp~ ~override~ END ELSE BEGIN ACTION_IF FILE_EXISTS_IN_GAME ~neera.dlg~ THEN BEGIN COPY ~white/bmpee~ ~override~ END END //////////////////////////////////// // BAMs, wav and effects//////////// //////////////////////////////////// COPY ~white/audio~ ~override~ COPY ~white/bams~ ~override~ COPY ~white/effects~ ~override~ ////////////////////////////////// // create spells////////////////// ////////////////////////////////// COPY_EXISTING ~SPPR212.spl~ ~override/V#1SP.spl~ SAY NAME1 ~Slow Poison~ SAY NAME2 ~Slow Poison~ SAY DESC ~Slow Poison~ WRITE_SHORT 0x1C 4 WRITE_LONG 0x34 1 READ_LONG 0x64 "offset_abil" READ_SHORT 0x68 "num_abil" READ_ASCII ("%offset_abil%" + 0x04) "bam" WRITE_EVALUATED_ASCII 0x3A "%bam%" WHILE (0 < "%num_abil%") BEGIN WRITE_SHORT (("%offset_abil%" + 0x02) + (("%num_abil%" - 1) * 0x28)) 4 SET "num_abil" = ("%num_abil%" - 1) END COPY ~white/spells/v#1SN.spl~ ~override/v#1SN.spl~ SAY NAME1 ~Call Snake~ SAY NAME2 ~Call Snake~ //////////////////////////////// // Items//////////////////////// //////////////////////////////// COPY ~white/items/v#1rin.itm~ ~override/v#1rin.itm~ SAY NAME1 ~Ring of Dimension Door~ SAY NAME2 ~Ring of Dimension Door~ SAY DESC ~This is a ring White has been looking for; the one stolen by a thief and then retrieved from under the ruins of Ulcaster School. This ring has a magical power to open Dimension Door. The Guardian Naga seems to have enchanted the ring, providing it power to protect from acid. Statistics: +20% acid resistance Can cast Dimension Door spell once per day Useable by: Chaotic Barbarian~ COPY ~white/items/v#1rin2.itm~ ~override/v#1rin2.itm~ SAY NAME1 ~Ring of Dimension Door~ SAY NAME2 ~Ring of Dimension Door~ SAY DESC ~This is a ring White has been looking for; the one stolen by a thief and then retrieved from under the ruins of Ulcaster School. This ring has a magical power to open Dimension Door. The Guardian Naga seems to have enchanted the ring, providing it power to protect from acid. White gave this ring to as a gift. Statistics: +20% acid resistance Can cast Dimension Door spell once per day ~ COPY ~white/items/v#1mor.itm~ ~override/v#1mor.itm~ SAY NAME1 ~Morningstar ' Iliaza-sithiar '~ SAY NAME2 ~Morningstar ' Iliaza-sithiar '~ SAY DESC ~This specific morningstar is an artifact of the past, which has been kept in Grumbar's temple for many years, guarded by naga - the very same serpent creature that used to take care of your companion: White-as-Bones. It seems to be a powerful weapon that can do a bit more than hasten White's enemies to death. It has a power to punish clerics and protect the one who's using the weapon from death. You can see some additional markings on the handle. They seem to be quite new. STATISTICS: 1% chance to kill enemy (at successful hit) if he/she is a cleric 60% to grand White +1 saving throw vs. death (at successful hit) Damage: 2D4 +3, +1 from naga's curse THACO: +3 Damage type: crushing Weight: 10 Speed Factor: 4 Proficiency Type: Flail/Morningstar Type: 1-handed Requires: 11 Strength Usable By: chaotic barbarian~ //////////////////////////////// // creatures//////////////////// //////////////////////////////// COPY ~white/creatures/v#1en.cre~ ~override/v#1en.cre~ SAY NAME1 ~Man~ SAY NAME2 ~Man~ COPY ~white/creatures/v#1fin.cre~ ~override/v#1fin.cre~ SAY NAME1 ~Snake~ SAY NAME2 ~Snake~ COPY ~white/creatures/v#1sq.cre~ ~override/v#1sq.cre~ SAY NAME1 ~Squirrel~ SAY NAME2 ~Squirrel~ COPY ~white/creatures/v#1sn.cre~ ~override/v#1sn.cre~ SAY NAME1 ~Snake~ SAY NAME2 ~Snake~ COPY ~white/creatures/v#1whi.cre~ ~override/v#1whi.cre~ SAY NAME1 ~White~ SAY NAME2 ~White~ SAY BIO ~When asked about his past, WHITE seems to avoid the topic, telling you that there are many other things you should focus on. But finally he tells you that he spent more than half of his life in the temple of Grumbar, the god of earth and rocks. It seems that it wasn't his parents who took care of him, but someone else -- but suddenly he states that he needs to prepare his gear for the battles, rather than discuss with "his nosy leader".~ SAY MORALE ~I'm not going to die yet! Retreat!~ [V#1whi0] SAY HAPPY ~That's all very well--I think we deserve a pint!~ [V#1whi1] SAY UNHAPPY_ANNOYED ~Uh...~ [V#1whi2] SAY UNHAPPY_SERIOUS ~I warn you.~ [V#1whi3] SAY UNHAPPY_BREAKING_POINT ~That's it - I promised to help you, but you didn't tell me that we would do things like that. A waste of time. I'm leaving.~ [V#1whi4] SAY LEADER ~So now I'm in charge, eh? Good. Prepare yourself for some nice battles. I'm considering at least a dozen before tomorrow, heh.~ [V#1whi5] SAY TIRED ~I'm weary and my weapons got sticky with blood. We need a rest.~ [V#1whi6] SAY BORED ~Oh, come on! Let's get moving! I'm not going to watch your hair grow!~ [V#1whi7] SAY BATTLE_CRY1 ~You're a dead man!~ [V#1whi8] SAY BATTLE_CRY2 ~Haha! Look at me! I'm your end!~ [V#1whi9] SAY BATTLE_CRY3 ~Say your last prayers!~ [V#1whi10] SAY BATTLE_CRY4 ~~ [] SAY BATTLE_CRY5 ~~ [] SAY DAMAGE ~~ [V#1whi11] SAY DYING ~No! I'm not--no...!~ [V#1whi12] SAY HURT ~Quickly, we can't loose! Strike with everything you've got!~ [V#1whi13] SAY AREA_FOREST ~A nice place. I suddenly feel like having a rest without this armor on. You'd like to see that, eh?~ [V#1whi14] SAY AREA_CITY ~Excuse me--excuse me...Oh, stop getting into my way, people! I'm really short tempered!~ [V#1whi15] SAY AREA_DUNGEON ~We should be careful. There may be some traps here.~ [V#1whi16] SAY AREA_DAY ~Too much sun.~ [V#1whi17] SAY AREA_NIGHT ~I can barely see my own hand!~ [V#1whi18] SAY SELECT_COMMON1 ~Ah, it's you.~ [V#1whi19] SAY SELECT_COMMON2 ~What is it? Enemies?~ [V#1whi20] SAY SELECT_COMMON3 ~Can you smell that? I hope it's not me.~ [V#1whi21] SAY SELECT_COMMON4 ~Yeah?~ [V#1whi22] SAY SELECT_COMMON5 ~You need me?~ [V#1whi23] SAY SELECT_COMMON6 ~Yeah, leader?~ [V#1whi24] SAY SELECT_ACTION1 ~Sure.~ [V#1whi25] SAY SELECT_ACTION2 ~Done.~ [V#1whi26] SAY SELECT_ACTION3 ~Doing my best.~ [V#1whi27] SAY SELECT_ACTION4 ~Mhm.~ [V#1whi28] SAY SELECT_ACTION5 ~Yeah, sure. Why not.~ [V#1whi29] SAY SELECT_ACTION6 ~Got it.~ [V#1whi30] SAY SELECT_ACTION7 ~Oi, when it's over, you owe me a pint!~ [V#1whi31] SAY CRITICAL_HIT ~Nicely smashed!~ [V#1whi32] SAY CRITICAL_MISS ~Woah, you didn't see that!~ [rh#isr33] SAY TARGET_IMMUNE ~What in the Nine Hells is going on?~ [V#1whi34] SAY INVENTORY_FULL ~I may look like a mule, but I'm not one. Better you take it.~ [V#1whi35] SAY SELECT_RARE1 ~There's always something to do, eh? Fine, fine, but now you don't only owe me a pint, but a nicely roasted lamb.~ [V#1whi36] SAY SELECT_RARE2 ~I'm expecting some nice fighting when it's done. And not with some rats or dogs. I'd rather try a demon, or something!~ [V#1whi37] SAY SPELL_DISRUPTED ~What...?!~ [V#1whi38] SAY SET_A_TRAP ~~ [] SAY HIDDEN_IN_SHADOWS ~~ [] SAY PICKED_POCKET ~~ [] WRITE_ASCII 0x248 ~V#1WHI~ #8 // override script where you put all the commands for lovetalks and such. WRITE_ASCII 0x2cc ~V#1WHI~ #8 // dialogue file where we'll put Branwen's greeting dialogue. WRITE_ASCII 0x280 ~V#1WHI~ #32 // death variable - when we want to refer to Branwen in the game, we'll call her O#Bran. For example, InParty("O#Bran") means that Branwen is in party. // Appends APPEND ~pdialog.2da~ ~V#1whi V#1whiP V#1whiJ V#1whiD~ UNLESS ~V#1whi~ APPEND ~interdia.2da~ ~V#1whi V#1whiB~ UNLESS ~V#1whi~ //music COPY_EXISTING ~songlist.2da~ ~override~ REPLACE_TEXTUALLY ~0 No_music ****~ ~0 V#1WhBl V#1WhBl.MUS~ COPY ~White\V#1WhBl.mus~ ~music/V#1WhBl.mus~