Ok, I had a brilliant (:D :rolleyes: ) idea, which I can't reveal yet, 'cause 'That would be telling'. Ahem. Anyways, I need to know if
#1. the objective "kill all humans (or whatever creatures I set it to) would fail, if they're all dead, just not by Garrett's hand (for instance, if a spider kills a human, but GARRETT didn't kill them human, would the mission fail? Be incomplete?)
#2. its possible to make things spawn at a particular time, because of a certain action - for instance, if Garrett's health goes below a certain point, can I make a health potion spawn somewhere? (I know this is probably a really outrageous expectation for the dark engine, but it would be great if it was possible (possible, I mean, without doing a TON of work:D)). If that's not possible, would it be possible to make something spawn 'x amount of seconds after an identical item is taken from that place'? (Again, probably outrageous, but... :-D)
#3. If it's possible to make things spawn a certain amount of time after the game starts?

Please let me know - just remember, if you don't help me, you are preventing the creation of one the greatest masterpeices in history. ;) :D :p :rolleyes:

Seriously, though, please help me!! :)

Xcom

23rd Sep 2002, 16:24

What version of Thief do you make your FM for?

#2 There is a variable which tracks Garrett's health. It's the one you see after mission completes in the stats screen: damage recieved- blah. I dunno if it's possible to track it in game. Telliamed will probably tell you more.

#3 Very much possible, at least in Thief 2. You can load miss16.osm and use TrapDelayer script aferwards. So, for example, you want a potion to spawn after 3 minutes in the game. This is what you can do (IMO):

- create a concrete room out of the room brush where player starts
- add scripts=TrigRoomPlayer to it
- create HealingPotion and place it in a blue room
- make a CreateTrap and place it where you want potion to appear
- make a RelayTrap
----- Add->Scripts: TrapDelayer (remove TrapRelay and mark "don't inherit")
------Add>Script->Timing=180 (180 secs=3 mins)
- Link CreateTrap to Potion via Contains flavor
- Link RelayTrap to CreateTrap via CD flavor
- Link your starting room to RelayTrap via CD flavor

would it be possible to make something spawn 'x amount of seconds after an identical item is taken from that place'?

If you need it respawn only one time, then that's pretty easy. However, if you need continious respawning, I think it will be harder to make. You can for example make an EmitterTrap and make it emit HealingPotions. After that, you can create a potion where you want it to be. Give it TrigWorldFrob script and edit its ForbInfo so it also includes "script" in the world action. Place that emitter slightly above the potion. CD-Link potion to emitter. In the game, once you grab the potion new one will be created. This will however work only once. If you want some timing in between, you'll probable need to use that TrapDelayer from #3 example.

amievil?

23rd Sep 2002, 21:58

for number 1, if you mean the objective (kill no humans)? and a spider or other thing kills it, the objective wont fail.

Apache

24th Sep 2002, 01:55

#1...As long as Garrett doesn't kill the AIs..then no it's not held against you. Thats why I like to run around deep water when there is a NoKill objective and makes the AIs fall in themsevles..:D
#2...ealth Potion spawning after Garrett gets X damage. Yes..
Add custom stim to Garrett..That when he receives X amount of damage it will send a CD to a CreateTrap that is linked to the HealthPotion arch-type.
Spawning object X amount of time after you frob something..Again Yes..Add StdButton script to the object with WorldAction checked in the EngineFeatures. Link that to a PlainMarker with the script 'TimedTrapRelay' added to it and Scripts>Timing (number time amount in box..5000 = 5 secs).
Then link this to a CreateTrap..linked to obj arch-type.
#3...As Xcom stated..But instead of using an OM.osm file..just use the plain marker method I mentioned above.

Telliamed_

24th Sep 2002, 06:55

#1 has been answered. (Except that most missions have pathable water turned off so you can only drown AI by making them accidentally fall in... how tedious.)

#3 has also been answered somewhat confusedly. :p

TrapTimedRelay and TrapDelayer are kinda like cousins. TrapDelayer is somewhat more mature. A timed relay counts in milliseconds and the timer is interrupted every time it is triggered. The Delayer counts in seconds, and each successive triggering is queued, so it can delay a serious of events. Also, TrapTimedRelay is loaded with gen.osm, but only with the patched Thief 2 v1.18; TrapDelayer needs to have miss16.osm loaded. Otherwise, they do pretty much the same thing.

Of course, they need to be triggered somehow. If you want to start the timer when the mission starts there are four (or more) ways to do it...

1) XCom's method of using a room trigger. This isn't really the best way to do it.
2) Create a FlickerTrigger that, along with triggering the timer, will trigger a DestroyTrap that is linked back to the FlickerTrigger. So the FlickerTrigger triggers once then is destroyed.
3) Get GayleSaver's custom scripts and use a TrigSim. This is simple, direct, and elegant. But you need the custom scripts to play the mission.
4) Create a marker with an active DeleteTweq on it. Add the script "TrigSlain". When the mission begins, the DeleteTweq starts up, deletes the marker, triggers the "TrigSlain" script, and activates whatever it's linked to.

Now, the biggie... #2

I'll answer the second half first: respawning items. I present you with this little tidbit from MISS16.OSM.

RenewableResource

This script creates new objects periodically. The type of object is specified by a ScriptParams link to an archetype. The data of the link is the maximum number of created objects that can exist at the same time. When the limit is reached, no new objects of that archetype will be created until one of the already existing ones is destroyed. The Script\Timing property specifies the number of seconds for the regeneration timer. The timer starts at the beginning of sim time; when it expires, a new object will be created if the old object has been picked up and the maximum object limit has not been reached. Then the timer starts over again. The timer is not interrupted by picking up or destroying the created object. While the first object will always be created, only four instances of the script will be able to regenerate any one type of object.

*whew* Okay, you can find examples of it in "Sabotage at Soulforge": check the elemental crystals that lie around under vines. Also the frog eggs, I think. Also, I used it more obviously in The Taffer's Tower.

As to your original concept, you'd have to talk to Gaylesaver about that. I think it may be possible with the scripts he's working on now, but I haven't seen them so I can't really say.

The problem with either DarkStats or a receptron is they will only pay attention to amount of damage received, regardless of what the player's actual hitpoints are. So if the trigger is supposed to fire when I lose 7 hitpoints, and I take 6 points of damage, the trigger will fire after taking one point of damage even if I'd drunk a healing poition.

So, you'd have to go with a custom script for it. One isn't available for use yet, but can be made.

THEthief

24th Sep 2002, 17:51

Thanks all!! :) I'm going to have to try those (I'll be busy for awhile (LOL):)); I think you might have misunderstood my first question, though - I didn't mean if some of the AI died, when there was a no-kill objective; I mean if the objective is kill everyone, and an AI kills another AI, will the objective fail, since Garrett didn't kill them all?...or will it be complete, because they're all dead?

Xcom, I use Dromed 2. :)

Thanks for all your help!! :)

Telliamed_

25th Sep 2002, 05:33

hrmm.... perhaps not? I don't know if the standard jaccuse behavior can do that. May be you need to use TrigSlain and a RequireAll trap. That will work for sure.