Modding MI

Madness Skinning
          Important Skins
               mc.guy
                    Costume Skinning
                         Renaming Costumes
                         Creating Costumes
                         Costume Types
                              Renaming Costume Types
                              Creating Costume Types
                              Deleting Costume Types
                         Creating Costume Groups
                         Character Selection Menu
                    Weapon Skinning
                         mc.tgun
                         mc.hand
                         mc.pt
               mc.backgrounds



Important Skins
Here are some of the more important movieclips in Skinning.


mc.guy
This is the most obvious Skin location, and any mod with any skill involved has had some work done on this movieclip.
The movieclip layout is below.
Important movieclips are in blue. Movieclips that are important if another movieclip has been changed are in green. This does not include movieclips that include important movieclips. Movieclips not in blue have no need to be touched, unless the mod requires it.
All movieclips are in alphabetical order in groups.

mc.guy
     mc.body
          mc.bloodspot
          mc.bodysplat
          mc.jetpack
          mc.stuck
          mc.suibomb
          mc.suit
     mc.hand
          Hand - Weapon - ChainGun
          mc.electricity
          mc.sb_forward
          mc.sb_backward
     mc.head
          mc.beard
          mc.bloodspot
          mc.glasses
          mc.hat
          mc.headsplat
          mc.stuck
     mc.foot
     mc.tgun
          mc.pt

If you mod the important movieclips listed above, you are well on your way to making a Madness mod. Below are descriptions of each movieclip, in alphabetical order, with important movieclips still coloured.

Hand - Weapon - ChainGun          Contains animation of Minigun barrel spinning.
mc.beardCostumeContains images of all masks.
mc.bloodspotContains images of variations of non-shotgun bullet wounds.
mc.bodyContains image of peoples' bodies and body shotgun wounds.
mc.bodysplatContains images of variations of body blood splatters.
mc.electricityContains animation of tazer weapon electricity.
mc.footContains image of people's feet.
mc.glassesCostume.Contains images of all glasses.
mc.handContains images of all weapons while being held by people.
mc.hatCostumeContains images of all hats.
mc.headContains image of people's heads and head shotgun wounds.
mc.headsplatContains images of variations of head blood splatters.
mc.guyContains all the movieclips related to people.
mc.jetpackContains image of jetpack. Must be skinned if jetpack item is skinned.
mc.ptMarker for weapon dimensions and barrel location. Do not skin. This is important for MI coding.
mc.sb_backwardContains animation of switchblade unsheathing. Must be skinned if switchblade weapon is skinned.
mc.sb_forwardContains animation of switchblade unsheathing. Must be skinned if switchblade weapon is skinned.
mc.stuckContains images of switchblade and axe stuck in a person. Must be skinned if switchblade or axe weapons are skinned.
mc.suibombContains image of suicide bomb. Must be skinned if suicide bomb item is skinned.
mc.suitCostumeContains images of all suits.
mc.tgunContains images of all weapons and items while not being held by people.



Costume Skinning
There are four costume movieclips,
mc.beard     Contains all the Mask images.
mc.glassesContains all the Glasses images.
mc.hatContains all the Hat images.
mc.suitContains all the Suit images.
Simply edit the images of these four movieclips to change the costumes.


Renaming Costumes
Skinning becomes slightly more difficult (note, when I say difficult, I mean compared to skinning, and anyone with the brain power of a dead chicken could do it) once you want to rename or add costumes. To rename a costume, go to:

Frame 5
Line 38
hatslist=new Array(
     new Array("None",1),
     new Array("Sheriff hat",2),
     new Array("Baseball cap",3),
     new Array("Bandana",4),
     new Array("Mohawk",5),
     new Array("Top hat",6),
     new Array("Clown wig",7),
     new Array("Pirate",8),
     new Array("Smith hair",9),
     new Array("Jesus",10)
);

glasseslist=new Array(
     new Array("None",1),
     new Array("Sunglasses",2),
     new Array("Geeky",3),
     new Array("Sam Fisher",4),
     new Array("Eyepatch",5),
     new Array("Smith shades",6)
);

beardslist=new Array(
     new Array("None",1),
     new Array("Goatee",2),
     new Array("Santy Clause",3),
     new Array("Bonzo",4),
     new Array("Ninja",5),
     new Array("Gas Mask",6)
);

