Jump to content
The Dark Mod Forums

The Ultimate Solution


Sotha

Recommended Posts

The Ultimate Solution is a little wordplay. As in "Final Liquid," ie "Poison."

 

I loved the gameplay possibilities the poisons gave in the Hitman games and I really would like to bring that into TDM, easy to every mapper's reach, with basic scripting.

 

So I started to make a assassination mission so that I could play with poisons. I like open/transparent development (could get some good feedback or advice) so I'll be posting here progress occasionally.

 

Now the design is a bit open at present. It is divided into Delivery (how the poison is given to AI) and Dying (how the AI dies.)

 

Delivery

Delivery seems simple at present. Give the player a poison tool (lethal and KO poisons, of course). Give the unattended bottles the AIs drink from a custom stim that reacts to the poison (similar like loading the cannon and making the soup in LQD). Then the poison is removed from the player and the bottle becomes poisoned.

Need some visual cue that the bottle has been poisoned, probably.

I probably also need to do a "pick up bottle, pick up goblet, pour drink into goblet, put away bottle, drink, enjoy tasty drink" animation so that it would work for more AIs: nobles don't drink directly from bottles, right?

 

When the bottle has been poisoned, the AI later comes on it's patrol to drink from the bottle, the game checks if the bottle is poisoned, probably using a simple map script variable. If it is, too bad for the AI, we move to Dying.

 

Dying.

Now, poison would be just boring if the enemy just dropped dead. That we can already do. Easy.

 

The death by poisoning needs some drama and here my newly improved animation skills come in. Something nasty: the AI grabs throat, crumbles to the ground and spasms. Not decided yet. This is sort-of a death animation, but those are a bit tricky to do in Doom 3 from the mapper side.

 

Playing animations via a script is easy, but the problem is that if the player made some noise or went into the AI's field of view, they would simply stop their death throes, investigate and attack. Then they would simply collapse to the floor dead a bit later.

 

So I ended up with few lines of scripting that simply make the victim AI oblivious of the surroundings. Here is the first attempt:

 

http://www.youtube.com/watch?v=ccCcsqngQdk&feature=youtu.be

 

First I show that AI is normal and responds to the player. When the lever is pulled the AI is poisoned via a script. All the acuities are set to zero and the AI doesn't respond to anything in the world, so that the poisoning animation can play all the way in peace without the AI being distracted. There is an intentional delay before the dying anim kicks in so that I have time to bounce and test the AI acuity.

 

The AI health is also set to 1. That way damaging the AI will not bring him out from the death anim, but just kills him instead. You can KO the AI but then he dies as a ragdoll a bit later. This should cover all scenarios of interrupting the dying animation.

 

The poisoning death anim you see in the vid is just a placeholder I mashed up quickly: didn't want to see much trouble in that until I knew the idea is possible to implement. Presently everything looks as if this could work.

  • Like 3

Clipper

-The mapper's best friend.

Link to comment
Share on other sites

There is a spawnarg to turn death animations on or off. It's off by default, but if you wanted an AI to use a particular death animation you can. I don't know if there's an easy way to play only play the animation if he's killed in a particular way, though.

Link to comment
Share on other sites

Ha wow that looks really cool Sotha! Other than the usual break in, steal and leave gameplay this would be a fun addition to a map where say you have to infiltrate a castle and maybe you could poison or knockout a nobleman expected to visit the estate for a party they are holding, steal their clothes and walk right in. Might not be exactly in the style of Thief but hey as long as there is great loot at the end of it all i'm sure the character would go through with anything :)

Edited by TylerVocal
Link to comment
Share on other sites

@springs. Yeah, I investigated the death scripts, but they looked difficult. Optimal would be flash-type poison stim that would cause death, but touching the internal tdm scripts would problematic. If the AI can be dumbfounded of their surroundings in a reliable way, then this should be great. No need to touch tdm internals.

 

zerg,

Collapsing bodies are interesting to the AI already.

 

