Jump to content

Request for the next version of Gavin


Guest OneEyedPhoenix

Recommended Posts

I'm not worried about the lock. If they can get past the high level cleric and the mage, a locked door isn't going to present any kind of challenge.
But... I thought the original request was to lock the exterior door of the house (and probably make it unpickable) until some later point in the game (at which point you could have an NPC provide a key or unlock it via script). At least, that's how I'd interpret it now that I (vaguely) understand what's going on here.

 

Edit: the door doesn't have separate open/closed .wed states (as it faces north) so I could probably code this in under 20 minutes, if you want to hold of on your update (if it did have separate states, it might take half an hour :)).

Link to comment

Hey, if you're willing to code it up in a way that would work for both Tutu and BGT, I'll wait however long it takes.

 

I had already updated by the time I read your post, and made the relevant changes to the mod page, etc., so I can't really withdraw v4 at this point, but there's noting to say that I can't version up again. Heck, it only takes a few moments... well, longer if I need to write dialogue for it.

Link to comment

Actually, I'd need to add a .wed state to make a lockable door, so I'd have to reverse my estimates (yeah I might be underestimating a tad, but I'm fairly sure I could do it in under an hour anyway). I can smuggle in A64's godlike crash fixer, as we're modding Beregost anyway (and that fix is coded such so that it's skipped if it's already applied).

 

But it struck me that there's a far easier way to achieve this. The way you've set up the spawns, you won't see those NPCs in that house until you've visited Gavin's starting area. So why not just have them either spawn and jump from a later-visited area, or set a timer or other condition for the spawn? It might look odd for the house to be initially empty, but that's a possibility already if the party hasn't been to the spawning area.

 

I'd still like to add the lock though, because it'd be cool :). Edit: but we'd still also need to provide some means of opening it... easy enough also, just need to know what or how.

Link to comment

Sounds like something worth mulling over. I could always move the spawns, true, but it would be far easier to include the already-present quest variable in the spawn conditions. Cuts down on bloat and all... Besides, the PC is going to have to visit the temple area to get the quest, anyway.

 

I'm reluctant to move the spawn points to another area because there's no telling where in the game the PC will get the quest. Everybody warns the PC that it's a tough fight, but if a level 4 PC thinks that he can beat it, well, he deserves the armor.

 

Edit: If you want to figure out a way to lock the house, cool, that's an added bonus, but I'm not going to have time to test it, unfortunately. One of the reasons I'm making such a huge push to tie up loose ends is that my modding time is going to be drastically reduced soon and I don't want to leave a lot of half-finished projects in my wake.

Link to comment

Well... it took considerably more time and code than I'd expected. But I did it all the same, just to show 'em!

house22.gif

I tested it quite a bit and utterly failed to crash the game (all the less so since this includes A64's Beregost crash fix).

 

Spoilerish as to how it works:

 

It *is* pickable, but really tough by BG1 standards. A thief would need ~150 points in open locks, which means sinking all available points up to level 4 (possibly level 3 with a potion of master thievery, but you'd really have to know what you're up to). A more balanced thief might be able to take it around level 6 (most likely with the potion anyhow).

 

As an alternative, it *also* has a key, which can be found in one of three random places:

1) The ghast tomb in Valley of the Tombs

2) The gnoll tent in the Bandit Camp

3) A corpse in Ulcaster Ruins

 

