MODDING CONCEPT GUIDE
TABLE OF CONTENTS
I. Introduction
II. Bare-Bones Guide To Modding
III. Frequently Annoying Questions
IV. Appendix
IVa. Vocabulary
IVb. Variables
IVc. Classes
V. Helpful Links
VI. Misc.
I. INTRODUCTION
This part is here to help you get a grasp of what all of this stuff does. It's pretty much a listing of all the classes used, which will pretty much teach you to use every tool at your disposal to create the latest and greatest. First comes the vocabulary, then the variables, then the classes. Since it's hard to explain the classes without first explaining the variables, yet it's also hard to explain what the variables do without first showing all the classes, you'll probably end up clicking back and forth a lot. If you don't understand something, then keep reading and you'll likely find something later than explains it.
In the appendix section under the classes, the variables have a short explanation. Look at the variables appendix for a more detailed explanation.
II. The Basic Basics of modding CC:
If you're completely new to the whole modding thing, then here's a quick rundown:
When the game compiles (during the loading screen) the game does this: it first goes to Base.rte/index.ini and works its magic. The compiler goes line by line. Lines that include a file make the compiler stop compiling the current file and start compiling the file that was included until that file is gone through, then it goes back and finishes the original file. So the compiler in Base.rte goes to index.ini, loads all the materials, loads all the sounds, loads all the effects (including emissions and particles and pixels and other things that fly around the screen), loads all the ammo stuff (including rounds and magazines), loads all the weapons, loads all the actors (which then includes more .inis: one .ini for each actor and rocket), and finally loads the level information. When an entire index.ini is compiled in Base.rte, the program then searches in alphabetical order for other folders that end in .rte and looks for an index.ini inside each. It then compiles all the mods until done.
Quite a process, right? Well, it's done that way for a reason. Weapons are loaded after magazines because a weapon calls on a magazine, and magazines are loaded after rounds because magazines call on rounds and so forth. If an instance calls on another instance, that instance must be compiled first; since effects are basic things and weapons and actors are complex and must rely on other instances, they are compiled in such a manner that the more basic classes are put into memory before the more complex classes. What does this all mean? Probably nothing to you, but it will pretty soon.
Instances work like this: a line declares what kind of object is being defined, then another line usually defines the name of that object. After that, pretty much everything is just a series of variables that define what that object is. For example, your basic pixel (found in effects.ini, usually) has a certain mass and sharpness, has variables that determine whether they can hit things and/or can be hit, has a color, has a material (which is mostly just there to determine behavior when the pixel stops moving and becomes "static"), and has a trail color and a trail length, which determines the color and length of the line behind the individual pixel. And yes, pixels are pretty much the most basic of objects, yet have a great deal of variables.
The secret to modding CC is starting small. For starters, make a backup of Base.rte so you can revert back to it later; making a new folder and .ini files right off the bat is extremely hard unless you know what you're doing. Start with Devices.ini and work your way down: change some things on the AK-47 or the SMG, increasing the rate of fire or changing the reload time or whatever you feel like doing, then go to the magazine it calls and change some of the stuff there, such as roundCount. Finally, go to the round the magazine calls on (both are in ammo.ini) and change the charpness or the mass or something. You'll quickly become used to modding CC, at which point you should use Alenth's Guide and other resources (just look around) to familiarize yourself with the different variables and such. And remember: the most important thing is to experiment. All of us started out making an AK-47 that shot through walls and worked our way up. Change whatever you see and see how the game reacts.
III. Frequently Annoying Questions:
Q: How do I get a higher resolution for cc?
A:
http://www.datarealms.com/forum/viewtop ... 2294#22294
Q. What's a .rar file?
A. .rar files are a form of compression more efficient than .zip, and so is used quite often when uploading mods. Google "winrar" to find the free download.
Q. How do I make my brain invincible?
A. go into Base.rte/Actors/Brains/Brains.ini, then Go under the instance Mother Brain and look for "Health = 100" and The GibImpulse/WoundLimit lines. Change the health variable to equal something really high, the impulse variable to equal something really high, and the woundlimit variable to equal -1. Now your brain will never die again.
Q. How do I get more gold?
A. If you want a quick, dirty way to get more gold, go into Base.rte/Devices.ini, and go into the view toolbar and hit "Replace...". Replace "GoldCost = " with "GoldCost = -100 //". All the weapons in the game will now give you 100 gold whenever you buy them, but rockets and actors will still cost their normal prices. Do the same process to all the .ini files in Base.rte/Actors to change their costs as well. If you ever want to change prices back, switch around the values that you're replacing.
Q. How do I get the skeleton/dropship?
A. Get the latest version.
Q. A mod I DLed isn't working!
A. Make sure that you placed the folder that ends in .rte directly inside the Cortex Command folder. If there's an error in the code, attempt to fix it yourself. Whether you can or cannot, report the error (FULL TEXT is preferred) in the topic that you downloaded it from, but make sure that the mod isn't old; it might be for an older version than you have.
Q. Can someone send me (file), it doesn't work anymore!!!
A. Install a seperate cc in another folder, then get the file from there. in the future, PLEASE keep backups of everything. Please.
IVa. VOCABULARY
Object - an instance of a class.
Class - Classes are basically categories of objects. There are devices, TDExplosives, rounds, magazines, actors, AHumans, and many more. This guide is here to help familiarize yourself with as many of them as possible.
Gib - something that an object (like an actor or device) expels when it reaches its woundLimit or ImpulseGibThreshold. Like the little bits of gun that appear when an existing gun is destroyed.
Sharp - when you zoom in using the "J" key, it's said that you are in sharp mode, which affects accuracy and weapon shake.
Actor - Something that you can control in-game, like a clone, a robot, or a dropship.
Material - stuff like concrete, rock, dirt, sand, plant, etc. Different ones are harder to break through than others. Look in materials.ini for a listing of the different attributes for materials.
Sprite - your average image, in .bmp format.
IVb. THE VARIABLES
Before we get into the classes, lets start off with what all the variables mean. In case you don't know, pretty much the only thing you'll be doing while modding CC is changing variables. Use ctrl-F to search for a specific variable you want to know about. Now then, on to business.
InstanceName - Yes, this is important. This determines the name of the object you are defining in the lines to come. MAKE SURE that your instance names are unique relative to those in Base.rte and try and make them different than what another modder would use to avoid confusion between mods.
Mass - this determines how much force is needed to accelerate the object. A rocket with high mass will have a significantly harder time rocketing upward than an empty rocket. Same with a clone or robot using a jetpack. It also determines how much force is applied to whatever is firing out the object. A gun that fires bullets with a high mass basically simulates a high amount of recoil. Also, the mass of the pixels that a jetpack emits determines how much upward force is applied by using the jetpack. Mass is used by almost every class, and is important when you are using something to provide a lot of thrust.
LifeTime - This variable is used mostly by particle and pixel classes, and it determines, in milliseconds, how long the object stays around before disappearing. This helps create a range limit, which is useful for making sure a bullet doesn't fly around the map and smack you in the head. It's also used for limiting the range of grenades and other such explosives; the shorter the lifetime, the less range the grenade has.
Sharpness - This is also used primarily with pixels and particles. This determines the kinds of materials the pixel or particle can pierce, and how easily it can pierce it. It also determines, to a point, how much damage a bullet can do. With 0 sharpness, it'll just bounce off everything. Experiment to find the correct sharpness for your bullets.
HitsMOs/GetsHitByMOs - These variables determine whether it can hit things and whether it can get hit by things. For the most part, these should be the same throughout each class so that nothing wierd happens.
Color stuff found throughout - This, interestingly enough, determines the color of anything that is not a sprite on the RGB scale. Simple enough.
Trail stuff - This is found in the pixel class. The variables determine how long the pixel's trail is and the color of the trail.
Material stuff - this is found in pretty much everything. It comes after the "Material = Material" line, which usually comes after some kind of AtomGroup or Atom line. It calls on a material (found in Materials.ini, check the file for what the variables mean), which determines a large number of things. It mostly affects what the object acts like after it becomes static; that is, after it becomes an immobile part of the environment, like a rocket or dropship after it crashes.
SpriteFiles - After "SpriteFile = ContentFile" comes "FilePath = Base.rte/Devices/whatever.bmp". This determines what image the particle, rocket, arm, body, head, device, etc. uses. After saving a sprite as a .bmp, change this line to point to your image file, starting with the cc folder.
AngularVel - Used to determine how fast something is spinning when it spawns. Found on many different classes that I'm too lazy to list right now.
FrameCount - Determines how many frames the game loads. If it's 1, then the only thing displayed is the sprite file you pointed to. Different numbers are used for different classes. If there are 2 or more frames that the game has to load, then it doesn't load up whatever.bmp at all; it loads up whatever000.bmo, whatever001.bmp, whatever002.bmp, etc. until the frame count is reached. Devices use 2 frames: one for when it's firing, one for when it's not. Various particles and such use it to cycle through various images based on...
FrameRate - determines how many frames pass before the image is cycled to the next image based on the FrameCount. For example, the rocket's emissions cycle through a fireball, slightly less of a fireball, even less of a fireball, a lotta smoke, less smoke, even less smoke, etc. to simulate an actual rocket blast. Only used when the FrameCount is not cycled for another reason, like a device that's shooting or a rocket whose hatch is opening.
SpriteOffset - Used to say where a sprite is located with X and Y values. Used to determine where the gun is when you're holding it, where a magazine is relative to a gun, and lots of other things. Change until the sprite is in the right place. Yay.
AutoGenerate/Resolution/Depth/DeepCheck/others that aren't listed here - Don't touch. Really. If you know what they do and are sure you know what you're doing, then use caution. But try not to mess with them.
Spread - This Determines the spread that objects are spewed out at (just not with guns; that's a different variable). Used with emissions, gibs, and a few others. Jetpacks and rocket thrusters have a low spread, while grenades and such spew things at a high spread. I forget the max spread, but I think it's 3.14.
Max/MinVelocity - This sets the range of speed that objects are spewed out at (again, not with guns). For grenades and gibs and such, it's mostly there to set how fast the stuff moves and the variety of speeds they are spewed at. For emissions, the average velocity things are emitted at sets how much push the emission gives, along with the mass (acceleration * mass = force). The faster a jetpack spews pixels, the more lift it provides.
sounds of every kind - there are generally 2 kinds of sounds. The first simply has a file path pointing to the .wav file to play at the time indicated by the name of the kind of sound (like fire sound or reload sound) and the second calls a sound in sounds.ini. Just look in the file for a self-explanatory example of how that's set up.
EmissionCountLimit - used with emissions, determines the number of emissions that an emitter can spew before disappearing.
EmissionsIgnoreThis - sets whether the emissions spewed ignore the emitter and the thing the emitter is attached to. With it on, for example, the fireballs that the main thruster of a rocket spews doesn't do any damage to the rocket itself if it should, for some reason, hit it.
ParticlesPerMinute - determines how many particles are spewed out over the course of a minute.
BurstSize - Determines the number of particles that are emitted every time the emitter emits. Emissiony!
BurstScale - ???
BurstDamage - ???
BurstTriggered - ???
EmissionDamage - How much damage is applied to the emitting object per emission. Used to make actors and rockets lose health over time (make it negative for regeneration!).
RestThreshold - This determines how slowly an object needs to be going to become static; that is, it becomes the material it was assigned, like with crashed rockets. Mostly used with TDExplosives, which are set at -500 so they never come to rest.
Entry/Exitwound - the line after this holds the kind of emitter that appears at the spot where a bullet enters/exits an object. Used to create flesh wounds that drip blood, oil leaks, and other such things. Some, like dent metal, are merely cosmetic and don't emit anything. EntryWound is used for a bullet that enters and doesn't leave, and exitWound is used for a bullet that just keeps on going through.
TriggerDelay - This is used in TDExplosives and determines how many millisecons pass before the grenade disappears and leaves particles (specified later in the class) in its wake to fly all over.
ParticleCount - This determines how many bullets are fired when the round is fired. Used for shotguns and to make various weapons do more damage (though the spread of the bullets must be 0 for it to not act like a shotgun).
Shell - this is the object that is ejected whenever the associated round is fired. Used for shotgun casings and such. Can be set to None.
FireVelocity - Determines how fast the bullet is moving when it spawns. Watch for recoil.
ShellVelocity - Determines how fast the shell is moving when it spawns.
Seperation - Determines how far apart particles are when they come out of a gun. Need confirmation on this.
RoundCount - Determines the number of rounds that can be fired from a magazine before the magazne needs to be reloaded.
RTTRatio - Round-to-tracer-ratio, it determines how many rounds are fired before a tracer round is fired, after which the count starts again. 0 means no tracer, and I THINK that 2 means every other shot is a tracer. NOT SURE on that.
Regular/TracerRound - Determines what is fired when you pull the trigger, and is defined in the magazine. The main round is fired by default, but every nth (where n is the RTTRatio) shot will be a TracerRound. Both a normal round and a tracer round are complete rounds of their own; one does not need to be a copy of the other.
GoldCost - Determines how much gold a weapon/actor/whatever costs. Can be negative.
StanceOffset/SupportOffset/SharpStanceOffset - These are in devices.ini and change the location of the main hand, the support hand, and how much they move (or something like that) when moving into sharp.
SharpLength - How Far the zoom is for the device. Also changes the red sharp dots along with the zoom.
RateOfFire - How many shots per unknown-interval-of-time.
ReloadTime - In milliseconds.
FullAuto - Whether or not holding down the fire button has any effect.
Shakerange - How much the weapon moves when fired from normal position. Has an effect on accuracy during sustained fire.
SharpShakeRange - Same, but in sharp. Should be less.
NoSupportFactor - The shake range without the supporting arm.
ParticleSpreadRange - quite simply, the accuracy. Determines the number of degrees in which the bullet travels relative to the way the gun is pointing. 0 is perfect accuracy.
ShellSpreadRange - Same, but it determines the accuracy of the shell. Not too important to the functionality of the gun.
ShellAngVelRange - From 0 to the number, the range of the speeds that the shells rotate at.
MuzzleOffset - Changes where the bullets come out, as well as the muzzle flash. Make sure it lines up with the barrel of the gun.
EjectionOffset - where the shell spawns.
ImpulseGibThreshold - How fast an object has to hit another object for it to gib into its gibs. Used for impact explosions.
GibWoundLimit - How many times an object must be shot before it gibs.
Health - the health of the actor.
CharHeight - affects where the health number is, as well as (maybe) the point at which a ship resides when it comes to the refund point.
JumpTime - How long, in seconds, the jetpack button can be held before running out of fuel.
Velocity - How fast and in which direction a rocket is moving when it spawns at the top of the screen. Negative Y values make the rocket go upwards.
HatchDelay - The delay between hitting the eject button and when the cargo is spewed out.
If it's not here, then it's probably absolutely self-explanatory. That simple.
IVc. THE CLASSES
MOPixel - This is a pixel. Really. It is used for pretty much everything that is launched out at any speed, including bullets, grenade fragments, jetpack emissions, etc. Grenades and emitters call on pixels defined in their own class, but rounds usually declare the pixel inside the round declaration- that is, instead of declaring the pixel in effects.ini and calling it in ammo.ini, it is simply put directly into the round. Basic Form:
Code:
AddEffect = MOPixel
InstanceName = Grenade Fragment Gray //name
Mass = 0.15 //how much force is applied in various cases, like emissions and guns
LifeTime = 350 //how long in milliseconds the pixel lasts
Sharpness = 20 //Determines how easily it can pierce different materials
HitsMOs = 1 //whether or not it can hit things, usually on
GetsHitByMOs = 0 //whether or not it can get hit, usually off
Color = Color
R = 143 //amount of red in the color
G = 143 //amount of green in the color
B = 143 //amount of blue in the color
Atom = Atom
Material = Material
CopyOf = Bullet metal //which material from materials.ini it is, affects bounciness and some other factors
TrailColor = Color
R = 155
G = 155
B = 155
TrailLength = 25 //determines how long the trail is
MOSParticle - This is basically a pixel with an image attached. It still only has a collision of 1 pixel, however, so the functionality is the same, save for the image.
Code:
AddEffect = MOSParticle
InstanceName = Main Thruster Blast Ball 1
Mass = 9
RestThreshold = -1 //the point at which the object becomes static.
LifeTime = 300
Sharpness = 0.1
HitsMOs = 1
GetsHitByMOs = 0
SpriteFile = ContentFile
FilePath = Base.rte/Effects/FireBlast01.bmp //image path
FrameCount = 22//number of images loaded
SpriteOffset = Vector //Where the particle is relative to its collision. Somehow.
X = -10
Y = -10
AngularVel = 60 //how fast it rotates
Atom = Atom
Material = Material
CopyOf = Air Blast
TrailLength = 0
Framerate = 0 //How fast the frames cycle
MOSRotating - This is much like a particle. Almost exactly like a particle. However, its collision goes throughout the sprite, allowing for more realistic impacts with terrain. Usually used for shells. Also has a more complicated way to set the material.
Code:
AddAmmo = MOSRotating
InstanceName = Cannon Particle
Mass = 5
LifeTime = 1500
Sharpness = 20
HitsMOs = 1
GetsHitByMOs = 1
SpriteFile = ContentFile
FilePath = Base.rte/Devices/Cannon/CannonRound.bmp
FrameCount = 1
SpriteOffset = Vector
X = -2
Y = -2
AtomGroup = AtomGroup
AutoGenerate = 1
Material = Material
CopyOf = Bullet metal
Resolution = 2
Depth = 0
DeepGroup = AtomGroup
AutoGenerate = 1
Material = Material
CopyOf = Bullet casing
Resolution = 4
Depth = 1
DeepCheck = 0
Rounds - Rounds are what is used by a gun (well, more specifically, the magazine of a gun). They can be anything from actors to particles to pixels. Most often, rounds are pixels, at least with normal guns. If the round is a pixel or particle, it is usually defined inside the round. Otherwise, it is defined before and the round merely calls on it. The first example creates an MOPixel in the middle of the round, while the last one simply calls on a TDExplosive.
Code:
AddAmmo = Round
InstanceName = Round SMG
ParticleCount = 1 //number of particles to expel at one time
Particle = MOPixel
InstanceName = Particle SMG
Mass = 0.008
RestThreshold = 500
LifeTime = 1500
Sharpness = 250
HitsMOs = 1
GetsHitByMOs = 0
Color = Color
R = 143
G = 143
B = 143
Atom = Atom
Material = Material
CopyOf = Bullet metal
TrailColor = Color
R = 155
G = 155
B = 155
TrailLength = 25
Shell = MOSParticle //whether it has a shell or not
CopyOf = Casing //what the shell is
FireVelocity = 80 //how fast the particle's initial speed is
ShellVelocity = 10 //how fast the shell is ejected
Separation = 5 //distance between shots in a single round
AddAmmo = Round
InstanceName = Round Cannon
ParticleCount = 1
Particle = TDExplosive
CopyOf = Frag Shell
Shell = MOSRotating
CopyOf = Cannon Casing
FireVelocity = 90
ShellVelocity = 10
Separation = 5
Magazines - Magazines are what the device calls on to know what to fire. They also include what sprite the magazine is when it's both on the gun and ejected from the gun. Calls on 1 or 2 rounds, and includes such things as the number of rounds it holds.
Code:
AddAmmo = Magazine
InstanceName = Magazine SMG
Mass = 2
HitsMOs = 0
GetsHitByMOs = 0
SpriteFile = ContentFile
FilePath = Base.rte/Devices/SMG/MagSMG2.bmp
FrameCount = 1
SpriteOffset = Vector
X = -3
Y = -4
EntryWound = AEmitter
CopyOf = Dent Metal //what emitter appears when its shot
ExitWound = AEmitter
CopyOf = Dent Metal //same, but out the back
AtomGroup = AtomGroup
AutoGenerate = 1
Material = Material
CopyOf = Bullet metal
Resolution = 2
Depth = 0
DeepGroup = AtomGroup
AutoGenerate = 1
Material = Material
CopyOf = Bullet metal
Resolution = 3
Depth = 1
DeepCheck = 1
JointStrength = 200
JointStiffness = 1
JointOffset = Vector
X = 0
Y = -3
ParentOffset = Vector
X = 1
Y = 0
DrawAfterParent = 0
RoundCount = 30 //number of rounds
RTTRatio = 4 //Determines how often the tracer round is shot
RegularRound = Round
CopyOf = Round SMG //the default round for the weapon
TracerRound = Round
CopyOf = Round SMG Tracer //the tracer round, fired based on the RTTRatio
AddGib = Gib
GibParticle = MOPixel //what the gib is
CopyOf = Spark Yellow 1 //the gib
Count = 5 //how many gibs
Spread = 3.14 //in which directions the gibs go
MaxVelocity = 20 //max speed of the gibs
MinVelocity = 8 //min speed of the gibs
AddGib = Gib
GibParticle = MOSParticle
CopyOf = Metal Shard A
Count = 4
Spread = 3.14
MaxVelocity = 15
MinVelocity = 5
GibWoundLimit = 1 //number of times it's shot before it gibs
Device - Devices are anything found under weapons and tools, save for TDExplosives. They Include pretty much everything about the gun not already defined by the round/magazine.
Code:
AddDevice = HDFirearm
InstanceName = SMG
Mass = 10
HitsMOs = 0
GetsHitByMOs = 1
SpriteFile = ContentFile
FilePath = Base.rte/Devices/SMG/SMG.bmp
FrameCount = 2
SpriteOffset = Vector
X = -7
Y = -4
EntryWound = AEmitter
CopyOf = Dent Metal
ExitWound = AEmitter
CopyOf = Dent Metal
GoldCost = 20 //how much it costs; can be negative
AtomGroup = AtomGroup
AutoGenerate = 1
Material = Material
CopyOf = Gun metal
Resolution = 4
Depth = 0
DeepGroup = AtomGroup
AutoGenerate = 1
Material = Material
CopyOf = Gun metal
Resolution = 4
Depth = 10
DeepCheck = 1
JointStrength = 75
JointStiffness = 0.5
JointOffset = Vector
X = -3
Y = 3
DrawAfterParent = 0
StanceOffset = Vector
X = 6
Y = 5
SharpStanceOffset = Vector
X = 9
Y = -1
SupportOffset = Vector
X = 6
Y = 3
SharpLength = 165 //how far the zoom is
Magazine = Magazine
CopyOf = Magazine SMG //which magazine to use
ParentOffset = Vector
X = 2
Y = 1
Flash = Attachable
CopyOf = Muzzle Flash SMG //muzzle flash. Used whenever a round is shot.
FireSound = Sound
AddSample = ContentFile
FilePath = Base.rte/Devices/SMG/M1601.wav
AddSample = ContentFile
FilePath = Base.rte/Devices/SMG/M1602.wav
AddSample = ContentFile
FilePath = Base.rte/Devices/SMG/M1603.wav
AddSample = ContentFile
FilePath = Base.rte/Devices/SMG/M1604.wav
AddSample = ContentFile
FilePath = Base.rte/Devices/SMG/M1605.wav
AddSample = ContentFile
FilePath = Base.rte/Devices/SMG/M1606.wav
EmptySound = Sound
AddSample = ContentFile
FilePath = Base.rte/Devices/EmptyClick3.wav
ReloadStartSound = Sound
AddSample = ContentFile
FilePath = Base.rte/Devices/ReloadStart.wav
ReloadEndSound = Sound
AddSample = ContentFile
FilePath = Base.rte/Devices/ReloadEnd.wav
RateOfFire = 800 //how fast it fires
ReloadTime = 1500 //how long, in milliseconds, it takes to reload
FullAuto = 1 //if holding down fire works or not
FireIgnoresThis = 0
ShakeRange = 4 //affects accuracy
SharpShakeRange = 1
NoSupportFactor = 5 //affects accuracy with only one arm
ParticleSpreadRange = 3 //accuracy
ShellSpreadRange = 8
ShellAngVelRange = 2
MuzzleOffset = Vector //changes where the bullet comes out
X = 10
Y = 0
EjectionOffset = Vector //changes where the shell comes out
X = 1
Y = -1
//GIBS GO HERE
TDExplosive - Explosives are pretty much grenades. After the delay has passed, they gib. Quite simple. Also the round of choice for RPGs and other impact explosions.
Code:
AddDevice = TDExplosive
InstanceName = Frag Grenade
Mass = 2
RestThreshold = -500
HitsMOs = 1
GetsHitByMOs = 0
SpriteFile = ContentFile
FilePath = Base.rte/Devices/FragGrenade.bmp
FrameCount = 1
SpriteOffset = Vector
X = -3
Y = -4
EntryWound = AEmitter
CopyOf = Dent Metal
ExitWound = AEmitter
CopyOf = Dent Metal
GoldCost = 5
AtomGroup = AtomGroup
AutoGenerate = 1
Material = Material
CopyOf = Gun metal
Resolution = 2
Depth = 0
DeepGroup = AtomGroup
AutoGenerate = 1
Material = Material
CopyOf = Gun metal
Resolution = 4
Depth = 10
DeepCheck = 1
JointStrength = 75
JointStiffness = 0.5
DrawAfterParent = 1
DetonationSound = Sound
AddSample = ContentFile
Path = Base.rte/Sounds/Explode2.wav
StanceOffset = Vector
X = -12
Y = -5
StartThrowOffset = Vector
X = -12
Y = -5
EndThrowOffset = Vector
X = -12
Y = -5
TriggerDelay = 2500 //how long, in milliseconds
ParticleNumberToAdd = 10// how many particles to gib upon the end of the delay
AddParticles = MOSParticle //the kind of gib
CopyOf = Side Thruster Blast Ball 1 //the gib
ParticleNumberToAdd = 20
AddParticles = MOPixel
CopyOf = Grenade Fragment Gray
ParticleNumberToAdd = 20
AddParticles = MOPixel
CopyOf = Grenade Fragment Yellow
ParticleNumberToAdd = 30
AddParticles = MOPixel
CopyOf = Air Blast
Actor - There is an actor class that the game doesn't use that is pretty much just something with a health variable. I suppose it's useful for a few things.
AHuman - These are your robots, your clones, and your other things that walk around shooting stuff. Used for anything that walks around. It calls on many other attachable classes, such as the head, the arms, the hands, the feet, the legs, and others. All of the attachables are probably self-explanatory by now.
Code:
AddActor = AHuman
InstanceName = Blue Clone
Mass = 35 //affects how easily it is for the jetpack to lift it
Position = Vector
X = 520
Y = 400
HitsMOs = 1
GetsHitByMOs = 1
SpriteFile = ContentFile
FilePath = Base.rte/Actors/Clones/Blue/PlayerBody.bmp
FrameCount = 1
SpriteOffset = Vector
X = -6
Y = -10
EntryWound = AEmitter
CopyOf = Wound Flesh Entry
ExitWound = AEmitter
CopyOf = Wound Flesh Exit
GoldCost = 70
AtomGroup = AtomGroup
AutoGenerate = 1
Material = Material
CopyOf = Flesh
Resolution = 2
Depth = 0
DeepGroup = AtomGroup
AutoGenerate = 1
Material = Material
CopyOf = Flesh
Resolution = 4
Depth = 6
DeepCheck = 1
BodyHitSound = Sound
CopyOf = Flesh Body Blunt Hit
PainSound = Sound
CopyOf = Human Pain
DeathSound = Sound
CopyOf = Human Death
DeviceSwitchSound = Sound
CopyOf = Device Switch
Status = 0
Health = 100 // how much health can be lost before it becomes static and the rest of the body parts gib.
Team = 0
AimAngle = 0
AimDistance = 30
CharHeight = 85 //affects where the health indicator is
HolsterOffset = Vector
X = -6
Y = -4
Head = Attachable
CopyOf = Blue Clone Head
ParentOffset = Vector
X = -1
Y = -9
Jetpack = AEmitter
CopyOf = Jetpack Nozzle //determines the emitter that begins emitting when you hit the jetpack key.
ParentOffset = Vector
X = -3
Y = -3
JumpTime = 4 // How long you can hold the jetpack button
FGArm = Arm
CopyOf = Blue Clone FG Arm
ParentOffset = Vector
X = -4
Y = -6
BGArm = Arm
CopyOf = Blue Clone BG Arm
ParentOffset = Vector
X = 4
Y = -7
FGLeg = Leg
CopyOf = Blue Clone Leg
ParentOffset = Vector
X = -1
Y = 1
BGLeg = Leg
CopyOf = Blue Clone Leg
ParentOffset = Vector
X = 2
Y = 1
Hand = AtomGroup
CopyOf = Hand
FGFootGroup = AtomGroup
CopyOf = Foot
BGFootGroup = AtomGroup
CopyOf = Foot
IdleLimbPath = LimbPath
InstanceName = Clone Idle Path
StartOffset = Vector
X = 3
Y = 10
StartSegCount = 0
SlowTravelSpeed = 0.1
NormalTravelSpeed = 0.5
FastTravelSpeed = 1.5
PushForce = 2000
WalkLimbPath = LimbPath
CopyOf = Clone Walk Path
CrouchLimbPath = LimbPath
CopyOf = Clone Crouch Path
CrawlLimbPath = LimbPath
CopyOf = Clone Crawl Path
ClimbLimbPath = LimbPath
CopyOf = Clone Climb Path
JumpLimbPath = LimbPath
CopyOf = Clone Jump Path
DislodgeLimbPath = LimbPath
CopyOf = Clone Dislodge Path
AddGib = Gib
GibParticle = MOPixel
CopyOf = Drop Blood
Count = 100
Spread = 3.14
MaxVelocity = 20
MinVelocity = 8
AddGib = Gib
GibParticle = MOSParticle
CopyOf = Meat Ball A
Count = 17
Spread = 3.14
MaxVelocity = 15
MinVelocity = 5
AddGib = Gib
GibParticle = MOSParticle
CopyOf = Bone Shard A
Count = 7
Spread = 3.14
MaxVelocity = 15
MinVelocity = 5
AddGib = Gib
GibParticle = MOSParticle
CopyOf = Metal Shard A
Count = 5
Spread = 3.14
MaxVelocity = 15
MinVelocity = 5
AddGib = Gib
GibParticle = MOSRotating
CopyOf = Flesh Chunk 1
Count = 1
Spread = 3.14
MaxVelocity = 10
MinVelocity = 1
AddGib = Gib
GibParticle = MOSRotating
CopyOf = Flesh Chunk 2
Count = 1
Spread = 3.14
MaxVelocity = 10
MinVelocity = 1
AddGib = Gib
GibParticle = MOSRotating
CopyOf = Flesh Chunk 3
Count = 1
Spread = 3.14
MaxVelocity = 10
MinVelocity = 1
GibImpulseLimit = 1800
GibWoundLimit = 8
ACRocket - This is, of course, a rocket. Used for dumping cargo and the occasional rocket battle.
Code:
AddActor = ACRocket
InstanceName = Rocket MK1
Mass = 800
Position = Vector
X = 520
Y = 20
Velocity = Vector //how fast it's moving when it's spawned
X = 0
Y = -5
HitsMOs = 1
GetsHitByMOs = 1
SpriteFile = ContentFile
FilePath = Base.rte/Actors/Rockets/Body.bmp
FrameCount = 6
SpriteOffset = Vector
X = -18
Y = -63
EntryWound = AEmitter
CopyOf = Gas Leak
ExitWound = AEmitter
CopyOf = Gas Leak
GoldCost = 50
AtomGroup = AtomGroup
AutoGenerate = 1
Material = Material
CopyOf = Rocket engine metal
Resolution = 3
Depth = 0
DeepGroup = AtomGroup
AutoGenerate = 1
Material = Material
CopyOf = Rocket engine metal
Resolution = 20
Depth = 4
DeepCheck = 1
BodyHitSound = Sound
CopyOf = Metal Body Blunt Hit
Status = 0
Health = 100 //how much health
ImpulseDamageThreshold = 5000 //how hard it hits things before it starts taking damage
Team = 0
AimAngle = 0
AimDistance = 30
CharHeight = 150 //how high up the heart icon is
HolsterOffset = Vector
X = -6
Y = 14
RLeg = Leg
CopyOf = Rocket Leg
ParentOffset = Vector
X = 13
Y = 26
LLeg = Leg
CopyOf = Rocket Leg
ParentOffset = Vector
X = -13
Y = 26
RFootGroup = AtomGroup
CopyOf = Rocket Landing Gear Foot Right
LFootGroup = AtomGroup
CopyOf = Rocket Landing Gear Foot Right
MThruster = AEmitter //the thruster used when hitting W
CopyOf = Rocket Main Thruster
ParentOffset = Vector
X = 0
Y = 36
RThruster = AEmitter //hit D
CopyOf = Rocket Side Thruster
ParentOffset = Vector
X = 10
Y = -52
LThruster = AEmitter //Hit A
CopyOf = Rocket Side Thruster
ParentOffset = Vector
X = -11
Y = -52
URThruster = AEmitter //hit S
CopyOf = Rocket Side Thruster
ParentOffset = Vector
X = 15
Y = 16
ULThruster = AEmitter //hit S
CopyOf = Rocket Side Thruster
ParentOffset = Vector
X = -16
Y = 16
HatchDelay = 250 //how long between hitting eject and the actual ejection
HatchOpenSound = Sound
AddSample = ContentFile
Path = Base.rte/Actors/Rockets/HatchOpen.wav
AddExit = Exit
Offset = Vector
X = 20
Y = -30
Velocity = Vector
X = 5
Y = 0
AddExit = Exit
Offset = Vector
X = -20
Y = -30
Velocity = Vector
X = -5
Y = 0
// ExitInterval = 1000;
RaisedGearLimbPath = LimbPath
InstanceName = Rocket Gear Raised Path
StartOffset = Vector
X = 5
Y = -13
StartSegCount = 0
SlowTravelSpeed = 0.25
NormalTravelSpeed = 0.8
FastTravelSpeed = 1
PushForce = 20000
LoweredGearLimbPath = LimbPath
InstanceName = Rocket Gear Lowered Path
StartOffset = Vector
X = 5
Y = 11
StartSegCount = 0
SlowTravelSpeed = 0.25
NormalTravelSpeed = 0.8
FastTravelSpeed = 1
PushForce = 20000
LoweringGearLimbPath = LimbPath
InstanceName = Rocket Gear Lowering Path
StartOffset = Vector
X = 5
Y = -10
StartSegCount = 0
AddSegment = Vector
X = 30
Y = 3
AddSegment = Vector
X = -2
Y = 13
AddSegment = Vector
X = -10
Y = 8
SlowTravelSpeed = 0.25
NormalTravelSpeed = 0.5
FastTravelSpeed = 1
PushForce = 20000
RaisingGearLimbPath = LimbPath
InstanceName = Rocket Gear Raising Path
StartOffset = Vector
X = 5
Y = 8
StartSegCount = 0
AddSegment = Vector
X = 11
Y = -13
AddSegment = Vector
X = -11
Y = -10
SlowTravelSpeed = 0.25
NormalTravelSpeed = 0.5
FastTravelSpeed = 1
PushForce = 20000
CrashSound = Sound
CopyOf = Metal Body Blunt Hit Large
AEmitter - These are the jetpacks, the rocket thrusters, the flesh wounds that drip blood, and other such things that fire out particles at a set rate until they hit their limit. Must be attached to another object to avoid lag, and so is used for thrusters and wounds, mostly. Don't make a round an emitter until someone figures out how to avoid the lag.
Code:
AddEffect = AEmitter
InstanceName = Jetpack
Mass = 0.0001
HitsMOs = 0
GetsHitByMOs = 0
SpriteFile = ContentFile
FilePath = Base.rte/Actors/Clones/Jetpack.bmp
FrameCount = 1
SpriteOffset = Vector
X = -3
Y = -12
EntryWound = AEmitter
CopyOf = Gas Leak
ExitWound = AEmitter
CopyOf = Gas Leak
AtomGroup = AtomGroup
AutoGenerate = 1
Material = Material
CopyOf = Rocket engine metal
Resolution = 2
Depth = 5
DeepGroup = AtomGroup
AutoGenerate = 1
Material = Material
CopyOf = Rocket engine metal
Resolution = 3
Depth = 5
DeepCheck = 0
JointStrength = 10000
JointStiffness = 1
DrawAfterParent = 0
AddEmission = Emission
EmittedParticle = MOPixel
CopyOf = Jetpack Blast 1
Spread = 0.1
MaxVelocity = 24
MinVelocity = 12
AddEmission = Emission
EmittedParticle = MOPixel
CopyOf = Jetpack Blast 2
Spread = 0.15
MaxVelocity = 24
MinVelocity = 12
EmissionSound = Sound
AddSample = ContentFile
FilePath = Base.rte/Actors/Rockets/Thruster.wav
LoopSetting = -1 // Means loop infinitely until stopped
BurstSound = Sound
AddSample = ContentFile
FilePath = Base.rte/Actors/Rockets/ThrusterStart.wav
EndSound = Sound
AddSample = ContentFile
FilePath = Base.rte/Actors/Rockets/ThrusterEnd.wav
EmissionEnabled = 1
EmissionsIgnoreThis = 1 //Whether the emissions can hit the emitter/parent
ParticlesPerMinute = 6000 //rate of emission
BurstSize = 15
BurstScale = 1
BurstTriggered = 1
EmissionDamage = 0 //how much damage each emission does to the parent
Flash = Attachable
CopyOf = Muzzle Flash Pistol
FlashOnlyOnBurst = 0
V. Helpful Links
Unofficial FAQ
Alenth's modding guide and guidelines
VI. Misc.
If I missed anything at all, or got something wrong, or needed confirmation on something, or anything of that sort, feel free to post and I'll update the appendix. I'll probably add in the dropship soon. That thing is wierd.
[/long post]