Ok, in general I dont like "Mafia"-like games where you're the bad guys, but this deifinetely sounds like fun coz it involves a lot of *really* advanced scripting. The ideas you've come up
with so far sound more like an advanture than a FPS, so you'll need dozens of custom scripts to tweak the AI.
One aspect of mission design I always felt is neglected by most designers is to set up a realistic enviroment. Just shooting ppl is boring, and we all have seen the built-in
animations and AI behaviour a coupla thousand times... so what needs is something new.
What really helps is atmosphere. Make this guy (player character) have a girlfriend, and also make him live somewhere, in a small house where he has some nice guns at his disposal and a nice car.
Now that girl will have some scripted AI, and she will randomly do things, like talk to the player if he's around, or drive to the next store etc pp. Maybe you could even make a mission
where she gets captured by another cartel...
You'll definetely need an interface to talk with ppl. This could be made like in those good old adventure games, where you walk up close to someone, and a bunch of phrases pops up that you can choose from.
Also script some AI for the local residents. They should hang around, or drive in their cars, or go for a walk, chat, etc pp - everything is triggered randomly by some smart script. When
they feal threatened, i.e. if they see how you get out your big shotgun right in front of them, they'll call the police, or run away or something. Ok, so you need:
* a police station
* some gamelogics on the map which mark positions where a resident could call the police
(open buildigns, phone booth etc).
* an AI script for da police
About that personality thing for non-player units... this will require really advanced scripting. Check out my tute on AI scripting and fuzzy logic in the Advanced Editing forum
to see what I have in mind
For the cutscenes you can use my GT script; I can tell you how to use it no prob. Basically it moves a camera along a curved path, so things look a bit more spectacular than they normally would. Also you can rip off the voice generator script from the ST16MPenetration mission and use it for the local residants so they have a chat randomly.
When you script the AI, use lots of global vars to store various states for each unit, so you can query stuff like "has this guy spotted the player" or "is an enemy unit around this place".
Using these states, each unit makes its decisions using a simple pseudo fuzzy logic where you basically just have a bunch of options, and you weight the importance of the different unit states to make a decision. Also you need a script which keeps track of how close the units are to each other to draw conclusions from that information .Otherwise you need to put up with the stupid build-in AI; well you prolly know what I mean: the player shoots some guy, and the guy next to him wont get his lazy ass off even if his friend's guts are slattered all over him
Before you start scripting the AI, make a list of available data that the units can draw from.
Example:
*how close is the player?
*did he see the player?
*did the player see him?
*did someone open fire in his general direction? (I wrote a nice script for my SPM "The Prey"
that I can send you; it detects if someone has opened fire. Using the "getdir" command you
can query the general direction in which a unit has fired).
This is only an example and you can prolly come up with more like these. Then when you have a
complete list, make a script which keeps track of this information and saves it in an array.
At mission start, the script is executed for all units, and each of them gets his own array
to save the state data. The script could also run at different frequencies for each unit to
reflect different levels of awareness.
Also you gotta mark specific regions on the map that the AI can use for specific tactics, like
waylaying the player or hiding. These could be trees, bushes or buildings. For the latter ones, use the new "inspect ID" editor feature in Res, and make a list with the IDs for all (enterable) buildings on the map. If the AI script decides that a specific unit should hide, you simply traverse the list and pick a building which is close enuff.
There's a lot of other neat stuff you could do with such a script, like make a list of all cars
on the map, and make the AI dudes use them occasionally. For example, when some enemy unit spottes
the player, the AI script chooses from one of these options:
1. Attack (condition: enuff allied units around OR enuff units in player squad are dead already. Use
a simple ratio here)
2. Hide (condition: same as above, just negate them)
-if possible, pick a building from list which is close enuff)
3. Surrender (condition: same as above, but only if the ratio is high enuff so that the unit is
definetely outnumbered and wouldn't stand a chance anyway)
4. Run away (condition: same as above; use random to decide which one to pick. Coordinates for
DoMove are obtained by simply making a vector from one of the enemy units to the player, then
inverse and scale it)
5. Drive away (condition: same as above AND a car has been found which is close enuff AND
distance to car is within a certain limit which depends on the distance between player
and unit, i.e. how much time there's left to get into the car).
6. do nothing (condition: player hasn't drawn his weapon yet or hasn't opened fire yet)
For a more realistic effect, I'd give only handguns to the player in most missions. Most of the
time he'd have to be stealthy and try not to be suspicious to residents or the police. So he
only carries a handgun or maybe a Scorpion).
Ok I hope I could show ya that its definetely possible to do something special with AI scripts and make this campaign a outstanding one
Only drawback is that it takes an aweful lot of time to script and debug that stuff
Oh, and one more thing: Make sure you properly plan your missions before you even think about working on it! I suggest you make a list of scripts that you need for your mission, and then you make some beta-versions of them and you debug them on plain Desert Island, with no other crap around that only confuses you. Then when you're 100% sure that the script works as it should, you put it into your mission. Tell ya, it saves you hours of work if you seperate things for betatesting! Thats one of my experiences from working on STMPenetration, which is a pretty complex mission and took quite some time to finish