I guess the story is someone who lived in the house went on an adventure and never came back (but I don't think you have to add dialogue for that unless you want to). All of that can be changed, including the locations, key description, difficulty etc.

 

 

Put this lot in your .tp2 (or INCLUDE it as a separate file). Doesn't really matter where, as long as you put it after your platform variable INCLUDEs.

ACTION_IF FILE_EXISTS_IN_GAME ~fw0125.are~ BEGIN //If Tutu
 OUTER_SPRINT BeregH22Reg ~Door3337~
END ELSE BEGIN //Otherwise (if BGT)
 OUTER_SPRINT BeregH22Reg ~Door6737~
END

COPY_EXISTING ~%Beregost%.wed~ override
 sz = SOURCE_SIZE
 PATCH_IF sz > 0x48 BEGIN
READ_LONG 0x8 ovr_count //Read initial offsets
READ_LONG 0xc door_count
READ_LONG 0x10 ovr_offset
READ_LONG 0x14 sec_hdr
READ_LONG 0x18 door_offset
READ_LONG 0x1c dtc_indices
READ_LONG sec_hdr poly_count
READ_LONG (sec_hdr + 4) poly_offset
READ_LONG (sec_hdr + 8) vert_offset
READ_LONG (sec_hdr + 0xc) wall_offset
READ_LONG (sec_hdr + 0x10) poly_table
new_door_offset = door_offset + door_count * 0x1a
new_vert_index = ((SOURCE_SIZE - vert_offset) / 4)

INSERT_BYTES sz 0x20 //Insert 8 new vertex pairs
WRITE_SHORT sz 2370 //Open door
WRITE_SHORT (sz + 2) 1563
WRITE_SHORT (sz + 4) 2325
WRITE_SHORT (sz + 6) 1563
WRITE_SHORT (sz + 8) 2325
WRITE_SHORT (sz + 0xa) 1478
WRITE_SHORT (sz + 0xc) 2370
WRITE_SHORT (sz + 0xe) 1478
WRITE_SHORT (sz + 0x10) 2370 //Closed door
WRITE_SHORT (sz + 0x12) 1562
WRITE_SHORT (sz + 0x14) 2330
WRITE_SHORT (sz + 0x16) 1620
WRITE_SHORT (sz + 0x18) 2330
WRITE_SHORT (sz + 0x1a) 1536
WRITE_SHORT (sz + 0x1c) 2370
WRITE_SHORT (sz + 0x1e) 1478

INSERT_BYTES poly_table 0x24 //Insert 2 new polygons
WRITE_LONG poly_table new_vert_index //Starting vertex index
WRITE_LONG (poly_table + 4) 4 //Vertex count
WRITE_BYTE (poly_table + 8) 0x80 //Open door
WRITE_BYTE (poly_table + 9) 0xff //Unknown
WRITE_SHORT (poly_table + 0xa) 2325 //Boundary minimum X coordinate
WRITE_SHORT (poly_table + 0xc) 2370 //Boundary maximum X coordinate
WRITE_SHORT (poly_table + 0xe) 1478 //Boundary minimum Y coordinate
WRITE_SHORT (poly_table + 0x10) 1563 //Boundary maximum Y coordinate
WRITE_LONG (poly_table + 0x12) (new_vert_index + 4) //Starting vertex index
WRITE_LONG (poly_table + 0x16) 4 //Vertex count
WRITE_BYTE (poly_table + 0x1a) 0x80 //Closed door
WRITE_BYTE (poly_table + 0x1b) 0xff //Unknown
WRITE_SHORT (poly_table + 0x1c) 2330 //Boundary minimum X coordinate
WRITE_SHORT (poly_table + 0x1e) 2370 //Boundary maximum X coordinate
WRITE_SHORT (poly_table + 0x20) 1478 //Boundary minimum Y coordinate
WRITE_SHORT (poly_table + 0x22) 1620 //Boundary maximum Y coordinate

FOR (i = 0; i < door_count; i += 1) BEGIN //Update door polygon offsets
  WRITE_LONG (i * 0x1a + door_offset + 0x12) (THIS + 0x1a) //Open polygons offset
  WRITE_LONG (i * 0x1a + door_offset + 0x16) (THIS + 0x1a) //Closed polygons offset
  PATCH_IF (i = (door_count - 1)) BEGIN
	READ_SHORT (i * 0x1a + door_offset + 0xa) tile_index
	READ_SHORT (i * 0x1a + door_offset + 0xc) tile_count
  END
END

INSERT_BYTES new_door_offset 0x1a //Insert new door
WRITE_ASCII new_door_offset ~DOOR3337~ //Name
WRITE_SHORT (new_door_offset + 8) 1 //Closed
WRITE_SHORT (new_door_offset + 0xa) (tile_index + tile_count) //Tile cell index
WRITE_SHORT (new_door_offset + 0xe) 1 //Open polygons count
WRITE_SHORT (new_door_offset + 0x10) 1 //Closed polygons count
WRITE_LONG (new_door_offset + 0x12) (poly_table + 0x1a) //Open polygons offset
WRITE_LONG (new_door_offset + 0x16) (poly_table + 0x1a + 0x12) //Closed polygons offset

//Update offsets for new objects
FOR (j = 0; j < ovr_count; j += 1) BEGIN //Update overlays
  WRITE_LONG (j * 0x18 + ovr_offset + 0x10) (THIS + 0x1a) //Tilemap offset
  WRITE_LONG (j * 0x18 + ovr_offset + 0x14) (THIS + 0x1a) //Tile index lookup offset
END
door_count += 1
WRITE_LONG 0xc door_count
WRITE_LONG 0x1c (dtc_indices + 0x1a)
WRITE_LONG (sec_hdr + 4) (poly_offset + 0x1a)
WRITE_LONG (sec_hdr + 8) (vert_offset + 0x1a + 0x24)
WRITE_LONG (sec_hdr + 0xc) (wall_offset + 0x1a)
WRITE_LONG (sec_hdr + 0x10) (poly_table + 0x1a + 0x24)
 END
BUT_ONLY

COPY_EXISTING ~%Beregost%.are~ override
 PATCH_IF SOURCE_SIZE > 0x28f BEGIN
READ_SHORT 0x5a reg_count
READ_LONG 0x5c reg_offset
READ_LONG 0x7c vert_offset
READ_SHORT 0x80 vert_count
READ_SHORT 0x82 amb_count
READ_LONG 0x84 amb_offset
READ_LONG 0xa4 door_count
READ_LONG 0xa8 door_offset
new_door_offset = door_offset + door_count * 0xc8
new_vert_offset = vert_offset + vert_count * 4

FOR (h = 0; h < reg_count; h += 1) BEGIN //Adjust house travel region boundaries
  READ_ASCII (h * 0xc4 + reg_offset) reg_name //Read the name
  PATCH_IF (~%reg_name%~ STRING_EQUAL_CASE ~%BeregH22Reg%~ = 1) BEGIN //If House 22
	WRITE_SHORT (h * 0xc4 + reg_offset + 0x22) 2330 //Boundary left
	WRITE_SHORT (h * 0xc4 + reg_offset + 0x24) 1478 //Boundary top
	WRITE_SHORT (h * 0xc4 + reg_offset + 0x26) 2370 //Boundary right
	WRITE_SHORT (h * 0xc4 + reg_offset + 0x28) 1620 //Boundary bottom
	READ_LONG (h * 0xc4 + reg_offset + 0x2c) vert_index 
	last_vert_offset = (vert_offset + vert_index * 4)
	WRITE_SHORT last_vert_offset 2370
	WRITE_SHORT (last_vert_offset + 2) 1562
	WRITE_SHORT (last_vert_offset + 4) 2330
	WRITE_SHORT (last_vert_offset + 6) 1620
	WRITE_SHORT (last_vert_offset + 8) 2330
	WRITE_SHORT (last_vert_offset + 0xa) 1536
	WRITE_SHORT (last_vert_offset + 0xc) 2370
	WRITE_SHORT (last_vert_offset + 0xe) 1478
  END
END

FOR (i = 0; i < door_count; i += 1) BEGIN //Ascension64's awesome crash fix
  READ_ASCII (door_offset + i * 0xc8 + 0x20) door_name
  PATCH_IF (~%door_name%~ STRING_EQUAL_CASE ~door3304~ = 1) BEGIN
	READ_LONG (door_offset + i * 0xc8 + 0x48) poi_index
	READ_SHORT (door_offset + i * 0xc8 + 0x4c) poi_count
	FOR (j = poi_index; j < poi_index + poi_count; j += 1) BEGIN
	  READ_SHORT (vert_offset + j * 4) x
	  READ_SHORT (vert_offset + j * 4 + 2) y
	  PATCH_IF (x = 243 && y = 326) BEGIN
		WRITE_SHORT (vert_offset + j * 4) 233
		WRITE_SHORT (vert_offset + j * 4 + 2) 302
	  END
	  PATCH_IF (x = 243 && y = 327) BEGIN
		WRITE_SHORT (vert_offset + j * 4) 233
		WRITE_SHORT (vert_offset + j * 4 + 2) 304
	  END
	  PATCH_IF (x = 242 && y = 325) BEGIN
		WRITE_SHORT (vert_offset + j * 4) 232
		WRITE_SHORT (vert_offset + j * 4 + 2) 304
	  END
	END
  END
END

FOR (j = 0; j < amb_count; j += 1) BEGIN //Fix missing ambient reference
  READ_ASCII (amb_offset + j * 0xd4) amb_name
  PATCH_IF (~%amb_name%~ STRING_EQUAL_CASE ~birds~ = 1) BEGIN
	READ_SHORT (amb_offset + j * 0xd4 + 0x80) snd_count
	FOR (k = 0; k < snd_count; k += 8) BEGIN
	  READ_ASCII (amb_offset + j * 0xd4 + 0x30 + k) snd_ref
	  PATCH_IF (~%snd_ref%~ STRING_EQUAL_CASE ~%tutu_scripta%mb_e05c~ = 1) BEGIN
		WRITE_ASCIIE (amb_offset + j * 0xd4 + 0x30 + k) ~%tutu_scripta%MB_E05A~ #8
	  END
	END
  END
END

INSERT_BYTES new_vert_offset 0x30 //Insert 12 new vertex pairs
WRITE_SHORT new_vert_offset 2370 //Open door
WRITE_SHORT (new_vert_offset + 2) 1563
WRITE_SHORT (new_vert_offset + 4) 2325
WRITE_SHORT (new_vert_offset + 6) 1563
WRITE_SHORT (new_vert_offset + 8) 2325
WRITE_SHORT (new_vert_offset + 0xa) 1478
WRITE_SHORT (new_vert_offset + 0xc) 2370
WRITE_SHORT (new_vert_offset + 0xe) 1478
WRITE_SHORT (new_vert_offset + 0x10) 2370 //Closed door
WRITE_SHORT (new_vert_offset + 0x12) 1562
WRITE_SHORT (new_vert_offset + 0x14) 2330
WRITE_SHORT (new_vert_offset + 0x16) 1620
WRITE_SHORT (new_vert_offset + 0x18) 2330
WRITE_SHORT (new_vert_offset + 0x1a) 1536
WRITE_SHORT (new_vert_offset + 0x1c) 2370
WRITE_SHORT (new_vert_offset + 0x1e) 1478
WRITE_SHORT (new_vert_offset + 0x20) 147 //Open impeded cells
WRITE_SHORT (new_vert_offset + 0x22) 128
WRITE_SHORT (new_vert_offset + 0x24) 148
WRITE_SHORT (new_vert_offset + 0x26) 128
WRITE_SHORT (new_vert_offset + 0x28) 146 //Closed impeded cells
WRITE_SHORT (new_vert_offset + 0x2a) 131
WRITE_SHORT (new_vert_offset + 0x2c) 147
WRITE_SHORT (new_vert_offset + 0x2e) 130

INSERT_BYTES new_door_offset 0xc8 //Insert new door
WRITE_ASCII new_door_offset ~Door3337~ #8 //Name
WRITE_ASCII (new_door_offset + 0x20) ~DOOR3337~ #8 //.wed ID
WRITE_BYTE (new_door_offset + 0x28) 0b01000010 //Flags (linked and locked)
WRITE_LONG (new_door_offset + 0x2c) vert_count  //Open door vertex index
WRITE_SHORT (new_door_offset + 0x30) 4 //Open door vertex count
WRITE_SHORT (new_door_offset + 0x32) 4 //Closed door vertex count
WRITE_LONG (new_door_offset + 0x34) (vert_count + 4) //Closed door vertex index
WRITE_SHORT (new_door_offset + 0x38) 2325 //Open boundary minimum X coordinate
WRITE_SHORT (new_door_offset + 0x3a) 1478 //Open boundary minimum Y coordinate
WRITE_SHORT (new_door_offset + 0x3c) 2370 //Open boundary maximum X coordinate
WRITE_SHORT (new_door_offset + 0x3e) 1563 //Open boundary maximum Y coordinate
WRITE_SHORT (new_door_offset + 0x40) 2330 //Closed boundary minimum X coordinate
WRITE_SHORT (new_door_offset + 0x42) 1478 //Closed boundary minimum Y coordinate
WRITE_SHORT (new_door_offset + 0x44) 2370 //Closed boundary maximum X coordinate
WRITE_SHORT (new_door_offset + 0x46) 1620 //Closed boundary maximum Y coordinate
WRITE_LONG (new_door_offset + 0x48) (vert_count + 8) //Closed impeded vertex index
WRITE_SHORT (new_door_offset + 0x4c) 2 //Closed impeded vertex count
WRITE_SHORT (new_door_offset + 0x4e) 2 //Open impeded vertex count
WRITE_LONG (new_door_offset + 0x50) (vert_count + 10) //Open impeded vertex index
WRITE_LONG (new_door_offset + 0x68) 30 //Cursor index (door)
WRITE_SHORT (new_door_offset + 0x74) 2342 //Trap launch X coordinate
WRITE_SHORT (new_door_offset + 0x76) 1556 //Trap launch Y coordinate
WRITE_ASCII (new_door_offset + 0x78) ~b!key01~ #8 //Key item
WRITE_LONG (new_door_offset + 0x8c) 150 //Lock difficulty
WRITE_SHORT (new_door_offset + 0x90) 2312 //Open location X coordinate
WRITE_SHORT (new_door_offset + 0x92) 1518 //Open location Y coordinate
WRITE_SHORT (new_door_offset + 0x94) 2312 //Closed location X coordinate
WRITE_SHORT (new_door_offset + 0x96) 1518 //Closed location Y coordinate
vert_count += 12
WRITE_SHORT 0x80 vert_count
door_count += 1
WRITE_LONG 0xa4 door_count

PATCH_FOR_EACH offset IN 0x7c 0x88 BEGIN
  READ_LONG offset old_value
  PATCH_IF old_value > door_offset BEGIN
	WRITE_LONG offset (old_value + 0xc8) //Update offsets to account for new door
  END
END

PATCH_FOR_EACH offset IN 0xa0 0xb0 0xb8 0xbc 0xc0 0xc4 0xcc BEGIN
  READ_LONG offset old_value
  PATCH_IF old_value > vert_offset BEGIN
	WRITE_LONG offset (old_value + 0xc8 + 0x30) //Update offsets to account for new door and vertices
  END
END
 END
BUT_ONLY

COPY_EXISTING ~key07.itm~ ~override/b!key01.itm~ //Beregost house key
 SAY NAME1 ~Ornate Key~
 SAY NAME2 ~Ornate Key~
 SAY UNIDENTIFIED_DESC ~This gold-enameled key has elaborate designs on it. It is now a bit scuffed but still looks serviceable.~
 WRITE_BYTE 0x18 (THIS BAND 0b11111110) //Make it sellable (why not)
 WRITE_LONG 0x34 7 //Price

COPY_EXISTING ~%tutu_var%inn3351.sto~ ~override~ //Let Feldepost Inn buy keys
 PATCH_IF SOURCE_SIZE > 0x9b BEGIN
READ_LONG 0x2c bought_offset
READ_LONG 0x30 bought_count
found_key = 0
found_potn = 0
FOR (i = 0; i < bought_count; i += 1) BEGIN
  READ_LONG (bought_offset + i * 4) item_categ
  PATCH_IF item_categ = 8 BEGIN
	found_key = 1
  END
  PATCH_IF item_categ = 9 BEGIN
	found_potn = 1
	key_offset = (bought_offset + i * 4)
  END
END
PATCH_IF found_potn = 0 BEGIN
  key_offset = SOURCE_SIZE
END
PATCH_IF found_key = 0 BEGIN
  INSERT_BYTES key_offset 4
  WRITE_LONG key_offset 8
  bought_count += 1
  WRITE_LONG 0x30 bought_count
END
 END
BUT_ONLY

RANDOM_SEED null //Initialize random placement
OUTER_SET rnk = RANDOM(1 3)
ACTION_IF rnk = 1 BEGIN
 COPY_EXISTING ~%ValleyoftheTombs_Tomb%.are~ override
PATCH_IF SOURCE_SIZE > 0x28f BEGIN
  LPF ADD_AREA_ITEM
	INT_VAR
	container_to_add_to = 5
	STR_VAR
	item_to_add = ~b!key01~
  END
END
 BUT_ONLY
END ELSE BEGIN
 ACTION_IF rnk = 2 BEGIN
COPY_EXISTING ~%BanditCamp_Tent2%.are~ override
  PATCH_IF SOURCE_SIZE > 0x28f BEGIN
	LPF ADD_AREA_ITEM
	  INT_VAR
	  container_to_add_to = 4
	  STR_VAR
	  item_to_add = ~b!key01~
	END
  END
BUT_ONLY
 END ELSE BEGIN
COPY_EXISTING ~%UlcasterRuins%.are~ override
  PATCH_IF SOURCE_SIZE > 0x28f BEGIN
	LPF ADD_AREA_ITEM
	  INT_VAR
	  container_to_add_to = 4
	  STR_VAR
	  item_to_add = ~b!key01~
	END
  END
BUT_ONLY
 END
END

(Now I would have used Nythrun's fj_add_are_struct function, at least for the .are portion of this, but it stubbornly refused to recognise the new door vertices, even after I corrected a typo in it the door_structure section... :()

Link to comment

Hey, that's pretty cool. I'll probably have time to level up version up some time this weekend. I'm trying to remember how to mod NWN2 at the moment, but I'll put in a couple hours worth of IE time Sunday.

 

Thanks!

:)

Link to comment

Turns out that the cat woke me up early this morning, so I had some time to update earlier than I expected. :)

 

 

