The three virtues of a programmer: Laziness, Impatience, and Hubris. – Larry Wall
The SpecialEvent actor is a sort of mixed bag of odds and ends. It is essentially a triggerable actor, but what it actually does on being triggered depends on the Object -> InitialState property has been set to.
Rather than list properties, it's probably simpler to list the different states, and for each state which properties are actually relevant.
From the script: Sends the player on a spline path through the level.
These spline paths are created using the InterpolationPoint Actors. Take CityIntro for example.
|SpecialEvent||Events -> Tag||'intro'|
|Object -> InitialState||PlayerPath|
|Trigger||Events -> Event||'intro'|
There is one SpecialEvent with these options:
- Event: Path
- Tag: Intro
- InitialState: PlayerPath
Now to activate this Cinematic Sequence. There is need of a regular trigger, placed right at the position where the player spawns. This trigger has the following settings:
- Event: Intro
That should do it ;)
This causes the player to emit the ambient sound given in SpecialEvent's AmbientSound until player's AmbientSound property is reset to None. The value of SpecialEvent's Sound is ignored in this case.
From the script: Play a sound.
This state can be used when you want to play sound effects which you want to be heard by all players.
Note: The sounds played here might cut off player speech.
From the script: Play a sound.
A sound is played at the location of the SpecialEvent.
From the script: Kill the instigator who caused this event.
This kills the pawn that triggers it. This is useful for producing custom death messages at particular spots on a map where using a Zone with kill settings is inconvenient. Set the following properties:
- DamageType = SpecialDamage
- DamageString = %o was hacked. %k (for example)
The string is parsed somewhere else in the code – following the chain of code to that point is one of UnrealScript's famous wild goose chases.
- %o is the player who is being killed
- %k is the killer – in this case, this is nobody so the %k token will removed from the string with no replacement.
For some arcane reason, the %k is essential. If you omit it, it will not work. See Message Placeholder for more on this.
DamageString is not used, if the SpecialEvent is triggered by a Dispatcher.
From the script: Damage the instigator who caused this event.
This causes the player who triggers it a certain amount of damage. Note that this amount seems to change according to bot skill, and that setting a custom death message should the player be killed by taking this damage does not seem to be possible.
(Also note that the Damage property can be set to a negative number, thus causing the player to be healed by the SpecialEvent. This acts as normal health does, and will not allow a player's health to be increased above 100.)
Prize of 100 guineas to a mapper who can make this (the death message) work... with proof! ;-)
Darthlore: I solved it just by bashing at for five miniutes on a level i am working on :) at first i had tryed using %o and had read above about %k being nessary but ended up with messages like
"%o killed himself trying to jump over the labyrinth wall !! %k"
"Bob killed himself trying to jump over the labyrinth wall !! Bob"
since the victim did kill him self
which of course doesn't look right and no matter what way you try to reright it it still does not look right using the players name twice in the message
I tried using double %o but got no message
then tried double %k and got
"%k killed himself trying to jump over the labyrinth wall !! %k"
"Bob killed himself trying to jump over the labyrinth wall !! %k"
so i got rid of the end %k to get my message
Copy and paste this in to your level
Begin Map Begin Actor Class=SpecialEvent Name=SpecialEvent0 Damage=25 DamageType=SpecialDamage DamageString="%k killed himself trying to jump over the labyrinth wall !!" bDynamicLight=True InitialState=DamageInstigator Level=LevelInfo'MyLevel.LevelInfo0' Tag=Wall Region=(Zone=LevelInfo'MyLevel.LevelInfo0',iLeaf=513,ZoneNumber=5) Location=(X=-128.000000,Y=-128.000000,Z=0.000000) OldLocation=(X=-128.000000,Y=-128.000000,Z=0.000000) bSelected=True Name=SpecialEvent0 End Actor Begin Actor Class=Trigger Name=Trigger0 bDynamicLight=True Level=LevelInfo'MyLevel.LevelInfo0' Tag=Trigger Event=Wall Region=(Zone=LevelInfo'MyLevel.LevelInfo0',iLeaf=513,ZoneNumber=5) Location=(X=128.000000,Y=128.000000,Z=0.000000) OldLocation=(X=128.000000,Y=128.000000,Z=0.000000) bSelected=True CollisionHeight=128.000000 Name=Trigger0 End Actor End Map
From the script: Just display the message.
This can be set to either display to all players or just the player who instigated the event.