Posts | ||
---|---|---|
DOOM 3 Modding Question: Setting A Custom Head For Mars City and Modifying Monster Behavior For The Dig | Locked | |
Thread Options | ||
Mar 29 2016 Anchor | ||
I'm wondering if anyone knows a way to change the head that is loaded for the player on mars_city1 as I would like to give the doomguy back his helmet and it's basically finished except for this map which is before he gets his equipment. Changing the head for the player affects all maps, but mars_city1 uses a different unarmored marine body so I'm wondering if I could also set a custom head for this map? |
||
Mar 31 2016 Anchor | ||
Regarding the head issue, search for "model marscity_head_player" in "def\map_marscity.def". I believe that you will find your way from there. You can also look for all occurrences of "head_player" in "def\heads.def" and "def\player.def". About the spawning issue, search for "spawner" in "maps\game\hellhole.map". There are 4 occurrences there, each related to an entity that spawns an imp or a maggot. A brief explanation of "spawner" can be found (in comments) in "def\monster_default.def". The code that actually drives the spawners seems to be the function "state_Spawner" in "script\ai_monster_base.script" (there is another "state_Spawner" in "script\ai_character.script", but I think this one does not apply to your case). Edited by: fva |
||
Mar 31 2016 Anchor | ||
The map_*.def files are definitions for special events in those maps such as the cinematics and npc models and heads, correct? Alright, changed spawner behavior so that part is done. Thanks for helping me solve half the puzzle so far. Edited by: deuxsonic |
||
Mar 31 2016 Anchor | ||
Got it, you want a different head just for mars city 1. Unfortunately, there seems to be no way to do it using only scripting. You will probably have to modify the game dll to accomplish this task. |
||
Mar 31 2016 Anchor | ||
The SDK builds the game DLL, correct? What would need changed? |
||
Mar 31 2016 Anchor | ||
you mean like this? -- Go play some Quake 2: q2server.fuzzylogicinc.com |
||
Mar 31 2016 Anchor | ||
Yes, that is exactly what I'm trying to fix. For every other map in the game, having def_head set to head_player_helmet is not a problem. For mars_city1 though, he doesn't have his gear yet so it is the one exception to this I need. It's frustrating because it feels like such a tiny change and yet there is seemingly nowhere to make an exception for this map, to tell the game to use his head for just that map instead of the helmet. Now I'm hearing it will likely require a change to the game itself, and although I can build the game's DLL from the SDK, I have no clue what to modify in the game's code to get the result that I want. Edited by: deuxsonic |
||
Apr 1 2016 Anchor | ||
I just replaced the entitydef player_doommarine's "def_head" with "head_marine_helmet." Maybe "head_player_helmet" is difference? -- Go play some Quake 2: q2server.fuzzylogicinc.com |
||
Apr 1 2016 Anchor | ||
Yes, I've changed the head, but I need an exception for mars_city1. |
||
Apr 1 2016 Anchor | ||
Oh, I read it that you wanted it in mars_city1. Yup, doesn't look like the code allows you to specify the head except by the player. Looks like you can change the skin though. So, a possible solution: put both head models in the same .md5mesh/anim files & use a skin to hide the one you don't want. -- Go play some Quake 2: q2server.fuzzylogicinc.com |
||
Apr 1 2016 Anchor | ||
This is a good idea. If you manage to do it, you will not need to modify any native code.
Yes, you can use the SDK code to build the game dll. Or you can go open source instead, and use the "Doom 3 GPL source release" (here) or one of its forks (like dhewm3). If you choose the open source route, I think that you will also need to include the doom 3 engine (the one that you will compile) along with your mod (this should solve any licensing concerns). People will then run your mod using the included engine. As for what needs to be changed, I think that the simplest solution is to modify the function "idActor::SetupHead" in "neo\game\Actor.cpp". For instance, the line
can be replaced by
This ensures that "head_player" will be used in mars city 1. In all other maps, the model specified via "def_head" in "def\player.def" will be used. Edited by: fva |
||
Apr 1 2016 Anchor | ||
All he'd need to do is use the SDK (game) part of the GPL code. The SDK game dll code included with the GPL code works with the retail D3 edition when compiled. -- Go play some Quake 2: q2server.fuzzylogicinc.com |
||
Apr 1 2016 Anchor | ||
Inserted code into the SDK and it works. Initially it didn't seem to work but I found the game was overwriting the new copy of the DLL. I did think of going the skin route, but I couldn't get it to work via skins. Then again I'm in above my head on this. Thanks so much for your help you guys. I knew there had to be someone out there who still knew all of this well enough to help, but I didn't know if I was going to get in touch with them. Edited by: deuxsonic |
||
Apr 2 2016 Anchor | ||
The game takes whatever dll/so is in the game##.pk4 & overwrites whatever is in the game folder, so put the dll in a pk4 and you're all set. -- Go play some Quake 2: q2server.fuzzylogicinc.com |
Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.