I did wind up changing the lock difficulty to 110. None of the thieves I've had have had anywhere close to that kind of lockpicking ability at level 6 (25 x 6=150, and there's traps to think about, too). If the PC waits until the quest is given, s/he'll probably be fairly high level anyway, so I didn't feel too bad about letting Penny give the PC the key.

 

So yeah, this means that v5 is up.

 

Thanks again!

Link to comment

Heya again! :)

 

Sorry about not reporting this earlier, but line 678 in Kivan\BAF\P#DEHER.BAF should probably have been:

!StateCheck(LastSeenBy(Myself),STATE_REALLY_DEAD)

and not

!StateCheck(Myself,STATE_REALLY_DEAD)

I admit that this was a goof up on my part and am sorry for that :)

 

As always, I dunno the severity of this so please consider it for whenever you version up next! :laugh:

Link to comment
I did wind up changing the lock difficulty to 110. None of the thieves I've had have had anywhere close to that kind of lockpicking ability at level 6 (25 x 6=150, and there's traps to think about, too).
You get 20 points in each skill on creation, plus an extra 5-10 points if you're a short person (dwarves get +10, gnomes and halflings +5) and then immediately 40 points to use. So a dwarf thief could have 75 in open locks at level 1. Then the thievery potion adds another 40. Shouldn't really be that tough to get that by level 6 unless you've been pouring your points into useless skills, and open locks is undoubtedly the most useful skill early in the game. I usually have at least 2 thieves or thief combos, one for locks and one for other stuff. But I guess the point is not to pick this lock, but get the key :).
If the PC waits until the quest is given, s/he'll probably be fairly high level anyway, so I didn't feel too bad about letting Penny give the PC the key.
Aw, and I put so much hard work into that random key placement routine (heh, actually that bit took the least amount of time since there are in-built functions and I ripped the structure from Aurora anyway). I guess someone could use it to put some other random item into the game for flavour.

 

