Page 1 of 2 12 LastLast
Results 1 to 50 of 76

[Tutorial] Space Marine Character Modding 101

  1. #1

    Codex [Tutorial] Space Marine Character Modding 101

    It seems that there are some people who are interested in modding, but aren't sure where to begin. So, I thought it might be useful to post a tutorial with step by step instructions for some basic modding techniques. It will cover extracting packages, model swapping, and basic texture editing. These techniques are useful to change the appearance of characters in single player mode, and will hopefully provide a useful basis for learning more advanced techniques.

    Tools you'll need:
    1. Space Marine Tools by Santos. This is needed to extract oppc archives.
    2. A program to edit .dds images. Photoshop is an excellent tool if available, but there are free alternatives. For this guide, I'll be using Paint.net. The GIMP is another free image editing suite with some nice features.
    3. A text editor. Notepad will suffice for what we're doing in this tutorial, but something a bit more code-oriented may be useful if you intend to get deeper into modding. I recommend Notepad++.


    Part I - Exracting the data

    To begin, we'll need to get the existing Space Marine data in a format that we can edit.

    1) Locate the packages folder. It should be found in Steam\steamapps\common\warhammer 40,000 space marine\data\packages\, wherever you installed steam.
    2) Unzip Santos' Space Marine tools, and find smoppc.exe. Look in the \smopcc\bin\ folder.
    3) Place smoppc.exe in the packages folder and run it. This will extract all the packages from the archives, giving you a bunch of new folders. If hard drive space is an issue, you may prefer to look at the file names, and only extract the packages that you're interested in, but it's more convenient to extract them all at once.


    Part II - Model swapping

    Now that the data is extracted, we can change the parts that appear in-game. We will start by changing Titus' breast plate into the one used by Sidonus.

    1) In your \warhammer 40,000 space marine\ folder, create a new folder called "preview". All edited files will go in the preview folder.
    2) Go into the \warhammer 40,000 space marine\data\config\ folder, and find packages.xml.bin. This file tells the game where to look for each package.
    3) Open packages.xml.bin in a text editor or hex editor. You'll see a list of packages with the folders they need to go in. You'll also see some unintelligable characters, but you can just ignore them.
    4) Search for the part you want to replace. We'll start with the breast plate for Titus. The packages for his armor parts are called "sm_armour_basic_upres", with a separate package for each part. We want the torso, so use the find function in your text editor to search for "sm_armour_basic_upres_torso".
    5) When you find it, look for the next line of readable text. It will say "art/race_marine/characters/spacemarine/armour/sm_armour_basic_upres", so that's the directory we need to make.
    6) Go into your preview folder, and inside that, create a folder called art, then a folder named race_marine inside that, then characters inside that, then spacemarine, then armour, and finally sm_armour_basic_upres.
    7) Now, go to the packages that were extracted in Part I, and find the package you want to use for Titus' torso. We'll be using Sidonus' torso, so find a folder called "sm_armour_sidonus_torso".
    8) Move or copy the "sm_armour_sidonus_torso" folder into /preview/art/race_marine/characters/spacemarine/armour/sm_armour_basic_upres/
    9) Go into the "sm_armour_basic_upres" folder. We now need to rename the new package to match the name of the package we want to replace. So, change the name of the "sm_armour_sidonus_torso" folder to "sm_armour_basic_upres_torso".
    10) Go into the newly renamed "sm_armour_basic_upres_torso" and find the .dcm file. The game will look for the appropriate .dcm file, and use that to determine the rest of the files that will be loaded for that part. So, the .dcm file is the key to swapping parts.
    11) The .dcm file will always or nearly always have the same name as the folder. So, rename sm_armour_sidonus_torso.dcm to sm_armour_basic_upres_torso.dcm. That's all you need to do; none of the other files need to be renamed or changed.


    Part III - Seeing the changes

    If you just launch the game normally, Titus will still look the same as before. To make the changes appear in-game, we need to enable mods. Note that launching the game with mods enabled will temporarily lock multiplayer, but you can access mp again by launching the game normally, so it's nothing to be concerned about.

    1) First, create a new shortcut to spacemarine.exe. You may want to rename this shortcut to indicate that it'll be used for launching the game with mods.
    2) Right-click on the shortcut and select properties. In the dialog box that pops up, make sure the "shortcut" tab is selected.
    3) You'll see a box labelled "target". The box shows the path to spacemarine.exe. After that path, write -usepreview (make sure that there is a space between the path and -usepreview).
    4) Now, when the game is launched through this shortcut, mods will be enabled (and multiplayer will be disabled). Launching through steam* or through any other shortcut will load the game normally, with mods disabled, and multiplayer enabled.
    5) Launch the game through the new shortcut and look at Titus. He should now have the same breastplate as Sidonus.


    Part IV - Texture editing

    Textures are image files in .dds format. Paint.net can edit .dds files natively, but other programs may require a plugin.

    1) Go into the folder for the package you want to edit. You should see four or five files with .dds extensions. Those are the textures.
    2) The one ending in _dif (meaning diffuse) controls the color of the object, and the _spc (specular) texture controls the color of reflections. The others can be ignored for now.**
    3) Open the existing _dif and _spc textures and in paint.net (or other image editor) and compare them. They will usually look similar, with more contast in the _spc version. You may want to save copies of these files to refer to later.
    4) Now, edit the _dif file however you see fit. You can draw on the surface, paste in a chapter badge, and recolor different parts.*** Try to think about how the texture will look when wrapped around the surface of the model.
    5) Save the texture, and your changes should show up in game (as long as mods are enabled). If you go to "save as", you'll get several options for the resultant .dds file. For now, just use DXT3 or DXT5, and don't worry about the rest.
    6) Now, you can edit the _spc texture to go with your changes to the _dif texture.
    7) Feel free to experiment with the _spc texture, but for now just remember how the _spc compared to the _dif in the original. You may want to simply resize the _dif to half its current size and replace the _spc with that, and then go to adjustments->levels and play with the sliders until you're satisfied with the results. You should be able to get a passable specular map this way.
    8) After making your changes, save the _dif and _spc textures, and run the game with -usepreview to see how they look.


    Part V - Using multiplayer armor parts

    Using multiplayer parts is a little more complicated than using single player parts. Now that we know how to do a basic model swap, we can try swapping in a multiplayer armor part into singleplayer. Note that you can only replace similar parts, and even then not all parts will work. Trying to swap in a Chaos or Ork part will almost certainly crash the game. Trying to swap a helmet for a head or a power sword for a chainsword in this way will crash the game. If the mod you have in mind doesn't require any multiplayer parts, you can skip this part.

    For this part of the tutorial, we're going to change Leandros' leg armor to the corvus-style MP leg armor parts.

    1) Determine what folder you need to create using packages.xml.bin, just as you did for part II. The parts we'll be replacing are sm_armour_leandros_legl and sm_armour_leandros_legr.
    2) Locate the packages containing the corvus leg parts. The parts are called sm_armour_mp_mk6_legl and sm_armour_mp_mk6_legr.
    3) You'll notice several folders related to each part. Only two of these will be needed for each part.
    4) Copy the sm_armour_mp_mk6_legl folder to sm_armour_leandros and rename it, then rename the dcm file, as in part II. Do likewise for the right leg.
    5) Notice that the folder for the multiplayer part is missing some textures. The textures are stored in the _tt1 version of the folder. So, look through the extracted packages, and find a folder called sm_armour_mp_mk6_legl_tt1, and copy the .dds files from there to the newly renamed folder (where the .dcm file is located).
    6) To make the multiplayer part work properly, we need to replace the .bmat file. So, delete the .bmat file from the folder, and copy the .bmat from the original package that is being replaced. In this case, get the .bmat files from the sm_armour_leandros_legl and sm_armour_leandros_legr packages that we originally extracted in Part I.
    7) The .bmat file points to the textures that will be used, so the textures need to be renamed to go with the new .bmat file. So, rename sm_armour_mp_mk6_legl_dif.dds to sm_armour_leandros_legl_dif.dds, and so on for the other textures. Do the same for the right leg.
    8) Run the game and check to make sure the new parts are working properly. Remember that some parts will simply crash the game if you try to use them this way.


    Conclusion

    With these techniques, you should now be able to replace interchangable parts for Space Marine characters, and do some simple texture editing to reach a desired effect. I hope this will give you a good basis for a variety of mods.


    -----------------

    *If you want the game to use mods every time it's launched, then you can right click the game in steam, and choose properties. Click "set launch options", and put -usepreview in the box.

    **For future reference, the _nrm (normal map) controls the direction of light reflecting off a surface, and is used to modify the appearant shape of an object. Editing a normal map is complex, but you can find general normal map tutorials on the internet if you want to try. The _lp file affects the reflectivity of a surface, where each color channel determines a different property. Blue is reflectivity, and green is emissivity. So, more blue in the _lp means a more reflective surface.

    ***If you're doing a simple recolor, I find the easiest way is to start by going to the layers box in the corner of the screen, and duplicating the existing layer. In the top layer, cut out the parts you don't want to recolor. Change the bottom layer to black and white. Now, create a new, blank layer in between those two. Fill this with the color you want. Now, go into layers->layer properties, and change the blending mode to "overlay". This should give you a quick recolor of the underlying parts. Go to image->flatten to combine all the layers, and now you can save the texture.

  2. #2

    Thank you

    Thank you for putting this up. I became aware of this modding section through Steam and was eager to try this out but I must admit I was having a hard time finding the right tools. There should be a link on steam for this so more people can experiment with adding in their own personal touches to make this awesome game even better. This game was for the 40k fans first and foremost, here's hoping Relics next Space Marine entry adds a little more Narrative polish.

  3. #3
    Thanks so much Mort for the quick posting this will help alot.
    "Acknowledge death as it approches but do not succumb to its touch, for your purpose is great..." Chaplain Hanius, Blood Angels Chapter

  4. #4
    Nice tutorial, you got the basic's covered pretty nicely.

    One thing though to everyone else, please dont post all your reskins in my thread, put em in here, as they're related to this.
    Never befriend an Ork on Facebook without first limiting your public profile from The Emperor.

  5. #5
    Member cobaltlotus's Avatar
    Join Date
    Feb 2011
    Location
    Webster, NY
    @Morat: Thanks for the tut! With it's help I made a pretty quick update to Titus' armor for campaign. But, I have a slight problem.. And it's really beyond my basic knowledge.

    I tried using, instead of the Sidonus torso (which is essentially master-crafted) I tried the MK8 Errant multiplayer torso and the backpack as well. This is the result:

    [URL=http://imageshack.us/photo/my-images/594/2011091200002g.jpg/][/URL

    It seems as though the texture for the torso goes pretty wonky and just.. doesn't load, or something. (Like I said, beyond my expertise )

    Does anyone know what might be happening with this?
    Courage and Honor!
    The enemies of the Emperor fear many things.
    They fear discovery, defeat, despair and death.
    Yet there is one thing they fear above all others.
    They fear the wrath of the Space Marines!

  6. #6
    It looks like it's using the customizable texture. Did you remember to change the bmat file as described in Part V?

  7. #7
    Member cobaltlotus's Avatar
    Join Date
    Feb 2011
    Location
    Webster, NY
    @Morat: Yes, I went back and did all of that as explained.. I'm not sure if the MK4 Maximus would work (which is what I'd like to use) so I'm still fooling around with the mk8 Errant. Now, I get this result:



    Everything is working as you've described thus far, but.. I don't know how to get this one to be colored.

    ninjaedit: The mk4 Maximus does indeed crash the game on startup. D: However, the mk8 works just fine.. no texture for me though.

    Update: It turns out the texture itself for the armor is grey through and through.. I have to recolor the entire thing.

    ----------

    Finally, after giving up on the mk8.. and after dealing with my horrible texturing skills I present.. My first mod? I guess?

    Spoiler



    Of course, it's still not done.. I'm having problems with the graphics (an old-school Ultramarine symbol) on the loincloth showing up at the main menu, let alone the loincloth even appearing in-game at all.. Not sure what needs to be done with those.

    For this, I borrowed NastyNoodle's mastercrafted UM helmet (Thank you Noodles for the awesomesauce helmets!), and Sidonus' right pauldron, his belt, and his leg pieces.
    I added a red ultramarine omega over the front part.. It's really white and blinding at certain angles of light because it's really the first thing I ever textured. I had to recolor it white and put a black border on it.

    And on the skull in the middle of his breastplate I put a small white Ultramarine omega.. Not much new bling, but it's the first thing I've ever done with modding.

    Once I figure out the loincloth problem; and maybe even manage to recolor the Mk8 Errant torso correctly, I can probably release it.
    Last edited by cobaltlotus; 12th Sep 11 at 1:37 PM.

  8. #8
    Thanks so much Mort for the quick posting this will help alot.

  9. #9
    On the whole shortcut front, you can actually use steam for that as well, just use add non-steam game, browse to spacemarine.exe and add it, you can then edit the non-steam shortcut in steam itself, enter -usepreview into the target line and also rename it to your liking. You can make as many of those as you like.

    @Cobaltlotus

    AFAIK, MP armor is always grey in the diffuse, since colors are applied by the engine via the customizer. In NastyNoodles thread she explained someone how to recolor stuff to proper ultramarines blue for example.


    http://forums.relicnews.com/showthre...post1045292589 this is the post.

  10. #10
    Member cobaltlotus's Avatar
    Join Date
    Feb 2011
    Location
    Webster, NY
    Seeing as I'm photoshop illiterate, that post didn't help me at all.. I'm using Adobe Photoshop CS3, and I don't know how to get the color from one piece of torso to the next; I did my best to follow her post and it didn't do anything to the texture when I loaded it in-game.

    Can someone provide a guide on how to recolor MP parts to the Ultramarine blue?

  11. #11
    I can give you a quick run through?

    Load the *torso_dif file

    At the top of the screen click "Layer -> New Layer"

    In the window that pops up, change the Mode section to "Colour"

    Pick the colour you want from the normal colour picker, paint all over it.

    Click " Layer -> Flatten image (its at the bottom)"

    Save your image and play!

    Obviously it gets more complicated matching the colours etc, but this should help get you going. If you cant get the right colour, you can goto "Image -> Adjustments -> Brightness/contrast....." etc and play with it to get the colour you want.

    Once you've got a grip of the basics just google search some texturing/recolouring tutorials, best off getting something already out there than getting someone to write one up from scratch

  12. #12
    Hi, Im new in Space Marine modding. I know how to change body parts and textures, but I have two problems:
    1. Don't know how to turn Titus head into helmet
    2. Dont know how to fix shoulders pads. When I use any custom pads (for example Ravens or Templars), they float above Titus shoulders (about 1 meter).

    Anyone can help me with that? do not ask to do it for me, because I want to learn it myself. Just need some help. What tools I need, and how should i use them?

  13. #13
    I second Crow on that.

    Trying to turn Titus head into a helmet crashes the game on title screen and the left shoulder pad always seem to be floating.
    Is there a chance you can write a tutorial on fixing these 2 issues?

  14. #14
    From the tutorial:
    Trying to swap a helmet for a head... will crash the game.
    In order to give Titus a helmet, you need to edit the models in 3DS Max, which I don't even know how to do.

    One of Titus' shoulderpads is rigged differently than other shoulderpads, so it can't be replaced. Again, you'd have to edit the models themselves to change that.

  15. #15
    I have a huge problem...

    I modded a face by using texmod, and converted it to a TPF. The face comes out more than perfect, but my problem is getting the
    preview folder to upload. Basically its one or a other.

    I tried using the "-usepreview" but it just uploads the face not the characters armor or anything or upload the characters armor without the
    face I converted. If you can please write some tips on how you merge both preview and TPF files together so I can mod up the face and the armor. There is not alot of instructions on using the TexMod either

    What I mean is I can swap out the armor, change its color,face etc... while using the tex mod.

    I got the armor, and face completed but both won't merge. This has been consuming all of my time, and energy trying to get this fixed I appreciate any response.

  16. #16
    Cobalt, there are two belt texture, belt and belt_fe, no idea what fe stands for, but its for use in the cinematics etc.

    To everyone else, you have NO IDEA how mind numbingly hard it is to get helmet mods to work properly, its not a case of swapping the files, and unfortunately its not even a case of swapping models. Moving a single hair on titus's head, makes his whole head float a meter above it and double in size.

  17. #17
    I figured out that you can point to different model parts by editing the wargear attr_pc files, so you don't need to manually swap textures and models.

    For example to give Titus the Space Wolves pre-order helmet.

    Open up wargear\race_marine\heads\in-game\titus.attr_pc. Now, in the Data strings for "visual name" and "visual package", replace "ingame_titus" with your desired helmet. "sm_armour_blood_ravens_helmet" and "sm_armour_mp_spacewolves_helmet" have worked for me so far.

    So titus.attr_pc should be like this:

    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <RelicAttribute>
      <Value>
        <Key>wargear\wargear\race_marine\heads\titus</Key>
        <Type>Table</Type>
        <Data>
          <Value>
            <Key>visual_data</Key>
            <Type>Table</Type>
            <Data>
              <Value>
                <Key>attachments</Key>
                <Type>Table</Type>
                <Data>
                  <Value>
                    <Key>wargear\attachment_entry</Key>
                    <Type>Table</Type>
                    <Data>
                      <Value>
                        <Key>$ref</Key>
                        <Type>String</Type>
                        <Data>wargear\attachment_entry</Data>
                      </Value>
                      <Value>
                        <Key>visual_name</Key>
                        <Type>String</Type>
                        <Data>sm_armour_mp_spacewolves_helmet</Data>
                      </Value>
                      <Value>
                        <Key>visual_package</Key>
                        <Type>String</Type>
                        <Data>sm_armour_mp_spacewolves_helmet</Data>
                      </Value>
    After that, vanguard.attr_pc goes somewhere in the ebps subfolder, and head.attr_pc goes in \preview\sim\attributes\instances\wargear\wargear\race_marine\heads\in_game


    Looks like this method works for any single player armor part. Space Wolves pre-order helmet with unfinished Librarian torso:


    "Leftenant" Mira promoted to Captain:
    Last edited by Mangoose; 17th Sep 11 at 6:16 PM.

  18. #18
    oooo, the librarian torso crashed the game for me when I put it in the other way.... hopefully this could help load the models that normally crash things?

  19. #19
    You can definitely load models without crashing...


  20. #20
    Oh my god this rocks.... thank you so much! Time to make a Librarian I think!

    ----------

    Any chance you can quickly show what you have put in for the librarian torso? I've got:

    <Data>
    <Value>
    <Key>wargear\attachment_entry</Key>
    <Type>Table</Type>
    <Data>
    <Value>
    <Key>$ref</Key>
    <Type>String</Type>
    <Data>wargear\attachment_entry</Data>
    </Value>
    <Value>
    <Key>visual_name</Key>
    <Type>String</Type>
    <Data>sm_armour_mp_librarian_torso</Data>
    </Value>
    <Value>
    <Key>visual_package</Key>
    <Type>String</Type>
    <Data>sm_armour_mp_librarian_torso</Data>
    </Value>


    But showing blank ingame at the mo!

  21. #21
    Looks right to me. You're editing powerarmour_basic_upres\torso.xml, right? And also putting the torso.attr_pc into the ...\powerarmour_basic_upres\ subdirectory of \preview?

    I have a feeling you don't even need to edit the "visual_name" field but I'm too lazy to check.

    Edit: Also make sure to grab version 0.2 of Santos's extraction tool, which IIRC you need to go to the last page of his thread to get. It preserves all the subdirectories.

  22. #22
    nope, was editing the file in armour_sp! Thank, got it in now, now to sort the textures out!

  23. #23
    Can you explain it again pls?

    To change Titus armor (and head):
    1. What OPPC archive I need to unpack?
    2. Where should I put those files (give me full path pls)
    3. Game will work with XML files, or should i convert them back again?

    EDIT:
    I found by myself ;P
    Last edited by Crow; 15th Sep 11 at 2:52 PM.

  24. #24
    how did u do it i can't figure it out.

    edit: mongoose could u just give Titus all the space wolves armour and put the files up to download?
    Last edited by soulshudder; 15th Sep 11 at 3:54 PM.

  25. #25
    Space Wolves Pre-order Armor: http://www.mediafire.com/?ypxvq22uzy4tyy5
    XML files included as examples.

    Problem with this method is that somehow Leandros and Sidonis point to the upres armour and they end up with empty model parts when I changed the texture pointers.

    For the Space Wolves I had to do a bit extra because the pre-order skin wears a "cloth" item instead of a "belt."

  26. #26
    So.... If someone was to make a proper horned helmet for Chaos Marines, would it be possible to actually give it to them in the campaign using this method?
    Pro-Skub, supporting the idea of new heroes for the Last Stand as DLC since 1967.
    Mod forum: SWR

  27. #27
    sweet thanks mongoose!

  28. #28
    I'm guessing I didn't unpack something right because I can't find a wargear subdirectory with titus.attr_pc in it, also what do I use to open titus.attr_pc?

    I was going to mess around with trying to do a beakie helm for titus single player just to see if I could make it work but don't seem to be able to find/open the attr_pc file

    *Edit okay so I've downloaded and modified your space wolf helm xml file as below, how do I convert it back to titus.attr_pc to place in the relevant preview folder? *nevermind I found the xml converter in the other thread (doh!)
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <RelicAttribute>
      <Value>
        <Key>wargear\wargear\race_marine\heads\in_game\titus</Key>
        <Type>Table</Type>
        <Data>
          <Value>
            <Key>visual_data</Key>
            <Type>Table</Type>
            <Data>
              <Value>
                <Key>attachments</Key>
                <Type>Table</Type>
                <Data>
                  <Value>
                    <Key>wargear\attachment_entry</Key>
                    <Type>Table</Type>
                    <Data>
                      <Value>
                        <Key>$ref</Key>
                        <Type>String</Type>
                        <Data>wargear\attachment_entry</Data>
                      </Value>
                      <Value>
                        <Key>visual_name</Key>
                        <Type>String</Type>
                        <Data>sm_armour_mp_mk6_helmet</Data>
                      </Value>
                      <Value>
                        <Key>visual_package</Key>
                        <Type>String</Type>
                        <Data>sm_armour_mp_mk6_helmet</Data>
                      </Value>
                      <Value>
                        <Key>animation_project</Key>
                        <Type>String</Type>
                        <Data></Data>
                      </Value>
                      <Value>
                        <Key>animation_character</Key>
                        <Type>String</Type>
                        <Data></Data>
                      </Value>
                      <Value>
                        <Key>animation_package</Key>
                        <Type>String</Type>
                        <Data></Data>
                      </Value>
                      <Value>
                        <Key>wield_info_by_upgrade</Key>
                        <Type>Table</Type>
                        <Data>
                          <Value>
                            <Key>entry</Key>
                            <Type>Table</Type>
                            <Data>
                              <Value>
                                <Key>required_upgrade_name</Key>
                                <Type>Table</Type>
                                <Data>
                                  <Value>
                                    <Key>$ref</Key>
                                    <Type>String</Type>
                                    <Data>_base_templates\required_upgrade_name</Data>
                                  </Value>
                                  <Value>
                                    <Key>required_list</Key>
                                    <Type>Table</Type>
                                    <Data></Data>
                                  </Value>
                                  <Value>
                                    <Key>allowed_difficulty</Key>
                                    <Type>Table</Type>
                                    <Data></Data>
                                  </Value>
                                </Data>
                              </Value>
                              <Value>
                                <Key>handle_node</Key>
                                <Type>String</Type>
                                <Data></Data>
                              </Value>
                              <Value>
                                <Key>body_node</Key>
                                <Type>String</Type>
                                <Data></Data>
                              </Value>
                              <Value>
                                <Key>scale</Key>
                                <Type>Float</Type>
                                <Data>1</Data>
                              </Value>
                            </Data>
                          </Value>
                        </Data>
                      </Value>
                      <Value>
                        <Key>stow_info</Key>
                        <Type>Table</Type>
                        <Data>
                          <Value>
                            <Key>handle_node</Key>
                            <Type>String</Type>
                            <Data></Data>
                          </Value>
                          <Value>
                            <Key>body_node</Key>
                            <Type>String</Type>
                            <Data></Data>
                          </Value>
                          <Value>
                            <Key>scale</Key>
                            <Type>Float</Type>
                            <Data>1</Data>
                          </Value>
                          <Value>
                            <Key>hide_on_stow</Key>
                            <Type>Boolean</Type>
                            <Data>False</Data>
                          </Value>
                        </Data>
                      </Value>
                      <Value>
                        <Key>pickup_node</Key>
                        <Type>String</Type>
                        <Data></Data>
                      </Value>
                      <Value>
                        <Key>dropped_node</Key>
                        <Type>String</Type>
                        <Data></Data>
                      </Value>
                      <Value>
                        <Key>upgrades</Key>
                        <Type>Table</Type>
                        <Data>
                          <Value>
                            <Key>upgrades</Key>
                            <Type>Table</Type>
                            <Data></Data>
                          </Value>
                          <Value>
                            <Key>max_upgrades</Key>
                            <Type>Integer</Type>
                            <Data>2</Data>
                          </Value>
                          <Value>
                            <Key>upgrades_are_sequential</Key>
                            <Type>Boolean</Type>
                            <Data>True</Data>
                          </Value>
                        </Data>
                      </Value>
                      <Value>
                        <Key>hide_on_death</Key>
                        <Type>Boolean</Type>
                        <Data>False</Data>
                      </Value>
                      <Value>
                        <Key>bone_match_list</Key>
                        <Type>Table</Type>
                        <Data></Data>
                      </Value>
                    </Data>
                  </Value>
                </Data>
              </Value>
              <Value>
                <Key>rotation_marker</Key>
                <Type>String</Type>
                <Data></Data>
              </Value>
              <Value>
                <Key>receive_gore</Key>
                <Type>Boolean</Type>
                <Data>True</Data>
              </Value>
            </Data>
          </Value>
          <Value>
            <Key>action_data</Key>
            <Type>Table</Type>
            <Data>
              <Value>
                <Key>triggered_actions</Key>
                <Type>Table</Type>
                <Data></Data>
              </Value>
              <Value>
                <Key>lifetime_actions</Key>
                <Type>Table</Type>
                <Data>
                  <Value>
                    <Key>$ref</Key>
                    <Type>String</Type>
                    <Data>_base_templates\action_entry</Data>
                  </Value>
                  <Value>
                    <Key>commands</Key>
                    <Type>Table</Type>
                    <Data></Data>
                  </Value>
                </Data>
              </Value>
              <Value>
                <Key>while_deployed_actions</Key>
                <Type>Table</Type>
                <Data>
                  <Value>
                    <Key>$ref</Key>
                    <Type>String</Type>
                    <Data>_base_templates\action_entry</Data>
                  </Value>
                  <Value>
                    <Key>commands</Key>
                    <Type>Table</Type>
                    <Data></Data>
                  </Value>
                </Data>
              </Value>
              <Value>
                <Key>on_deploy_actions</Key>
                <Type>Table</Type>
                <Data>
                  <Value>
                    <Key>$ref</Key>
                    <Type>String</Type>
                    <Data>_base_templates\action_entry</Data>
                  </Value>
                  <Value>
                    <Key>commands</Key>
                    <Type>Table</Type>
                    <Data></Data>
                  </Value>
                </Data>
              </Value>
              <Value>
                <Key>on_stow_actions</Key>
                <Type>Table</Type>
                <Data>
                  <Value>
                    <Key>$ref</Key>
                    <Type>String</Type>
                    <Data>_base_templates\action_entry</Data>
                  </Value>
                  <Value>
                    <Key>commands</Key>
                    <Type>Table</Type>
                    <Data></Data>
                  </Value>
                </Data>
              </Value>
              <Value>
                <Key>on_tracked_projectile_destroyed_actions</Key>
                <Type>Table</Type>
                <Data>
                  <Value>
                    <Key>$ref</Key>
                    <Type>String</Type>
                    <Data>_base_templates\action_entry</Data>
                  </Value>
                  <Value>
                    <Key>commands</Key>
                    <Type>Table</Type>
                    <Data></Data>
                  </Value>
                </Data>
              </Value>
              <Value>
                <Key>on_pickup_actions</Key>
                <Type>Table</Type>
                <Data>
                  <Value>
                    <Key>$ref</Key>
                    <Type>String</Type>
                    <Data>_base_templates\action_entry</Data>
                  </Value>
                  <Value>
                    <Key>commands</Key>
                    <Type>Table</Type>
                    <Data></Data>
                  </Value>
                </Data>
              </Value>
            </Data>
          </Value>
          <Value>
            <Key>common_data</Key>
            <Type>Table</Type>
            <Data>
              <Value>
                <Key>slot</Key>
                <Type>String</Type>
                <Data>head</Data>
              </Value>
              <Value>
                <Key>ammunition</Key>
                <Type>Table</Type>
                <Data></Data>
              </Value>
              <Value>
                <Key>aim_limits</Key>
                <Type>Table</Type>
                <Data></Data>
              </Value>
              <Value>
                <Key>heat</Key>
                <Type>Table</Type>
                <Data></Data>
              </Value>
              <Value>
                <Key>helmet_override</Key>
                <Type>String</Type>
                <Data>no_helmet</Data>
              </Value>
              <Value>
                <Key>wargear_type</Key>
                <Type>Table</Type>
                <Data>
                  <Value>
                    <Key>$ref</Key>
                    <Type>String</Type>
                    <Data>wargear\wargear_type_weapon</Data>
                  </Value>
                  <Value>
                    <Key>weapon_type</Key>
                    <Type>String</Type>
                    <Data>weapon_1hand</Data>
                  </Value>
                </Data>
              </Value>
              <Value>
                <Key>audio_name</Key>
                <Type>String</Type>
                <Data></Data>
              </Value>
              <Value>
                <Key>ai_aim_limits</Key>
                <Type>Table</Type>
                <Data></Data>
              </Value>
              <Value>
                <Key>fire_mode_primary</Key>
                <Type>Table</Type>
                <Data>
                  <Value>
                    <Key>entry</Key>
                    <Type>Table</Type>
                    <Data>
                      <Value>
                        <Key>required_upgrade_name</Key>
                        <Type>Table</Type>
                        <Data>
                          <Value>
                            <Key>$ref</Key>
                            <Type>String</Type>
                            <Data>_base_templates\required_upgrade_name</Data>
                          </Value>
                          <Value>
                            <Key>required_list</Key>
                            <Type>Table</Type>
                            <Data></Data>
                          </Value>
                          <Value>
                            <Key>allowed_difficulty</Key>
                            <Type>Table</Type>
                            <Data></Data>
                          </Value>
                        </Data>
                      </Value>
                      <Value>
                        <Key>animation_set</Key>
                        <Type>String</Type>
                        <Data></Data>
                      </Value>
                      <Value>
                        <Key>upgrade_granted</Key>
                        <Type>String</Type>
                        <Data></Data>
                      </Value>
                    </Data>
                  </Value>
                </Data>
              </Value>
              <Value>
                <Key>unlock_info</Key>
                <Type>Table</Type>
                <Data>
                  <Value>
                    <Key>level_requirement</Key>
                    <Type>Table</Type>
                    <Data>
                      <Value>
                        <Key>$ref</Key>
                        <Type>String</Type>
                        <Data>prerequisites\level_requirement</Data>
                      </Value>
                      <Value>
                        <Key>level_required</Key>
                        <Type>Integer</Type>
                        <Data>1</Data>
                      </Value>
                    </Data>
                  </Value>
                </Data>
              </Value>
              <Value>
                <Key>jump_override</Key>
                <Type>Table</Type>
                <Data>
                  <Value>
                    <Key>$ref</Key>
                    <Type>String</Type>
                    <Data></Data>
                  </Value>
                </Data>
              </Value>
              <Value>
                <Key>audio_bank</Key>
                <Type>String</Type>
                <Data></Data>
              </Value>
              <Value>
                <Key>xp_reward</Key>
                <Type>Table</Type>
                <Data>
                  <Value>
                    <Key>$ref</Key>
                    <Type>String</Type>
                    <Data></Data>
                  </Value>
                </Data>
              </Value>
              <Value>
                <Key>fire_mode_secondary</Key>
                <Type>Table</Type>
                <Data>
                  <Value>
                    <Key>entry</Key>
                    <Type>Table</Type>
                    <Data>
                      <Value>
                        <Key>required_upgrade_name</Key>
                        <Type>Table</Type>
                        <Data>
                          <Value>
                            <Key>$ref</Key>
                            <Type>String</Type>
                            <Data>_base_templates\required_upgrade_name</Data>
                          </Value>
                          <Value>
                            <Key>required_list</Key>
                            <Type>Table</Type>
                            <Data></Data>
                          </Value>
                          <Value>
                            <Key>allowed_difficulty</Key>
                            <Type>Table</Type>
                            <Data></Data>
                          </Value>
                        </Data>
                      </Value>
                      <Value>
                        <Key>animation_set</Key>
                        <Type>String</Type>
                        <Data></Data>
                      </Value>
                      <Value>
                        <Key>upgrade_granted</Key>
                        <Type>String</Type>
                        <Data></Data>
                      </Value>
                    </Data>
                  </Value>
                </Data>
              </Value>
              <Value>
                <Key>custom_pickup_animation_event_name</Key>
                <Type>String</Type>
                <Data></Data>
              </Value>
              <Value>
                <Key>load_type</Key>
                <Type>String</Type>
                <Data>default</Data>
              </Value>
              <Value>
                <Key>customization_modifier_type</Key>
                <Type>String</Type>
                <Data>none</Data>
              </Value>
              <Value>
                <Key>disabled_slots</Key>
                <Type>Table</Type>
                <Data></Data>
              </Value>
              <Value>
                <Key>ai_aim_limits_while_mounted</Key>
                <Type>Table</Type>
                <Data></Data>
              </Value>
              <Value>
                <Key>aim_limits_while_mounted</Key>
                <Type>Table</Type>
                <Data></Data>
              </Value>
              <Value>
                <Key>allow_overheat_switch_weapon</Key>
                <Type>Boolean</Type>
                <Data>False</Data>
              </Value>
              <Value>
                <Key>allow_pickup_replenish_clip</Key>
                <Type>Boolean</Type>
                <Data>True</Data>
              </Value>
              <Value>
                <Key>hide_when_colliding_with_camera</Key>
                <Type>Boolean</Type>
                <Data>False</Data>
              </Value>
            </Data>
          </Value>
          <Value>
            <Key>ui_data</Key>
            <Type>Table</Type>
            <Data>
              <Value>
                <Key>icon_path</Key>
                <Type>String</Type>
                <Data></Data>
              </Value>
              <Value>
                <Key>name</Key>
                <Type>Integer</Type>
                <Data>0</Data>
              </Value>
              <Value>
                <Key>description</Key>
                <Type>Integer</Type>
                <Data>0</Data>
              </Value>
              <Value>
                <Key>reticule_type</Key>
                <Type>String</Type>
                <Data>bolter</Data>
              </Value>
              <Value>
                <Key>weapon_type</Key>
                <Type>String</Type>
                <Data></Data>
              </Value>
              <Value>
                <Key>action1_text</Key>
                <Type>Integer</Type>
                <Data>0</Data>
              </Value>
              <Value>
                <Key>action2_text</Key>
                <Type>Integer</Type>
                <Data>0</Data>
              </Value>
              <Value>
                <Key>action3_text</Key>
                <Type>Integer</Type>
                <Data>0</Data>
              </Value>
              <Value>
                <Key>long_description</Key>
                <Type>Integer</Type>
                <Data>0</Data>
              </Value>
              <Value>
                <Key>visible_in_customizer</Key>
                <Type>Boolean</Type>
                <Data>True</Data>
              </Value>
              <Value>
                <Key>stats</Key>
                <Type>Table</Type>
                <Data>
                  <Value>
                    <Key>$ref</Key>
                    <Type>String</Type>
                    <Data></Data>
                  </Value>
                </Data>
              </Value>
              <Value>
                <Key>killed_by_weapon_type</Key>
                <Type>String</Type>
                <Data></Data>
              </Value>
            </Data>
          </Value>
          <Value>
            <Key>camera_data</Key>
            <Type>Table</Type>
            <Data>
              <Value>
                <Key>entry</Key>
                <Type>Table</Type>
                <Data>
                  <Value>
                    <Key>required_upgrade_name</Key>
                    <Type>Table</Type>
                    <Data>
                      <Value>
                        <Key>$ref</Key>
                        <Type>String</Type>
                        <Data>_base_templates\required_upgrade_name</Data>
                      </Value>
                      <Value>
                        <Key>required_list</Key>
                        <Type>Table</Type>
                        <Data></Data>
                      </Value>
                      <Value>
                        <Key>allowed_difficulty</Key>
                        <Type>Table</Type>
                        <Data></Data>
                      </Value>
                    </Data>
                  </Value>
                  <Value>
                    <Key>camera_data</Key>
                    <Type>Table</Type>
                    <Data>
                      <Value>
                        <Key>$ref</Key>
                        <Type>String</Type>
                        <Data>wargear\wargear_camera_mode</Data>
                      </Value>
                      <Value>
                        <Key>auto_aim</Key>
                        <Type>String</Type>
                        <Data>auto_aim_info\default</Data>
                      </Value>
                      <Value>
                        <Key>auto_aim_zoom</Key>
                        <Type>String</Type>
                        <Data>auto_aim_info\default</Data>
                      </Value>
                      <Value>
                        <Key>aim_camera</Key>
                        <Type>String</Type>
                        <Data>camera_curve_settings\aim_default</Data>
                      </Value>
                      <Value>
                        <Key>exploration_camera</Key>
                        <Type>String</Type>
                        <Data>camera_curve_settings\exploration_default</Data>
                      </Value>
                      <Value>
                        <Key>melee_camera</Key>
                        <Type>String</Type>
                        <Data>camera_curve_settings\melee_default</Data>
                      </Value>
                      <Value>
                        <Key>exploration_crouch_camera</Key>
                        <Type>String</Type>
                        <Data>camera_curve_settings\exploration_crouch_default</Data>
                      </Value>
                      <Value>
                        <Key>aim_crouch_camera</Key>
                        <Type>String</Type>
                        <Data>camera_curve_settings\aim_crouch_default</Data>
                      </Value>
                      <Value>
                        <Key>zoom_levels</Key>
                        <Type>Table</Type>
                        <Data></Data>
                      </Value>
                      <Value>
                        <Key>jump_camera</Key>
                        <Type>String</Type>
                        <Data>camera_curve_settings\jump_pack_default</Data>
                      </Value>
                      <Value>
                        <Key>mounted_camera</Key>
                        <Type>String</Type>
                        <Data>camera_curve_settings\mounted_default</Data>
                      </Value>
                      <Value>
                        <Key>aim_jump_camera</Key>
                        <Type>String</Type>
                        <Data>camera_curve_settings\aim_default</Data>
                      </Value>
                    </Data>
                  </Value>
                </Data>
              </Value>
            </Data>
          </Value>
          <Value>
            <Key>ability_data</Key>
            <Type>Table</Type>
            <Data>
              <Value>
                <Key>$ref</Key>
                <Type>String</Type>
                <Data></Data>
              </Value>
            </Data>
          </Value>
        </Data>
      </Value>
    </RelicAttribute>
    Last edited by Khahla; 15th Sep 11 at 9:51 PM.

  29. #29
    I found out many interesting things:

    1. When you edit arm_left.attr_pc, arm_right.attr_pc, torso.attr_pc etc, it affect other models in game. Look at screenshoots:
    img5.imageshack.us/img5/2774/72489144.jpg
    img692.imageshack.us/img692/8357/18722276.jpg
    img526.imageshack.us/img526/6360/48630972.jpg
    img534.imageshack.us/img534/4527/81658422.jpg

    Only heads and backpacks works correctly, even if you edit them.

    2. Its not metter were you put those files. Game ignores the path given by you. Retrieves them from the files:
    img12.imageshack.us/img12/6964/okno1h.jpg
    (and mod is still working!).

    example of path (torso here):
    img196.imageshack.us/img196/6685/torsoh.jpg

    I tried to change something in vangard.attr_pc, but it doesnt work. Game always use those files (torso.attr_pc, arm_right.attr_pc etc) by reading the path inside of them.

    3. You don't have to change ingame and cinematic head for Titus. Ingame works well for both ;].
    Last edited by Crow; 17th Sep 11 at 12:57 AM.

  30. #30
    That is awsome that you can change the characters heads to include even the warboss but is it possible to load the armor of drogan or the other dude. On a related note, how does one put a spoiler tag on a post in this forum?
    His words are Wise his face is Beard!

  31. #31
    Does anyone know what the _pnt textures are for?

    Never mind, just found out this is a paint mask!

    ----------

    Kinda hit a brick wall on the librarian front..... Got it using the model as per above but can't get it to use any textures!
    Last edited by Tin; 16th Sep 11 at 12:53 PM.

  32. #32
    You'd probably have to import the mesh into max and assign the textures to it in the material editor.

  33. #33
    Nah its using a texture but not the correct one, even though I've got the bmat pointing to the right place. Tested by colouring fully and still got gray texture ingame

  34. #34
    Wow, my first reskin effort went well enough. Using Mangoose' Space Wolves folder as reference (easier to modify an existing mod than make one from scratch for a newb ^^; ) , I managed to get a Blood Ravens armor up:



    It worked well enough, though I got caught in a couple of snags in the process:

    1. For some reason, using sm_armour_mp_bloodravens_shldrr resulted in a right pauldron with no textures, which was odd. I had to use sm_armour_blood_ravens_shldrr, which worked oddly enough.
    2. Since I'm modding from Mangoose' files, that Space Wolves belt is still there, and I don't know how to remove it (I'm a modding newb, forgive my ignorance). ^^; It's a minor snag though, since the armor works very well as it is.

    Edit: Managed to combine NastyNoodle's Blood Raven recolor with this reskin to make both the Chainsword and the Jump Pack a matching red color:



    Although I found another problem with this particular method of modding, which looks like it doesn't just apply to Leandros and Sidonus:



    The march of the Disembodied Marines!
    Last edited by LoweGear; 16th Sep 11 at 7:42 PM.

  35. #35
    Crow is correct (at least the details I can understand) - Not only does it make Sidonus and Leandros invisible except for head/helmet/backpack, it does the same for all CSMs it seems. Somehow heads and backpacks are fine, though.

  36. #36
    Good news, it seems I found the way to fix that problem (look at my screenshoots in post 29). First of all, I wanna explain to you, how it works:

    1. Create that path in game folder: preview/sim/attributes/instances/wargear/wargear/race_marine/armour

    2. Copy there two folders. Titus armor (what is: powerarmour_basic_upres), and any other armor, for example: powerarmour_black_templar (but choose only ONE! There must be two of them in folder, no more). Both this armors (and even more) you can find of course in package wargear.oppc
    screen:
    img11.imageshack.us/img11/2306/88861439.jpg

    3. Run game, everything should be OK (normal, no changes at all).

    4. Now exit game and delete the folder powerarmour_basic_upres. Run game again (only powerarmour_black_templar should be now in folder).
    screen:
    img850.imageshack.us/img850/6560/93805227.jpg

    What you see?
    screen:
    img831.imageshack.us/img831/9386/41060904.jpg

    Titus is only head, backpack and weapons! But why? Here we go...

    =============================================================================================================
    It seems that game has it own files priority:

    1. It is trying to load files from packages (here: wargear.oppc).

    2. If game will find any files in the unpacked folders (in sim/attributes/instances/wargear/wargear directory), it will automatically switch to "unpacked mode". This means that for ALL other armors (and weapons, backpacks etc), game will also try to load files from unpacked folders, not from packages! And since they are missing, all marine models will be displayed incorrectly...

    So this is the problem. How to fix it? Quite easily:

    Just copy there ALL armors files from unpacked wargear.oppc (into right places). I mean sim/attributes/instances/wargear/wargear/race_marine/armour and sim/attributes/instances/wargear/wargear/race_chaos/armour.
    screens:
    img36.imageshack.us/img36/3489/76932918.jpg
    img685.imageshack.us/img685/3720/94652571.jpg

    I'm not sure whether the game uses them all, but it is only a few KB, so...

    Thats all! The game will successfully load all models.
    Last edited by Crow; 17th Sep 11 at 9:39 AM.

  37. #37
    Thanks for the tut, been working on my own chapter atm. Still unfinished but ive hit a problem that i cant seem to fix. Was hoping for some pointers from more experienced modders.

    Managed to do the helmet no probs.
    imageshack.us/photo/my-images/855/unled1eok.png/

    Ive got the relic backpack into the game and it works up to a point, the problem is that the texture seems to be wrapping round incorrectly, it shouldnt do as i have followed all the same procedures for everything else ive done, im at a loss to understand the reason for it.

    imageshack.us/photo/my-images/842/unledpcy.png/

  38. #38
    I'm getting this with all the multiplayer bits I'm putting in, trying to figure it out!

  39. #39
    Quote Originally Posted by Crow View Post
    Good news, it seems I found the way to fix that problem (look at my screenshoots in post 29). First of all, I wanna explain to you, how it works:
    Hmmm I can understand the fix, but unfortunately my tools aren't cooperating with me - I seem to have a problem making Santos' smoppc v0.2.0 work for instance, which means I don't have quick access to the proper directories (and hence why I'm only performing mods by taking existing ones and changing them)

    Would it be possible to zip the "fix" files in their own preview folder that we can download and then simply integrate into our own preview folders for a "quickfix"?

  40. #40
    @Tin:

    Maybe you're having the same trouble as cobaltlotus(posts 5 and 7)? He had the same rocky texture on the Mk 8 armor as you had on the librarian armor.

  41. #41
    This actually helped thanks!

    I've sorted it now but unsure how I've actually done it haha.

    Don't quote me on this.... but I think the way I've done it is:

    Edit the attr_pc to point to the librarian model
    Copy over the torso.bmat file from basic_upres
    edit the torso.bmat to point to the lib textures
    rename to lib_torso.bmat

    Will check this to make sure its right when I edit the shoulder

  42. #42
    LoweGear - Whats your problem with that tool? It doesn't work, or you don't know how to use it?

    Te easiest way to do this is:

    1. Make new folder.
    2. Put there Santos tool.
    3. Copy there also packages.xml.bin from your game dir\data\config (without any subfolders).
    4. Put there any file(s) with OPPC ext. (should be at least 3 files now, in one folder).
    5. Run the tool (double click ;P), package should be unpacked with all paths.

    If will not work, ill post those files, to fix your problem.

  43. #43
    Aaaaah. Santos' instructions for it wasn't quite so clear for a newbie like me (he said "works like before", so I thought you put it into packages and ran it like v0.1.0 ) ^^;; Yours is definitely far easier to understand.

    Edit:

    Yup, most definitely works:



    Now I can post my Blood Ravens reskin without any problem:



    This particular mod also reskins the Chainsword into the Golden Relic Chainsword.

    Download Blood Ravens w/ Golden Relic Chainsword here

    Managed to remove the loincloth, and use the proper Blood Raven DLC helmet with forehead aquila.

    I am still wondering where the files for that black and red right pauldron on that Blood Raven veteran you see in the campaign is...
    Last edited by LoweGear; 18th Sep 11 at 9:18 AM.

  44. #44
    Should be sm_armour_corvus_shldrr (That's the oppc file where it's located at.)

  45. #45
    Awesome job, Crow. I had thought it was an issue of art assets, but great job finding out it was files priority with respect to the attr_pc files. Also it's great that you fixed this method instead of us having to find a different method or go back to texture swapping.

    Props =D

  46. #46
    Quote Originally Posted by Mangoose
    Open up wargear\race_marine\heads\in-game\titus.attr_pc. Now, in the Data strings for "visual name" and "visual package", replace "sm_armour_basic_upres_helmet" with your desired helmet. "sm_armour_blood_ravens_helmet" and "sm_armour_mp_spacewolves_helmet" have worked for me so far.
    This kinda confused the hell outta me because in my wargear\race_marine\heads\in-game\titus.attr_pc the data string for "visual name" etc shows "ingame_titus", not "sm_armour_basic_upres_helmet". Am I looking at the right file?

    ----------

    Ok, if I install your spacewolves files, it works fine. If I modify the titus.attr_pc (convert to xml and back) and put in sm_mk6beakie_head to replace sm_armour_mp_spacewolves_helmet I get a BugSplat every time. Is it something to do with vanguard.attr_pc? Sorry for the noobness :/

  47. #47
    Modify titus.attr_pc, and put there: sm_armour_mp_mk6_helmet to get mk6 helmet.

  48. #48
    Sorry, it should be "ingame_titus."

    If you want a beakie helm, you should be using "sm_armour_mp_mk6_helmet." Unpack (using Santo's tool) and check the art assets to get the names of any other armor pieces you want. Or open up "sm_mk6beakie_head.xml" in the multiplayer wargear attrib folder and take a look at which model it is pointing to.

  49. #49
    ohh doh I was using head instead of helmet, thanks I'll give it a shot

  50. #50
    Quote Originally Posted by Lefty View Post
    Should be sm_armour_corvus_shldrr (That's the oppc file where it's located at.)
    Awesome, thanks.

    And now that I know where to find the parts, here's an alternate version of the Blood Ravens skin with veteran helm and shoulder aquila:



    Download Here

    Includes Golden Relic Chainsword like the last one.

    Edit 2:

    Now completed my other reskin work, the Black Templars:



    Download Black Templars here

    Like my other files it comes with the Golden Relic Chainsword, and also a custom black and silver Power Sword to replace the Power Axe.
    Last edited by LoweGear; 18th Sep 11 at 9:24 AM.

Page 1 of 2 12 LastLast

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

     

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •