Skip to end of metadata
Go to start of metadata

Blockers force players to spend money to unlock new areas in a map.

Preparation

Items needed

First you must create the blocker in Radiant. A standard blocker consists of these items:

  • One or more trigger_use brushes.
  • One or more debris script_brushmodels or script_models.
  • One or more clip script_brushmodels which prevent players from walking through the blocker before it is purchased.

Setting the KVP's

NOTE: KVP is an abbreviation for "Key-Value Pair". When entering a KVP in the Radiant Entity Window, ensure that you have the entity selected first. If you do not have an entity selected, Radiant will automatically add the KVP to the "worldspawn" entity. This is BAD and will likely cause your map to crash while loading! In these pages, KVP's are referred to in this format: Key | Value. Note they are separated by a pipe ( | ) character. This character should be ignored when entering the Key-Value Pair.
To properly add a KVP to an entity:

  • Select the entity by holding the Shift key on your keyboard followed by clicking the entity(ies) that you wish to add a KVP to.
  • Enter the first value (this is the Key) into the text field labeled "Key"
  • Enter the second value (this is the Value) into the text field labaled "Value".
  • Press the Enter key on your keyboard to save the KVP to the entity. You should see the KVP appear in the entity's KVP table (located above the Key text field).

Triggers

Select the trigger_use brush(es) and give them the following KVP's:

Key

Value

targetname

zombie_debris

script_flag

<zone_name>

zombie_cost

<any number>

  • Items highlighted in green are optional.
  • script_flag's value should be set to the zone name the door unlocks.
  • By default, zombie_cost sets itself to 1000. If you would like to set a custom price, set the zombie_cost key and replace '<any number>' with a numerical value.

    Warning: The zombie_cost key can only be set to any value if you have applied the UGX Modtools Patch to your World at War installation. To install the patch, refer to "Installing the Files"  in the  Modtools Installation Guide. If you do not install the UGX Modtools Patch, you can only use the following prices for debris: 100, 200, 250, 500, 750, 1000, 1250, 1500, 1750, 2000

Debris

Select the debris script_brushmodel(s) or script_model(s) and give them the following KVP's:

Key

Value

spawnflags

1

script_firefx

<fx_name>

script_fxid

<fx_name>

script_noteworthy

jiggle

script_transition_time

<any number>

  • Items highlighted in green are optional.
  • If you would like to have a fx play when the blocker is purchased, set the script_firefx key and replace '<fx_name>' with any included, loaded, and declared fx name. Treyarch maps use "poltergeist" (without quotes). You can use this fx as it is included, loaded, and declared already.
    warning|The script_firefx fx will only play if you have defined a script_linkTo struct for the debris to fly to. If you have applied the UGX Modtools Patch to your World at War installation, the fx will play regardless of the presence of a script_linkTo struct for your convenience. To install the patch, refer to section 2.2 of the Modtools Installation Guide.
  • If you would like to have a fx play when the blocker finished moving, set the script_fxid key and replace '<fx_name>' with any included, loaded, and declared fx name. Treyarch maps use "poltergeist" (without quotes). You can use this fx as it is included, loaded, and declared already. If you do not create a script_linkTo struct, this KVP is irrelevant and the fx will never play because nothing will move.
  • If you would like the debris to jiggle before it flys away, set the script_noteworthy key to "jiggle" (without quotes). If you do not create a script_linkTo struct, this KVP is irrelevant and the fx will never play because nothing will move.
  • By default, the debris take 0.5 seconds to transition from their origin to the script_linkTo struct origin. If you would like to use a custom transition time, set the script_transition_time key and replace '<any_number>' with a numerical value (measured in seconds). If you do not create a script_linkTo struct, this KVP is irrelevant and the fx will never play because nothing will move.

Clips

Select the clip script_brushmodel(s) and give them the following KVP:

Key

Value

spawnflags

1

script_noteworthy

clip

Targeting in Radiant

Linking the Entities

Now that you have created all of the necessary items and given them the correct KVP's, it is time to link the items together using targeting.

NOTE: "targeting" is a method for linking entities together in a group. Targeting has menu useful applications, such as controlling an entity that has multiple pieces. For example, the Mystery Box uses targeting to link each separate script_model part of the box to the main trigger_use. Targeting generates automatic targetname and target KVP's on the affected entities. When two items are properly linked together, a red or blue line is drawn from the main entity to each of its targets/links in Radiant.
To properly target one item to another:

  • Determine which of the affected entities is going to be the "root entity". The root entity is the entity that will be referenced by name in script. Root entities are found in script by using getEnt("root_entity_targetname", "targetname");.
  • Determine which of the affected entities is going to be the target/link. The target/link entity(ies) are the "children" of the root entity and do not need specific targetnames. Target/link entities are found in script by using getEnt(root_entity.target, "targetname");
  • Deselect all items by pressing ESC on your keyboard
  • Select the root entity first.
  • Next, select one of the target/link entities and press W on your keyboard. This will create the link between the two entities. Repeat this step for all target/link children of the root entity until all entities have red or blue lines connecting them to the root entity.

In this case, the root entity is the trigger_use. If you have more than one trigger_use, just pick one to link all entities to. Later we will include the remaining trigger_use's.
The children of the trigger_use are the clip(s) and debris model(s). Link them to the root entity using the instructions above.

Once you have linked all the entities to the root trigger_use, copy the target KVP from the root trigger_use to each of the remaining trigger_use's. The lines should now be going from all trigger_use's.

Defining a script_linkTo

Optionally you can specify a point for debris to fly away towards when purchased. For example, you could specify that the debris fly away at a 45 degree angle into the ground.

To define a script_linkTo:

  • Spawn a script_struct in Radiant and position it at the point where you want the debris to fly to.
  • Give the script_struct the following KVP:

    Key

    Value

    script_linkName

    <linkName>

Replace <linkName> with a unique name of your choosing. *Do not use the same linkName for more than one script_struct!

  • Select your debris model and give it the following KVP:

    Key

    Value

    script_linkTo

    <linkName>

  • Replace <linkName> with the unique name you gave the script_struct.
  • If entered correctly, a red line will be drawn from the debris model to the script_struct. This line is the path that the debris will follow when flying away.

 

Finishing Up

Creating copies of the Debris

Now that you have created one working zombie_debris blocker, you can copy/paste it as many times as you want. Since we used targeting, the targetnames of the children are dynamic and will be regernerated for every copy. If you used multiple trigger_use's, you will need to manually edit the target KVPs for every copy, just as you did in section 1.3. Be sure to update the script_flag value if you copy the doors for a new zone volume.

 

Credit: Treminaor