i308*, yep, but I plan the poison to be more inexpensive than the gas arrows. Planning and patience should result in cheap minimum risk ko or kill.BONUS: I think I'm close to figuring out a new way to following the modular build technique. I'll report in more detail if successful. Nothing fancy, minor improvement.

Clipper

-The mapper's best friend.

Link to comment
Share on other sites

@springs. Yeah, I investigated the death scripts, but they looked difficult.

 

You shouldn't need to adjust any scripts; just add "enable_death_anim" "1" to your entity and make a model def with your animation as "death". He'll play this animation for any kind of death, but there are probably ways around that.

Link to comment
Share on other sites

But that would mean playing the death anim in case of any death, correct?

 

Poison death only should be considered for this application.

 

Current implementation satisfactory until problematic behavior emerge.

Clipper

-The mapper's best friend.

Link to comment
Share on other sites

On mobile, cant see if there are any pics or vids, but judging from the description, that sounds like a really cool, specially now that you talk(and can deliver) about custom anims. If this could be packaged as a prefab, as most mappers do not know how to script, this would be very, very nice. A simple mission of swapping a normal bottle of wine for a poisoned one befofe the lord comes around to have his late dinner, should be a fresh new feat for the tdm thief. If you could, somewhat easily, create a loop of part of that dying anim, of a character on the ground, agonizing in pain, that could also be used for the Stalker deadly wounded feature (where sometimes a downed ai will not die immediately, but will agonize for x minutes), considering that is deemed a desirable feature in the future.

Edited by RPGista
Link to comment
Share on other sites

I'd think simple & try to have the poison just cue the animation then then kill him when it's done without an animation.

What do you see when you turn out the light? I can't tell you but I know that it's mine.

Link to comment
Share on other sites

Wouldn't this be the perfect use of those exploding mushrooms we chatted about a while back?

Some ideas were knockout gas, poison, hallucinogenic gas, etc... The mushrooms being throw-able or shoot-able from afar.

Edited by PranQster

System: Mageia Linux Cauldron, aka Mageia 8

Link to comment
Share on other sites

You can write an extension for the ai_darkmod_base class normaly used as scriptobject by the ai, which add a STIM_POISSON to the ai. If the said stim is applied, a method is called which sets the acuities to zero, runs the animation and then kills the ai.

 

All the mapper than has to do is to set the scriptobject to yours and add the stim to all entites who should poisson the ai. Maybe writing a custom scriptobject for poissened bottles would be neccessary, too, but that's no big deal.

FM's: Builder Roads, Old Habits, Old Habits Rebuild

Mapping and Scripting: Apples and Peaches

Sculptris Models and Tutorials: Obsttortes Models

My wiki articles: Obstipedia

Texture Blending in DR: DR ASE Blend Exporter

Link to comment
Share on other sites

Triggering the poisoning would still need a map script, so I dunno if the stim was very useful.

 

At present, I'm thinking of controlling the drinking with a conversation. When the drinking anim finishes, the conversation triggers a map script that checks a map variable if the drink is poisoned. if it is not, do nothing and the AI goes back to his business. If it is, play poisoning anim and die.

Clipper

-The mapper's best friend.

Link to comment
Share on other sites

Triggering the poisoning would still need a map script

Not neccessarily, although a stim might not be needed at all. Think of the following constellation.

 

The ai use a custom script object. This checks whether or not the ai holds something in its hands, and if , what. The script could then for example check whether a certain spawnarg is set on that object, like "poisened" or whatever. In case of a bottle, the script would then just initiate the death anim and die sequence after the drinking animation has finished.

 

All you would need to do then is to

  • include the scriptobject
  • set "scriptobject" "..." on the ai who should be able to be poisened
  • set "poisened" "1" on all bottles or eatables that should be poisening the ai when eated or drinked.

 

You could easely create custom entities for the last step. In case of a bottle for example

entityDef atdm:poisened_bottle
{
 "inherit" "entityname_of_bottle"
 "poisened" "1"
}