I guess this makes Gavin a required install, if it wasn't before, at least for Tutu since it fixes both a missing ambient and the crash issue in Beregost.

Link to comment

It's awesome, Miloch, because this way, even if Gavin isn't recruited, the party can still get the key!

 

Giving the key to Penny was a cop-out, I admit, but it was that or pepper the dialogue with clues as to where the keys might possibly be located, and that sounded like a lot of work. OK, not as much as doing the awesome code you did, but still...

Link to comment
Giving the key to Penny was a cop-out, I admit, but it was that or pepper the dialogue with clues as to where the keys might possibly be located, and that sounded like a lot of work. OK, not as much as doing the awesome code you did, but still...
Hey, if I put in 250+ lines of code (and you wouldn't believe the bugs before I got all the offsets right) just on a damned door, the least you can do is write a bit of dialogue :).

 

Though you wouldn't need to drop the clues by dialogue either. You could leave a note behind (and the note could vary based on where it is). Or even mod the tavern rumours, which could also vary based on where the key is. Though I suppose you'd have to drop the occasional false rumour or they just wouldn't be proper rumours. And I might just have to look into that later, because it's something cool I haven't done yet (and can't be nearly as hard as adding that lock).

Link to comment

Don't think it would be too tough to add rumors... but then again, I never tried.

 

Sorry if it sounds like I'm taking the easy way out, but I've got a lot of modding to do and only 7 days to do it. I'll look into adding rumors during that chunk of IE time I was setting aside for tomorrow. If I can figure out how to do it, or if you can, I'll bump the lock difficulty back up to 150 and take away Penny's key. Might as well make the quest a little bit more than a FedEx.

Link to comment
Don't think it would be too tough to add rumors... but then again, I never tried.
Well I checked it out in between beach lounging and dinner party time. Turns out it would involve modding dialogue, the file in question being %tutu_var%rbereg.dlg (Beregost rumours). Not a dialogue whiz, but I might be able to figure it out with a little more analysis. Offhand, it'd seem to be a matter of an extra trigger, state and response (there are 22 by default for each for each rumour). So for another rumour(s) perhaps it'd be a matter of using ADD_STATE_TRIGGER, ADD_TRANS_TRIGGER and/or ADD_TRANS_ACTION? Maybe you have more clues having worked more with dialogue but I can probably figure it out later (after a bottle of wine or so might be best, rofl).
Link to comment

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...