https://archive.paragonwiki.com/w/api.php?action=feedcontributions&user=Goodtime&feedformat=atom
Paragon Wiki Archive - User contributions [en]
2024-03-29T05:51:14Z
User contributions
MediaWiki 1.25.1
https://archive.paragonwiki.com/w/index.php?title=Titan_Icon&diff=251392
Titan Icon
2013-09-06T14:14:57Z
<p>Goodtime: /* Pick Animation */ added name of animation popmenu</p>
<hr />
<div>{{otheruses4|1=the program that enables solo character creation and access to maps|2=other uses of Icon|3=Icon}}<br />
{{TOCright}}<br />
==Overview==<br />
<br />
'''Titan Icon''' is a freestanding executable file created by Codewalker which allows players of City of Heroes to access the character creation module of City of Heroes and to be able to enter and view the maps of City of Heroes. The program files and maps of City of Heroes were distributed for free to anyone who wished to play for free by [[NCsoft]] while the game was in operation.<br />
<br />
'''IMPORTANT''' <br />
<br/>All that Icon will ever be is a costume creator, map loader, animation player and NPC spawner toy. <br />
<br />
There will never be combat, there will never be bases, nor will there ever be powers or spawns or chat or events.<br />
<br />
==Installation==<br />
<br />
===Current Version===<br />
<br />
1.71 - Released August 17, 2013. [http://www.cohtitan.com/forum/index.php/topic,7288.0.html Version notes are located here.]<br />
<br />
=== Download===<br />
[http://repo.cohtitan.com/icon/icon.exe Program Download Link]<br />
<br />
[http://repo.cohtitan.com/icon/icon-src-16.zip Source Code Download Link]<br />
:Source code is provided solely for programmers to add their own stuff.<br />
<br />
'''Requirements''': You must have either the latest [[Issue 23]] (version 2320.201207182341.1) or [[Issue 24]] (Beta) (version 2400.201208211101.1) game client installed. The NCSoft launcher is not required. The Issue 24 client has more costume parts available and is recommended if you have it. If you need to refresh your I24/Beta client, [http://www.savecoh.com/p/download-issue-24-beta.html see here].<br />
<br />
===Instructions for PC===<br />
<br />
*Save icon.exe into your City of Heroes program folder. On a default install, this may be in C:\Program Files\City of Heroes, or C:\Program Files (x86)\City of Heroes on 64-bit systems. It should have a cityofheroes.exe file in it as well.<br />
<br />
*Use Explorer to browse to that folder, and double click icon.exe. You can create a shortcut to it if desired.<br />
<br />
===Instructions for Mac===<br />
<br />
*IMPORTANT: MAKE A COPY OF YOUR CITY OF HEROES FOLDER. Since we'll be modifying it irrecoverably, it's best to work with a copy.<br />
<br />
*Download icon.exe from the link above.<br />
<br />
*Toss the NCSoft Launcher in the trash. Not really necessary, but it's fun. Laugh while the trash empties.<br />
<br />
*Use the finder's Go To Folder command and select ~/Library/Preferences.<br />
<br />
*Delete com.ncsoft.* (anything beginning with that) and City of Heroes preferences.<br />
<br />
*Right click on the City of Heroes application and select Show Package Contents.<br />
<br />
*Go to Contents > Resources > transgaming > c_drive > coh .... or that last part might be Program Files > City of Heroes.<br />
<br />
*Drag the icon.exe into the path above.<br />
<br />
*Back up to Contents and select MacOS. Click slowly twice in the name "cider" to rename it. Change the name to "cider_die".<br />
<br />
*Right-click on cider_noui and choose "Duplicate". Click slowly on the name "cider_noui copy" to rename it. Change that name to just "cider".<br />
<br />
*Backup to Contents again.<br />
<br />
*Download this Icon.plist file: http://repo.cohtitan.com/icon/Info.plist<br />
<br />
*Go to Contents again, and drop the Info.plist there, replacing the existing one.<br />
<br />
*Close everything up and launch the City of Heroes application. It will go directly into the costume creator!<br />
<br />
*(OPTIONAL) Change the name of the City of Heroes application to something like "CoH Costume Creator" to differentiate it.<br />
<br />
==Start-up Parameters==<br />
*'''NPC (Developer) Edit Mode''': To launch the game in NPC Edit mode, you need to run Icon with a -n switch. <br />
** '''On Windows''', the easiest way to do that is to create a shortcut to icon.exe (right click on icon.exe and use "Create Shortcut"). Once its created, right click on the shortcut and go to properties. In the first box, "Target", go to the VERY end of the line, after everything else. Add a space, then type '''-n''', Hit OK. You can then rename the shortcut so that you know it's for the NPC editing version, or move it to your desktop if you want. OR... download this file [https://dl.dropbox.com/u/37952257/icon-npc.bat Icon-npc.bat] to your CoH file directory. It is a simple .bat file that will execute '''''icon.exe -n'''''<br />
** '''On Macintosh''', you will need to edit the Info.plist file within the City of Heroes application folder. Right click your icon-fied City of Heroes application to "Show Package Contents". Open the Contents folder, then edit the Icon.plist file with a text editor or the Property List Editor if you have it installed. At the entry "CiderGameOptions", change the string to "-- icon.exe -n", and then save the changed file.<br />
<br />
*'''Bypass Character Creator''': {{red|Issue 24 Client Only!}}{{dot}}Icon now supports a -r command line option to create a random character and jump straight into Atlas Park. Random is random, you have been warned. <br />
<br />
==How to Operate==<br />
<br />
You can now enter Paragon City, Praetoria, and the Rogue Isles with your NPC-mode costume creations.<br />
<br />
===Loading Maps===<br />
:'''/loadmap_prompt''' {{dot}} Default keybind: F1 {{dot}} Maps can be loaded! You can either use the F1 key for the dialogue box or the /loadmap slash command. The map name should be specified in the same format as it is found in demorecords. The game doesn't care if the name ends in .txt or .bin, so you can use geobin/ paths too (just cut out the geobin and start the path with maps/). When changing maps, Icon parses the newly loaded map and attempts to find a suitable spawn point to move your character to. It picks one completely at random; the intent is to simply get you somewhere "inside" the map. This might mean in an interior area like a shop or hospital. It also means that on maps with an [[Arena]], you have a chance of spawning inside the infamous Matrix Room. <br />
<br />
::* [https://docs.google.com/spreadsheet/ccc?key=0Asgb7CIX1MhodGZyYmZCaks2b2N4bDF6dXdHblpTcFE#gid=0 List of all internal Map Names found here]<br />
::* [http://home.roadrunner.com/~scuzzbopper/maps.html Another list of Map Names]<br />
::* [[Demo Editing/Scenic Maps|Select group of notable Scenic Maps found here]]<br />
<br />
:'''/loadmap [mapname]''' {{dot}} Default keybind: None {{dot}} Loads the map specified in the parameter bypassing the dialogue box. <br />
<br />
:'''/time [num]''' {{dot}} Default keybind: None {{dot}} Changes the time of day. Should be specified as a number between 0 and 24 -- fractional values are allowed. The default time is 12 (Noon).<br />
<br />
:See PopMenu section below for menus for choosing a map or a time of day.<br />
<br />
===Movement, Positioning, and Viewing===<br />
:'''/prev_spawn, /next_spawn, /random_spawn''' {{dot}} These are by default bound to the bracket keys: {{red|[}} and {{red|]}}, and {{red|F12}}. They allow you to jump between player spawn points on the current map. If you don't like where you spawned, you can press F12 to go to a (probably) different random place within the map, or use the square brackets to step through the spawn points in order. Especially useful if you don't see a map or don't see the other sections of a map that you would normally 'warp' to by clicking a door or elevator while on a map.<br />
<br />
:'''/fly''' {{dot}} Default keybind: 1 {{dot}} Take to the skies! <br />
<br />
:'''/edit_pos''' {{dot}} Default keybind: F3 {{dot}} Allows instant jumping to a new map position. The command toggles a panel in which you can edit your X/Y/Z coordinates in order to instantly teleport to any desired position. The button switches between accepting absolute coordinates, and relative coordinates for moving just a "little to the right". Affects self if nothing is targeted, otherwise, it affects targeted NPC.<br />
<br />
:'''/detach_camera''' {{dot}} {{red|Issue 24 Client Only!}} {{dot}} Default keybind: F2 {{dot}} Detaches the camera from the player; excellent for precision placement for screenshots. While the camera is detached, W/A/S/D move the camera, Q/E rotate it, Space raises it, Z lowers it, PgUp/PgDown tilt the view, N/M roll, and B resets the roll to zero.<br />
<br />
===Developer Commands===<br />
:'''/map_dev''' {{dot}} Default keybind: F4 {{dot}} Show normally hidden developer markers most likely used as part of the map editing process. Neighborhood volumes, spawn points, etc. More importantly, it also makes indoor sections (which are normally invisible when you're not inside them) show up, so they're easier to find in no-clip mode. Pressing F4 again turns it off. You can see but not really edit markers.<br />
<br />
:'''/no_clip''' {{dot}} Default keybind: F5 {{dot}} Toggles no-clipping mode on and off. Basically the same as using /nocoll 1, but is a toggle so it can be easily bound, and also displays an on-screen message to notify you if it's on or off.<br />
<br />
:'''/access_level Number''' {{dot}} This command changes your client access level. Cheater. The default access level is 0. Higher access levels unlock many, many developer and debugging commands, which are outside the scope of this page. There are no commands that require higher than access level 9.<br />
<br />
:'''Console''': Hit the backtick (`) key, may also be tilde (unshifted ~) on your keyboard to bring up the console. cmdlist will show you most of them, though there may be too many to scroll through the whole list. cmds [name] will search. That's all built into the client (if you have AL>1) and not new commands added by Icon.<br />
<br />
:'''Note''': One thing that definitely won't work is the map editor, since Icon overwrites part of its UI code in order to steal the coordinate editor for F3. However the map editor doesn't work without a server to handle the commands that it sends anyway.<br />
<br />
:{{red|Caution!}} These commands are intended for developer use, and many are not user-friendly. Several of them will crash your game client. Use this command at your own risk.<br />
<br />
===Spawning, Moving, Deleting NPCs===<br />
<br />
:'''/spawn_npc [internal_designation] [given_name]''' {{dot}} You can use this slash command to create an NPC at your current position. It takes two parameters, the model to use (this is the same as shows up in demorecords), and the name for your NPC. You can put the name in quotes for readability if you wish. Some examples:<br />
:*/spawnnpc Model_Statesman Statesman<br />
:: Creates a Statesman NPC with the name 'Statesman'<br />
:*/spawnnpc 5th_Mek_Man Mr. Roboto<br />
:: Creates a 5th Column Mek Man with the name 'Mr. Roboto'<br />
:*/spawnnpc Nemesis "A Plot?"<br />
:: Creates a Nemesis NPC with the name 'A Plot?'<br />
<br />
::* [https://docs.google.com/spreadsheet/ccc?key=0AhIRRsGz_pIedEpKNktybkN4MFlLSGlpNUdmWFcxa3c#gid=0 See here for a list of NPC models]<br />
<br />
:See PopMenu section below for a menus for choosing an NPC or item.<br />
<br />
:'''/rename''' {{dot}} Changes the name of the targeted entity to what you specify after the command. May optionally be enclosed in quotes, but not required. If you don't have an NPC targeted, changes your own name. It's a Known Issue that Some NPCs display a P-string for a name instead of their actual name. Unfortunately, the localized names for some of the NPCs are not present in the client files, as this is information that is normally sent by the server. If your favorite NPC is affected by this, feel free to '''/rename''' to rename them.<br />
<br />
:'''/load_costume [Filename]''' By popular demand, this command loads a player costume from a .costume file. The file should be located in the "costumes" subfolder of your COH install -- this is the same one that is used for loading or saving costumes from the character creator. You should not include the .costume extension in the name, just use the name of the character that the costume was saved for. If you are targeting an NPC when you use this command, it will load the costume onto that target instead of yourself.<br />
<br />
:'''/be_npc [NPC_Name]''' {{dot}} Ever wanted to know what it was like to be the Avatar of Hamidon? Type "/benpc Avatar_Hamidon" and find out! This takes the same type of NPC costume specification as the /spawn_npc command -- see link above for a full list.<br />
<br />
:'''/move_npc''' {{dot}} Default keybind: G {{dot}} Useful for fine-tuning NPC positioning for screenshots, using this command or pressing 'G' will teleport the targeted NPC to your position. Note that this will bump you out of the way unless you have noclip mode on, because: ''Citizens > All''. The F3 Coordinate Editor works on targeted NPCs.<br />
<br />
:'''/delete_npc''' {{dot}} Default keybind: Shift+Delete {{dot}} Sends your poor targeted NPC to the great bit-bucket in the sky. Why would you want to be so heartless?<br />
<br />
:'''/clear_npc''' {{dot}} Wipes all NPCs off the face of the map, creating a "Ghost Town". Some of the residents of Paragon City thought that empty zones were boring, and decided to come hang out. This includes contacts, trainers, and any NPCs that are "Persistent" NPCs, that is, they are hardcoded in the map data to always be present and not be spawned conditionally by the server.<br />
<br />
===Animations (Emotes)===<br />
:'''/mov [MOV_name]''' {{dot}} Default keybind: None {{dot}} Makes your character, or the NPC you have targeted, play an animation (what players know as 'emotes'). The animation should be specified in the same format as MOV commands from demorecords. Note that the normal /emote (/e, /em) commands do not work, nor do the normal naming conventions ('dance,' 'newspaper'). You can only use '/mov' as a command and the internal names of the animations. <br />
<br />
::* [[Demo_Editing/List_of_MOVs|Full list of internal MOV names found here]].<br />
::* [http://www.leandro.cox-supergroups.com/movs.torrent Short MP4 demos of all the MOVs (torrent link)]<br />
<br />
:'''/rememberap33''' {{dot}} Default keybind: 2 {{dot}} Raise a torch in remembrance of all the heroes who have walked the streets of Paragon City. (And the Villains because... FIRE!)<br />
<br />
:See PopMenu section below for menus for choosing a map or a time of day.<br />
<br />
== Available PopMenus ==<br />
<br />
The following are player-created [[popmenu]]s to be used for Titan Icon. They are text files that you download and then place them in the game sudbdirectory at: \data\texts\English\menus - if these folders do not exist, manually create them. Note that spelling and capitalization is important!<br />
<br />
They are called with the command: /popmenu <name of file><br />
<br />
They can be bound to a key: /bind <key> popmenu <name of file><br />
<br />
=== Pick Map ===<br />
:[https://app.box.com/s/v0bko53w2d8cbrucdiv2 Chose a map from a select list]<br />
<br />
:/popmenu maps<br />
:/bind <key> popmenu maps<br />
:From Tacitala and Phaetan and wyldhunt on the Titan forum.<br />
<br />
=== Set Time of Day ===<br />
<br />
:[https://app.box.com/s/0xj6i4fkk64sbi2afd6n Set the time of day]<br />
<br />
:/popmenu time<br />
:/bind <key> popmenu time<br />
:From batqueen on the Titan forum.<br />
<br />
=== Pick NPC/Item Spawn ===<br />
<br />
:[https://app.box.com/s/y4v3ofnfcwv3vifrn6ja Choose an NPC or an Item to spawn from a deep menu list]<br />
<br />
:/popmenu npc<br />
:/bind <key> popmenu npc<br />
:From [http://www.cohtitan.com/forum/index.php/topic,8861.0.html batqueen on the Titan forum.]<br />
<br />
=== Pick Animation ===<br />
<br />
:[https://app.box.com/s/exr9ikirat0naty09iql Chose the animation (MOV) of the target (self is none selected)]<br />
<br />
:/popmenu mov<br />
:/bind <key> popmenu <br />
:From Phaetan and Tacitala [http://www.cohtitan.com/forum/index.php/topic,8913.0.html on the Titan forum].<br />
<br />
==Notes==<br />
* Loading a map is an experimental feature, so many things won't work. Notably, doors are not usable and will freeze the client momentarily as it waits for a reply from a nonexistent server.<br />
*Certain weapon unlocks (Rularuu weapons, Romulus weapons, etc) still don't work in I23 version. You can still use NPC mode to access them in I24/Beta version.<br />
*Icon now displays a message with its version number when first entering a map, to help you be sure that you're running the version you intend to.<br />
*Along with persistent NPCs, Icon now spawns all the doors that are referenced by zone maps. They are non-functional, but look better than empty spaces where they should be.<br />
*Command parser reworked to be compatible with context menus. Icon commands can now be directly called from a popmenu.<br />
*The source code is no longer provided as individual zip files. Instead, a Git repository has been created so that the entire development history of the project is available.<br />
::* You can clone [http://repo.cohtitan.com/icon/icon.git this] with the Git client of your choice.<br />
*Fixed the /spawn_npc command to prevent a buffer overflow that could possibly crash the client if very long names are used.<br />
*Icon now includes the patch that allows the game client to load any files as overrides from data/. This should make loading custom maps, geobins, and other mods easier in the future.<br />
::*If you wish to see this in action, look [http://www.cohtitan.com/forum/index.php/topic,8963.msg120734.html#msg120734 here] for the original Atlas Park.</div>
Goodtime
https://archive.paragonwiki.com/w/index.php?title=Costume_File&diff=248595
Costume File
2013-04-07T18:19:33Z
<p>Goodtime: /* File structure */ added CostumeFilePrefix ~~~~</p>
<hr />
<div>{{wip|date=2009-08-12}}<br />
== Overview ==<br />
<br />
[[Issue 13]] introduced the ability to ''save'' and ''load'' costumes.<br />
<br />
A costume file contains the necessary data to reproduce a costume, from body and facial scales to the colors and patterns on each individual costume piece on a character.<br />
<br />
Costume files are saved in the ''<tt>INSTALLDIR/data/Costumes/</tt>'' folder.<br />
<br />
The costume editor also provides a button to ''Attempt Fix'' for cases when a saved costume contains costume parts that have not been unlocked for the character loading the costume, or contain legacy parts that have been reorganized in the costume editor. This button attempts to substitute the closest match available for the costume part(s) in question, and allows the player to proceed from the costume load screen to the costume editor interface and manually edit the costume, rather than prevent the costume from loading altogether. After restoring the costume, saving the newer version of the costume is a good idea!<br />
<br />
== File structure ==<br />
<br />
Costume files encode character model scales with a label and a number. If any of the model scales are 0, they are omitted, except the first, which defines the model's height and can never be zero. Scale specs appear first and use the following format:<br />
<br />
:Scale ''#''<br />
:BoneScale ''#''<br />
:ShoulderScale ''#''<br />
:ChestScale ''#''<br />
:WaistScale ''#''<br />
:HipScale ''#''<br />
:LegScale ''#''<br />
:HeadScales ''#'', ''#'', ''#''<br />
:BrowScales ''#'', ''#'', ''#''<br />
:CheekScales ''#'', ''#'', ''#''<br />
:ChinScales ''#'', ''#'', ''#''<br />
:CraniumScales ''#'', ''#'', ''#''<br />
:JawScales ''#'', ''#'', ''#''<br />
:NoseScales ''#'', ''#'', ''#''<br />
<br />
Scales are followed by two to three general definitions - note the reversed color triplet:<br />
<br />
:SkinColor ''BBB'', ''GGG'', ''RRR''<br />
:NumParts 27<br />
:BodyType ''#'' (1 = female, 4 = huge) <br />
<br />
There is also occasionally another identifier <br />
<br />
:CostumeFilePrefix ''xxx''<br />
<br />
with the values of either "Huge", "male" or "fem". This may or may not be an antiquated value, but it occasionally appears without the associated BodyType field.<br />
<br />
The costume piece data blocks, which specify the particulars about each individual costume piece including pattern and colors (once again, the RGB values are in reverse order), comprise the remainder of the file. Costume piece data blocks use the following format:<br />
<br />
:Geometry ''string''<br />
:Texture1 ''string''<br />
:Texture2 ''string''<br />
:DisplayName ''P-string''<br />
:RegionName "''string''"<br />
:BodySetName "''string''"<br />
:Color1 ''BBB'', ''GGG'', ''RRR''<br />
:Color2 ''BBB'', ''GGG'', ''RRR''<br />
:Color3 ''BBB'', ''GGG'', ''RRR''<br />
:Color4 ''BBB'', ''GGG'', ''RRR''<br />
<br />
=== Model scales ===<br />
As of [[Issue 15]], players who have purchased [[Super Booster III: Superscience]] have the option of altering model height and body type at the [[tailor]] in addition to costume pieces and head scales. Since it can be difficult to reproduce scale settings accurately with the sliders when changing body types, manually editing the numerical scale settings in the costume file gives players much greater control over costume changes.<br />
<br />
The following reference table gives the minimum and maximum values for each scale appropriate to each body type.<br />
{| class="wikitable"<br />
|-<br />
! BODY !! colspan=2 | FEMALE !! colspan=2 | MALE & HUGE<br />
|-<br />
! Scale Type !! Minimum !! Maximum !! Minimum !! Maximum<br />
|-<br />
| ''Scale'' || -27 || 36 || -33 || 25<br />
|-<br />
| ''BoneScale'' || -1 || 1 || -1 || 1<br />
|-<br />
| ''ShoulderScale'' || -1 || 0.9984 || -1 || 1<br />
|-<br />
| ''ChestScale'' || -1 || 1 || -1 || 1<br />
|-<br />
| ''WaistScale'' || -1 || 1 || -1 || 1<br />
|-<br />
| ''HipScale'' || -1 || 1 || -1 || 1<br />
|-<br />
| ''LegScale'' || -0.1 || 0.02 || -0.1 || 0.02<br />
|-<br />
! HEAD/FACE !! colspan=2 | FEMALE !! colspan=2 | MALE & HUGE<br />
|-<br />
! Scale Type !! Minimum !! Maximum !! Minimum !! Maximum<br />
|-<br />
| All Scales || -1 || 1 || -1 || 1<br />
|}<br />
<!--<br />
head scales - L,H,W? Which order?<br />
--><br />
[[Category:Game Client]]</div>
Goodtime
https://archive.paragonwiki.com/w/index.php?title=Costume_File&diff=248323
Costume File
2013-03-22T15:53:00Z
<p>Goodtime: color order is 'blue, green red'</p>
<hr />
<div>{{wip|date=2009-08-12}}<br />
== Overview ==<br />
<br />
[[Issue 13]] introduced the ability to ''save'' and ''load'' costumes.<br />
<br />
A costume file contains the necessary data to reproduce a costume, from body and facial scales to the colors and patterns on each individual costume piece on a character.<br />
<br />
Costume files are saved in the ''<tt>INSTALLDIR/data/Costumes/</tt>'' folder.<br />
<br />
The costume editor also provides a button to ''Attempt Fix'' for cases when a saved costume contains costume parts that have not been unlocked for the character loading the costume, or contain legacy parts that have been reorganized in the costume editor. This button attempts to substitute the closest match available for the costume part(s) in question, and allows the player to proceed from the costume load screen to the costume editor interface and manually edit the costume, rather than prevent the costume from loading altogether. After restoring the costume, saving the newer version of the costume is a good idea!<br />
<br />
== File structure ==<br />
<br />
Costume files encode character model scales with a label and a number. If any of the model scales are 0, they are omitted, except the first, which defines the model's height and can never be zero. Scale specs appear first and use the following format:<br />
<br />
:Scale ''#''<br />
:BoneScale ''#''<br />
:ShoulderScale ''#''<br />
:ChestScale ''#''<br />
:WaistScale ''#''<br />
:HipScale ''#''<br />
:LegScale ''#''<br />
:HeadScales ''#'', ''#'', ''#''<br />
:BrowScales ''#'', ''#'', ''#''<br />
:CheekScales ''#'', ''#'', ''#''<br />
:ChinScales ''#'', ''#'', ''#''<br />
:CraniumScales ''#'', ''#'', ''#''<br />
:JawScales ''#'', ''#'', ''#''<br />
:NoseScales ''#'', ''#'', ''#''<br />
<br />
Scales are followed by two to three general definitions - note the reversed color triplet:<br />
<br />
:SkinColor ''BBB'', ''GGG'', ''RRR''<br />
:NumParts 27<br />
:BodyType ''#'' (1 = female, 4 = huge) <br />
<br />
The costume piece data blocks, which specify the particulars about each individual costume piece including pattern and colors (once again, the RGB values are in reverse order), comprise the remainder of the file. Costume piece data blocks use the following format:<br />
<br />
:Geometry ''string''<br />
:Texture1 ''string''<br />
:Texture2 ''string''<br />
:DisplayName ''P-string''<br />
:RegionName "''string''"<br />
:BodySetName "''string''"<br />
:Color1 ''BBB'', ''GGG'', ''RRR''<br />
:Color2 ''BBB'', ''GGG'', ''RRR''<br />
:Color3 ''BBB'', ''GGG'', ''RRR''<br />
:Color4 ''BBB'', ''GGG'', ''RRR''<br />
<br />
=== Model scales ===<br />
As of [[Issue 15]], players who have purchased [[Super Booster III: Superscience]] have the option of altering model height and body type at the [[tailor]] in addition to costume pieces and head scales. Since it can be difficult to reproduce scale settings accurately with the sliders when changing body types, manually editing the numerical scale settings in the costume file gives players much greater control over costume changes.<br />
<br />
The following reference table gives the minimum and maximum values for each scale appropriate to each body type.<br />
{| class="wikitable"<br />
|-<br />
! BODY !! colspan=2 | FEMALE !! colspan=2 | MALE & HUGE<br />
|-<br />
! Scale Type !! Minimum !! Maximum !! Minimum !! Maximum<br />
|-<br />
| ''Scale'' || -27 || 36 || -33 || 25<br />
|-<br />
| ''BoneScale'' || -1 || 1 || -1 || 1<br />
|-<br />
| ''ShoulderScale'' || -1 || 0.9984 || -1 || 1<br />
|-<br />
| ''ChestScale'' || -1 || 1 || -1 || 1<br />
|-<br />
| ''WaistScale'' || -1 || 1 || -1 || 1<br />
|-<br />
| ''HipScale'' || -1 || 1 || -1 || 1<br />
|-<br />
| ''LegScale'' || -0.1 || 0.02 || -0.1 || 0.02<br />
|-<br />
! HEAD/FACE !! colspan=2 | FEMALE !! colspan=2 | MALE & HUGE<br />
|-<br />
! Scale Type !! Minimum !! Maximum !! Minimum !! Maximum<br />
|-<br />
| All Scales || -1 || 1 || -1 || 1<br />
|}<br />
<!--<br />
head scales - L,H,W? Which order?<br />
--><br />
[[Category:Game Client]]</div>
Goodtime
https://archive.paragonwiki.com/w/index.php?title=Demo_Editing/Understanding_Demo_Code&diff=248309
Demo Editing/Understanding Demo Code
2013-03-20T21:32:44Z
<p>Goodtime: fixed formatting. :/</p>
<hr />
<div>{{TOCright}}<br />
<br />
== Overview ==<br />
<br />
''Demo code'' refers to the various commands, associated variables, and other data found in a demo file. It is this code which instructs the game engine how to play back and display the session (or created content) captured by the [[Demo Recording]]. Modifying, deleting, or adding to this code is what constitutes the process of [[Demo Editing]].<br />
<br />
Please note that whether some particular demo codes and commands function during demo playback may change as the game version is updated.<br />
<br />
== Time Increment ==<br />
<br />
The '''Time Increment''' is the information that tells the demo how to advance the play of the recording. Each line of demo code begins with a number that tells the game engine how much time to advance the demo playback since the previous line, hence this number is referred to as the '''Time Increment''' (among other terms).<br />
Looked at as a whole, rather than line by line, a demo file is formatted in such a way that it is organized into columns. The first column is always the '''Time Increment'''.<br />
<br />
The '''Time Increment''' is always a positive integer value and specifies the time in milliseconds (thousandths of a second) that the game engine waits, after the previous line of demo code, before executing the next line. So a value of 2000 at the beginning of a line of demo code would mean that the 2 seconds of "real" time would pass, after the previous line of code, before the demo playback carries out the command on that line. The following code sample shows a line from a demo file with a '''Time Increment''' of 400 milliseconds (four-tenths of a second):<br />
<br />
400 SKYFILE SKY 0 1 0.000000<br />
<br />
Please note that this value, while it controls the advancement of the demo playback, does '''not''' control the time of day in a demo. The time of day in a demo is fixed by the '''Time''' command, and, once specified, remains fixed throughout the demo playback and does not change.<br />
<br />
The '''Time Increment''' is required for every line in a demo, and must begin each line, even if the '''Time Increment''' is just zero.<br />
<br />
The '''SKY''' command is frequently used for lines of demo code that serve no purpose other than to advance the '''Time Increment'''.<br />
<br />
== Entity ID ==<br />
<br />
After the '''Time Increment''', most lines of demo code will have a second positive integer value. A few special cases will instead have a text value after the '''Time Increment'''. This second number (or text entry) is the '''Entity ID'''. This value is the unique ID associated with every ''entity'' recorded in the demo. ''Entity'' refers to any model, object, mission objective, NPC, or player character in the demo. Each such element must have a unique ID associated with it, as specified by the '''Entity ID'''. All lines of code must have an '''Entity ID''' as the second element in the line, usually a positive integer. The special cases for the '''Entity ID''' are discussed below. As an example, the following line of demo code has an '''Entity ID''' of "3":<br />
<br />
0 3 NEW "Senator Decimus Aquila"<br />
<br />
Looked at in terms of a column format, the second column in a demo file is the '''Entity ID'''.<br />
<br />
The '''Entity ID''' is a unique value associated with a specific ''entity''. The '''Entity ID''' of each line tells the game engine which ''entity'' to apply/attach that line of demo code to. For example, if a line of demo code includes an animation ('''MOV'''), the '''Entity ID Number''' tells the game engine which ''entity'' to have perform that animation in the demo playback. The following line of demo code shows the ''WALKCYCLE'' '''MOV''' attached to the ''entity'' with the ID "113":<br />
<br />
0 113 MOV WALKCYCLE 0<br />
<br />
=== Special Case Entity IDs ===<br />
<br />
* '''0''': "0" (zero) is used as the entity ID value for the '''Version''', '''Map''', '''Base''', and '''Time''' commands. This is likely used as a "null" value of the '''Entity ID''' to indicate that these commands are not associated with a particular ''entity''.<br />
* '''CAM''': The camera information recorded in the demo is identified by the text ''CAM'' in the place of the '''Entity ID''' number. This can be viewed as a special case value of the '''Entity ID''' where it uses the text ''CAM'' in place of a number.<br />
* '''SKYFILE''': Similar to ''CAM'', the ''SKYFILE'' code appears in demo lines in the place normally associated with the '''Entity ID'''. This can also be considered a special case value of the '''Entity ID''', specific to the '''SKY''' command which always follows.<br />
* '''DYNGROUPS''': As with ''CAM'' and ''SKYFILE'', the ''DYNGROUPS'' code can be viewed as a special case non-numeric '''Entity ID''' associated specifically with the '''DYNARRAY''' command.<br />
<br />
== Version ==<br />
<br />
The '''Version''' command line appears to be a standard and constant introductory line used to designate the start of the demo file. This command line takes the form of: <br />
<br />
1 0 Version 2<br />
<br />
Altering the variable following the '''Version''' command can cause the demo to crash. Altering this command line is not recommended.<br />
<br />
Note that the '''Version''' command line always begins with a '''Time Increment''' of 1 (rather than 0).<br />
<br />
== Map ==<br />
<br />
The '''Map''' command tells the game engine what map to display for the demo playback. The '''Map''' command will be followed on the same line by the file name of the map to be displayed, like so:<br />
<br />
<nowiki>0 0 Map maps/City_Zones/City_04_01/City_04_01.txt</nowiki><br />
<br />
The one exception to this is for a demo made in a [[Supergroup Base]]. Demos recorded in bases will not have any file name specified after the '''Map''' command. The '''Map''' command will end the line and will be followed by the '''Base''' command on the next line.<br />
<br />
A list of known [http://home.roadrunner.com/~scuzzbopper/maps.html Maps] can be found at the [http://home.roadrunner.com/~scuzzbopper/ City of Heroes Codex].<br />
<br />
== Base ==<br />
<br />
A [[Supergroup Base]] does not have any pre-defined map associated with it. This is reflected in recorded demos by the '''Base''' command. Demos recorded in a base will not have any map file name specified after the '''Map''' command, but the next line of the demo file will include the '''Base''' command, which will precede a large amount of data apparently used to define and generate the base layout. For example (note that the binary '''Base''' data is incomplete in this example and would typically continue to fill a page or more):<br />
<br />
0 0 Map<br />
0 0 Base "UÀ�\0x^íYsÛ¸–€ç5©Ê`õ˼Ü8Ü\pùÍ–—¤oÜí±Ü[35¥‚)Äâ5Eª¸\dQ~ý�¸H¤D� \de...<br />
<!-- Is it worthwhile to have a code sample here or is the binary goop just going to confuse people? -SB --><br />
<br />
The '''Base''' command appears only for demos recorded inside a [[Supergroup Base]]. Demos recorded in any other location, mission, or circumstance will not include the '''Base''' command.<br />
<br />
== Time ==<br />
<br />
The '''Time''' command instructs the game engine what time of day to use for the demo playback. The value which follows the '''Time''' command on this line is the time of day, in hours, using the military time notation (also known as 24-hour clock notation), with fractions of an hour expressed as a decimal value. Hence values following the '''Time''' command may range from 0.0 to 23.99. In a demo, this line would appear as follows:<br />
<br />
0 0 Time 14.428092<br />
<br />
Where, in this example, the value of 14.428092 corresponds to 2:25 PM (and about 41 seconds). Some examples of '''Time''' values, with their equivalent 12-hour clock notation, are as follows:<br />
<br />
<br />
{| border="1" cellspacing="0" cellpadding="5" align="center"<br />
! Demo ''Time'' Value<br />
! Equivalent 12-Hour Clock Time<br />
|- <br />
| 0.000<br />
| 12:00 Midnight<br />
|-<br />
| 6.500<br />
| 6:30 AM<br />
|-<br />
| 12.000<br />
| 12:00 Noon<br />
|-<br />
| 16.667<br />
| 4:40 PM<br />
|-<br />
| 22.000<br />
| 10:00 PM<br />
|-<br />
|}<br />
<br />
<br />
Note that, unlike in-game, the time of day does ''not'' advance in demo playback, so whatever the time is as specified in the demo code is what the time of day will be for the entire demo playback.<br />
<!-- That is still correct, yes? Nothing has changed recently that I missed as far as time of day advancing goes? --><br />
<!-- What happens if you re-issue the Time command part-way through a demo? I haven't tried that. Does it change the time? If so then you could, in theory, splice in a series of incremental Time commands to change the time of day during the playback of a demo. --><br />
<br />
== POS ==<br />
<br />
The '''POS''' command refers to "position." This is used to tell the game engine ''where'' to place a given ''entity'' in the demo playback. All players, NPC, and objects (all ''entities''), as well as the demo camera (or '''CAM''') must have a associated '''POS''' command in order to appear properly in the demo. Changing the '''POS''' values for an ''entity'' over the course of a demo controls the movement of that ''entity'' in the demo. Changing the '''POS''' is how you move something from point A to point B.<br />
<br />
The '''POS''' command is followed by a set of three numerical map coordinates in X Z Y format. This is one interpretation of the ordering and designation of the coordinate system. See also the entry [[Coordinates]] which interprets the order as X Y Z and designates Z as the vertical axis.<br />
<!-- Leaving it at that. I know I'm not the only demo-head who thinks "X Z Y", so I'd keep that convention as the preferred one for the intended audience. -SB --><br />
<br />
0 1 POS -1140 102 4592.5<br />
<br />
For a given map, the X value corresponds to its East-West position of the ''entity'', the Z value corresponds to altitude or Up-Down position of the ''entity'', and the Y value corresponds to the North-South position. Larger values of X are further to the West, larger values of Z increase altitude, and larger values of Y are further to the South. Note that, for X & Y, this may be the reverse of what is intuitive for many.<br />
<br />
The values for '''POS''' are expressed in feet. So changing an Y value from 1.0 to 2.0 will move an ''entity'' one foot to the South. Changing an Y value from 1.0 to 2641.0 will move an ''entity'' a half mile to the South.<br />
<br />
The appearance of '''CAM POS''' in the code is worth special note. As discussed above, ''CAM'' is used as the '''Entity ID''' for the demo camera -- the POV from which the demo is recorded. The camera, or ''CAM'', is a special pre-defined demo ''entity'' which uses the text ''CAM'' as its '''Entity ID''' rather than an integer value like most ''entities''. With regards to its use of the '''POS''' command, the '''CAM POS''' lines function the same as for any other ''entity'' in that they determine the position and movement (through changing the position) of the demo camera/demo POV.<br />
<br />
== PYR ==<br />
<br />
The '''PYR''' command stands for [[wikipedia:Yaw, pitch and roll|"Pitch-Yaw-Roll"]]. '''PYR''' is used similarly to the '''POS''' command. Where '''POS''' is used to specify the position of an ''entity'', '''PYR''' specifies the spacial orientation of an ''entity''. Put another way, '''POS''' determines where on the map [[Ms. Liberty]] shows up, and '''PYR''' determines whether she is standing on her head or on her feet.<br />
<br />
The '''PYR''' command is followed by three numerical values for Pitch, Yaw, and Roll. These values are expressed in [http://en.wikipedia.org/wiki/Radians radians], with values ranging from -3.14159 to 3.14159 (-pi to +pi). A total of 2pi (6.28319) represents a complete rotation of 360 degrees for any of the three axes. <br />
<!-- Using 0 to 2pi works just as well as -pi to +pi, and so forth. -SB --><br />
<br />
0 1 PYR 0 2.626175 0<br />
<br />
The Pitch (or "P") value determines the front-to-back tilt of an NPC, object, or other ''entity'' -- whether an entity is leaning to the front or to the back.<br />
<!-- I know my photoshop-Fu isn't the greatest, so better images showing PYR are welcome. -SB --><br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
| [[File:PYRPitch00.jpg | center | thumb | PYR 0 0 0]]<br />
| [[File:PYRPitch08.jpg | center | thumb | PYR 0.8 0 0]] <br />
| [[File:PYRPitch08neg.jpg | center | thumb | PYR -0.8 0 0]]<br />
|-<br />
|}<br />
The Yaw (or "Y") value determines the left-right facing of an NPC, object, or other ''entity'' -- whether an ''entity'' is facing to the right or left, rotating around its vertical axis.<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
| [[File:PYRYaw00.jpg | center | thumb | PYR 0 0 0]]<br />
| [[File:PYRYaw16.jpg | center | thumb | PYR 0 1.6 0]] <br />
| [[File:PYRYaw16neg.jpg | center | thumb | PYR 0 1.6 0]]<br />
|-<br />
|}<br />
<br />
The Roll (or "R") value determines the side-to-side tilt of an NPC, object, or other ''entity'' -- whether an ''entity'' is leaning/rotated to the left or to the right.<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
| [[File:PYRRoll00.jpg | center | thumb | PYR 0 0 0]]<br />
| [[File:PYRRoll16.jpg | center | thumb | PYR 0 0 1.6]] <br />
| [[File:PYRRoll16neg.jpg | center | thumb | PYR 0 0 -1.6]]<br />
|-<br />
|}<br />
<!-- This last set is tweaked a bit. Her elevation is increased for the last two images to keep her from being buried underground. -SB --><br />
Note that the axis of rotation for most models is at the ''base'' of the model and not through their apparent center.<br />
<br />
The combination of these three values allows you to adjust an ''entity'' in all three dimensions to obtain any orientation desired.<br />
<br />
All of the additional comments made regarding '''CAM POS''' also apply for '''CAM PYR''' (relative to the '''PYR''') command, where '''CAM PYR''' is a '''PYR''' command applied to the ''CAM'' (camera) '''Entity ID'''.<br />
<!-- Possibly add info about the absolute value orientations of PYR for CAM vs. other entities is different. I just avoided the issue by only talking with respect to relative value orientations. -SB --><br />
<br />
== NEW ==<br />
<br />
'''NEW''' is the command used by the demo to tell the game engine that it is adding a new ''entity'' (NPC, player, object, mission objective, etc.). The line with the '''NEW''' command is (with one exception) where the unique '''Entity ID''' is first specified (the second numerical value in the line, after the '''Time Increment''') and is the most important value associated with the '''NEW''' command. When you use the '''NEW''' command to add a new ''entity'', that ''entity'' and anything associated with it must use the same '''Entity ID''' throughout the demo thereafter. For example, in the following line of demo code, "37" is the '''Entity ID''' which must be associated with [[Ms. Liberty]] and all commands attached to the [[Ms. Liberty]] ''entity'' for the remainder of the demo.<br />
<br />
0 37 NEW "Ms. Liberty"<br />
<br />
The '''NEW''' command is followed by the name to be attached to that entity. This can be left blank. The ''entity'' does not ''require'' that a name be attached. If the name is one word, with no spaces, then quotes are not required for the name:<br />
<br />
0 26 NEW Statesman<br />
<br />
If the name includes spaces (more than one word), then the name must be enclosed by quotation marks:<br />
<br />
0 14 NEW "Sister Psyche"<br />
<br />
You may enclose single-word names in quotation marks and this will not cause any harm, although recorded demos do not use this convention:<br />
<br />
0 26 NEW "Statesman"<br />
<br />
NPC, model, and mission objective names do not display during demo playback, but player character names do display. If you do not want player names to appear over their heads during demo playback,one way to do this is via demo editing by leaving the name field blank:<br />
<br />
0 26 NEW <br />
<br />
Or by entering a blank space between quotation marks for a name:<br />
<br />
0 26 NEW " "<br />
<br />
The '''NEW''' command can be used mid-way through a demo to add an ''entity'' that was not there at the start of the demo.<br />
<br />
== NPC ==<br />
<br />
The '''NPC''' command specifies the game model to display for an NPC. Remember that the '''Entity ID''' for the '''NPC''' line must match the unique '''Entity ID''' assigned by the '''NEW''' command. For example:<br />
<br />
0 14 NEW "Chief Mentalist"<br />
0 14 NPC Rikti_Armour_Lieutenant_01<br />
<br />
''Entities'' classed as an ''NPC'' include all "normal" non-player characters (enemies, allies, monsters, etc.), but also all destructible objects. Any object in a mission or map which can be destroyed (such as mailboxes, fire hydrants, and everything else in [[Mayhem Missions]]) is considered an ''NPC'' and its appearance is managed by the '''NPC''' command and the model assigned thereby.<br />
<br />
A list of known [http://home.twcny.rr.com/scuzzbopper/coh/models.html Model Names] can be found at the [http://home.twcny.rr.com/scuzzbopper/coh/ City of Heroes Codex].<br />
<br />
== MOV ==<br />
<br />
The '''MOV''' command determines the animation performed by an ''entity''. The animation named after the '''MOV''' command is executed by the ''entity'' as specified by the unique '''Entity ID''' on the '''MOV''' line. For example, the following '''MOV''' command will cause the ''entity'' with the unique '''Entity ID''' of "10" to perform the "bow down" emote:<br />
<br />
0 10 MOV EMOTE_BOW_DOWN 0<br />
<br />
The number at the end of the line is a feature added to demos with [[Issue 12]]. A "0" (zero) is the default or null value and executes the animation unmodified. Other positive integer values, besides zero, relate the animation to a weapon or object attached to the ''entity''. <br />
<br />
<!-- I haven't tried to figure these out yet, so maybe someone else who has. Do I even have it right, so far as it goes? Repeating what I've read in Zloth's posts. -SB --><br />
<br />
A list of known [[Demo_Editing/List_of_MOVs|MOVs]] can be found [[Demo_Editing/List_of_MOVs|here]].<br />
<br />
== HP ==<br />
<br />
The '''HP''' code specifies the ''current'' [[Health]] of a destructible ''NPC''. This code is associated only with ''NPCs'' which can be damaged or destroyed. ''NPCs'' or other ''entities'' which can not be damaged do not use this code. Hence, the '''HP''' code will not be seen in a demo file for such ''NPCs'' as pedestrians, trainers, contacts, or stores; but will be seen attached to enemies and destructible objects.<br />
<br />
Any ''NPC'' which uses the '''HP''' code must also have the '''HPMAX''' code associated to it. '''HP''' specifies the current Health and '''HPMAX''' specifies the maximum [[Health]]. Both codes must be associated with any destructible ''NPC''. For example:<br />
<br />
0 5 NEW "Blood Brother Slammer"<br />
0 5 NPC Thug_Hellion_01<br />
0 5 POS -227.15625 0 130.203125<br />
0 5 PYR 0 -0.380427 -0<br />
0 5 MOV LOITER_READYC 0<br />
0 5 HP 60.00<br />
0 5 HPMAX 60.00<br />
<br />
For ''NPC'' ''characters'' (enemy/ally types), this code is not normally required when simply making such an ''entity'' appear in a demo. However, this is vital for properly displaying destructible ''objects''. Many destructible objects have a variable appearance which is based on the relative values of '''HP''' and '''HPMAX'''. If these lines are not included in the demo for such ''NPCs'', the game engine will render the destructible objects as if they had zero '''HP'''; which typically (though not always) means that the object will be treated as destroyed and will not be visible in the demo playback.<br />
<br />
The values of '''HP''' for an ''NPC'' will change over the course of a demo recording as that ''NPC'' is damaged or healed.<br />
<br />
If you are adding an ''NPC'' or object to a demo, and are uncertain whether it is destructible and requires the '''HP'''/'''HPMAX''' code, it is harmless to add this code to an ''NPC'', even if it is not required.<br />
<br />
== HPMAX ==<br />
<br />
'''HPMAX''' specifies the maximum [[Health]] of an ''NPC''. As mentioned above under the '''HP''' detail, this command is attached to destructible ''NPCs'' and objects, which must also have the '''HP''' code attached.<br />
<br />
For destructible objects which have a variable appearance, the relative proportion of the values for '''HP''' and '''HPMAX''' determines the appearance of those destructible objects in the demo playback.<br />
<br />
== DEL ==<br />
<br />
Just as the '''NEW''' command is used to add an ''entity'' to a demo, ''entities'' can also be removed from a demo via the '''DEL''' command. This command will delete the specified ''entity'', removing them from the demo.<br />
<br />
This command is not accompanied by any variables after the command, requiring only the '''Time Increment''' (as all lines do) and the '''Entity ID''', which is the ID of the ''entity'' to be deleted from the demo.<br />
<br />
0 70 DEL<br />
<!-- Add info on being able to re-use Entity IDs after a DEL. -SB --><br />
<br />
== Player ==<br />
<br />
The '''Player''' command is used to specify the particular player character around which the demo is being recorded. It is used just to flag that one specific player character, and only that one character should have the '''Player''' command attached to it. Other player characters that appear in the demo, that are not the POV character of the demo recording, do not have this flag attached.<br />
<br />
This command is an exception to the usual convention for the '''NEW''' command in that the '''Player''' command is issued first and is when the unique '''Entity ID''' is attached to the POV player character (immediately before the '''NEW''' line), appearing like so: <br />
<br />
0 48 Player<br />
0 48 NEW "Lady Briton"<br />
<br />
The '''Player''' command has no associated trailing values or variables.<br />
<br />
== COSTUME ==<br />
<br />
The '''COSTUME''' command is required for every player character in a demo. The '''COSTUME''' line includes the variables used to specify the body type, build, and facial dimensions of a character. It is followed, on subsequent lines, by the '''PARTSNAME''' code which specifies the remainder of the player character costume. The following shows a single line of demo code reflecting the number of variables used by the '''COSTUME''' command:<br />
<br />
0 1026 COSTUME 0 aad2f6 2.802201 -0.269841 -0.015873 -0.015873 -0.301587 -0.238095 -0.015873 <br />
-0.015873 -0.015873 -0.015873 -0.015873 -0.015873 -0.015873 -0.015873 -0.015873 -0.015873 -0.015873 <br />
-0.015873 -0.015873 -0.015873 -0.015873 -0.015873 -0.015873 -0.015873 -0.015873 -0.015873 -0.015873 <br />
-0.015873 -0.015873 -0.015873<br />
<!-- This could possibly use some further detail, possibly identifying what element all of the variables control, playing with character height and stuff like that. -SB --><br />
<br />
== PARTSNAME ==<br />
<br />
The '''COSTUME''' line is followed immediately by (currently) 27 lines of the '''PARTSNAME''' code used to specify the costume parts and colors of a player character's complete costume. The '''PARTSNAME''' code includes specifying features such as [[Auras]] and [[Custom Weapons]]. Essentially all things associated with a player character's costume or standard appearance are controlled by the '''COSTUME''' and '''PARTSNAME''' code.<br />
<br />
0 48 COSTUME 1 89a0ea 0.000000 0.000000 0.000000 -0.118681 -0.006593 -0.102857 -0.253846 <br />
0.014769 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 <br />
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 <br />
0.000000 0.000000 0.000000<br />
0 48 PARTSNAME Tight tights !Hips_V_Pattern_Strips_01 0000d4 990002<br />
0 48 PARTSNAME Tight tights !chest_Fat_Stripe 0000d4 990002<br />
0 48 PARTSNAME V_fem_Head.GEO/GEO_Head_V_Asym_Standard !Face_Skin_V_Fem_Head_19 !Face_V_Mask_Executioner_01 0000d4 ffffff<br />
0 48 PARTSNAME Flare smooth_matte !glove_Sharp 0000d4 ffffff<br />
0 48 PARTSNAME Smooth tights !Boot_V_Pattern_Stripe_01 0000d4 990002<br />
0 48 PARTSNAME none none none ffffff ffffff<br />
0 48 PARTSNAME Student_01 Long_01a Long_01b 00fdff 1c67ff<br />
0 48 PARTSNAME none none none 00000000 00000000<br />
0 48 PARTSNAME none none none 00000000 00000000<br />
0 48 PARTSNAME Tight base Lion_01 00fdff 00cacc<br />
0 48 PARTSNAME Smooth spiked_01a spiked_01b 0000d4 ffffff<br />
0 48 PARTSNAME none none none 00000000 00000000<br />
0 48 PARTSNAME none none none 00fdff 00fdff ffffff ffffff WEAPONS/Custom_Claws/Fem_ClawsRight_TalsorianBlade01.fx<br />
0 48 PARTSNAME none none none 00000000 00000000<br />
0 48 PARTSNAME none none none 00000000 00000000<br />
0 48 PARTSNAME Half Cape_Top_01 none ffffff ffffff<br />
0 48 PARTSNAME Half_31 Generic_01a Generic_01b 00fdff 3fbeff<br />
0 48 PARTSNAME none Cape_01 none ffffff ffffff ffffff ffffff capes/CapeLongFem.fx<br />
0 48 PARTSNAME none none none 00000000 00000000<br />
0 48 PARTSNAME none none none 00000000 00000000<br />
0 48 PARTSNAME none none none 00000000 00000000<br />
0 48 PARTSNAME none none none 00000000 00000000<br />
0 48 PARTSNAME none none none 00000000 00000000<br />
0 48 PARTSNAME none none none 00000000 00000000<br />
0 48 PARTSNAME none none none 00fdff 00fdff ffffff ffffff WEAPONS/Custom_Claws/Fem_ClawsLeft_TalsorianBlade01.fx<br />
0 48 PARTSNAME none none none 00000000 00000000<br />
0 48 PARTSNAME none none none 00000000 00000000<br />
<br />
Note that the number of '''PARTSNAME''' command lines in a demo has changed over the history of the game as new costume piece groups have been added. Older demo files may have fewer lines.<br />
<!-- Tackling these in greater detail -- what line is what costume section, for example, talking about colors, etc. -- might be a good addition. -SB --><br />
<br />
== XLU ==<br />
<br />
The '''XLU''' command has, at various times, appeared in demo recordings; typically following either the costume data in the case of player characters or after the model information for NPCs. Whether this code is present in demo recordings or not has changed multiple times over the game's lifetime. At present, it is appearing attached to some, but not all, player character models after the final line of '''PARTSNAME''' code. A sample of an instance of the '''XLU''' command line:<br />
<br />
0 2366 XLU 0.498039<br />
<br />
The function of this command is unknown and modifying the variable attached to it does not affect the demo in any apparent way. It is possible that this is simply a code artifact which does not have any actual bearing on demo playback.<br />
<br />
== SEQ ==<br />
<br />
Just as the '''NPC''' command is used to specify the model (and thereby appearance) of an ''NPC'', the '''SEQ''' command is used to specify the model of a non-destructible, clickable object. '''SEQ''' is attached specifically to the type of ''entity'' used for non-destructible, clickable mission objectives ("clickies" or "glowies"). These particular types of ''entities'' are distinct from ''NPCs'', with a different set of model codes.<br />
<!-- Also the Bloody Bay & Warburg terminals, in addition to traditional mission objective glowies, I believe. -SB --><br />
<br />
However, these '''SEQ''' ''entities'' do not currently appear during demo playback (and this has been the case since demos were first introduced). '''SEQ''' objects are invisible when the demo is played back and do not show up.<br />
<br />
Additionally, please note that the '''SEQ''' ''entities'' use a different set of model names specific to the '''SEQ''' command. This means that you can not simply replace the '''SEQ''' command with the '''NPC''' command, keeping the original '''SEQ''' model name, to make these objects appear during demo playback. Swapping the commands in this way would only work if you also changed the model name to use an '''NPC''' model equivalent to the '''SEQ''' model (most ''do'' appear to have equivalent '''NPC''' models, however).<br />
<!-- I do NOT have a mapping of equivalent SEQ to NPC models, sorry. --><br />
<br />
== FX ==<br />
<br />
The '''FX''' command is used to specify the creation in demos of the "effects" used by the game; namely, the powers, the explosions, and essentially any visual effect that is not otherwise produced by an ''entity's'' model or by an animation ('''MOV''').<br />
<br />
The '''FX''' command line includes a fair amount of data. Here is a sample line:<br />
<br />
0 3 FX OneShot 4 POWERS/FIRECONTROL/FIREPHOENIX.FX 0<br />
<br />
A detailed breakdown of this line is as follows: <br />
<br />
* '''0''': The first number of the line is, as always the '''Time Increment'''.<br />
* '''3''': The second number in the line is, as usual, the '''Entity ID'''. This specifies the unique ID of the ''entity'' which "owns" this effect.<br />
* '''FX''': The '''FX''' demo command itself, specifying that this line is executing an effects command.<br />
* '''OneShot''': After the '''FX''', a demo also specifies the duration type of the '''FX'''. There are two possible values which may be used here -- ''OneShot'' or ''Maintained''. ''OneShot'' defines this '''FX''' as a one-time event that lasts just as long as it takes the particular '''FX''' to execute. ''Maintained'' identifies an ongoing '''FX''' which will continue until the demo ends, the ''entity'' it is attached to is removed from the demo, or an '''FX''' termination command is given.<br />
* '''4''': The number after the duration type is a unique ID number assigned to this specific '''FX'''. Much like demos must include a unique '''Entity ID''' for every NPC, player character, or object used in the demo, every '''FX''' is assigned a unique ''FX ID'' to identify it. This value is always a positive integer and must be unique for any particular '''FX'''. The other command which utilizes this ID number is the '''FXDESTROY''' command used to end or delete a visual effect.<br />
* '''POWERS/FIRECONTROL/FIREPHOENIX.FX''': This is the demo code of the particular '''FX''' which the game engine is instructed to execute. (In this particular case, this is the demo code for the ''Rise of the Phoenix'' power.)<br />
* '''0''': After the demo code of the '''FX''' to be used, the line ends with a number. This is most often a ''0'' but may contain the Entity of an associated FX, for instance:<br />
<br />
0 1590 FX OneShot 468654 POWERS/SONICCONTROL/BLASTS/HEROSMALLBLAST.FX 0<br />
<br />
Would be followed by <br />
<br />
0 1591 FX OneShot 468655 POWERS/SONICCONTROL/BLASTS/STANDARDBLASTHIT.FX 468654<br />
<br />
This represents the core demo code line for specifying a power or other FX-based visual effect. This initial command line is generally followed by three related lines associated with the visual effect. The lines which typically follow are the '''FXSCALE''', '''ORIGIN''', and '''TARGET''' command lines.<br />
<!-- I'm calling these "visual effects" even though they include audio components. Just for simplicity. Don't think that would generally cause much confusion. -SB --><br />
<br />
A list of known [http://home.twcny.rr.com/scuzzbopper/coh/fx.html FX] can be found at the [http://home.twcny.rr.com/scuzzbopper/coh/ City of Heroes Codex].<br />
<br />
== FXSCALE ==<br />
<br />
The '''FXSCALE''' code is a standard effects-related command which always follows the main '''FX''' line. This command is always expressed with a standard set of variables as ''"FXSCALE 10.000000 10"''. For example:<br />
<br />
0 3 FXSCALE 10.000000 10<br />
<br />
Modifying these variables does not appear to produce any change in demo playback or in the scale or appearance of the relevant visual effects.<br />
<!-- Correct? -SB --><br />
<br />
== ORIGIN ==<br />
<br />
The third required demo command for visual effects is the "ORIGIN" command. This command is used to identify the source of an '''FX''', doing so via the '''Entity ID''' which precedes the command:<br />
<br />
0 3 ORIGIN ENT 0 0<br />
<br />
The values following the '''ORIGIN''' command (''ENT'' to specify an ''entity'' and the numerical values) appear to always be constant, with "ENT 0 0" being the only values to follow the '''ORIGIN''' command.<br />
<!-- Note: This marked as the "ORIGIN" command rather than the "ORIGIN ENT" command becauses the "ENT" text does appear to be a variable used to specify the command as associated with an entity. See the use of the "TARGET" command with both "ENT" and "POS". -SB --><br />
<!-- Also, I know that many demo folks have previously reported that the numeric variables after the "ORIGIN" command were used to identify the entity that was the FX origin, but I don't see those values being used any more. It's all just "0 0". Kind of makes sense. Would be redundant if you already have the Entity ID telling you who the FX origin is attached to. But would like to know if someone can show an example (from current I12+ demos) where this isn't the case. -SB --><br />
<br />
== TARGET ==<br />
<br />
The '''TARGET''' demo command line is the final line required for managing visual effects. This command line specifies that target or subject of a particular '''FX'''. There are, in general, three different cases which may be specified by the '''TARGET''' command.<br />
<br />
For the first case, the '''TARGET''' command line specifies an '''FX''' which is self-targeted, where the ''entity'' which is causing or "owns" the '''FX''' is targeting themselves or otherwise applying that '''FX''' to themselves<!-- clunky grammar -SB -->. This is the case for many damage shields, protection toggles, self-heals, and so forth where an ''entity'' uses a power that creates a visual effect on their self. In this case, the '''TARGET''' command will be followed by the ''ENT'' value, to specify that the target subject is an ''entity'' and then by '''Entity ID''' of the target subject. Because the ''entity'' is self-targeting, the '''Entity ID''' before and after the '''TARGET''' command will be the same:<br />
<br />
0 3 TARGET ENT 3 0<br />
<br />
In the second case, the '''TARGET''' command is used in a situation where one ''entity'' is using an FX on or against another ''entity''. This generally the situation which occurs when one ''entity'' shoots at another with an energy bolt or fire blast, but also applies to any circumstance where one ''entity'' is generating the '''FX''' and another, different ''entity'' is the recipient of the '''FX'''. In this situation, the '''TARGET''' command will be precede by the '''Entity ID''' of the ''entity'' creating or generating the '''FX''' and the '''Entity ID''' after the '''TARGET''' command (and ''ENT'' value for ''entity'') will be the unique ID of the different ''entity'' which is the target recipient of the '''FX''' being generated:<br />
<br />
0 3 TARGET ENT 27 0<br />
<br />
In the third case, the '''TARGET''' command is also applied for powers and effects where the target of the '''FX''' is not an ''entity'', but is instead a targeted location or position. This is the case where the power effect being created is a Targeted AoE power. For this application, the '''TARGET''' command is not followed by ''ENT'' (since the target is not an ''entity''), but is instead followed by the ''POS'' identifier to flag it as a position being targeted, and then this is followed by the standard '''POS''' coordinates of the specific location being targeted:<br />
<br />
0 3 TARGET POS 1678.937500 -448.846710 193.356308<br />
<br />
In the first two cases, the end of line value appears to always be a "0" zero, for the '''TARGET''' command line.<br />
<br />
== FXDESTROY ==<br />
<br />
A ''Maintained'' '''FX''' continues indefinitely. In order to stop a ''Maintained'' '''FX''', the '''FXDESTROY''' command must be issued. The '''FXDESTROY''' command tells the game engine to terminate an ongoing '''FX'''. The number which follows the '''FXDESTROY''' command is the ''FX ID'' attached to the effect in the '''FX''' command line. In the following example, the '''FX''' being ended is the one with the ''FX ID'' of "4" ("3" being the ''Entity ID'' of the ''entity'' which "owns" the '''FX'''):<br />
<br />
0 3 FXDESTROY 4<br />
<br />
== SKY ==<br />
<br />
Currently, the '''SKY''' command appears to serve two purposes.<br />
<br />
First, the '''SKY''' command line is used as a "generic" time advancer for demo playback. If there is no other action taking place (no other demo commands being issued), a demo recording will use the '''SKY''' command (maintaining its current variables) to advance the '''Time Increment'''. If you have a demo recording where nothing is currently happening or changing, other than that time is progressing, the '''SKY''' command line will generally be used to advance the time in the demo file. When looking at a demo file, especially one with a significant amount of "idle" activity, you will frequently see '''SKY''' command lines with a non-zero '''Time Increment''':<br />
<br />
420 SKYFILE SKY 1 0 1.000000<br />
<br />
Second, the '''SKY''' command is also used to control the color change of the sky during an invasion event, such as the [[Rikti World Invasion]] or the [[Zombie Apocalypse]]. This is done by changing the integer values of the first two variables following the '''SKY''' command:<br />
<br />
{| border="1" cellspacing="0" cellpadding="5" align="center"<br />
! Sky "Type"<br />
! Demo Code<br />
! Color<br />
|- <br />
| Normal/Default Sky<br />
| 0 SKYFILE SKY 1 0 1.000000<br />
| map default (usually Blue) <br />
|- <br />
| Normal/Default Sky (alternate)<br />
| 0 SKYFILE SKY 2 0 1.000000<br />
| map default (usually Blue) <br />
|-<br />
| Rikti Invasion Sky<br />
| 0 SKYFILE SKY 0 1 1.000000<br />
| Olive Green<br />
|-<br />
| Zombie Apocalypse Sky<br />
| 0 SKYFILE SKY 0 2 1.000000<br />
| Dark Red<br />
|-<br />
|}<br />
<br />
<!-- The zombie sky works on live also; 0 SKYFILE SKY 2 0 1.000000 was also used for default/blue sky during zombie apocalypse test -SB --><br />
The intended function of the final variable following the '''SKY''' command is unclear. Increasing this value will cause color to start washing out all detail, with varying depth and intensity. It may possibly represent a saturation value or a depth of field value. In all known demo recordings, this entry always maintains a constant value of 1.000000.<br />
<br />
== DYNARRAY ==<br />
<br />
The '''DYNARRAY''' command is used to control dynamic map content in a demo recording. This command will be followed by an array of data that instructs the game engine how to display the dynamic map content during demo playback. Not all maps have dynamic content attached to them, and demo recordings on maps that lack dynamic content will not include this command. Dynamic content in this respect referes to map elements (as opposed to ''entities'') that may change or vary in appearance. Examples of such content include the [[War Walls]] (which are raised and lowered by the Rikti invasions), the [[Atlas Park]] & [[Grandville]] "war boards" or "status boards" (which display the current control/ownership status of the pillboxes in [[Recluse's Victory]]), and the variable map appearance of Recluse's Victory itself.<br />
<!-- I haven't directly confirmed that last one recently, but I figure that must be how it works. Correct if wrong. -SB --><br />
<br />
The size of the array which follows the ''DYNARRAY'' command will vary depending on the number of dynamic elements which must be managed for that map. Many city zones will have only a single array set for managing the display state of the War Walls. For example:<br />
<br />
0 DYNGROUPS DYNARRAY |100,0<br />
<br />
Other zones, such as Atlas Park and Grandville, will have additional or other array data to manage their dynamic content, including the Recluse's Victory status boards. For example:<br />
<br />
0 DYNGROUPS DYNARRAY |100,0|100,0|100,0|100,0|50,0|100,0|50,0|50,0<br />
<br />
Some city zones will not have any '''DYNARRAY''' command associated with them if they lack traditional War Walls or other dynamic content.<br />
<br />
== Chat ==<br />
<br />
The '''Chat''' command line specifies the NPC and player dialogue (and emotes) contained in a demo file. A typical '''Chat''' command line appears as follows:<br />
<br />
0 26 Chat 4 0 "Button Man Gunner: Who's this mook? Attack!"<br />
<br />
The first variable after the '''Chat''' command specifies on which ''chat channel'' the subsequent dialogue takes place (Local, Broadcast, Request, etc.), designated by an integer value associated with each chat channel. After the chat channel value, the next number appears to currently only hold a value of "0" (zero). Previously, this place held other values which may have been intended to control the visibility of the chat during demo playback. The chat-related demo code which previously used this appears to have been discontinued with [[Issue 12]], possibly due to previous demo problems with chat capturing and/or playing back correctly. Following this value is, enclosed by quotes, the name of the ''entity'' speaking the dialogue and the dialogue itself.<br />
<br />
'''Chat''' command lines may also include text formating detail, if present, for such features as player text using customized colors. For example:<br />
<br />
0 2088 Chat 10 0 "Sungrazer: <color #ff0101><bgcolor #ffff01>Greetings, citizen!"<br />
<br />
Known chat channels, including previously captured elements, their associated '''Chat''' command values, and their current state of capture by demo recordings is as follows:<br />
<br />
{| border="1" cellspacing="0" cellpadding="5" align="center"<br />
! Chat Channel Value<br />
! Corresponding Chat Channel<br />
! Currently Captured (I12+)<br />
|- <br />
| 1<br />
| Damage Inflicted<br />
| No<br />
|-<br />
| 2<br />
| Damage Received<br />
| No<br />
|-<br />
| 4<br />
| NPC Chat<br />
| Yes<br />
|-<br />
| 7<br />
| Tells<br />
| <br />
|-<br />
| 8<br />
| Team Chat<br />
| Yes<br />
|-<br />
| 9<br />
| Supergroup Chat<br />
| Yes<br />
|-<br />
| 10<br />
| Local<br />
| Yes<br />
|-<br />
| 11<br />
| Broadcast<br />
| Yes<br />
|-<br />
| 12<br />
| Request<br />
| Yes<br />
|-<br />
| 17<br />
| Emotes<br />
| Yes<br />
|-<br />
| 18<br />
| Consignment House<br />
| No<br />
|-<br />
| 19<br />
| General Combat<br />
| No<br />
|-<br />
| 22<br />
| Rewards<br />
| No<br />
|-<br />
| 23<br />
| Combat Warnings<br />
| No<br />
|-<br />
| 24<br />
| Healing Received<br />
| No<br />
|-<br />
| 26<br />
| Help<br />
| Yes<br />
|-<br />
|}<br />
<!-- Coalition not captured. I believe these are correct, going by old demos, but can't test live to confirm (since a lot aren't captured under I12). -SB --><br />
<br />
== float ==<br />
<br />
The '''float''' command is associated with the "floating" messages which appear during game play when certain conditions occur. For example, the "Inspirations Full" and "Invention Salvage Found" messages which appear on screen are associated with the '''float''' command in a demo file. A sample '''float''' command line is as follows:<br />
<br />
0 13 float 6 FloatFoundSalvage<br />
<br />
Currently, the messages associated with the '''float''' command are not visible during demo playback.<br />
<!-- I had not been seeing these, or floatdmg, immediately after I12, but now I'm seeing floatdmg, at least. Float might be working again. Need to investigate. -SB --><br />
<!-- Note that it makes calls to pre-defined text strings, so doesn't look like you can customize the text seen, just pick from the pre-defined messages. -SB --><br />
<br />
== floatdmg ==<br />
<br />
Similar to the '''float''' command, the '''floatdmg''' command line is associated with the damage and healing values which appear above an ''entity's'' head during game play, along with certain other combat-related messages (such as the "CRITICAL" message associated with a [[Scrapper]]'s successful [[Critical Hit]]). For example:<br />
<br />
0 13 floatdmg 618 104 ""<br />
0 13 floatdmg 618 104 ""<br />
0 13 floatdmg 618 0 CRITICAL<br />
<br />
<!-- I don't seem to be getting consistent behavior in demo playback with these. Sometimes they work, sometimes they don't. Needs further investigation. --><br />
<br />
== EntRagdoll ==<br />
<br />
The '''EntRagdoll''' command (likely meaning ''"Entity Ragdoll"''), is used to provide detail in the demo file on the ragdoll physics effects associated with a particular ''entity''. The '''EntRagdoll''' command is followed by a lengthy amount of data which is believed to provide the instructions for displaying the ragdoll physics effects as seen during demo playback.<br />
<br />
For current player investigations into the format and detail of the variables and values associated with the '''EntRagdoll''' command, see [http://boards.cityofheroes.com/showflat.php?Cat=0&Number=11686609 this thread] on the CoH official forums.<br />
<br />
Note that, although the presentation of ragdoll physics in demo recordings has improved with recent [[Issues]], its appearance during demo playback may still appear lacking compared to live game play.<br />
<br />
== DYNLIB ==<br />
<br />
The '''DYNLIB''' command is specific to demos recorded in a [[Supergroup Base]]. Combined with specific model calls made with an '''NPC''' command line immediately preceding, the '''DYNLIB''' command manages the display of base objects in a demo recording. The use of the '''DYNLIB''' command will appear like so:<br />
<br />
0 2 NEW "Basic Worktable"<br />
0 2 NPC v_base_object_unselectable<br />
0 2 DYNLIB Basewrkshp_tableLOW_f_N_P<br />
<br />
When the '''NPC''' command line value specifies ''v_base_object_unselectable'' or ''v_base_object'', the next line will be the '''DYNLIB''' command and its associated variable which specifies the base object to be displayed. This diverges from an object's display normally being controlled solely by the '''NPC''' command line and is a convention particular to base objects.<br />
<br />
[[Category:Player Guides]]</div>
Goodtime
https://archive.paragonwiki.com/w/index.php?title=Talk:Demo_Editing/Understanding_Demo_Code&diff=248308
Talk:Demo Editing/Understanding Demo Code
2013-03-20T21:29:15Z
<p>Goodtime: /* Update */ new section</p>
<hr />
<div>One note on all of these Demorecord pages. The URL for Scuzzbopper's CoH Codex changed at some point, and some of the links to that are outdated. I was going to go through and edit them all, however, it would appear that Scuzzbopper hasn't updated the codex itself since early 2009 (some parts since 2008). Can anyone verify whether the codex is still being actively maintained? Has someone else taken over the project? If not, is that something we want ported over to the wiki so it can be maintained by the community? {{unsigned|Garielle|21:22, 7 August 2010 (UTC)}}<br />
<br />
== On Further Investigation... ==<br />
<br />
The following is from the [http://home.roadrunner.com/~scuzzbopper/updates.html Updates] section of [http://home.roadrunner.com/~scuzzbopper Scuzzbopper's CoH Codex]...<br />
<br />
:''2009-09-10 : COMMENT : Long time, no update. I figured I owed some sort of status report on me and the Codex. I'm still subscribed (pre-paid up through something like July 2010) and still playing occasionally, but the time I'm spending on the game is way down, probably only a few hours a month. I have NOT left CoH for Champions Online or anything like that, but more of my time is being spent in the meat world these last few months, for various reasons, leaving a dearth of both playing and Codex updates.''<br />
<br />
:''I don't know when or if to expect my CoH time to pick back up, so the next thing I plan to do, when I can scrape together a few minutes, is to port the Codex data over to the Paragon Wiki. That will serve the two-fold purpose of preserving the CoH Codex (without being directly dependent on me or my web hosting) and opening it up to further expansions and updates by others. I've talked about maybe doing that before, and this is just to say that it's now my specific intent to do so. Might not be real soon, but hopefully by the end of this year.''<br />
<br />
This being the case, it seems that Scuzzbopper had intended to port the information over. If this is something we want to do, it will be a fairly easy project for me to take care of, though I could use some help from some of the veteran video editors out there updating it with new information.<br />
<br />
[[User:Garielle|Garielle]] 01:40, 8 August 2010 (UTC)<br />
<br />
== Update ==<br />
<br />
Sorry, I'm still new to editing the wiki.<br />
<br />
I updated the page, but don't know how to format the lines of demo editing code to show up in the colored boxes. There's no indicators in the page text, either. :/<br />
<br />
I couldn't find a help topic with the information, either, sorry.<br />
<br />
[[User:Goodtime|Goodtime]] 21:29, 20 March 2013 (UTC)</div>
Goodtime
https://archive.paragonwiki.com/w/index.php?title=Demo_Editing/Understanding_Demo_Code&diff=248307
Demo Editing/Understanding Demo Code
2013-03-20T21:18:22Z
<p>Goodtime: Added description of trailing FX number.</p>
<hr />
<div>{{TOCright}}<br />
<br />
== Overview ==<br />
<br />
''Demo code'' refers to the various commands, associated variables, and other data found in a demo file. It is this code which instructs the game engine how to play back and display the session (or created content) captured by the [[Demo Recording]]. Modifying, deleting, or adding to this code is what constitutes the process of [[Demo Editing]].<br />
<br />
Please note that whether some particular demo codes and commands function during demo playback may change as the game version is updated.<br />
<br />
== Time Increment ==<br />
<br />
The '''Time Increment''' is the information that tells the demo how to advance the play of the recording. Each line of demo code begins with a number that tells the game engine how much time to advance the demo playback since the previous line, hence this number is referred to as the '''Time Increment''' (among other terms).<br />
Looked at as a whole, rather than line by line, a demo file is formatted in such a way that it is organized into columns. The first column is always the '''Time Increment'''.<br />
<br />
The '''Time Increment''' is always a positive integer value and specifies the time in milliseconds (thousandths of a second) that the game engine waits, after the previous line of demo code, before executing the next line. So a value of 2000 at the beginning of a line of demo code would mean that the 2 seconds of "real" time would pass, after the previous line of code, before the demo playback carries out the command on that line. The following code sample shows a line from a demo file with a '''Time Increment''' of 400 milliseconds (four-tenths of a second):<br />
<br />
400 SKYFILE SKY 0 1 0.000000<br />
<br />
Please note that this value, while it controls the advancement of the demo playback, does '''not''' control the time of day in a demo. The time of day in a demo is fixed by the '''Time''' command, and, once specified, remains fixed throughout the demo playback and does not change.<br />
<br />
The '''Time Increment''' is required for every line in a demo, and must begin each line, even if the '''Time Increment''' is just zero.<br />
<br />
The '''SKY''' command is frequently used for lines of demo code that serve no purpose other than to advance the '''Time Increment'''.<br />
<br />
== Entity ID ==<br />
<br />
After the '''Time Increment''', most lines of demo code will have a second positive integer value. A few special cases will instead have a text value after the '''Time Increment'''. This second number (or text entry) is the '''Entity ID'''. This value is the unique ID associated with every ''entity'' recorded in the demo. ''Entity'' refers to any model, object, mission objective, NPC, or player character in the demo. Each such element must have a unique ID associated with it, as specified by the '''Entity ID'''. All lines of code must have an '''Entity ID''' as the second element in the line, usually a positive integer. The special cases for the '''Entity ID''' are discussed below. As an example, the following line of demo code has an '''Entity ID''' of "3":<br />
<br />
0 3 NEW "Senator Decimus Aquila"<br />
<br />
Looked at in terms of a column format, the second column in a demo file is the '''Entity ID'''.<br />
<br />
The '''Entity ID''' is a unique value associated with a specific ''entity''. The '''Entity ID''' of each line tells the game engine which ''entity'' to apply/attach that line of demo code to. For example, if a line of demo code includes an animation ('''MOV'''), the '''Entity ID Number''' tells the game engine which ''entity'' to have perform that animation in the demo playback. The following line of demo code shows the ''WALKCYCLE'' '''MOV''' attached to the ''entity'' with the ID "113":<br />
<br />
0 113 MOV WALKCYCLE 0<br />
<br />
=== Special Case Entity IDs ===<br />
<br />
* '''0''': "0" (zero) is used as the entity ID value for the '''Version''', '''Map''', '''Base''', and '''Time''' commands. This is likely used as a "null" value of the '''Entity ID''' to indicate that these commands are not associated with a particular ''entity''.<br />
* '''CAM''': The camera information recorded in the demo is identified by the text ''CAM'' in the place of the '''Entity ID''' number. This can be viewed as a special case value of the '''Entity ID''' where it uses the text ''CAM'' in place of a number.<br />
* '''SKYFILE''': Similar to ''CAM'', the ''SKYFILE'' code appears in demo lines in the place normally associated with the '''Entity ID'''. This can also be considered a special case value of the '''Entity ID''', specific to the '''SKY''' command which always follows.<br />
* '''DYNGROUPS''': As with ''CAM'' and ''SKYFILE'', the ''DYNGROUPS'' code can be viewed as a special case non-numeric '''Entity ID''' associated specifically with the '''DYNARRAY''' command.<br />
<br />
== Version ==<br />
<br />
The '''Version''' command line appears to be a standard and constant introductory line used to designate the start of the demo file. This command line takes the form of: <br />
<br />
1 0 Version 2<br />
<br />
Altering the variable following the '''Version''' command can cause the demo to crash. Altering this command line is not recommended.<br />
<br />
Note that the '''Version''' command line always begins with a '''Time Increment''' of 1 (rather than 0).<br />
<br />
== Map ==<br />
<br />
The '''Map''' command tells the game engine what map to display for the demo playback. The '''Map''' command will be followed on the same line by the file name of the map to be displayed, like so:<br />
<br />
<nowiki>0 0 Map maps/City_Zones/City_04_01/City_04_01.txt</nowiki><br />
<br />
The one exception to this is for a demo made in a [[Supergroup Base]]. Demos recorded in bases will not have any file name specified after the '''Map''' command. The '''Map''' command will end the line and will be followed by the '''Base''' command on the next line.<br />
<br />
A list of known [http://home.roadrunner.com/~scuzzbopper/maps.html Maps] can be found at the [http://home.roadrunner.com/~scuzzbopper/ City of Heroes Codex].<br />
<br />
== Base ==<br />
<br />
A [[Supergroup Base]] does not have any pre-defined map associated with it. This is reflected in recorded demos by the '''Base''' command. Demos recorded in a base will not have any map file name specified after the '''Map''' command, but the next line of the demo file will include the '''Base''' command, which will precede a large amount of data apparently used to define and generate the base layout. For example (note that the binary '''Base''' data is incomplete in this example and would typically continue to fill a page or more):<br />
<br />
0 0 Map<br />
0 0 Base "UÀ�\0x^íYsÛ¸–€ç5©Ê`õ˼Ü8Ü\pùÍ–—¤oÜí±Ü[35¥‚)Äâ5Eª¸\dQ~ý�¸H¤D� \de...<br />
<!-- Is it worthwhile to have a code sample here or is the binary goop just going to confuse people? -SB --><br />
<br />
The '''Base''' command appears only for demos recorded inside a [[Supergroup Base]]. Demos recorded in any other location, mission, or circumstance will not include the '''Base''' command.<br />
<br />
== Time ==<br />
<br />
The '''Time''' command instructs the game engine what time of day to use for the demo playback. The value which follows the '''Time''' command on this line is the time of day, in hours, using the military time notation (also known as 24-hour clock notation), with fractions of an hour expressed as a decimal value. Hence values following the '''Time''' command may range from 0.0 to 23.99. In a demo, this line would appear as follows:<br />
<br />
0 0 Time 14.428092<br />
<br />
Where, in this example, the value of 14.428092 corresponds to 2:25 PM (and about 41 seconds). Some examples of '''Time''' values, with their equivalent 12-hour clock notation, are as follows:<br />
<br />
<br />
{| border="1" cellspacing="0" cellpadding="5" align="center"<br />
! Demo ''Time'' Value<br />
! Equivalent 12-Hour Clock Time<br />
|- <br />
| 0.000<br />
| 12:00 Midnight<br />
|-<br />
| 6.500<br />
| 6:30 AM<br />
|-<br />
| 12.000<br />
| 12:00 Noon<br />
|-<br />
| 16.667<br />
| 4:40 PM<br />
|-<br />
| 22.000<br />
| 10:00 PM<br />
|-<br />
|}<br />
<br />
<br />
Note that, unlike in-game, the time of day does ''not'' advance in demo playback, so whatever the time is as specified in the demo code is what the time of day will be for the entire demo playback.<br />
<!-- That is still correct, yes? Nothing has changed recently that I missed as far as time of day advancing goes? --><br />
<!-- What happens if you re-issue the Time command part-way through a demo? I haven't tried that. Does it change the time? If so then you could, in theory, splice in a series of incremental Time commands to change the time of day during the playback of a demo. --><br />
<br />
== POS ==<br />
<br />
The '''POS''' command refers to "position." This is used to tell the game engine ''where'' to place a given ''entity'' in the demo playback. All players, NPC, and objects (all ''entities''), as well as the demo camera (or '''CAM''') must have a associated '''POS''' command in order to appear properly in the demo. Changing the '''POS''' values for an ''entity'' over the course of a demo controls the movement of that ''entity'' in the demo. Changing the '''POS''' is how you move something from point A to point B.<br />
<br />
The '''POS''' command is followed by a set of three numerical map coordinates in X Z Y format. This is one interpretation of the ordering and designation of the coordinate system. See also the entry [[Coordinates]] which interprets the order as X Y Z and designates Z as the vertical axis.<br />
<!-- Leaving it at that. I know I'm not the only demo-head who thinks "X Z Y", so I'd keep that convention as the preferred one for the intended audience. -SB --><br />
<br />
0 1 POS -1140 102 4592.5<br />
<br />
For a given map, the X value corresponds to its East-West position of the ''entity'', the Z value corresponds to altitude or Up-Down position of the ''entity'', and the Y value corresponds to the North-South position. Larger values of X are further to the West, larger values of Z increase altitude, and larger values of Y are further to the South. Note that, for X & Y, this may be the reverse of what is intuitive for many.<br />
<br />
The values for '''POS''' are expressed in feet. So changing an Y value from 1.0 to 2.0 will move an ''entity'' one foot to the South. Changing an Y value from 1.0 to 2641.0 will move an ''entity'' a half mile to the South.<br />
<br />
The appearance of '''CAM POS''' in the code is worth special note. As discussed above, ''CAM'' is used as the '''Entity ID''' for the demo camera -- the POV from which the demo is recorded. The camera, or ''CAM'', is a special pre-defined demo ''entity'' which uses the text ''CAM'' as its '''Entity ID''' rather than an integer value like most ''entities''. With regards to its use of the '''POS''' command, the '''CAM POS''' lines function the same as for any other ''entity'' in that they determine the position and movement (through changing the position) of the demo camera/demo POV.<br />
<br />
== PYR ==<br />
<br />
The '''PYR''' command stands for [[wikipedia:Yaw, pitch and roll|"Pitch-Yaw-Roll"]]. '''PYR''' is used similarly to the '''POS''' command. Where '''POS''' is used to specify the position of an ''entity'', '''PYR''' specifies the spacial orientation of an ''entity''. Put another way, '''POS''' determines where on the map [[Ms. Liberty]] shows up, and '''PYR''' determines whether she is standing on her head or on her feet.<br />
<br />
The '''PYR''' command is followed by three numerical values for Pitch, Yaw, and Roll. These values are expressed in [http://en.wikipedia.org/wiki/Radians radians], with values ranging from -3.14159 to 3.14159 (-pi to +pi). A total of 2pi (6.28319) represents a complete rotation of 360 degrees for any of the three axes. <br />
<!-- Using 0 to 2pi works just as well as -pi to +pi, and so forth. -SB --><br />
<br />
0 1 PYR 0 2.626175 0<br />
<br />
The Pitch (or "P") value determines the front-to-back tilt of an NPC, object, or other ''entity'' -- whether an entity is leaning to the front or to the back.<br />
<!-- I know my photoshop-Fu isn't the greatest, so better images showing PYR are welcome. -SB --><br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
| [[File:PYRPitch00.jpg | center | thumb | PYR 0 0 0]]<br />
| [[File:PYRPitch08.jpg | center | thumb | PYR 0.8 0 0]] <br />
| [[File:PYRPitch08neg.jpg | center | thumb | PYR -0.8 0 0]]<br />
|-<br />
|}<br />
The Yaw (or "Y") value determines the left-right facing of an NPC, object, or other ''entity'' -- whether an ''entity'' is facing to the right or left, rotating around its vertical axis.<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
| [[File:PYRYaw00.jpg | center | thumb | PYR 0 0 0]]<br />
| [[File:PYRYaw16.jpg | center | thumb | PYR 0 1.6 0]] <br />
| [[File:PYRYaw16neg.jpg | center | thumb | PYR 0 1.6 0]]<br />
|-<br />
|}<br />
<br />
The Roll (or "R") value determines the side-to-side tilt of an NPC, object, or other ''entity'' -- whether an ''entity'' is leaning/rotated to the left or to the right.<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
| [[File:PYRRoll00.jpg | center | thumb | PYR 0 0 0]]<br />
| [[File:PYRRoll16.jpg | center | thumb | PYR 0 0 1.6]] <br />
| [[File:PYRRoll16neg.jpg | center | thumb | PYR 0 0 -1.6]]<br />
|-<br />
|}<br />
<!-- This last set is tweaked a bit. Her elevation is increased for the last two images to keep her from being buried underground. -SB --><br />
Note that the axis of rotation for most models is at the ''base'' of the model and not through their apparent center.<br />
<br />
The combination of these three values allows you to adjust an ''entity'' in all three dimensions to obtain any orientation desired.<br />
<br />
All of the additional comments made regarding '''CAM POS''' also apply for '''CAM PYR''' (relative to the '''PYR''') command, where '''CAM PYR''' is a '''PYR''' command applied to the ''CAM'' (camera) '''Entity ID'''.<br />
<!-- Possibly add info about the absolute value orientations of PYR for CAM vs. other entities is different. I just avoided the issue by only talking with respect to relative value orientations. -SB --><br />
<br />
== NEW ==<br />
<br />
'''NEW''' is the command used by the demo to tell the game engine that it is adding a new ''entity'' (NPC, player, object, mission objective, etc.). The line with the '''NEW''' command is (with one exception) where the unique '''Entity ID''' is first specified (the second numerical value in the line, after the '''Time Increment''') and is the most important value associated with the '''NEW''' command. When you use the '''NEW''' command to add a new ''entity'', that ''entity'' and anything associated with it must use the same '''Entity ID''' throughout the demo thereafter. For example, in the following line of demo code, "37" is the '''Entity ID''' which must be associated with [[Ms. Liberty]] and all commands attached to the [[Ms. Liberty]] ''entity'' for the remainder of the demo.<br />
<br />
0 37 NEW "Ms. Liberty"<br />
<br />
The '''NEW''' command is followed by the name to be attached to that entity. This can be left blank. The ''entity'' does not ''require'' that a name be attached. If the name is one word, with no spaces, then quotes are not required for the name:<br />
<br />
0 26 NEW Statesman<br />
<br />
If the name includes spaces (more than one word), then the name must be enclosed by quotation marks:<br />
<br />
0 14 NEW "Sister Psyche"<br />
<br />
You may enclose single-word names in quotation marks and this will not cause any harm, although recorded demos do not use this convention:<br />
<br />
0 26 NEW "Statesman"<br />
<br />
NPC, model, and mission objective names do not display during demo playback, but player character names do display. If you do not want player names to appear over their heads during demo playback,one way to do this is via demo editing by leaving the name field blank:<br />
<br />
0 26 NEW <br />
<br />
Or by entering a blank space between quotation marks for a name:<br />
<br />
0 26 NEW " "<br />
<br />
The '''NEW''' command can be used mid-way through a demo to add an ''entity'' that was not there at the start of the demo.<br />
<br />
== NPC ==<br />
<br />
The '''NPC''' command specifies the game model to display for an NPC. Remember that the '''Entity ID''' for the '''NPC''' line must match the unique '''Entity ID''' assigned by the '''NEW''' command. For example:<br />
<br />
0 14 NEW "Chief Mentalist"<br />
0 14 NPC Rikti_Armour_Lieutenant_01<br />
<br />
''Entities'' classed as an ''NPC'' include all "normal" non-player characters (enemies, allies, monsters, etc.), but also all destructible objects. Any object in a mission or map which can be destroyed (such as mailboxes, fire hydrants, and everything else in [[Mayhem Missions]]) is considered an ''NPC'' and its appearance is managed by the '''NPC''' command and the model assigned thereby.<br />
<br />
A list of known [http://home.twcny.rr.com/scuzzbopper/coh/models.html Model Names] can be found at the [http://home.twcny.rr.com/scuzzbopper/coh/ City of Heroes Codex].<br />
<br />
== MOV ==<br />
<br />
The '''MOV''' command determines the animation performed by an ''entity''. The animation named after the '''MOV''' command is executed by the ''entity'' as specified by the unique '''Entity ID''' on the '''MOV''' line. For example, the following '''MOV''' command will cause the ''entity'' with the unique '''Entity ID''' of "10" to perform the "bow down" emote:<br />
<br />
0 10 MOV EMOTE_BOW_DOWN 0<br />
<br />
The number at the end of the line is a feature added to demos with [[Issue 12]]. A "0" (zero) is the default or null value and executes the animation unmodified. Other positive integer values, besides zero, relate the animation to a weapon or object attached to the ''entity''. <br />
<br />
<!-- I haven't tried to figure these out yet, so maybe someone else who has. Do I even have it right, so far as it goes? Repeating what I've read in Zloth's posts. -SB --><br />
<br />
A list of known [[Demo_Editing/List_of_MOVs|MOVs]] can be found [[Demo_Editing/List_of_MOVs|here]].<br />
<br />
== HP ==<br />
<br />
The '''HP''' code specifies the ''current'' [[Health]] of a destructible ''NPC''. This code is associated only with ''NPCs'' which can be damaged or destroyed. ''NPCs'' or other ''entities'' which can not be damaged do not use this code. Hence, the '''HP''' code will not be seen in a demo file for such ''NPCs'' as pedestrians, trainers, contacts, or stores; but will be seen attached to enemies and destructible objects.<br />
<br />
Any ''NPC'' which uses the '''HP''' code must also have the '''HPMAX''' code associated to it. '''HP''' specifies the current Health and '''HPMAX''' specifies the maximum [[Health]]. Both codes must be associated with any destructible ''NPC''. For example:<br />
<br />
0 5 NEW "Blood Brother Slammer"<br />
0 5 NPC Thug_Hellion_01<br />
0 5 POS -227.15625 0 130.203125<br />
0 5 PYR 0 -0.380427 -0<br />
0 5 MOV LOITER_READYC 0<br />
0 5 HP 60.00<br />
0 5 HPMAX 60.00<br />
<br />
For ''NPC'' ''characters'' (enemy/ally types), this code is not normally required when simply making such an ''entity'' appear in a demo. However, this is vital for properly displaying destructible ''objects''. Many destructible objects have a variable appearance which is based on the relative values of '''HP''' and '''HPMAX'''. If these lines are not included in the demo for such ''NPCs'', the game engine will render the destructible objects as if they had zero '''HP'''; which typically (though not always) means that the object will be treated as destroyed and will not be visible in the demo playback.<br />
<br />
The values of '''HP''' for an ''NPC'' will change over the course of a demo recording as that ''NPC'' is damaged or healed.<br />
<br />
If you are adding an ''NPC'' or object to a demo, and are uncertain whether it is destructible and requires the '''HP'''/'''HPMAX''' code, it is harmless to add this code to an ''NPC'', even if it is not required.<br />
<br />
== HPMAX ==<br />
<br />
'''HPMAX''' specifies the maximum [[Health]] of an ''NPC''. As mentioned above under the '''HP''' detail, this command is attached to destructible ''NPCs'' and objects, which must also have the '''HP''' code attached.<br />
<br />
For destructible objects which have a variable appearance, the relative proportion of the values for '''HP''' and '''HPMAX''' determines the appearance of those destructible objects in the demo playback.<br />
<br />
== DEL ==<br />
<br />
Just as the '''NEW''' command is used to add an ''entity'' to a demo, ''entities'' can also be removed from a demo via the '''DEL''' command. This command will delete the specified ''entity'', removing them from the demo.<br />
<br />
This command is not accompanied by any variables after the command, requiring only the '''Time Increment''' (as all lines do) and the '''Entity ID''', which is the ID of the ''entity'' to be deleted from the demo.<br />
<br />
0 70 DEL<br />
<!-- Add info on being able to re-use Entity IDs after a DEL. -SB --><br />
<br />
== Player ==<br />
<br />
The '''Player''' command is used to specify the particular player character around which the demo is being recorded. It is used just to flag that one specific player character, and only that one character should have the '''Player''' command attached to it. Other player characters that appear in the demo, that are not the POV character of the demo recording, do not have this flag attached.<br />
<br />
This command is an exception to the usual convention for the '''NEW''' command in that the '''Player''' command is issued first and is when the unique '''Entity ID''' is attached to the POV player character (immediately before the '''NEW''' line), appearing like so: <br />
<br />
0 48 Player<br />
0 48 NEW "Lady Briton"<br />
<br />
The '''Player''' command has no associated trailing values or variables.<br />
<br />
== COSTUME ==<br />
<br />
The '''COSTUME''' command is required for every player character in a demo. The '''COSTUME''' line includes the variables used to specify the body type, build, and facial dimensions of a character. It is followed, on subsequent lines, by the '''PARTSNAME''' code which specifies the remainder of the player character costume. The following shows a single line of demo code reflecting the number of variables used by the '''COSTUME''' command:<br />
<br />
0 1026 COSTUME 0 aad2f6 2.802201 -0.269841 -0.015873 -0.015873 -0.301587 -0.238095 -0.015873 <br />
-0.015873 -0.015873 -0.015873 -0.015873 -0.015873 -0.015873 -0.015873 -0.015873 -0.015873 -0.015873 <br />
-0.015873 -0.015873 -0.015873 -0.015873 -0.015873 -0.015873 -0.015873 -0.015873 -0.015873 -0.015873 <br />
-0.015873 -0.015873 -0.015873<br />
<!-- This could possibly use some further detail, possibly identifying what element all of the variables control, playing with character height and stuff like that. -SB --><br />
<br />
== PARTSNAME ==<br />
<br />
The '''COSTUME''' line is followed immediately by (currently) 27 lines of the '''PARTSNAME''' code used to specify the costume parts and colors of a player character's complete costume. The '''PARTSNAME''' code includes specifying features such as [[Auras]] and [[Custom Weapons]]. Essentially all things associated with a player character's costume or standard appearance are controlled by the '''COSTUME''' and '''PARTSNAME''' code.<br />
<br />
0 48 COSTUME 1 89a0ea 0.000000 0.000000 0.000000 -0.118681 -0.006593 -0.102857 -0.253846 <br />
0.014769 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 <br />
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 <br />
0.000000 0.000000 0.000000<br />
0 48 PARTSNAME Tight tights !Hips_V_Pattern_Strips_01 0000d4 990002<br />
0 48 PARTSNAME Tight tights !chest_Fat_Stripe 0000d4 990002<br />
0 48 PARTSNAME V_fem_Head.GEO/GEO_Head_V_Asym_Standard !Face_Skin_V_Fem_Head_19 !Face_V_Mask_Executioner_01 0000d4 ffffff<br />
0 48 PARTSNAME Flare smooth_matte !glove_Sharp 0000d4 ffffff<br />
0 48 PARTSNAME Smooth tights !Boot_V_Pattern_Stripe_01 0000d4 990002<br />
0 48 PARTSNAME none none none ffffff ffffff<br />
0 48 PARTSNAME Student_01 Long_01a Long_01b 00fdff 1c67ff<br />
0 48 PARTSNAME none none none 00000000 00000000<br />
0 48 PARTSNAME none none none 00000000 00000000<br />
0 48 PARTSNAME Tight base Lion_01 00fdff 00cacc<br />
0 48 PARTSNAME Smooth spiked_01a spiked_01b 0000d4 ffffff<br />
0 48 PARTSNAME none none none 00000000 00000000<br />
0 48 PARTSNAME none none none 00fdff 00fdff ffffff ffffff WEAPONS/Custom_Claws/Fem_ClawsRight_TalsorianBlade01.fx<br />
0 48 PARTSNAME none none none 00000000 00000000<br />
0 48 PARTSNAME none none none 00000000 00000000<br />
0 48 PARTSNAME Half Cape_Top_01 none ffffff ffffff<br />
0 48 PARTSNAME Half_31 Generic_01a Generic_01b 00fdff 3fbeff<br />
0 48 PARTSNAME none Cape_01 none ffffff ffffff ffffff ffffff capes/CapeLongFem.fx<br />
0 48 PARTSNAME none none none 00000000 00000000<br />
0 48 PARTSNAME none none none 00000000 00000000<br />
0 48 PARTSNAME none none none 00000000 00000000<br />
0 48 PARTSNAME none none none 00000000 00000000<br />
0 48 PARTSNAME none none none 00000000 00000000<br />
0 48 PARTSNAME none none none 00000000 00000000<br />
0 48 PARTSNAME none none none 00fdff 00fdff ffffff ffffff WEAPONS/Custom_Claws/Fem_ClawsLeft_TalsorianBlade01.fx<br />
0 48 PARTSNAME none none none 00000000 00000000<br />
0 48 PARTSNAME none none none 00000000 00000000<br />
<br />
Note that the number of '''PARTSNAME''' command lines in a demo has changed over the history of the game as new costume piece groups have been added. Older demo files may have fewer lines.<br />
<!-- Tackling these in greater detail -- what line is what costume section, for example, talking about colors, etc. -- might be a good addition. -SB --><br />
<br />
== XLU ==<br />
<br />
The '''XLU''' command has, at various times, appeared in demo recordings; typically following either the costume data in the case of player characters or after the model information for NPCs. Whether this code is present in demo recordings or not has changed multiple times over the game's lifetime. At present, it is appearing attached to some, but not all, player character models after the final line of '''PARTSNAME''' code. A sample of an instance of the '''XLU''' command line:<br />
<br />
0 2366 XLU 0.498039<br />
<br />
The function of this command is unknown and modifying the variable attached to it does not affect the demo in any apparent way. It is possible that this is simply a code artifact which does not have any actual bearing on demo playback.<br />
<br />
== SEQ ==<br />
<br />
Just as the '''NPC''' command is used to specify the model (and thereby appearance) of an ''NPC'', the '''SEQ''' command is used to specify the model of a non-destructible, clickable object. '''SEQ''' is attached specifically to the type of ''entity'' used for non-destructible, clickable mission objectives ("clickies" or "glowies"). These particular types of ''entities'' are distinct from ''NPCs'', with a different set of model codes.<br />
<!-- Also the Bloody Bay & Warburg terminals, in addition to traditional mission objective glowies, I believe. -SB --><br />
<br />
However, these '''SEQ''' ''entities'' do not currently appear during demo playback (and this has been the case since demos were first introduced). '''SEQ''' objects are invisible when the demo is played back and do not show up.<br />
<br />
Additionally, please note that the '''SEQ''' ''entities'' use a different set of model names specific to the '''SEQ''' command. This means that you can not simply replace the '''SEQ''' command with the '''NPC''' command, keeping the original '''SEQ''' model name, to make these objects appear during demo playback. Swapping the commands in this way would only work if you also changed the model name to use an '''NPC''' model equivalent to the '''SEQ''' model (most ''do'' appear to have equivalent '''NPC''' models, however).<br />
<!-- I do NOT have a mapping of equivalent SEQ to NPC models, sorry. --><br />
<br />
== FX ==<br />
<br />
The '''FX''' command is used to specify the creation in demos of the "effects" used by the game; namely, the powers, the explosions, and essentially any visual effect that is not otherwise produced by an ''entity's'' model or by an animation ('''MOV''').<br />
<br />
The '''FX''' command line includes a fair amount of data. Here is a sample line:<br />
<br />
0 3 FX OneShot 4 POWERS/FIRECONTROL/FIREPHOENIX.FX 0<br />
<br />
A detailed breakdown of this line is as follows: <br />
<br />
* '''0''': The first number of the line is, as always the '''Time Increment'''.<br />
* '''3''': The second number in the line is, as usual, the '''Entity ID'''. This specifies the unique ID of the ''entity'' which "owns" this effect.<br />
* '''FX''': The '''FX''' demo command itself, specifying that this line is executing an effects command.<br />
* '''OneShot''': After the '''FX''', a demo also specifies the duration type of the '''FX'''. There are two possible values which may be used here -- ''OneShot'' or ''Maintained''. ''OneShot'' defines this '''FX''' as a one-time event that lasts just as long as it takes the particular '''FX''' to execute. ''Maintained'' identifies an ongoing '''FX''' which will continue until the demo ends, the ''entity'' it is attached to is removed from the demo, or an '''FX''' termination command is given.<br />
* '''4''': The number after the duration type is a unique ID number assigned to this specific '''FX'''. Much like demos must include a unique '''Entity ID''' for every NPC, player character, or object used in the demo, every '''FX''' is assigned a unique ''FX ID'' to identify it. This value is always a positive integer and must be unique for any particular '''FX'''. The other command which utilizes this ID number is the '''FXDESTROY''' command used to end or delete a visual effect.<br />
* '''POWERS/FIRECONTROL/FIREPHOENIX.FX''': This is the demo code of the particular '''FX''' which the game engine is instructed to execute. (In this particular case, this is the demo code for the ''Rise of the Phoenix'' power.)<br />
* '''0''': After the demo code of the '''FX''' to be used, the line ends with a number. This is most often a ''0'' but may contain the Entity of an associated FX, for instance:<br />
<br />
0 1590 FX OneShot 468654 POWERS/SONICCONTROL/BLASTS/HEROSMALLBLAST.FX 0<br />
<br />
Would be followed by <br />
<br />
0 1591 FX OneShot 468655 POWERS/SONICCONTROL/BLASTS/STANDARDBLASTHIT.FX 468654<br />
<br />
This represents the core demo code line for specifying a power or other FX-based visual effect. This initial command line is generally followed by three related lines associated with the visual effect. The lines which typically follow are the '''FXSCALE''', '''ORIGIN''', and '''TARGET''' command lines.<br />
<!-- I'm calling these "visual effects" even though they include audio components. Just for simplicity. Don't think that would generally cause much confusion. -SB --><br />
<br />
A list of known [http://home.twcny.rr.com/scuzzbopper/coh/fx.html FX] can be found at the [http://home.twcny.rr.com/scuzzbopper/coh/ City of Heroes Codex].<br />
<br />
== FXSCALE ==<br />
<br />
The '''FXSCALE''' code is a standard effects-related command which always follows the main '''FX''' line. This command is always expressed with a standard set of variables as ''"FXSCALE 10.000000 10"''. For example:<br />
<br />
0 3 FXSCALE 10.000000 10<br />
<br />
Modifying these variables does not appear to produce any change in demo playback or in the scale or appearance of the relevant visual effects.<br />
<!-- Correct? -SB --><br />
<br />
== ORIGIN ==<br />
<br />
The third required demo command for visual effects is the "ORIGIN" command. This command is used to identify the source of an '''FX''', doing so via the '''Entity ID''' which precedes the command:<br />
<br />
0 3 ORIGIN ENT 0 0<br />
<br />
The values following the '''ORIGIN''' command (''ENT'' to specify an ''entity'' and the numerical values) appear to always be constant, with "ENT 0 0" being the only values to follow the '''ORIGIN''' command.<br />
<!-- Note: This marked as the "ORIGIN" command rather than the "ORIGIN ENT" command becauses the "ENT" text does appear to be a variable used to specify the command as associated with an entity. See the use of the "TARGET" command with both "ENT" and "POS". -SB --><br />
<!-- Also, I know that many demo folks have previously reported that the numeric variables after the "ORIGIN" command were used to identify the entity that was the FX origin, but I don't see those values being used any more. It's all just "0 0". Kind of makes sense. Would be redundant if you already have the Entity ID telling you who the FX origin is attached to. But would like to know if someone can show an example (from current I12+ demos) where this isn't the case. -SB --><br />
<br />
== TARGET ==<br />
<br />
The '''TARGET''' demo command line is the final line required for managing visual effects. This command line specifies that target or subject of a particular '''FX'''. There are, in general, three different cases which may be specified by the '''TARGET''' command.<br />
<br />
For the first case, the '''TARGET''' command line specifies an '''FX''' which is self-targeted, where the ''entity'' which is causing or "owns" the '''FX''' is targeting themselves or otherwise applying that '''FX''' to themselves<!-- clunky grammar -SB -->. This is the case for many damage shields, protection toggles, self-heals, and so forth where an ''entity'' uses a power that creates a visual effect on their self. In this case, the '''TARGET''' command will be followed by the ''ENT'' value, to specify that the target subject is an ''entity'' and then by '''Entity ID''' of the target subject. Because the ''entity'' is self-targeting, the '''Entity ID''' before and after the '''TARGET''' command will be the same:<br />
<br />
0 3 TARGET ENT 3 0<br />
<br />
In the second case, the '''TARGET''' command is used in a situation where one ''entity'' is using an FX on or against another ''entity''. This generally the situation which occurs when one ''entity'' shoots at another with an energy bolt or fire blast, but also applies to any circumstance where one ''entity'' is generating the '''FX''' and another, different ''entity'' is the recipient of the '''FX'''. In this situation, the '''TARGET''' command will be precede by the '''Entity ID''' of the ''entity'' creating or generating the '''FX''' and the '''Entity ID''' after the '''TARGET''' command (and ''ENT'' value for ''entity'') will be the unique ID of the different ''entity'' which is the target recipient of the '''FX''' being generated:<br />
<br />
0 3 TARGET ENT 27 0<br />
<br />
In the third case, the '''TARGET''' command is also applied for powers and effects where the target of the '''FX''' is not an ''entity'', but is instead a targeted location or position. This is the case where the power effect being created is a Targeted AoE power. For this application, the '''TARGET''' command is not followed by ''ENT'' (since the target is not an ''entity''), but is instead followed by the ''POS'' identifier to flag it as a position being targeted, and then this is followed by the standard '''POS''' coordinates of the specific location being targeted:<br />
<br />
0 3 TARGET POS 1678.937500 -448.846710 193.356308<br />
<br />
In the first two cases, the end of line value appears to always be a "0" zero, for the '''TARGET''' command line.<br />
<br />
== FXDESTROY ==<br />
<br />
A ''Maintained'' '''FX''' continues indefinitely. In order to stop a ''Maintained'' '''FX''', the '''FXDESTROY''' command must be issued. The '''FXDESTROY''' command tells the game engine to terminate an ongoing '''FX'''. The number which follows the '''FXDESTROY''' command is the ''FX ID'' attached to the effect in the '''FX''' command line. In the following example, the '''FX''' being ended is the one with the ''FX ID'' of "4" ("3" being the ''Entity ID'' of the ''entity'' which "owns" the '''FX'''):<br />
<br />
0 3 FXDESTROY 4<br />
<br />
== SKY ==<br />
<br />
Currently, the '''SKY''' command appears to serve two purposes.<br />
<br />
First, the '''SKY''' command line is used as a "generic" time advancer for demo playback. If there is no other action taking place (no other demo commands being issued), a demo recording will use the '''SKY''' command (maintaining its current variables) to advance the '''Time Increment'''. If you have a demo recording where nothing is currently happening or changing, other than that time is progressing, the '''SKY''' command line will generally be used to advance the time in the demo file. When looking at a demo file, especially one with a significant amount of "idle" activity, you will frequently see '''SKY''' command lines with a non-zero '''Time Increment''':<br />
<br />
420 SKYFILE SKY 1 0 1.000000<br />
<br />
Second, the '''SKY''' command is also used to control the color change of the sky during an invasion event, such as the [[Rikti World Invasion]] or the [[Zombie Apocalypse]]. This is done by changing the integer values of the first two variables following the '''SKY''' command:<br />
<br />
{| border="1" cellspacing="0" cellpadding="5" align="center"<br />
! Sky "Type"<br />
! Demo Code<br />
! Color<br />
|- <br />
| Normal/Default Sky<br />
| 0 SKYFILE SKY 1 0 1.000000<br />
| map default (usually Blue) <br />
|- <br />
| Normal/Default Sky (alternate)<br />
| 0 SKYFILE SKY 2 0 1.000000<br />
| map default (usually Blue) <br />
|-<br />
| Rikti Invasion Sky<br />
| 0 SKYFILE SKY 0 1 1.000000<br />
| Olive Green<br />
|-<br />
| Zombie Apocalypse Sky<br />
| 0 SKYFILE SKY 0 2 1.000000<br />
| Dark Red<br />
|-<br />
|}<br />
<br />
<!-- The zombie sky works on live also; 0 SKYFILE SKY 2 0 1.000000 was also used for default/blue sky during zombie apocalypse test -SB --><br />
The intended function of the final variable following the '''SKY''' command is unclear. Increasing this value will cause color to start washing out all detail, with varying depth and intensity. It may possibly represent a saturation value or a depth of field value. In all known demo recordings, this entry always maintains a constant value of 1.000000.<br />
<br />
== DYNARRAY ==<br />
<br />
The '''DYNARRAY''' command is used to control dynamic map content in a demo recording. This command will be followed by an array of data that instructs the game engine how to display the dynamic map content during demo playback. Not all maps have dynamic content attached to them, and demo recordings on maps that lack dynamic content will not include this command. Dynamic content in this respect referes to map elements (as opposed to ''entities'') that may change or vary in appearance. Examples of such content include the [[War Walls]] (which are raised and lowered by the Rikti invasions), the [[Atlas Park]] & [[Grandville]] "war boards" or "status boards" (which display the current control/ownership status of the pillboxes in [[Recluse's Victory]]), and the variable map appearance of Recluse's Victory itself.<br />
<!-- I haven't directly confirmed that last one recently, but I figure that must be how it works. Correct if wrong. -SB --><br />
<br />
The size of the array which follows the ''DYNARRAY'' command will vary depending on the number of dynamic elements which must be managed for that map. Many city zones will have only a single array set for managing the display state of the War Walls. For example:<br />
<br />
0 DYNGROUPS DYNARRAY |100,0<br />
<br />
Other zones, such as Atlas Park and Grandville, will have additional or other array data to manage their dynamic content, including the Recluse's Victory status boards. For example:<br />
<br />
0 DYNGROUPS DYNARRAY |100,0|100,0|100,0|100,0|50,0|100,0|50,0|50,0<br />
<br />
Some city zones will not have any '''DYNARRAY''' command associated with them if they lack traditional War Walls or other dynamic content.<br />
<br />
== Chat ==<br />
<br />
The '''Chat''' command line specifies the NPC and player dialogue (and emotes) contained in a demo file. A typical '''Chat''' command line appears as follows:<br />
<br />
0 26 Chat 4 0 "Button Man Gunner: Who's this mook? Attack!"<br />
<br />
The first variable after the '''Chat''' command specifies on which ''chat channel'' the subsequent dialogue takes place (Local, Broadcast, Request, etc.), designated by an integer value associated with each chat channel. After the chat channel value, the next number appears to currently only hold a value of "0" (zero). Previously, this place held other values which may have been intended to control the visibility of the chat during demo playback. The chat-related demo code which previously used this appears to have been discontinued with [[Issue 12]], possibly due to previous demo problems with chat capturing and/or playing back correctly. Following this value is, enclosed by quotes, the name of the ''entity'' speaking the dialogue and the dialogue itself.<br />
<br />
'''Chat''' command lines may also include text formating detail, if present, for such features as player text using customized colors. For example:<br />
<br />
0 2088 Chat 10 0 "Sungrazer: <color #ff0101><bgcolor #ffff01>Greetings, citizen!"<br />
<br />
Known chat channels, including previously captured elements, their associated '''Chat''' command values, and their current state of capture by demo recordings is as follows:<br />
<br />
{| border="1" cellspacing="0" cellpadding="5" align="center"<br />
! Chat Channel Value<br />
! Corresponding Chat Channel<br />
! Currently Captured (I12+)<br />
|- <br />
| 1<br />
| Damage Inflicted<br />
| No<br />
|-<br />
| 2<br />
| Damage Received<br />
| No<br />
|-<br />
| 4<br />
| NPC Chat<br />
| Yes<br />
|-<br />
| 7<br />
| Tells<br />
| <br />
|-<br />
| 8<br />
| Team Chat<br />
| Yes<br />
|-<br />
| 9<br />
| Supergroup Chat<br />
| Yes<br />
|-<br />
| 10<br />
| Local<br />
| Yes<br />
|-<br />
| 11<br />
| Broadcast<br />
| Yes<br />
|-<br />
| 12<br />
| Request<br />
| Yes<br />
|-<br />
| 17<br />
| Emotes<br />
| Yes<br />
|-<br />
| 18<br />
| Consignment House<br />
| No<br />
|-<br />
| 19<br />
| General Combat<br />
| No<br />
|-<br />
| 22<br />
| Rewards<br />
| No<br />
|-<br />
| 23<br />
| Combat Warnings<br />
| No<br />
|-<br />
| 24<br />
| Healing Received<br />
| No<br />
|-<br />
| 26<br />
| Help<br />
| Yes<br />
|-<br />
|}<br />
<!-- Coalition not captured. I believe these are correct, going by old demos, but can't test live to confirm (since a lot aren't captured under I12). -SB --><br />
<br />
== float ==<br />
<br />
The '''float''' command is associated with the "floating" messages which appear during game play when certain conditions occur. For example, the "Inspirations Full" and "Invention Salvage Found" messages which appear on screen are associated with the '''float''' command in a demo file. A sample '''float''' command line is as follows:<br />
<br />
0 13 float 6 FloatFoundSalvage<br />
<br />
Currently, the messages associated with the '''float''' command are not visible during demo playback.<br />
<!-- I had not been seeing these, or floatdmg, immediately after I12, but now I'm seeing floatdmg, at least. Float might be working again. Need to investigate. -SB --><br />
<!-- Note that it makes calls to pre-defined text strings, so doesn't look like you can customize the text seen, just pick from the pre-defined messages. -SB --><br />
<br />
== floatdmg ==<br />
<br />
Similar to the '''float''' command, the '''floatdmg''' command line is associated with the damage and healing values which appear above an ''entity's'' head during game play, along with certain other combat-related messages (such as the "CRITICAL" message associated with a [[Scrapper]]'s successful [[Critical Hit]]). For example:<br />
<br />
0 13 floatdmg 618 104 ""<br />
0 13 floatdmg 618 104 ""<br />
0 13 floatdmg 618 0 CRITICAL<br />
<br />
<!-- I don't seem to be getting consistent behavior in demo playback with these. Sometimes they work, sometimes they don't. Needs further investigation. --><br />
<br />
== EntRagdoll ==<br />
<br />
The '''EntRagdoll''' command (likely meaning ''"Entity Ragdoll"''), is used to provide detail in the demo file on the ragdoll physics effects associated with a particular ''entity''. The '''EntRagdoll''' command is followed by a lengthy amount of data which is believed to provide the instructions for displaying the ragdoll physics effects as seen during demo playback.<br />
<br />
For current player investigations into the format and detail of the variables and values associated with the '''EntRagdoll''' command, see [http://boards.cityofheroes.com/showflat.php?Cat=0&Number=11686609 this thread] on the CoH official forums.<br />
<br />
Note that, although the presentation of ragdoll physics in demo recordings has improved with recent [[Issues]], its appearance during demo playback may still appear lacking compared to live game play.<br />
<br />
== DYNLIB ==<br />
<br />
The '''DYNLIB''' command is specific to demos recorded in a [[Supergroup Base]]. Combined with specific model calls made with an '''NPC''' command line immediately preceding, the '''DYNLIB''' command manages the display of base objects in a demo recording. The use of the '''DYNLIB''' command will appear like so:<br />
<br />
0 2 NEW "Basic Worktable"<br />
0 2 NPC v_base_object_unselectable<br />
0 2 DYNLIB Basewrkshp_tableLOW_f_N_P<br />
<br />
When the '''NPC''' command line value specifies ''v_base_object_unselectable'' or ''v_base_object'', the next line will be the '''DYNLIB''' command and its associated variable which specifies the base object to be displayed. This diverges from an object's display normally being controlled solely by the '''NPC''' command line and is a convention particular to base objects.<br />
<br />
[[Category:Player Guides]]</div>
Goodtime
https://archive.paragonwiki.com/w/index.php?title=Talk:Villain_Accolade_Badges&diff=165387
Talk:Villain Accolade Badges
2010-08-11T20:29:50Z
<p>Goodtime: Created page with "Would a table be better, so the accolade can be listed with short text mentioning what the accolade power is? --~~~~"</p>
<hr />
<div>Would a table be better, so the accolade can be listed with short text mentioning what the accolade power is? --[[User:Goodtime|Goodtime]] 20:29, 11 August 2010 (UTC)</div>
Goodtime
https://archive.paragonwiki.com/w/index.php?title=Kings_Row&diff=163555
Kings Row
2010-06-27T09:41:23Z
<p>Goodtime: /* Transfer Points */ added Warburg</p>
<hr />
<div>{{Zone<br />
|{{Hero City Zone}}<br />
|Zone Name=Kings Row<br />
|Splash Image=Splash_KingsRow.jpg<br />
|Zone Map=Map_KingsRow.jpg<br />
|Width=177<br />
|Type of Zone=Hero City Zone<br />
|Level Range=5-10<br />
|Trainer=[[Blue Steel]]<br />
|Task Force Contact=''none''<br />
|Event=[[Paladin Construction]]<br />
|Exploration Badges=[[Keen Sighted Badge|Keen&nbsp;Sighted]], [[Mystic King Badge|Mystic&nbsp;King]], [[Smokey Badge|Smokey]], [[Summoned Badge|Summoned]], [[Upgraded Badge|Upgraded]], [[Wentworth History Buff Badge|Wentworth History Buff]], [[Pwned Badge|Pwned]], [[Man of Vengeance Badge|Man of Vengeance]], [[Thrill Seeker Badge|Thrill Seeker]]<br />
|Day Jobs=[[Architect Badge|Architect]], [[Law Enforcer Badge|Law Enforcer]], [[Commuter Badge|Commuter]], [[Caregiver Badge|Caregiver]], [[Banker Badge|Banker]], [[Day Trader Badge|Day Trader]], [[Monitor Duty Badge|Monitor Duty]]<br />
|Plaques=[[Intellectual Badge#Monument 3|Intellectual&nbsp;III]],&nbsp;[[Intellectual Badge#Monument 4|IV]],&nbsp;[[Intellectual Badge#Monument 5|V]], [[Pupil Badge#Monument 3|Pupil&nbsp;III]],&nbsp;[[Pupil Badge#Monument 4|IV]]<br />
|Enemies=[[Circle of Thorns|Circle&nbsp;of&nbsp;Thorns]], [[Clockwork]], [[The Lost|Lost]], [[Skulls]], [[Vahzilok]]<br />
|Connecting Zones=[[Galaxy City|Galaxy&nbsp;City]], [[Independence Port|Independence&nbsp;Port]], [[Pocket D|Pocket&nbsp;D]], [[Sewer Network|Sewer&nbsp;Network]], [[Skyway City|Skyway&nbsp;City]]<br />
|Lines=[[Yellow Line|Yellow&nbsp;Line]]<br />
|VidiotMaps File=kings_row<br />
}}<br />
__toc__<br />
== Overview ==<br />
(Copied from the City of Heroes official Web site [http://www.cityofheroes.com/game_info/geography/the_zones_of_paragon_city_king.html])<br />
<br />
In the early days of Paragon City, the area known as '''Kings Row''' was a shiny, bustling place filled with hope and promise. Factories manufacturing goods and generating power created a feeling of strong, blue-collar values. At that time, the area was called Kings Row because of one the most productive factories to set up shop there: King Garment Works.<br />
<br />
Unfortunately, the prosperity didn’t last long. When the Depression hit Paragon City, no area was affected more. Factories shut down, many workers were laid off, and a great deal of the crime sweeping through the city was centered in the row of closed-down factories. The crime bosses who set themselves up there took on the name of the zone. They became known throughout the city as The Kings.<br />
<br />
For a time, Kings Row became a place to avoid. It was dark, dirty, and struck fear into the hearts of upright Paragon citizens. When [[Statesman]] began his “war on crime” and formed the [[Freedom Phalanx]], he focused a great deal of his efforts on bringing down the Kings. Eventually, the Freedom Phalanx triumphed over the Kings, but the cost was high. There was some damage to the physical area, but of greater effect was the long-term damage done to the reputation of Kings Row. Even after the economy recovered, the stigma of Kings Row remained. The Kings are long gone but the name has remained and to this day, the area is regarded as a grimy place with a reputation for seediness.<br />
<br />
Present day Kings Row connects North to [[Perez Park]], East to [[Skyway City]], and West to [[Independence Port]]. Paragon City's extensive [[Sewer Network|sewers]] also sprawl beneath Kings Row. Although the area is still generally run-down, it has seen much more activity lately -- and not all of it good. Part of that comes from the fact that the area has become a popular location for raves, drawing in more of Paragon City's white-collar crowd.<br />
<br />
Yet the primary reason for the surge of activity in Kings Row is due to the arrival of a gang called the [[Skulls]]. The Skulls have been in Paragon City for some time, but they have only recently set up shop for good in the Row, going so far as to clean up the streets a bit by attacking [[Vahzilok]] Cadavers whenever they see them. The Skulls first order of business seems to be waging a war on the [[Hellions]], a gang from [[Atlas Park]]. Nearby Perez Park has become the battleground for this gang war where both sides seem to have backing from more powerful organizations. By using it as a home base of sorts, the Skulls appear to be taking Kings Row back in time and threaten to turn it into crime central once again. It has become a priority for the heroes of Paragon City to find out who is backing the Skulls and stop the war they are waging against the Hellions. It will take many dedicated crime fighters to make certain Kings Row is a City Zone that people can feel safe in.<br />
<br />
== Contacts ==<br />
<br />
=== Trainers ===<br />
<br />
* [[Blue Steel]]<br />
<br />
=== Police Band Contacts ===<br />
<br />
* [[Detective Becktrees]]<br />
* [[Detective Freitag]]<br />
<br />
=== Regular Contacts ===<br />
<br />
* [[Genevieve Sanders]]<br />
* [[Juan Jimenez]]<br />
* [[Linda Summers]]<br />
* [[Paula Dempsey]]<br />
* [[Ron Hughes]]<br />
* [[Samuel Pierce]]<br />
* [[Vic Johansson]]<br />
<br />
=== Notable NPCs ===<br />
<br />
* [[Notoriety#Hero Corps Field Analysts|Hero Corps Field Analyst]]<br />
* [[Kings Row Security Chief]]<br />
* [[Longbow Warburg Liaison]]<br />
<br />
== Zone Events ==<br />
<br />
[[Paladin Construction]]<br />
<br />
== Neighborhoods ==<br />
<br />
* Aqueduct (Orange - Level 5-7) ([[Media:KingsRow_Aqueduct.ogg|Music]])<br />
* Crowne Memorial (Green) ([[Media:KingsRow_CrowneMemorial.ogg|Music]])<br />
* Freedom Plaza (Yellow - Level 5-7) ([[Media:KingsRow_FreedomPlaza.ogg|Music]])<br />
* The Gish (Orange - Level 5-8) ([[Media:KingsRow_TheGish.ogg|Music]])<br />
* High Park (Red - Level 8-9) ([[Media:KingsRow_HighPark.ogg|Music]])<br />
* Industrial Avenue (Orange - Level 5-8) ([[Media:KingsRow_IndustrialAvenue.ogg|Music]])<br />
* King Garment Works (Orange - Level 6-8) ([[Media:KingsRow_KingGarmentWorks.ogg|Music]])<br />
* Royal Refinery (Orange - Level 6-8) ([[Media:KingsRow_RoyalRefinery.ogg|Music]])<br />
<br />
== Exploration Badges ==<br />
<br />
{{BadgeBox|Keen Sighted}}<br />
{{BadgeBox|Mystic King}}<br />
{{BadgeBox|Smokey}}<br />
{{BadgeBox|Summoned}}<br />
{{BadgeBox|Upgraded}}<br />
{{BadgeBox|Wentworth History Buff}}<br />
{{BadgeBox|Pwned}}<br />
{{BadgeBox|Man of Vengeance}}<br />
{{BadgeBox|Thrill Seeker}}<br />
<br />
== Historical Plaques ==<br />
<br />
* Three [[Intellectual Badge]] monuments<br />
* Two [[Pupil Badge]] monuments<br />
<br />
== Day Jobs ==<br />
<br />
{{BadgeBox|Architect}}<br />
{{BadgeBox|Law Enforcer}}<br />
{{BadgeBox|Commuter}}<br />
{{BadgeBox|Caregiver}}<br />
{{BadgeBox|Banker}}<br />
{{BadgeBox|Day Trader}}<br />
{{BadgeBox|Monitor Duty}}<br />
<br />
== Stores ==<br />
<br />
There are four Superpowered Field Trainers in Kings Row. They each sell level 5-15 Training Enhancements.<br />
<br />
* Two Superpowered Field Trainers in Freedom Plaza, on either side of Blue Steel.<br />
* Two Superpowered Field Trainers at the Yellow Line, on either side of the ramp.<br />
<br />
== Transfer Points ==<br />
<br />
* The [[Yellow Line]] monorail station will take a hero to [[Atlas Park]], [[Galaxy City]], [[Skyway City]] and [[Steel Canyon]].<br />
* There are gates along the walls of the zone that lead to [[Galaxy City]], [[Independence Port]], and [[Skyway City]].<br />
* There is an entrance to the [[Sewer Network]].<br />
* There is an entrance to [[Pocket D]].<br />
* There is a helicopter transport to [[Warburg|Warburg PVP Zone]].<br />
* The [[Kings Row Beacon]] location is {{coords|-1333|-43.2|663}}, on the grass west of the [[Yellow Line]].<br />
<br />
== Villain Groups ==<br />
<br />
* {{Enemy Circle of Thorns}}<br />
* {{Enemy Clockwork}}<br />
* {{Enemy The Lost}}<br />
* {{Enemy Skulls}}<br />
* {{Enemy Vahzilok}}<br />
<br />
Individual [[Hellions]] and [[Trolls]] can occasionally be found dealing with the [[Skulls]].<br />
<br />
[[Category:CoH City Zones]]<br />
[[Category:Hero Zones]]</div>
Goodtime