suitslist=new Array(
     new Array("None",1),
     new Array("Businessman",2),
     new Array("White suit",3),
     new Array("Ninja",4)
);

Simply rename the costume by replacing the name in quotes to the name you want.

To rename the type of costume, find the following code, it starts on line 107.


Creating Costumes
To create a new costume, add a frame onto the end of the costume movieclip.
Then add a new Array to the certain list. The layout for a new costume is below.

new Array("#NAME#",#FRAME#)

#NAME# is the name given to the new costume. #FRAME# is the frame number that contains the chosen costume.
Remember that only the last Array in a list does not end with a comma, and all others must.


Costume Types
Costume Types are the type of costumes, such as hats, glasses, beards and suits. You can rename, create and delete costume types.


Renaming Costume Types
Frame 5
Line 107
character=new Array(
     new Array(3,0,0,_root.costumeblock),
     new Array(2,0,"Hat:",hatslist,"hat"),
     new Array(2,0,"Glasses:",glasseslist,"glasses"),
     new Array(2,0,"Mask:",beardslist,"beard"),
     new Array(2,0,"Suit:",suitslist,"suit"),
     new Array(0,8,"Close",9)
);

Replace the first name in quotes to the name you want.


Creating Costume Types
To create a new type of costume, you must create a new movieclip and add to the costume menu. This compacts the costume menu, however.
Create a new movieclip in the place you want the costume to appear. Give the movieclip the actionscript below.

onClipEvent(load) {
     gotoAndStop(Number(_parent._parent.#OBJECT#));
}

#OBJECT# is the name of the costume type's name, that you will use to locate this movieclip from the menu (mentioned lower).
On the first frame, put the actionscript below. On the second and later frames, draw images of the costumes.

stop();

Add a new list Array, and fill it with the costumes available.

#LIST#=new Array(
     new Array("#NAME",#FRAME#),
     new Array("#NAME",#FRAME#),
     new Array("#NAME",#FRAME#),
     new Array("#NAME",#FRAME#)
);

#LIST# is the name of the list of costumes. Note that this must be only one word, and is not displayed, so it could be anything.

Frame 5
Line 107
character=new Array(
     new Array(3,0,0,_root.costumeblock),
     new Array(2,0,"Hat:",hatslist,"hat"),
     new Array(2,0,"Glasses:",glasseslist,"glasses"),
     new Array(2,0,"Mask:",beardslist,"beard"),
     new Array(2,0,"Suit:",suitslist,"suit"),
     new Array(0,8,"Close",9)
);

To create a new type of costume, add a new Array to the list. The layout for a new type of costumes is below.

new Array(2,0,"#NAME#",#LIST#,"#OBJECT#"),

#NAME# is the name of the type of costume that you want to appear on the costumes menu.

Another important Skin is mc.backgrounds. Go there, and change the graphics. Simple.


Deleting Costume Types
Frame 5
Line 38
hatslist=new Array(
     new Array("None",1),
     new Array("Sheriff hat",2),
     new Array("Baseball cap",3),
     new Array("Bandana",4),
     new Array("Mohawk",5),
     new Array("Top hat",6),
     new Array("Clown wig",7),
     new Array("Pirate",8),
     new Array("Smith hair",9),
     new Array("Jesus",10)
);

glasseslist=new Array(
     new Array("None",1),
     new Array("Sunglasses",2),
     new Array("Geeky",3),
     new Array("Sam Fisher",4),
     new Array("Eyepatch",5),
     new Array("Smith shades",6)
);

beardslist=new Array(
     new Array("None",1),
     new Array("Goatee",2),
     new Array("Santy Clause",3),
     new Array("Bonzo",4),
     new Array("Ninja",5),
     new Array("Gas Mask",6)
);

suitslist=new Array(
     new Array("None",1),
     new Array("Businessman",2),
     new Array("White suit",3),
     new Array("Ninja",4)
);

Delete all the Arrays of the list of the Costume Type you want to delete.

Frame 5
Line 107
character=new Array(
     new Array(3,0,0,_root.costumeblock),
     new Array(2,0,"Hat:",hatslist,"hat"),
     new Array(2,0,"Glasses:",glasseslist,"glasses"),
     new Array(2,0,"Mask:",beardslist,"beard"),
     new Array(2,0,"Suit:",suitslist,"suit"),
     new Array(0,8,"Close",9)
);

Delete the Array of the Costume Type you want to delete.


Creating Costume Groups
Remove all the costume types except one. For the sake of this tutorial, let's just say you removed all but Suits.

Frame 5 / costumeblock (mc.costumeblock) / mc.costumemodel

Give all the costume movieclips except the chosen one the following actionscript:

onClipEvent(enterFrame){
     if(_root.suit == #SUIT#){
          this.gotoAndStop(#COSTUME#);
     }
}

You can link many of these together.

Frame 6 / pgen (mc.guy)
Line 426
hat=_root.hat;
beard=_root.beard;
suit=_root.suit;
glasses=_root.glasses;

Replace that with #COSTUME#=_root.#CHOSEN#. Example:

hat=_root.suit;
beard=_root.suit;
suit=_root.suit;
glasses=_root.suit;



Character Selection Menu
Frame 9 / intro

Create a new keyframe, before everything else. Make sure nothing is in that keyframe other than possibly a background.
Create a new layer, above everything else. Add in movieclips of the different character selections.
Give each movieclip the following actionscript:

on(press){
     _root.hat=#HAT#
     _root.glasses=#GLASSES#
     _root.beard=#BEARD#
     _root.suit=#SUIT#
     if(_root.main){
          _parent.play();
     }
     else if(_root.experiment){
          _root.gotoAndStop("game");
     }
}

Now you need to make sure Experiment also leads to the Character Selection Menu

Frame 6 / mbu (mc.button.menu) / bu.invis
Line 36
else if (ax==4) {
     //EXPERIMENT
     _root.gotoAndStop("game");
     _root.experiment=true;
     _root.ai=true;
     _root.invincibility=false;
     _root.autospawn=false;
     _root.killmenu(0);
}

Change this to say:

else if (ax==4) {
     //EXPERIMENT
     _root.gotoAndStop("intro");
     _root.experiment=true;
     _root.ai=true;
     _root.invincibility=false;
     _root.autospawn=false;
     _root.killmenu(0);
}



Weapon Skinning
Now, for weapons. Skinning weapons is quite easy, yet harder than skinning costumes.

mc.tgun
mc.tgun contains all the images of weapons while not being held by people. It is also used when a weapon is on the back of Hank.
mc.tgun has three layers.
The first layer ("actions")     Used to hold the actionscript for mc.tgun.
The second layer ("points")Used for the mc.pt movieclips. mc.pts designate the weapon's dimensions.
The third layer ("image")Used for the graphics.
You may notice that frames 24 and 25 have no mc.pts. This is because the jetpack and suicide bomb cannot be thrown, as when you pick them up they cannot be taken off again, and thus have no need for dimensions.
Frame 31 also has no mc.pts, but this is because the pie is not used in the finished game (and can be deleted if you wish).
The mc.pts of mc.tgun should be placed around the perimetre of the image, and serve as markers for the dimensions of the weapon.

mc.hand
mc.hand contains all the images of weapons while being held by people.
mc.hand has four layers.
The first layer ("actions")     Used to hold the actionscript for mc.hand.
The second layer ("label")Used for labels of the weapons. This frame is incomplete.
The third layer ("points")Used for the mc.pt movieclips. mc.pts designate the weapon's dimensions and where its barrel is. This will be explained in more depth later.
The fourth layer ("graphic")Used for the graphics.

You may notice that frames 50 to 54 have no contents. There is no logical reason for this.
Frame 65 and 66 have no mc.pts, but this is because the pie is not used in the finished game (and can be deleted if you wish).
The mc.pts of mc.hand are more complicated than those of mc.tgun, as detailed below.

mc.pt
pt0     Used to designate the barrel's location. Bullets always fire right. If the weapon is not a gun, pt0 is counted as any other pt.
pt1+Used to designate the weapon's dimensions.



mc.backgrounds
Frame 6 / bg (mc.backgrounds)

This is really simple to edit. Frame 1 is the Experiment / Challenges background. Frame 2 onwards are the Main Game backgrounds.