Creating secret containers, And how to reveal them |
The Black Wyrm's Lair Terms of Use | Help Search Members Calendar |
Creating secret containers, And how to reveal them |
Feb 3 2006, 10:14 AM
Post
#1
|
|
Eminence Grise Machiavelic Mod Developer Posts: 244 Joined: 12-November 04 From: Monthléry |
This tutorial is meant to create secret container, detectable like traps, with the Search skill of the thief. Special thanks to Vlàsak for the tips
In BGII, you just press the TAB key and all containers magically highlight, allowing you to loot every piece you want. If you want to make things harder, then this tuto is for ya! You need some files in order to make your first try. - An .ARE file, named ARTEST.ARE; - a .bcs file, named ARTEST.BCS, as it's the area's script; - another .bcs file, named TRSE01.BCS, where TRSE01 is a trap; The ARE file========== You need first to add a container to your map. Set any x/y value for the box dimension or position; name it CTSE01. Then create a new region (with the type TRAP), with the same dimension and location. Call it TRSE01. Add a new variable to your area, let's say "CTSE01", with a base value of 0. The Area script======= It must contain the following block: QUOTE IF Global("ContainerStuff","ARTEST",0) THEN RESPONSE #100 ContainerEnable("CTSE01",0) SetGlobal("CTSE01","ARTEST",1) END This block ensure that the container is unavailable the first time you enter the area. In game, it's juste invisible, non-selectable. The Trap script======= It must contain the following block: QUOTE IF Detected([ANYONE]) Global("CTSE01","ARTEST",1) //ensure that party got the XP only once and all the stuff is proceeded just once THEN RESPONSE #100 RemoveTraps("TRSE01") ContainerEnable("CTSE01",1) DisplayStringHead("LastTrigger",XXXXX)//You have detected a secret container! AddexperienceParty(YYY)//where yyy is the amount of XP gained SetGlobal("CTSE01","ARTEST",2) END If you detect the trap, it's instantly removed, and the hidden container is just available. The party gets some XP in the example. If you don't want that, just remove the AddexperienceParty(YYY) You can set how difficult it is to detect the secret container by modifying the trap right in the ARE file. You can repeat this operation for any container you want to make secret and harder to find (with name like CTSE02, 03 and so on). Note========== Detected() is just not triggered by using the spell Detect traps. I'm working to know how bypass that (perhaps with the SpellCast and Range triggers - I'm not quite sure if the Range trigger is available for Traps). |
|
|
Feb 22 2007, 04:01 AM
Post
#2
|
|
Forum Member Posts: 80 Joined: 18-August 06 |
This block ensure that the container is unavailable the first time you enter the area. In game, it's juste invisible, non-selectable. Unfortunately, ContainerEnable() doesn't remove TAB highlighting of disabled container (they just cannot be selected), thus the whole "secret container" thing becomes pointless. |
|
|
Feb 25 2007, 03:53 AM
Post
#3
|
|
Mod Developer Posts: 1158 Joined: 22-July 04 From: Sweden |
Fortunately, light map colours affect container highlighting, so it is possible to cover that area in black. That does not mean the highlight disappears - it simply becomes black rather than bright cyan. However, black blends easily with a dark background.
In that case, the player will manually have to detect the container rather than using thieving, and the container remains invisible unless you enable an animation to mimick detected containers. -Galactygon This post has been edited by Galactygon: Feb 25 2007, 09:18 PM -------------------- |
|
|
Feb 25 2007, 08:29 AM
Post
#4
|
|
Forum Member Posts: 80 Joined: 18-August 06 |
I've painted container location with black in both light-map and search-map. No effect, it's still cyan when I use TAB?
This post has been edited by pro5: Feb 25 2007, 08:29 AM |
|
|
Feb 25 2007, 06:22 PM
Post
#5
|
|
Mod Developer Posts: 1158 Joined: 22-July 04 From: Sweden |
So then lightmapping only works with dropped items?
-Galactygon This post has been edited by Galactygon: Feb 25 2007, 06:24 PM -------------------- |
|
|
Feb 25 2007, 07:14 PM
Post
#6
|
|
Forum Member Posts: 53 Joined: 22-March 05 |
Are you talking about the LUM map or the search map (you first said search, now you say LUM)?
If you're talking about the LUM map, then no, the area background isn't affected. |
|
|
Feb 25 2007, 09:17 PM
Post
#7
|
|
Mod Developer Posts: 1158 Joined: 22-July 04 From: Sweden |
It is lightmapping, my mistake. I am used to making posts about search maps, so it is a reflex.
-Galactygon This post has been edited by Galactygon: Feb 25 2007, 09:18 PM -------------------- |
|
|
Feb 25 2007, 11:08 PM
Post
#8
|
|
Forum Member Posts: 53 Joined: 22-March 05 |
I guess I'm not really surprised that ground items get the dynamic lighting. IIRC, the "highlighting" is actually a special frame in the ground icon BAM (how cheap); whereas the engine has special code to deal with highlighting trigger regions (including doors and containers), highlighting items is just done by switching to the highlight frame and gets the light adjustments. I don't think there's any way to trick the engine into concealing the hard-coded highlights (they even show up through the black mask, sigh).
The light maps shouldn't affect anything else beyond characters and ground icons (and animations, provided the appropriate flag is set). |
|
|
Feb 25 2007, 11:41 PM
Post
#9
|
|
consiglieri Member of Graphics Dept. Posts: 2343 Joined: 13-August 04 From: Michigan, U.S.A. |
Damn
had hope but no -------------------- |
|
|
Feb 25 2007, 11:44 PM
Post
#10
|
|
Mod Developer Posts: 1158 Joined: 22-July 04 From: Sweden |
QUOTE The light maps shouldn't affect anything else beyond characters and ground icons (and animations, provided the appropriate flag is set). It's a shame, really; I was hoping it would work. -Galactygon -------------------- |
|
|
Jun 4 2007, 08:29 PM
Post
#11
|
|
Forum Member Posts: 14 Joined: 29-April 05 |
I know it has been a while since this post was answered... but I have been thinking about the problem presented and sorta have a solution... or at least a workaround worthy of further exploration.
I created a container in an area and flagged it as a Pile. This way it only shows up as the ground icon of the object inside the container. I then created an item and made a new BAM that looks like a chest. Assigned it to a book copy. You can see from the below picture that the chest is visible (just to demonstrate), but it does not show up as a marked container like the ones around it. ... but you can put your cursor over it and it will give you the 'grabby' hand icon. Anyways, something to think about. I suppose you could either write a script to replace the item you want to hide when the time is right.. or put something else in the container with no ground icon. Or just create the item that looks like your container on the ground by either having some invis creature drop it at the appropriate time, or other ways. Here's the item and bam if you want to give it a try. Might spark some creative ideas Hope this helps. Cuv
Attached File(s)
invis1.jpg ( 108.66k )
Number of downloads: 40
invis2.jpg ( 95.73k ) Number of downloads: 34 chest.rar ( 1.86k ) Number of downloads: 17 |
|
|
Jun 4 2007, 08:40 PM
Post
#12
|
|
Forum Member Posts: 53 Joined: 22-March 05 |
I'd be worried about the game purging the pile (I can't remember the specifics of what it does and does not decide to periodically erase), but it does seem like a neat solution (you have to use a custom BAM that doesn't have the highlight frame).
I just use the pile type to get rid of containers I don't want anymore (easier than deleting them); I wouldn't have thought to do it this way. |
|
|
Jun 5 2007, 07:01 PM
Post
#13
|
|
IESDP Guardian Forum Member Posts: 175 Joined: 22-July 04 |
I remember reading that you can simply delete the vertices relating to the outline of the container.
However, I don't remember where I read it, nor if it worked. -------------------- Visit the IESDP https://gibberlings3.github.io/iesdp/
|
|
|
Jun 5 2007, 08:20 PM
Post
#14
|
|
Forum Member Posts: 53 Joined: 22-March 05 |
But then you have to update the vertex index of every other structure in the ARE. No thanks. ;)
I think setting the bounding rect coords to 0 or -1 should work fine (you shouldn't even have to touch the vertices), but why bother when you can just change the type to pile (unless the container has items and you don't want to delete them, but then I'm not sure what you'd be trying to do)? |
|
|
Jun 6 2007, 05:34 PM
Post
#15
|
|
Forum Member Posts: 14 Joined: 29-April 05 |
From where exactly are those container types referenced in the .ARE? It must be an IDS, but I can't seem to find it. Anyone know the file name? I want to find out more about Pile, and why whatever shape or size container polygon I draw for it remains invisible. Could be a solution in there somewhere.
Cuv |
|
|
Jun 6 2007, 05:50 PM
Post
#16
|
|
Forum Member Posts: 53 Joined: 22-March 05 |
Container types are hardcoded; there's not much difference beyond the search sound and icon, but piles are handled differently.
You'll never get a pile that respects any region polygons (a pile is simply a point on the ground where contents of the container may be placed). The engine creates fake piles for lots of stuff (most of which you'll never see). You should be able to change the highlight frame of your container icon to mimic the normal highlighting effect (instead of the cyan border that normal item icons have, you could just use a cyan overlay). |
|
|
Jun 7 2007, 03:55 AM
Post
#17
|
|
Forum Member Posts: 14 Joined: 29-April 05 |
Ah, I was afraid of that. Thanks for the info DevSin
I will keep thinking on the problem and see what else I can come up with... I might need a secret container myself at some point. cheers, cuv |
|
|
Jun 9 2007, 02:25 PM
Post
#18
|
|
Forum Member Posts: 14 Joined: 29-April 05 |
Another question for the programming type people (as I am not one of those):
Where might I locate the actual program coding for CGameContainer.cpp? Is it actually coded into the BGMain.exe or as a file elsewhere? I found the hardcoding Offset in the BGMain.exe for the containers using a hex editor (but didnt change anything), just as you described... and now I am wondering if there is a way to patch in what I want What I really want to do is to patch the coding for the map size restrictions and adding new animation slots (found those offsets too at roughly 0075:****) D:\dev\baldur\CGameContainer.cpp BAG CHEST DRAWER PILE TABLE SHELF ALTAR NONVISIBLE SPELLBOOK BODY BARREL CRATE FALSE OFFSET 0070:F6C0 BGMain.exe Cuv |
|
|
Jun 9 2007, 04:45 PM
Post
#19
|
|
Forum Member Posts: 53 Joined: 22-March 05 |
It's part of the actual program code; the source file itself is not available. What you found is more likely the location of strings used for assertions than the location where container handling is done.
You can change some simple values in the compiled executable, but you won't be able to do anything worthwhile (and adding anything is out of the question). This post has been edited by devSin: Jun 9 2007, 04:48 PM |
|
|
Jun 9 2007, 07:42 PM
Post
#20
|
|
Forum Member Posts: 14 Joined: 29-April 05 |
Thanks again DevSin
I may poke around a bit more... and might even try adding or changing some things around. This is a third install of the ToB game... the stripped-down version that I use for testing out things. If it crashes or destroys it, no biggie.. will just re-install the TCCore. Cuv Will certainly keep you all informed if I can achieve any worthwhile changes or find out anything new about the engine. This post has been edited by Cuv: Jun 9 2007, 07:43 PM |
|
|
Lo-Fi Version | Time is now: 8th November 2024 - 03:56 AM |