And you couldjust place the poisened bottles in your mission without having to do anything else. (The same applies to the ai, too).

FM's: Builder Roads, Old Habits, Old Habits Rebuild

Mapping and Scripting: Apples and Peaches

Sculptris Models and Tutorials: Obsttortes Models

My wiki articles: Obstipedia

Texture Blending in DR: DR ASE Blend Exporter

Link to comment
Share on other sites

zerg,

Collapsing bodies are interesting to the AI already.

 

That I know, but what's the point of poisoning someone if it's just gonna alert the guards? A sleep-like poison or a gas arrow would be a lot more effective, unless the mission is based on a very very specific type of assassination that, for instance aims for the player to get into the kitchen and poison the stew/beverages, instead of directly killing the target with an arrow.

Link to comment
Share on other sites

Zerg,

Gas arrowed collapsing bodies are also catch the AIs attention. Both poison, arrows and gas arrows result in the same. If you use them on lone AI, you get a discreet ko/kill.

 

In the hitman games you could ask the same question: why poison someone instead of shooting them into the face with a shotgun.

 

Why stealth your way through the mission when you could shoot yourself through it. I dunno. Both approaches work and are supported. It is up to the player to decide. Poison gives the player more interesting choices.

 

At least I would use it in the mission it if the framework was there and it was easy to implement. As a player, I think it would be fun to set up traps: the more indirect and devious the better.

Clipper

-The mapper's best friend.

Link to comment
Share on other sites

Zerg,

Gas arrowed collapsing bodies are also catch the AIs attention. Both poison, arrows and gas arrows result in the same. If you use them on lone AI, you get a discreet ko/kill.

 

Again, I know that, but it's just that the arrows feel safer since they imply not getting close to the target. I never really played any Hitman games, so I don't really know how it works there, but I just get the feeling this one of those things that work a lot better in real life contexts, and tend to fall short when translated to the more limited world of video games.

 

I always support having more options to deepen gameplay yes, but I can't shake the feel something like this requires a very good level designer to make it work properly. But hey, you're working on a proof of concept here, and I hope you can prove my suspicions wrong, soon enough.

Link to comment
Share on other sites

Yep, let's see how it works out. If it is not a miserable failure, remember, that it is not only about poison. In principle, the general script technique (make AI oblivious, play an anim that does something, apply result) could be used to a variety of things.

 

Few examples I could immediately invent: two AIs panic and run into each other, KOing each other out. An assassin lady puts a dagger into the back of a noble while they are dancing if the player does not intervene. An AI jumps over a chasm. Theoretically, it could be even possible to script an AI to climb a ladder?

Clipper

-The mapper's best friend.

Link to comment
Share on other sites

The thing is, I think non-lethal poisons could be more useful than lethal ones, since they wouldn't necessarily alert the guards. For instance, a poison that would cause the target uncontrollable nausea and vomit, hence making it run towards the bathroom, or a poison that would cause the target to fall asleep.

Link to comment
Share on other sites

The only real benefit I see in a poison in regardence to the takeout possibilities the player already has is, that it could have a delay before taking effect. This means you could poison an ai and than get away, so that if the poison starts taking effect, you are far away from the alerted guards. Or you could poison several ai before they know what happens.

FM's: Builder Roads, Old Habits, Old Habits Rebuild

Mapping and Scripting: Apples and Peaches

Sculptris Models and Tutorials: Obsttortes Models

My wiki articles: Obstipedia

Texture Blending in DR: DR ASE Blend Exporter

Link to comment
Share on other sites

So... The scripted poison needs a map around it. I'm feeling a bit lazy, so I'll go with a new kind of simple modular build this time.

 

I've built the most of the modules. They can be snapped together quickly like legos to form castle corridors, which somehow remind me of ones seen in Amnesia: The Dark Descent.

My corridors:

https://docs.google....dit?usp=sharing

 

Amnesia:

http://i1-news.softp....jpg?1372836536

 

The strange resemblance was completely unintentional and I noticed only afterwards I built the pieces.

 

