More Tutorials
Created 7/27/02
Extracting Tiles, Entities, etc.
NPC's Conversing With Each Other
Add Text To Debrief Text List Trigger
Creating a New Recruit For Single Player Game
Turning Off Alarms With a Switch
Extracting Tiles, Entities, etc.
For the editors to work they require some resources to be
extracted from the
data files for fallout tactics.
It is recommended you extract the contents of the following
files:
tiles_0.bos
entities_0.bos
mis-main_0.bos
If you have the hard drive space you may want to extract all
of the .bos files.
The easiest way to extract them is to use WinZip:
1) Launch WinZip
2) Drag-drop the .bos file from explorer into the WinZip window.
3) Do not select any of the files
4) Press the extract button on the toolbar
5) A dialog should appear. Make sure use folder names is checked.
Make sure
the output directory is the core folder inside your tactics
install path.
6) Press extract.
If you repeat this process for each of the .bos files mentioned
above, you
should now be able to access the tiles and entities and campaign
from the
editors.
How To Create A New Ammo Type - OTB
First, head to the files section of the site and DL
"BoSEE", which is what you'll need.
Here's what you need to do:
1) Create ammo and weapon entities that you're going to use
w/your new ammo type. It doesn't matter what you set the ammo to,
since you're going to change it anyway.
2) You will have to have unpacked the various text files that FoT
reads for non-hard-coded information. The file you're looking for
is called "ammo.txt" and is located at the following
address:
C:\Program Files\14 Degrees East\Fallout Tactics\core\locale\game
3) In this file you will see entries like this:
{name_Needle} = {Needle}
You will need to come up with something to call your new ammo
type. Since ".45" is used for the standard .45 (i.e.
ACP) in the game, you can simply use:
{name_.45C} = {.45 Colt}
4) Open the ammo entities and weapons that you want to set to
this type of ammo with BoSEE and change the ammo field to
whatever is in the "name_" portion of your ammo.txt
file.
Warning: Once you save the file using BoSEE, you cannot modify it
with the standard entity editor w/o setting the ammo type to
"None". In other words, if you want to modify the
entity, you will have to make whatever changes you want to make,
then re-modify and re-save the entity using BoSEE.
BTW, if you're planning on making a mod for distribution, I
recommend using the "-path" option on the run command.
This way you won't force people to copy-'n'-paste all sorts of
files to play your mod.
Last, but not least, I have to get up on my cartridge
nomenclature soapbox. There is no such cartridge as ".45
Long Colt". It's actually just ".45 Colt", but
it's been misused for so long that even Colt brochures list it as
".45 LC". (Source: Lyman's Handloading Manual).
NPC's Conversing With Each Other - OTB
There is a way that you can simulate NPCs chatting w/one
another w/o the headache of scripting the conversations.
The answer is actually quite simple. Compare the following two
speech nodes:
D02_WSPR01_A00 = {This wind is getting on my nerves...}
D02_WSPR01_A01 = {This is just *too* boring...}
D02_WSPR01_A02 = {I could go for some more chitlins.}
D02_WSPR01_A03 = {As if anyone would have the nerve to attack
this place...}
D02_WSPR01_A04 = {Better check your weapons.}
D02_WSPR01_A05 = {::belch:: Yep, those chitlins were good...}
D02_WSPR02_A00 = {It is a bit breezy...}
D02_WSPR02_A01 = {It like it when it's boring...}
D02_WSPR02_A02 = {The mess hall certainly made enough...}
D02_WSPR02_A03 = {You never know...someone could be watching us
right now.}
D02_WSPR02_A04 = {But I just checked my weapons when we came on
shift.}
D02_WSPR02_A05 = {::fans air:: I hate the effect chitlins have on
you...*gag*}
Basically, each line within a node is related to the identical
line in its sister node. These two nodes are each for one roving
guard, and in practice, they ---- far more often than not ----
will look like they are having a conversation. This is, however,
not foolproof, so you might not want to have lines that sound odd
if they happen to be seen out of context.
Add Text To Debrief Text List Trigger - Endocore
In the past I've always just used a "world text
display" for my debriefings, but due to the nature of the
story in the map I was working on I decided to try to take
advantage of the more flexible/generic way the normal FOT
campaign generated many of its debriefs by use of the "Add
text to Debrief text list" trigger. Anyone wanting to take
advantage of this trigger who has never used it before would
profit by looking at the triggers and speech file for Mission 6
(Quincy) of the regular campaign and exactly following the
implementation MF used there. I initially had placed several of
the "Add text to Debrief text list" triggers in amongst
my other scripts to add relevant lines to the debriefing as the
events that called for them actually happened in scripting terms,
but this turned out to be a big mistake since the game was unable
to "remember" any of these debrief lines being added
and would only display in the debriefing the debrief lines for
the last two or three objectives accomplished, leaving out the
parts that had been triggered earlier on. Needless to say, this
was very bad because in order to experiment with this I had to
keep going all the way through the entire (rather lengthy)
mission and accomplishing all the objectives in various orders to
try to figure out what was happening, and risked introducing new
errors into map because I had to delete so many opponent entities
in order to speed up the tests that once I finally worked out
some scripts for the debriefing that worked, I had to write them
down on a piece of paper and enter them into the "real"
map (always have a backup file) from there since the map used for
experimenting on this stuff was no longer recognizable.
Use of the "Add text to Debrief text list" trigger
seems to require that all possible lines of text one might want
to use in the debriefing be triggered only after the player has
completed the mission and has all their characters at the exit
grid for the map. Any use of this trigger to add text to the
debriefing before the player has all his characters at the exit
grid runs the risk of having that text forgotten at debriefing
time, apparently overwritten by later texts added to the
debriefing.
Let's say you had a smallish map where the player had to 1)rescue
some hostages from some gunmen, and 2)defuse a bomb that was
going to blow up a building. There would then be four possible
outcomes of your map that you would want to discuss in the
debriefing, so you would put four appropriate lines in your
mission's speech file:
hostagessaved = {You saved the hostages. You're an epic hero
who's loved by all women and respected by all men.\n\n}
hostagesdead = {I wouldn't trust you to make me a cup of coffee,
you pathetic excuse for a soldier. The hostages are dead, and
you're going to be court-martialed.\n\n}
bombdefused = {Let me present you with a hearty handshake for
defusing the bomb and saving the headquarters of the Acme
Telemarketing Corporation.\n\n}
bombwentoff = {Due to your inept clumsiness, the headquarters of
the Acme Telemarketing Corporation were destroyed by the bomb.
How will decent citizens ever find the will to live again if
they're not able to enjoy their right to be constantly
interrupted by telephone solicitors?\n\n}
In order to utilize these lines of text in your debriefing, they
all need to be tied to a variable that is set only when the
mission is over, the exit grids have been turned on, and the
player has all their remaining characters at the exit grid ready
to leave the map. In the example mission I've set up for this
discussion, then, a minimum of eight lines of script would be
required to make a debriefing that was responsive to what
happened in the mission.
-----------------------------------------------------------
1) Mission Set-Up
CONDITION:
Always
ACTION:
Set variable missionover to False
Set variable hostagesrescued to False
Set variable bombingstopped to False
Set variable finallyfinished to False
-----------------------------------------------------------
You'd then have all your normal scripting to determine what
actually counted as saving the hostages and defusing the bomb,
etc. Once both objectives were either accomplished or flubbed,
the player would be prompted to head for the exit grid since
there was nothing else to do in the mission.
-----------------------------------------------------------
2) Almost End of Game
CONDITION:
Player 1 [the PC's] has all alive at exit grids
ACTION:
Set variable missionover to True
-----------------------------------------------------------
3) Hostage Situation Result 1
CONDITION:
Variable missionover is True
Variable hostagesrescued is True
ACTION:
Add text 'hostagessaved' [from your entry in the mission speech
file above] to Debrief text list at position: 0 [this will be the
first thing talked about in the debriefing]
-----------------------------------------------------------
4) Hostage Situation Result 2
CONDITION:
Variable missionover is True
Variable hostagesrescued is False
ACTION:
Add text 'hostagesdead' to Debrief text list at position: 0 [the
point is that whatever happened to the hostages, it will be
talked about first in the debriefing]
-----------------------------------------------------------
5) Bomb Situation Result 1
CONDITION:
Variable missionover is True
Variable bombingstopped is True
ACTION:
Add text 'bombdefused' to Debrief text list at position: 1 [after
the hostage situation has been discussed, the debrief will move
on to talk about the bomb situation]
-----------------------------------------------------------
6) Bomb Situation Result 2
CONDITION:
Variable missionover is True
Variable bombingstopped is False
ACTION:
Add text to 'bombwentoff' to Debrief text list at position: 1
-----------------------------------------------------------
And finally we have the really odd part which makes no sense at
all that seems to allow the whole thing to work properly:
-----------------------------------------------------------
7) Are we done yet?
CONDITION:
Variable missionover is True
ACTION:
Set variable finallyfinished to True
-----------------------------------------------------------
8) Player gets to leave the map
CONDITION:
Variable finallyfinished is True
ACTION:
B Display Debrief window and text
B Wait 1 second
B End Mission (Main Menu)
-----------------------------------------------------------
Maybe it's just me, but having to include trigger #7 just doesn't
make any sense since it seems to serve no useful purpose
whatsoever. Nonetheless, that's what I had to do to get my custom
debriefing triggers to work.
The original way I tried to use the trigger "Add text to
Debrief text list", which was an absolute failure, and I
want to show only so mappers can know what NOT to do, was along
the lines of what's below. In order to simplify things a little,
we'll say that the first map was too long and we cut it down to
size by only requiring the player to save some hostages. Once
again, this is what NOT to do:
1) Mission Set-up
CONDITION:
Always
ACTION:
Set variable objective1done to False
-----------------------------------------------------------
1) Hostages saved
CONDITION:
Bad guys has less than 1 alive at anywhere
Hostages has more than 0 alive at anywhere
ACTION:
Set variable objective1done to True
Add text 'hostagessaved' to Debrief text list at position: 0
-----------------------------------------------------------
2) Hostages not saved
CONDITION:
Hostages has less than 1 alive at anywhere
ACTION:
Set variable objective1done to True
Add text 'hostagesdead' to Debrief text list at position: 0
-----------------------------------------------------------
3) Mission complete
CONDITION:
Variable objective1done is True
ACTION:
Turn exit grids on
-----------------------------------------------------------
4) Time to leave
CONDITION:
Player Human [PC's] has all alive at exit grid
ACTION:
B Display debrief window and text
B Wait 1 second
B End mission (Main Menu)
Tip 1: Drag and drop the fps counter somewhere else.
Underneath is hidden a neat little white box. Click on that to
choose the (another) background color.
Tip2: You can right click on the "level bar" to disable
(and re-enable) specific levels. This is great when the Roof
Popping and Occlusion just won't do the job.
Tip3a: You can make tilesets which contain the same tile more
then once.
The only restriction (within the FO:T editor) is that you need to
select an alternate tile to add it to the list. This is great to
create "random" floors for desert. You choose the
normal desert tiles say 80% of the time, and the "feature
tiles" (with small rocks and such) fill up the rest of the
tiles. This REALLY looks MUCH better then doing it manually
and/or not doing it at all (the last of which can make a map
really ugly).
Tip3b: Instead of making the tilesets within the editor which
doesn't even save them correctly), first make a tileset with all
the tiles you'll plan to use, then save it. Open it in your
favorite text editor (I recommend UltraEdit) fix the quoting
problem (you either need to add them or remove them I don't
remember), and copy-paste the appropriate tiles the number of
times you want it represented in the tileset (say you want 80%
sand, have 20 tiles "with features", and 8 tiles
"with normal sand", then copy paste the sand tile list
10 times to get the ratio... you get the idea, I hope :).
Load the tileset, and use it.
Creating A New Recruit For Single-Player Game - OTB
Here's what you'll need to do:
(I'm assuming that you have unpacked your BOS files for this.)
- Create an ENT file for the recruit using the Entity editors
that came w/the v1.27 patch. Save it in the "recruits"
folder under "entities".
- Open the characters.txt located at:
C:\Program Files\14 Degrees East\Fallout Tactics\core\locale\game
Here you will want to add two lines:
name_[whateverYourCharacter'sDisplayNameIs] = {Character'sName}
desc_[whateverYourCharacter'sDisplayNameIs] =
{Character'sBio/Story}
- Place that entity in Mission 01 (Brahmin Wood) using the level
editor. Set the "Player Index" to "1" for
your recruit.
- Open the campaign.txt file located in:
C:\Program Files\14 Degrees East\Fallout Tactics\core\tables
Here you will have to add a line under "RECRUIT POOL
DEFINITIONS". It will have to have the following format:
{mission00;add;entities/recruits/whateverYouNamedYourENTFile.ent},
If you want to have your recruits show up later, just change the
numeric portion of the "mission00" entry to the number
of the mission you want them to be available after.
- Now, using the campaign editor, open the bos.cam file, and go
to the Tools tab and click on "Import Recruits". Save
the changes to the CAM file.
Don't worry about backing any of the file you're modifying up. If
you dork something up, you can always go and re-extract that
file.
Voila! You are now ready to rock and roll w/your new recruit to
serve at your side.
Incidentally, I will say that Brahmin Wood isn't much of a
challenge w/more than 3 characters.
Triggering Force Speech - Max Violence
In order for 'Force Speech' to work when triggered by a speech
occurring, one must make sure that either:
A) There is no 'event' tied to the speech that will be forced,
and/or
B) There is a Wait action (B Wait 1 second(s) ) before the Force
Speech action.
I'm not 100% certain that B) works 100% of the time (I'd guess
75%-75%), but I am sure that A) works (at least, it did for me :)
)
Note: If the above isn't true, than the game will freeze when the
'Speech Occured' event is triggered.
Overview
- Light entities are used to light specific points in a mission
map.
- The light emanates from the base of the light entity image, so
if you have a torch half-way up a wall, the light entity should
be at the same height.
- For examples of lights and their settings, open any of the
Single Player tactics maps.
Animation Rotation
- This is only useful if the light has an Arc set (see below).
- There are eight steps of rotation, from 0 (facing North, the
top left corner of the screen) to 7.
Night Only
- Means the light will only appear during the game's night hours.
- Most outdoor lights should be tagged as night only.
- Useful for campfires and torches which shouldn't be
illuminating anything during the day (this can cause washing out
of the color in tiles).
[Note: a light with the "Night Only" tag will still
illuminate shadowed areas within its radius during daylight
hours. -OTB]
Radius
- The radius (in meters) of the lights total range.
- This includes the fall-off range.
Rate of Change
- How quickly the light changes from one intensity setting to
another.
- The speed should never be smaller than 60-100 (it's in
milliseconds).
- Anything smaller, and the rate of change will be so fast that
you'll start slowing the game down (a light can "dirty"
a large chunk of the screen at once, and this chunk has to be
redrawn).
Intensity String
- The intensity string allows you to control the brightness of a
light. "a" is the brightest", "z" is the
darkest.
- By typing in multiple letters (no spaces) like this
"aejejpa", the light will change through different
levels of brightness.
- Useful for flickering campfires, broken lights, etc.
Color
- Use this to set the color of your light.
Use Arc
- Tick this box if you want the light to illuminate in a certain
arc.
Arc (degrees)
- Specify how large an arc you want the light to illuminate.
- By default, this arc is centered to the North. To change the
direction of the center of the Arc, change the animation Rotation
field at the top of the entity.
High Bound
- How high the light will illuminate (in meters).
- If you're having a problem with lights showing through from the
floor below, set this to 1.
Low Bound
- How low the light will illuminate (in meters).
- If you're having a problem with lights showing through from the
floor above, set this to 0.1.
Use Fog
- This allows a light to become a volumetric fog entity.
- This means that instead of illuminating, the light will obscure
an area.
- Fog can be intensive.
Fog Alpha
- The intensity of the fog.
- Very sensitive. A setting of 0.25 is usually adequate.
How to turn a light On/Off
- First you need to tag some lights, for example LIGHT_GEN. Then
you need a trigger that executes at the start of your mission:
(Condition: Always) (Action: Set Object Script State, Set Unit:
LIGHT_GEN, Object State: ). Leave the Object State: field blank.
This will initially turn the light off.
- When you want it on, create another trigger with:
(Action: Set Object Script State, Set Unit: LIGHT_GEN, Object
State:TICK).
- This time, the Object State: field is ticked. This will turn
the light on.
Enter the entity's name under "Display Name". Then
you will have to make identical entries in the characters.txt
file prefaced by "name_" and "desc_" for the
name and story for the character (or name and description for an
item, although that goes in the items.txt file).
For instance, enter "rec_hm01" in that field for a
recruit, then enter the following in the characters.txt:
name_rec_hm01 = {Max}
desc_rec_hm01 = {Max wanted to be a scribe and spent his
formative years training to maintain vacuum tubes and read punch
cards. Then, later he discovered his lifelong love of explosions,
and added traps to his repertoire.}
Whatever you enter in "Custom Name" overrides the
"Display Name" field.
Lights and Other Turn-Ons
- OTB
In order to have lights that turn off and on using a switch,
you will have to do the following:
Set up a new trigger, name it something meaningful, then:
Condition:
Object script state of [Tag Name of Switch] (ticked/checked)
Action:
Set Object script state of [Tag Name of Light(s)]
(ticked/checked)
Condition:
Object script state of [Tag Name of Switch] (unticked/unchecked)
Action:
Set Object script state of [Tag Name of Light(s)]
(unticked/unchecked)
Make sure that both of these triggers have "Preserve"
ticked/checked, otherwise you will only be able to turn the
lights on and off once each.
Now, for your other problem, its similar to the previous one.
Trigger 1
Condition:
Object script state of [tag name of switch] (ticked/checked)
Action:
Set Object script state of [Tag Name of Alarm] (ticked/checked)
Open/Close Door [tag name of door] (ticked/checked)
Trigger 2
Condition:
Object script state of [Tag Name of Alarm] (ticked/checked)
Action:
B Center view for Player (WhateverYouNamedPlayerIndex1) on [tag
name of alarm]
Play alarm.wav centered on [tag name of alarm]
The "B" in the action indicates that you have
ticked/checked "blocking" which means that the next
action in sequence will not be executed until that one has been.
From here you should be able to get what you want done, although
you'll have to extrapolate a bit from my examples.
Note, that you can also set up variables which are tripped when
Object Script States are changed. These variables can in turn be
used to set guards to come investigate by setting them to
Waypoints, change lighting to red emergency lights, etc., etc.
Variables are actually pretty simple. Just set up a trigger
that will set up all of your mission variables for you right at
the beginning. Do this by setting up a trigger (I usually call it
something like "Mission Variable Initialization", but
you could call it "Purple People Eaters R Us" if it
floats your boat) that has the condition "Always" and
then the Action "Set Variable".
Now you have to come up with something to call that variable and
decide to set a value. (Usually True or False are used.) Be very
careful when you set up your variables and every time you set up
a trigger that depends on those variables. I say this because
variable names are case sensitive and if they aren't exactly
alike they will not execute. (The other morning I was about to
pull yet more of my hair out after almost an hour of dorking
around...all because I had failed to capitalize one letter...)
Once you have all of your mission variables set up you can set
triggers up based on them.
For instance, you could set up a mission variable
"alarmSounded" which has an initial value of
"False". Then you can set up another trigger that will
change the variable based on if an alarm is sounded. It would
look like this:
Condition:
Object Script State of [tag name of alarm] (checked/ticked)
Action:
Set mission variable "alarmSounded" to "True"
Now another trigger could then be set up:
Condition:
Mission Variable "alarmSounded" is "True"
Action:
Set Object script state of [tag name of red alarm
lights](checked/ticked)
Set Object script state of [tag name of normal lights]
(unchecked/unticked)
Set Player X to Waypoint at "guardInvestigates" (which
could be the tag name of a series of waypoints that lead a couple
of guards into the area)
Turning Off Alarms With A
Switch - OTB
To turn the alarms off when the switch turns off, just do the same thing w/the alarm-related triggers that you did w/the lights. That is, you have to check/tick "Preserve" and have Object Script State settings for both ticked/checked and unticked/unchecked settings.
Enemies Reacting To Alarms - OTB
I've been screwing around w/having enemies react to alarms and
here are two neat little tricks I've come up with for when you'd
like to have a bunch of sleeping individuals come barreling out
of a building/bunker/whatever when an alarm is sounded:
1) Set the sleepers to different player indexes.
a) Have an alarm set to one of the player indexes of the sleepers
and give it a tag name as well. That index will be automatically
awakened by the alarm.
b) Set up a trigger that depends on the object script state of
the tagged alarm that will trip one tagged alarm for each of the
other player indexes you're using. Hide the other alarms
somewhere out of sight/perception range so that your squealers
don't try to trip them.
An easier method:
1) Set all of your sleepers on the same index. Assign them
different tag names based on where you're going to want them to
go.
a) Set a trigger that depends on the object script state of the
alarm (you'll beed it to have a tag name for this). Have that
trigger set a variable to true or false.
b) When the variable is changed to true/false, you can have
triggers that have the sleepers change player index according to
where you want them to go.
c) Set the various player indexes you want to move to various
series of waypoints, mobility and movement priority based on the
situation.
I went through the landscape maps and catalogued them for
future reference. It is also handy to use these as generic
starter maps so you don't have to start building from scratch
which is very useful for something complex like cliffs or
canyons.
Mission Y01 - Rocky Desert
Mission Y02 - Rocky Desert
Mission Y03 - Rocky Desert
Mission Y04 - Rocky Desert
Mission Y05 - Rocky Desert
Mission Y06 - Rocky Desert
Mission Y07 - Rocky Forest
Mission Y08 - Rocky Forest
Mission Y09 - Rocky Forest
Mission Y10 - Rocky Desert Wastes
Mission Y11 - Rocky Desert
Mission Y12 - Rocky Desert Wastes
Mission Y13 - Rocky Forest Wastes
Mission Y14 - Swampy Forest Wastes
Mission Y15 - Rocky Forest Wastes
Mission Y16 - Rocky Swampy Forest
Mission Y17 - Rocky Swampy Forest
Mission Y18 - Rocky Forest
Mission Y19 - Rocky Forest
Mission Y20 - Rocky Forest
Mission Y21 - Rocky Forest Cliffs
Mission Y22 - Rocky Forest Cliffs
Mission Y23 - Tribal Village
Mission Y24 - Tribal Rocky Swampy Forest
Mission Y25 - Raiders Rocky Forest
Mission Y26 - Raiders Rocky Swampy Forest
Mission Y27 - Snowy Rocky Forest Cliffs
Mission Y28 - Snowy Rocky Forest Cliffs
Mission Y29 - Snowy Rocky Forest Cliffs
Mission Y30 - Snowy Rocky Forest Cliffs
Mission Y31 - Rocky Canyon
Mission Y32 - Rocky Canyon
Mission Y33 - Rocky Forest Cliffs
Mission Y34 - Rocky Forest Cliffs
Mission Y35 - Ruined City Streets
Mission Y36 - Ruined City Streets
Mission Y37 - Ruined City Rutted Paths
Mission Y38 - Ruined City Rutted Paths
Mission Y39 - Ruined Industrial Streets
Mission Y40 - Ruined Industrial Streets
Mission Y41 - Ruined City
Mission Y42 - Ruined City Rocky Desert
Light Intensity Strings - Max-Violence
Insanely pulsating loop:
az
Fast flicker:
azzzzzzazzzzzza
Really fast flicker:
azzzazzza
A flicker, a pause, a flicker, then another flicker:
azzzzzzazzzaza
Slow loop:
abcdefghijklmnopqrstuvwxyzyxwvutsrqponmlkjihgfedcba
Really slow loop:
aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzzyyxxwwvvuuttssrrqqppoonnmmllkkjj
iihhggffeeddccbb
Really, REALLY slow loop:
aaaabbbbcccceeeeffffgggghhhhiiiijjjjkkkkllllmmmmnnnnooooppppqqqqrrrrssssttttuuuuvvvvww
wwxxxyyyyzzzzyyyyxxxxwwwwvvvvuuuuttttssssrrrrqqqqppppoooonnnnmmmmllllkkkkjjjjiiiihh
hhggggffffeeeeddddccccbbbb
1/2 power flicker:
ooooooozoz
full power double-flicker:
aaaaaaazaaaaaz
Fade to 1/2 power, then abruptly go off, then fade back on from
1/2 power:
abcdefghijklmnozzzzzzonmlkjihgfedcba
Fade to 1/2 power, then abruptly go off, then fade back on from 0
power:
abcdefghijklmnozzzzzzyxwvutsrqponmlkjihgfedcba
Fade to 1/2 power, abruptly go off (the fade starts quickly, then
slowly gets slower):
abbcccddddeeeeeffffffggggggghhhhhhhhiiiiiiiiijjjjjjjjjjkkkkkkkkkkkllllllllllllmmmmmmmmmm
mmmnnnnnnnnnnnnnnooooooooooooooozzzzzzzzzzzzzzzzzzzz
Fade to 1/2 power then off. Start slow, speeds up:
aaaaaaaaaaaaaaabbbbbbbbbbbbbbcccccccccccccddddddddddddeeeeeeeeeeeffffffffffgggggggggh
hhhhhhhiiiiiiijjjjjjkkkkkllllmmmnnozzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Two double-flickers, the first at around 1/2 power, the second at
around full power:
rsvpzzzzzzzzasapzzzzzzzz
Expanded standard street light flicker:
aabbccddeeffmzzzmccbbaaaaaabbccmzzzzmbbcczzmbbbcccaaa
Near-dead light (blinking):
azzzzzzzzzzzzzzzazzzzzzzzzzazzzzzzzzzzzzzzz
A fading light that can't make up it's mind whether to stay on or
stay off
:aabbccmzzzmbbaaaaaabbmzzzzmbbzzmbbbaaa
------------------------------------
Intensity Strings made by OnTheBounce:
Slight twinkling:
fjdekdnfjvudjfnfdjeufhdjsdjkrhvcudhdhej
1/4 power drone, then a sudden "flicker of life," then
back to 1/4 power drone:
tttttttttttttttttzmz