Jump to content

Teancum

Members
  • Posts

    547
  • Joined

  • Last visited

Everything posted by Teancum

  1. Probably a ways off, but it'd be great to have a Kyle customization menu using JA's species setup. I mean who wears the same clothes for days on end? I bet Kyle smells horrible.
  2. Great stuff, man. I'm always looking for more customization options and this one falls into the must-have category
  3. Probably the fastest way would be to set a bunch of enemies you usually use to CLASS_REBORN or CLASS_SABER_DROID and see what you come up with. On my end the issue is fixed now so I probably won't bother further. Good luck, though.
  4. I can't speak for everyone else on the saber turn-on bug, but in my case it was the Phase I Dark Troopers that caused it. They were set to CLASS_GALAK_MECH. Once I changed it to CLASS_SABER_DROID the crashing stopped. Perhaps this is an issue with non-jedi classes and the saber?
  5. Gorgeous! Well, in as much of a way as the Tatooine Stalker can be. Well done.
  6. Sorry. You have to understand though that for every person willing to work on skins there are literally dozens and dozens of requests. And usually people working on skins already have ones that they want to work on. We could always use another skinner if you want to give it a try.
  7. LOTS OF UPDATES: Game codeMod now runs directly from the new OpenJK-based exe. No command line shortcuts or .bat filesNew icon for the game, integrated into the exeMortar Gun code completeAssault Cannon code mostly completeFusion Cutter will not work in Q3 engine without additional trigonometry/calculus functions (long story). So for now it'll stay a reskinned DEMP-2MapsLevel 7, Ramsees Hed, is now back to where I had it before the PK3 crash. It only needs objectivesLevel 8, Robotics FacilityFinished conveyor system. Belts animate and it will push the player alongArea where charges are set is now complete. It's simple structurally, but it's amazing what a little lighting can do (see pics below)A Rocket Trooper is there in place of a Phase II Dark Trooper, and I must say it fits very well. Honestly a helmet swap, slight reskin and some additional health and I can call it good. It's more like the "skinny" Phase II troopers you see in Empire At War and some of the Star Wars art, but I'm okay with that
  8. Yeah, but I'll still need to use the base path as well. ***EDIT*** Turns out I just do something like: fs_basegame = Cvar_Get ("fs_basegame", "./dfmod", CVAR_INIT );
  9. Thanks. I'm actually talking about hard coding it into the game so I don't have to do a command line/shortcut file.
  10. I'm trying to wrap up all the main code for the .exe/.dll, and there's one obstacle I need to conquer. I need it to read /GameData/dfmod after reading from/GameData/base. I thought of remapping the fs_cdpath cvar, but didn't know what trouble that might cause. I thought I'd check in to see if this has been done before. I don't want to reinvent the wheel here.
  11. Well, yes. But at the time nearly every other big game had it all merged into one executable. I remember being baffled when I first brought Elite Force home and it was split. So I suppose more specifically I don't understand why those teams didn't merge the code. Probably came down to time and money like everything else in business does.
  12. Wow, I never would have guessed it to be in the effects files. Dunno why. Thanks, @@AshuraDX
  13. I don't know what's going on, but the Dark Forces mod has some really wonky stuff with sounds. Firing the concussion lets loose the disruptor's sound, and other sounds I can't replace, like the flechette's firing sound. Am I missing something obvious?
  14. Yep, that thread talks about GIMP's converter. I linked to it for more complete information. On a different note, I think I'm going to just leave inventory as-is. The Gas Mask was only used twice in the original game, and in one place you didn't even need it. The Stormtrooper Disguise sounds fun, but doesn't add all that much. More than anything else though it's just a lot of work to get everything I can done. Whatever I can do to "trim the fat" I'll just have to. It basically trims code edits to what's left of the weaponry and adding the inventory scrolling ability back in JA.
  15. Agreed. It's always perplexed me why they were split in the first place. Two different teams back when the worked on Elite Force?
  16. Just a thought, but is anyone else interested in more Jaden voice variants? I know people did some modulations of the default male voice for a Rodian and Kel-dor soundset, but the game does not support them. I had thought about plugging that out into a select case to have more variants of g_sex that could double as voiceover sections. I'd be happy to write the code, but I didn't know if anyone else was interested. Here's the offending code from Q3_interface.cpp. You can see it's an if statement for the "f" g_sex variable, but this could easily be turned into a select case with multiple other letters for alien species. /* ============= G_AddSexToPlayerString Take any string, look for "jaden_male/" replace with "jaden_fmle/" based on "sex" And: Take any string, look for "/mr_" replace with "/ms_" based on "sex" returns qtrue if changed to ms ============= */ static qboolean G_AddSexToPlayerString ( char *string, qboolean qDoBoth ) { char *start; if VALIDSTRING( string ) { if ( g_sex->string[0] == 'f' ) { start = strstr( string, "jaden_male/" ); if ( start != NULL ) { strncpy( start, "jaden_fmle", 10 ); return qtrue; } else { start = strrchr( string, '/' ); //get the last slash before the wav if (start != NULL) { if (!strncmp( start, "/mr_", 4) ) { if (qDoBoth) { //we want to change mr to ms start[2] = 's'; //change mr to ms return qtrue; } else { //IF qDoBoth return qfalse; //don't want this one } } } //IF found slash } } //IF Female else { //i'm male start = strrchr( string, '/' ); //get the last slash before the wav if (start != NULL) { if (!strncmp( start, "/ms_", 4) ) { return qfalse; //don't want this one } } //IF found slash } } //if VALIDSTRING return qtrue; } (Sorry to hijack the thread, JK:E seemed like the best candidate for a feature like this.) Also, would it be possible to have a toggle for Saber Throw that allows a player to choose whether it's bound as a force power or to secondary saber fire?
  17. Found the icon. The .c image dump was surprising. For those who haven't done it before, this post (http://www.keil.com/forum/23786/bitmap-image-conversion/ ) should help. FYI it's line #72 in /code/qcommon/q_shared.h that has the window title.
  18. I've decided to shelve the Fusion Cutter. Even using AngleVectors() then VectorScale() to get the right-angle vector relative to the player, the move it out each time the gun is fired makes no difference. The projectile switches sides from right to left as you rotate the player and fire. It's not worth the time to write something totally custom, and would take a lot of trigonometry/calc to do so. ***EDIT*** This bit of code from g_weapon.cpp might hold a clue. It seems to deal with each axis of the vector separately rather than trying to do so all at once. Posting it here mostly so I remember to look at it later. Additional comments have been added by me // Muzzle point table... vec3_t WP_MuzzlePoint[WP_NUM_WEAPONS] = {// Fwd, right, up. {0, 0, 0 }, // WP_NONE, {8 , 16, 0 }, // WP_SABER, {12, 6, -6 }, // WP_BLASTER_PISTOL, {12, 6, -6 }, // WP_BLASTER, {12, 6, -6 }, // WP_DISRUPTOR, {12, 2, -6 }, // WP_BOWCASTER, {12, 4.5, -6 }, // WP_REPEATER, {12, 6, -6 }, // WP_DEMP2, {12, 6, -6 }, // WP_FLECHETTE, {12, 8, -4 }, // WP_ROCKET_LAUNCHER, {12, 0, -4 }, // WP_THERMAL, {12, 0, -10 }, // WP_TRIP_MINE, {12, 0, -4 }, // WP_DET_PACK, {12, 8, -4 }, // WP_CONCUSSION, {0 , 8, 0 }, // WP_MELEE, {0, 0, 0 }, // WP_ATST_MAIN, {0, 0, 0 }, // WP_ATST_SIDE, {0 , 8, 0 }, // WP_STUN_BATON, {12, 6, -6 }, // WP_BRYAR_PISTOL, }; void WP_RocketLock( gentity_t *ent, float lockDist ) { // Not really a charge weapon, but we still want to delay fire until the button comes up so that we can // implement our alt-fire locking stuff vec3_t ang; trace_t tr; vec3_t muzzleOffPoint, muzzlePoint, forwardVec, right, up; AngleVectors( ent->client->ps.viewangles, forwardVec, right, up ); //Get the forward, right and up axes to form a vector based on our angle AngleVectors(ent->client->ps.viewangles, ang, NULL, NULL); //do it again, but save only the forward as "ang" VectorCopy( ent->client->ps.origin, muzzlePoint ); //copy the player's origin as "muzzlePoint" VectorCopy(WP_MuzzlePoint[WP_ROCKET_LAUNCHER], muzzleOffPoint); //Copy the muzzle point from the table above as "muzzleOffPoint" VectorMA(muzzlePoint, muzzleOffPoint[0], forwardVec, muzzlePoint); //forwardVec * the forward vector from muzzleOffPoint, add muzzlePoint, save as muzzlePoint VectorMA(muzzlePoint, muzzleOffPoint[1], right, muzzlePoint); //do the same process for the right vector muzzlePoint[2] += ent->client->ps.viewheight + muzzleOffPoint[2]; //for the up vector, take the player's viewheight + the up vector from muzzleOffPoint ang[0] = muzzlePoint[0] + ang[0]*lockDist; ang[1] = muzzlePoint[1] + ang[1]*lockDist; ang[2] = muzzlePoint[2] + ang[2]*lockDist; gi.trace(&tr, muzzlePoint, NULL, NULL, ang, ent->client->ps.clientNum, MASK_PLAYERSOLID, (EG2_Collision)0, 0); if (tr.fraction != 1 && tr.entityNum < ENTITYNUM_NONE && tr.entityNum != ent->client->ps.clientNum) { gentity_t *bgEnt = &g_entities[tr.entityNum]; if ( bgEnt && (bgEnt->s.powerups&PW_CLOAKED) ) { ent->client->rocketLockIndex = ENTITYNUM_NONE; ent->client->rocketLockTime = 0; } else if (bgEnt && bgEnt->s.eType == ET_PLAYER ) { if (ent->client->rocketLockIndex == ENTITYNUM_NONE) { ent->client->rocketLockIndex = tr.entityNum; ent->client->rocketLockTime = level.time; } else if (ent->client->rocketLockIndex != tr.entityNum && ent->client->rocketTargetTime < level.time) { ent->client->rocketLockIndex = tr.entityNum; ent->client->rocketLockTime = level.time; } else if (ent->client->rocketLockIndex == tr.entityNum) { if (ent->client->rocketLockTime == -1) { ent->client->rocketLockTime = ent->client->rocketLastValidTime; } } if (ent->client->rocketLockIndex == tr.entityNum) { ent->client->rocketTargetTime = level.time + 500; } } } else if (ent->client->rocketTargetTime < level.time) { ent->client->rocketLockIndex = ENTITYNUM_NONE; ent->client->rocketLockTime = 0; } else { if (ent->client->rocketLockTime != -1) { ent->client->rocketLastValidTime = ent->client->rocketLockTime; } ent->client->rocketLockTime = -1; } }
  19. Back up and running. I'm loving running this on a custom OpenJK build. I even implemented a Dark Forces game icon into the game engine. @@ensiform or @@eezstreet -- do you know why it defaults back to the OpenJK icon once the game boots up (windowed mode)? Also, any idea how to change the windowed text from OpenJK (SP) to something else? I thought both would be in the resources, but I can't seem to find them.
  20. Yeah, I'm gonna start building daily backups on my network drives. Also, I'm going to run open-folder instead of a PK3 until the build is done. Since the files are back up it should only take me a few hours to get most things back up and running. In the end I figure I actually only lost my UI customization changes, which is only a few hours of work given that I remember how I did everything.
  21. Power failure while updating the file. Luckily I still have all my map sources and source code for the DLL. I lost all the UI updates and character updates I did, though, and I can't do anything until the files come back online unfortunately.
  22. Well wonderful. I just lost tons of work due to my PK3 becoming corrupted. Talk about a motivation killer. I don't have a backup of the original six-level demo and the downloads are down, too. Ugh.....
×
×
  • Create New...