I figured out a handy way to make the modules seamless: one has to first make a brush which is the same size as the module. Then you FIT the texture on it. Then you copy the texture and paste it onto the module patchwork. Since the texture is tiling in the horizontal direction and the texture was fitted on the module, even irregular shaped modules will fit seamlessly together. Handy!

Clipper

-The mapper's best friend.

Link to comment
Share on other sites

There may be more interesting possibilities with a drugging option - not just killing or rendering unconscious:

 

-induce fleeing behavior (flees from everyone, fear poison)

-induce aggressive behavior (attack everyone)

-induce impaired sight or hearing (additional stealth option, maybe accomplished as a deafening poison applied to the guards food for a autumn-y mission with heavy fog)

-induce weakness (drops weapon, slows down)

-induce tiredness (not unconsciousness; more subtle - victim gets just real tired, scans for empty bed and enters that nice bedding animation; normal sleep (awakable on sound)).

-induce loose bowels (vitcim scuttles off to nearby loo and stays there, making occasional funny noises)

-induce shape shifting (guard<->spider - for the more magick-y, esoteric missions)

-induce fear of light or darkness (victim wants to stay in or out of the light)

-induce mating behaviour (victim follows nearest woman around)

-induce over-motivation (amphetamine-like: victim follows normal patrols, but is always running - possibly useful for a thief in having reduced waiting times for movement possibility in guards patrol scheme)

  • Like 1

"Good people do not need laws to tell them to act responsibly while bad people will find a way around the laws." - Plato

"When outmatched... cheat."— Batman

Link to comment
Share on other sites

Yep, I actually am fond of the Laxative Poison idea. It gives a discreet possibility to temporarily get rid of a single guard in a controlled manner.

 

AI runs to the toilet, stays there for minutes and then returns to his post. No suspicion, no body to hide, no collateral alert effect like in noise arrow, enables traps (gas or explosive mine waiting in the toilet...)

 

The problem, I think, is in to how to get AI to suddenly run in a script. I think I tried to do that in LQD, but it turned out to be difficult. Maybe it deserves another look at. If someone knows the answer outright, don't hesitate to post it here. ;)

Clipper

-The mapper's best friend.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent Status Updates

    • taffernicus

      i am so euphoric to see new FMs keep coming out and I am keen to try it out in my leisure time, then suddenly my PC is spouting a couple of S.M.A.R.T errors...
      tbf i cannot afford myself to miss my network emulator image file&progress, important ebooks, hyper-v checkpoint & hyper-v export and the precious thief & TDM gamesaves. Don't fall yourself into & lay your hands on crappy SSD
       
      · 2 replies
    • OrbWeaver

      Does anyone actually use the Normalise button in the Surface inspector? Even after looking at the code I'm not quite sure what it's for.
      · 7 replies
    • Ansome

      Turns out my 15th anniversary mission idea has already been done once or twice before! I've been beaten to the punch once again, but I suppose that's to be expected when there's over 170 FMs out there, eh? I'm not complaining though, I love learning new tricks and taking inspiration from past FMs. Best of luck on your own fan missions!
      · 4 replies
    • The Black Arrow

      I wanna play Doom 3, but fhDoom has much better features than dhewm3, yet fhDoom is old, outdated and probably not supported. Damn!
      Makes me think that TDM engine for Doom 3 itself would actually be perfect.
      · 6 replies
    • Petike the Taffer

      Maybe a bit of advice ? In the FM series I'm preparing, the two main characters have the given names Toby and Agnes (it's the protagonist and deuteragonist, respectively), I've been toying with the idea of giving them family names as well, since many of the FM series have named protagonists who have surnames. Toby's from a family who were usually farriers, though he eventually wound up working as a cobbler (this serves as a daylight "front" for his night time thieving). Would it make sense if the man's popularly accepted family name was Farrier ? It's an existing, though less common English surname, and it directly refers to the profession practiced by his relatives. Your suggestions ?
      · 9 replies
×
×
  • Create New...