-
Notifications
You must be signed in to change notification settings - Fork 2
Character Creation
Making characters may look intimidating at first glance, but it's simpler than it looks. This guide will cover the process of setting up the folders, char.ini, emotes and buttons. Creating the actual animations is beyond the scope of this tutorial.
../ means to "leave one folder", so ../../ means to "leave two folders". You can also do nested folders, such as folder/emote.gif. This system applies anywhere that demands a pathname, such as emote name, sound name, etc.
png, gif, webp are all supported. webp format should be the best choice for animations due to its compression algorithms and optimizations.
The character themselves are usually found in base/characters/Phoenix. A char.ini must be present in that folder for it to be recognized as a valid character.
For idle/talking animations, your image needs to either have an (a) or (b) prefix such as (a)normal.gif and (b)normal.gif, or, alternatively, be contained inside the (a) folder. For example: base/characters/Phoenix/(a)/normal.gif, base/characters/Phoenix/(b)/normal.gif. If your emote does not need a distinction between idle/talking, you don't need the prefix so long as the animation path is correct.
The prefix is not needed for preanimations, which is animations that are played before transitioning into the talking/idle animation.
For your character to have a fourth custom interjection there must be an image/animation and sound effect both named custom in the same folder where the char.ini is. If you set it up correctly the client will show a new "Custom" button.
a
b
c
[Options]
#The folder name. This should match the folder where the char.ini is found.
name = Phoenix
#The showname to display for this character.
showname = Wright
#If 'false', use a blank showname. Anything else is considered 'true' and 'showname=' will be used.
needs_showname = true
#If present in the .ini, the default position for this character when first picked. Otherwise will be the 'wit' pos.
side = def
#If present in the .ini, the blip sound effect to use, seeking for 'sfx-blip[gender].wav' in your base/sounds folder.
gender = male
#If present in the .ini and not blank, this will use the chat box for the character found in base/misc/<chat>/ folder.
chat = default
#If present in the .ini and not blank, set the chat font to specified font name for this character.
chat_font = Arial
#If present in the .ini and not -1, set the chat size for this character.
chat_size = 10
#If present in the .ini and not blank, this will use the interjections, zooms
#and realization flash found in base/misc/<shouts>/ folder.
shouts = default
#If present in the .ini and not blank, this will use the custom effects in addition to the default ones
# found in base/misc/<effects>/ folder.
effects = default/effects
#If present in the .ini and not blank, the custom realization sound effect to play found in base/sounds/general.
# Otherwise will play the realization sound effect defined in courtroom_sounds.ini of the current theme
# (or default if not found)
realization = realization [Time]
#preanim_name is the reference to the animation (can be a nested folder such as anim/shock which would seek base/characters/Phoenix/anim/shock.gif). The number afterwards dictates how long the preanim will be in N*60 milliseconds.
# Since version 2.8+ this is no longer required for preanimations to work.
preanim_name1 = 0
preanim_name2 = 1[Emotions]
#The number of emotion indexes that will be read when the character is loaded.
Number = 4
#Emote index = Emote display name # preanimation reference # talking/idle reference # emote_mod # desk_mod
#Emote index - the index of the emote in the emote list.
#Emote display name - the name of the emote to display in tooltips and emote dropdown.
#Preanimation reference - the filepath reference to the preanimation starting from the same folder as char.ini.
#Talking/idle reference - the filepath reference to the talking/idle animation starting from the same folder as char.ini, or (a) (b) folders if found.
#emote_mod -
# 0 = set "pre" tick off, skipping preanimation. Interjections automatically set it to 1.
# 1 = set "pre" tick on to use preanimation. Interjections also automatically force preanimations.
# 2 = This one is set automatically when objections are used with "pre" tick on.
# 3 = Unused
# 4 = Set "pre" tick on to use preanimation, as well as use the zoom background.
# This one is set automatically when the "pre" tick is on during a zoom.
# 5 = Use the zoom background for this emote, where pos pro/hlp/wit will use
# prosecution_speedlines while other pos use defense_speedlines. You can
# have both images/animations located inside the character folder or, if
# those are not found, it will try to find one in the currently used theme,
# or the default theme. If all of those are not found it will throw out a missingno.
# 6 = Same as 5 except do so with the preanimation playing too. This one is set
# automatically when objections are used with "pre" tick on during a zoom (5).
#desk_mod -
# -1 = Show the bg overlay (desk) when this emote is used for all pos except jud/hld/hlp.
# 0 = Hide the bg overlay (desk) when this emote is used.
# 1 = Show the bg overlay (desk) when this emote is used.
1 = Normal#anim/shocked#normal#0#1
2 = Zoom#anim/zoom#zoom#5#0[SoundN]
#Index of the emote for which a defined sound will be played if "pre" tick is on.
# Seeks base/sounds/general/<sound> folder. Won't play any sound if not found.
1 = 0
2 = sound[SoundT]
#Index of the emote for which the sound delay is dictated.
# The number afterwards dictates how long until the sound plays in N*60 milliseconds.
1 = 0[SoundL]
#Index of the emote for which the sound should be looping. If 1, loop. If 0, don't loop.
1 = 0
2 = 1
#It's also possible to define which specific sounds should loop if used through sound list like this:
sound = 1#Replace pre-minigun with the reference to the animation for which to set this frame sfx to
[pre-minigun_FrameSFX]
#Frame number for which the specified sound should play.
10 = soj-sarge-hatch
18 = soj-sarge-extend
40 = soj-sarge-cock
50 = soj-sarge-shoot
180 = soj-sarge-retract
204 = soj-armie-drone-set
212 = soj-sarge-hatch#Replace pre-salute with the reference to the animation for which to set this screen flash to
[pre-salute_FrameRealization]
#Frame 32 screen flash = true. Does not play realization sound effect.
32 = 1#Replace pre-salute with the reference to the animation for which to set this screenshake to
[pre-salute_FrameScreenshake]
#Frame 32 screenshake = true.
32 = 1