Using Alex's Story Mod To Make Your Own Mission (Based On KFS-Containment)
Ok so lets get started by mentioning that Alex has a tutorial as well for some of the features. LOCATED HERE It is good to get a couple diffrent views in order to fully understand
NOTE: We want to eleminate the use of scripted tirggers for gameplay usage. However, scripted triggers cant be used for other events, we want to try and stay away from using them to work out a problem. Try to use the KFS stuff 1st before resorting to the use of a scripted trigger.
Setting up the Map
Ok so first things first we need to get the main actors set up.
- Place a KFLevelRules_Story (Actor>Info>LevelGameRules>KFSPLevelInfo>KFLevelRules_Story)
Lets take a look at this actor
(Attachment #1)
Here is where you set up some of the main properties of the map. This includes (top to bottom) starting cash, If players keep their weapons or not when they die, What Actors get reset when the team dies and restarts from the checkpoint, And the order of your objectives.
Most of this is self explanitory, however lets look at
CheckPointResetClasses.
This is used to reset numerous objects when the whole team dies. You want to reset set objects in order to have the gameplay reset. A few of the main actors that are needed to reset are;
- KF_StoryZombieVolume
- Trigger (for your trigger once only triggers)
You can reset anything on this list, including movers (for doors) and scripted triggers (to reset complex events)
Another Feature noted is the
StoryObjectives. This is used to tell the game the order of your objectives. Even though you can trigger objectives out of order, you still need to tell the game what the basic order is going to be. (these coencide with ObjectiveName)
Setting up Objectives
Actor>NavigationPoint>KF_StoryObjective
Ok so objectives are your main controllers of the map. Using Activation Event and Completion Arrays to control multiple events as well as give the players somethign to do. There are several types of Objective however you can also controll the zombies volumes with them (explained below in next section)
One of the main things an Onjective is ment for is controlling several events at once. This eleminates the use of a scripted trigger.
Lets breifly look at
Objective_Events, we will go into these more in detail later.
- Activation events- This array will let you set all the event you want to be triggered when the objective gets activated. This can include spawns... dialogues...doors
- Completion events- This array will let you set all the events you want to be triggered when the objective is done. This can include turning off the zombie spawns and the above sugestions.
- Failure events- This array is used for triggering events when they failure objective (Explained Below) is not compleated.
- Progress events- This array will trigger events when the objective is at a certain % of compleation. You can use this to trigger things like FP's and Scrakes in the middle of the wave instead of everyhtign at once. This also eleminates the use of the Scripted trigger.
Lets take a look in the
Objective_HUD group in the objective actor.
- Show on HUD - This is for showing the objective on the players screen. Maybe some objectives you might want to happen w/o players knowing just to do some map functions.
- Whisp Trail- This will turn on/off the red trail that will go from the previous objective to the current one.
- Manual Activate - This is for if you want to trigger the obj or to have it manuall preceede from the previous objective (Proceede to next objective)
- Objective Hint- This will show players the objective name they have to complete (Ex: Return to trader)
Dont forget to give the objective a name. (this goes with the KF LevelRules_Story)
Objective Types
Touch Objective (attachment 2)- the touch objective is can be used for players to go from one point of the map to the next, just to move the players. The main goal of this trigger is to set off multiple events at once.
This eleminates the need for scripted triggers. There are also other features that are added to this obj such as failure events (will be explained later) that can give playerse secondary goals such as "complete an event in a certain amount of time", or "Do this objecitve while staying in a certain area". These will be explained later as well.
Lets take a look at a touch objective in KFS-Containment
(Attachment #2)
When players hit the objective it turns on another section of zombie spawns and an Ai for the special event that happens before the pat fight. So here is the Objective explained (top to bottom)
- Make sure you set the colission so players can set it off =D
- If you want the obj to automaticaly goto the next objective, then set the Success Action to Proceede to next objective. Also be sure to set your Success Condition to OBJ_Touch
- Activation events- This array will let you set all the event you want to be triggered when the objective gets activated. This can include spawns... dialogues...doors
- Completion events- This array will let you set all the events you want to be triggered when the objective is done. This can include turning off the zombie spawns and the above sugestions.
Timed Objective (attachment 3)- This objective will set off a timer, of course, once the timer is done it triggers the Completion Events.
Lets just take a look at one
(attachment 3). This objective is triggered once players reach a touch objective. Then once the timer is done, it turns off the zombievolumes(A1SpawnA) turn off and the Dialogue Actor triggers
- Objective Duration- Set this to however long you want this objective to last for.
- If you want the obj to automaticaly goto the next objective, then set the Success Action to Proceede to next objective. Also be sure to set your Success Condition to OBJ_Touch
- The rest are described in touch Objective, they are highlighted becuase they are still equally important
Use Objective (attachment 4) - This objective is as important as the touch objective. Like all other objective types it contains activation and completion evetn arrays so you can trigger multiple events at the same time, thuss eliminating scripted triggers. On top of this, the Use trigger also has another special
function. It has a feature where you can make it so the player has to hold down the USE button for a certain ammount on top, on top of having to look at this. It will show a progress % as well to tell you the progress. This can be used for objectives such as hacking.
(attachment 4) Lets look at this Objective;
- HoldUseSeconds- This sets how long the player has to push Use for. If set to 0 then its instant
- KeepUseProgress- If set to true, when the player lets go of the use key the % will stay current. If false it goes back to 0%
- MatainUseLOS-if it's true you need to keep looking at the objective while you use it (maintain line of sight) or it will stop the use process
- MinUseViewAngle- This is the angle leeway that the player has to be looking at the object. .5 is a good radius
Counter Objective (Attachment 5) - This objective is what is says a counter, but it counts more that just numbers. It can count Players (the number of unique players who trigger the objective), Cash (adds up the total cash of all players on the team), or zombie kills. Lets take a look at the zombie kill function.
- Dont forget, if you want to manually activate the objective, then it needs a tag.
- CT_Default- this is the default counter type which is zombie kills.
- NumToCount- The Number it counts to before the objective is complete
- SuccessCondition- Remember you have to set this to tell what type of objective your using
- ObjectiveHint- Also remember you have to have this to tell the players what to do
NOTE: On this Objective you have to match the ZombieEvent Name in the KF_StoryZombieVolume (explained below) to the Objective's tag. Thats how you get the counter to count off of zombie kills.
Failure Objectives (attachment 4 post 2)
Upon having normal objective, each objective actor also has the option to add failure objectives. This gives each objective a secondary goal that the player has to reach. You can add secondary goals such as, Time, Defend (based on Actor HP), Stay in area, and Stay near/away from an Actor.
These failure objective are really helpfull to give more options to what palyers have to do. For example, if all you have it a touch objective where players have to reach a certain area, maybe spruse it up a bit by adding a time limit to it.
Under
Objective_HUD be sure to type in the Text that will be displayed for the Failure Objective in the
ObjectiveFailureHint section.
Lets take a look at the each of the objective's failure types.
- FailureCondition- This is where you select the Condition type, Set to None if you want no secondary condition.
- FailureAction- Tells the game what to do if the secondary condition type is not met
There are serveral options for each failure type lets go over each failure condition.
OCT_DefendActor - Defend Actor is set up so you can defend multiple actors at once. Make sure they have the same tag.
- TargetActors- You can have the players defend things other than AI. Just type the object's name in here
- TargetActorTags- This is used for defending AI or even Zombies. (Example; defend the crawler) Just put the Actor's tag in here.
- MaxDeadActorPct- the maximum number of actors in the who can be considered 'dead' before you fail the objective. If you have 2 actors, and a MaxDeadActorPct of 0.5, you will be able to lose one of them and still continue
- MinHeathPct- The minimum health the target can have before the objective is failed.
OCT_Proximity- Set up so players have to stay a certain distance either near/or away from an object.
- ProxActor- Type in the object name to define what players have keep a proximity to.
- ProximityType- You have 2 choices, Stay Close, or Stay Away.
- MinDistance- The minimum distance players have to stay close, or away from an object. Based in Unreal Units.
- TimeOutSeconds- The maximum amount of time players can be out of the proximities range.
OCT_StayInArea- This is almost like Proximity, however this used to keep players in a more defined area, such as a volume.
- AreaVolume- Type in the ObjectName of the volume you want players to keep inside of.
- RequiresTeam- Determins weither the whople team has to be inside the volume of just 1 player.
- TimeOutSeconds- The maximum amout of time players can be out of the specified volume.
OCT_TimeLimit- You can set a time ammount that the players have to complete a certain objective.
- TimeLimitSeconds- Pretty self explanitory, just put in the ammount of time you want players to have to complete the objective in.
These Failure types are really helpfully in adding more options to the objecitves, and gameplay elements, so make sure you play around with them.
Recap
So remember that the objective are your main controllers for zombies spawns (gettign to next), and also your event arrays, so you dont have to sue scripted triggers,
Also remember, these are you main items used in the objectives;
- If you want the obj to automaticaly goto the next objective, then set the Success Action to Proceede to next objective. Also be sure to set your Success Condition to OBJ_Touch
- Activation events- This array will let you set all the event you want to be triggered when the objective gets activated. This can include spawns... dialogues...doors
- Completion events- This array will let you set all the events you want to be triggered when the objective is done. This can include turning off the zombie spawns and the above sugestions.
- Show on HUD - This is for showing the objective on the players screen. Maybe some objectives you might want to happen w/o players knowing just to do some map functions.
- Whisp Trail- This will turn on/off the red trail that will go from the previous objective to the current one.
- Manual Activate - This is for if you want to trigger the obj or to have it manuall preceede from the previous objective (Proceede to next objective)
- Objective Hint- This will show players the objective name they have to complete (Ex: Return to trader)
- Dont forget to give the objective a name. (this goes with the KF LevelRules_Story)