Fallout 1 mod FO1 to FO2 conversion, for real

Discussion in 'Fallout General Modding' started by Dude101, Nov 27, 2007.

  1. NinjaAssassin

    NinjaAssassin First time out of the vault

    Aug 23, 2004
    I'll be here :D I agree it makes sense to port FIXT rather than the original game.
     
  2. Nineeva

    Nineeva First time out of the vault

    Aug 20, 2009
    I said I would help out quite some time back but then thought what I could actually do. Well I've got a little bit of free time these coming days.

    I wouldn't mind helping out with the map a bit

    http://falloutmods.wikia.com/wiki/FO2_Worldmap_Editor

    I found this on the falloutmods wikia and looks like a good tool for quickly doing the map. I'm no expert on this but I understand fallout 2 works fairly well. If someone could send me the files I'd need to get with this I'd give it a crack.

    I'm guessing I'd just use the fallout 1 version for encounters as a reference and work from that right?

    I live in Russia (though odly enough I'm English) so my reply times might be slow.
     
  3. Darek

    Darek is currently unavailable

    Jan 7, 2008
    Yes, but if you thought you could just transfer stuff from worldmap.txt in Fallout 1 to Fallout 2, you will be disappointed.
    Fallout 1 has no worldmap.txt.
    Basically, the F1 engine decides when you get an encounter and based on your current location sets you up with a map.
    Not sure of the exact formula for that.
    Anyway, the Map script of that map will then, again based on your current location, set up the encounter.

    So you will have to be able to first understand the Fallout 1 map scripts, and then be able to translate that to the format of Fallout 2s worldmap.txt.

    I started on the worldmap but got fed up. The tile info is done, the encounter tables are far from done, more like place holders, and the encounters are just listed and needs to be completely filled in.http://hem.bredband.net/darek1/worldmap.txt


    If you wonder what the scripts may look like, here's an example:

    North_table have random 6 encounters + a bounty hunters encounter. First the scripts decides which encounter you get here:
    Code:
    			while(Encounter_Num == 0) do begin
    				Encounter_Num := random(1, 6) + random(1, 6) + random(1, 6);
    				if (get_critter_stat(dude_obj, 6) > 8) then begin
    					Encounter_Num := Encounter_Num + 2;
    				end
    				else begin
    					if (get_critter_stat(dude_obj, 6) > 6) then begin
    						Encounter_Num := Encounter_Num + 1;
    					end
    					else begin
    						if (get_critter_stat(dude_obj, 6) < 3) then begin
    							Encounter_Num := Encounter_Num - 1;
    						end
    					end
    				end
    				if ((global_var(123) != 3) and (global_var(158) > 2) and random(0, 1)) then begin
    					Encounter_Num := 7;
    				end
    				else begin
    					if (Encounter_Num <= 3) then begin
    						Encounter_Num := 1;
    					end
    					else begin
    						if (Encounter_Num <= 5) then begin
    							Encounter_Num := 2;
    						end
    						else begin
    							if (Encounter_Num <= 8) then begin
    								Encounter_Num := 3;
    							end
    							else begin
    								if (Encounter_Num <= 12) then begin
    									Encounter_Num := 4;
    								end
    								else begin
    									if (Encounter_Num <= 15) then begin
    										Encounter_Num := 5;
    									end
    									else begin
    										Encounter_Num := 6;
    									end
    								end
    							end
    						end
    					end
    				end
    That was not the full code but should be good enough as an example. Later the script checks "Encounter_Num" and if it's 1 you get the North1 encounter.

    Code:
    procedure North1
    begin
    	display_msg(message_str(112, 104));
    	Tot_Critter_A := random(3, 6);
    	Tot_Critter_B := random(4, 8);
    	Outer_ring := (get_critter_stat(dude_obj, 1) / 2) + 6;
    	Inner_ring := (get_critter_stat(dude_obj, 1) / 2) + 4;
    	group_angle := random(0, 5);
    	Critter_type := 16777227;
    	Critter_script := 12;
    	while(Tot_Critter_A) do begin
    		Critter_direction := group_angle + (random(0, 2) - 1);
    		while(Critter_direction < 0) do begin
    			Critter_direction := Critter_direction + 6;
    		end
    		if (Critter_direction > 5) then begin
    			Critter_direction := Critter_direction % 6;
    		end
    		call Place_critter;
    		if (group_angle == 0) then begin
    			Critter_direction := 3;
    		end
    		else begin
    			if (group_angle == 1) then begin
    				Critter_direction := 4;
    			end
    			else begin
    				if (group_angle == 2) then begin
    					Critter_direction := 5;
    				end
    				else begin
    					if (group_angle == 3) then begin
    						Critter_direction := 0;
    					end
    					else begin
    						if (group_angle == 4) then begin
    							Critter_direction := 1;
    						end
    						else begin
    							if (group_angle == 5) then begin
    								Critter_direction := 2;
    							end
    						end
    					end
    				end
    			end
    		end
    		if (random(0, 2) == 0) then begin
    			Critter_direction := Critter_direction + (random(0, 2) - 1);
    			while(Critter_direction < 0) do begin
    				Critter_direction := Critter_direction + 6;
    			end
    			if (Critter_direction > 5) then begin
    				Critter_direction := Critter_direction % 6;
    			end
    		end
    		anim(Critter, 1000, Critter_direction);
    		Tot_Critter_A := Tot_Critter_A - 1;
    	end
    	victim := Critter;
    	Critter_script := 222;
    	if (group_angle == 0) then begin
    		group_angle := 3;
    	end
    	else begin
    		if (group_angle == 1) then begin
    			group_angle := 4;
    		end
    		else begin
    			if (group_angle == 2) then begin
    				group_angle := 5;
    			end
    			else begin
    				if (group_angle == 3) then begin
    					group_angle := 0;
    				end
    				else begin
    					if (group_angle == 4) then begin
    						group_angle := 1;
    					end
    					else begin
    						if (group_angle == 5) then begin
    							group_angle := 2;
    						end
    					end
    				end
    			end
    		end
    	end
    	while(Tot_Critter_B) do begin
    		if (random(0, 3) == 3) then begin
    			Critter_type := 16777226;
    		end
    		else begin
    			Critter_type := 16777378;
    		end
    		Critter_direction := group_angle + (random(0, 2) - 1);
    		while(Critter_direction < 0) do begin
    			Critter_direction := Critter_direction + 6;
    		end
    		if (Critter_direction > 5) then begin
    			Critter_direction := Critter_direction % 6;
    		end
    		call Place_critter;
    		if (group_angle == 0) then begin
    			Critter_direction := 3;
    		end
    		else begin
    			if (group_angle == 1) then begin
    				Critter_direction := 4;
    			end
    			else begin
    				if (group_angle == 2) then begin
    					Critter_direction := 5;
    				end
    				else begin
    					if (group_angle == 3) then begin
    						Critter_direction := 0;
    					end
    					else begin
    						if (group_angle == 4) then begin
    							Critter_direction := 1;
    						end
    						else begin
    							if (group_angle == 5) then begin
    								Critter_direction := 2;
    							end
    						end
    					end
    				end
    			end
    		end
    		if (random(0, 2) == 0) then begin
    			Critter_direction := Critter_direction + (random(0, 2) - 1);
    			while(Critter_direction < 0) do begin
    				Critter_direction := Critter_direction + 6;
    			end
    			if (Critter_direction > 5) then begin
    				Critter_direction := Critter_direction % 6;
    			end
    		end
    		anim(Critter, 1000, Critter_direction);
    		Tot_Critter_B := Tot_Critter_B - 1;
    	end
    	attack_setup(dude_obj, victim);
    	attack_setup(dude_obj, Critter);
    	attack_setup(Critter, victim);
    	set_global_var(288, 1);
    	call stranger;
    end
    That code sets up a fight between radscorpions and mole rats.

    Also, you may want to check out this thread, where we talk about the worldmap and Cubik2k links to an improved version of his worldmap editor.
     
  4. SorgFall

    SorgFall Still Mildly Glowing

    Jul 2, 2007
    Darek

    Darek, are you a modder yourself?
     
  5. coldroll

    coldroll Fuck Bethesda

    Jul 4, 2012
    Anything still happening with this?
     
  6. Sduibek

    Sduibek Creator of Fallout Fixt Moderator Modder

    Oct 27, 2010
    Not from me. I've been putting all my Fallout time into FIXT. Which still has tons of stuff to fix and work to do. But, now that it has a major customizable release, I guess I should probably focus on this now instead.
     
  7. JimTheDinosaur

    JimTheDinosaur Vault Dweller
    Modder

    Mar 17, 2013
    Hear, hear! Is the only fundamental thing (as in, not stuff like post-it notes and squiggly line traveling) left the random encounters? Or is there still some other stuff?
     
  8. Oppen

    Oppen FIXT n°1 fan

    Dec 26, 2011
    About this, now I feel much more confident on my coding skills, so if there's anything a C programmer (maybe C++, but I only read about and didn't actually code) can help with, count me in.
     
  9. Darek

    Darek is currently unavailable

    Jan 7, 2008
    Re: Darek

    I guess it depends on how you define a modder. I haven't put anything together by myself if that's what you mean.
     
  10. Sduibek

    Sduibek Creator of Fallout Fixt Moderator Modder

    Oct 27, 2010
    Oppen, maybe. I'll let you know :)

    I am hoping that the engine conversion turns FIXT into a true group project, because having team members for scripting or mapping or whatever would be awesome :)


    Jim-- why are you looking forward to it so much, I thought you were a Fallout 2 guy ;) And I don't know how much work is left, I'll try to calculate an estimate.

    If I decide to be "lazy" and just make Water Chip Timer a hack job and forget about Ask Me About for the time being, that means really all that needs to be done is elevators and random encounters and AI.
     
  11. Sduibek

    Sduibek Creator of Fallout Fixt Moderator Modder

    Oct 27, 2010
    Which version of Fallout2.exs should I use? RP, UP, Megamod, etc.
     
  12. JimTheDinosaur

    JimTheDinosaur Vault Dweller
    Modder

    Mar 17, 2013
    Heh, close call though. Both of them are my favorite games of all time anyway by a long shot. One of the main advantages of FO2, especially now with sfall, is with mechanics, so damn right I'm excited.

    The elevator problem I'd never heard about, what's wrong with using sfall's Elevators.ini option?

    What's the AI issue, FO1 doesn't have an AI.txt? How does it handle AI then?
     
  13. Sduibek

    Sduibek Creator of Fallout Fixt Moderator Modder

    Oct 27, 2010
    Wait, elevators are fine, for some reason I keep forgetting that Darek sent me the files for it.

    AI doesn't work at all. Needs fields filed in that Fallout didn't have.

    One of the reasons I've been putting off this project is because it feels so daunting to me... I'll have to learn a new scripting language (Sfall) and int/ssl scripting setup is different in FO2 so I kind of have to start over and learn everything again which sucks.
     
  14. JimTheDinosaur

    JimTheDinosaur Vault Dweller
    Modder

    Mar 17, 2013
    Chief, if you don't feel like it you don't have to you know. I'd be more than happy to start doing some stuff once I've finished some things on my mod these coming days. I'd probably half ass most of the cosmetic/interface stuff (lets face it, I'd half-ass everything), so if some other scripters still active could help out that'd be awesome. Darek? Glovz? Nirran probably isn't active anymore though I do see him lurking constantly... Who else?
     
  15. Sduibek

    Sduibek Creator of Fallout Fixt Moderator Modder

    Oct 27, 2010
    Nahh I plan on doing it, I'm just being whiny :P

    I'll probably end up doing AI.txt and worldmap.txt myself which is fine, I'm good at the excessive-amount-of-copy-paste type projects.

    What I could really use help with is anything involving Sfall:
    Since there are members of this forum very skilled and familiar with coding Sfall, it's kind of stupid for me to struggle learning it from scratch when you guys can do it with relative ease:

    - Making sure all Perks, Traits match identically with their Fallout 1 conterparts, removing/modifying/adding as applicable.
    - Making sure all internal calculations are identical to Fallout 1: Damage, Derived Statistics, Skills, etc. We may need to tap people like Per for this information, I'm not sure.
    - Implementing simple code needed such as limiting Level to 21 and Skill% to 200.
    - Making sure it's ready to implement player-made code such as YAAM, all of Nirran's plugins, Jim's changes, etc. FIXT is supposed to be the ultimate Fallout1 mod so it needs to be able to incorporate as much fan-made Fallout 2 Sfall code as possible -- that way I can include all the fixes and other cool stuff you guys have made using Sfall.
    - Any other changes "under the hood" to make the Fallout 2 experience mathematically identical to the Fallout 1 experience.

    Also any of these you guys are able to do, I would be grateful:

    http://www.nma-fallout.com/forum/viewtopic.php?p=975556#975556
     
  16. Glovz

    Glovz Vault Dweller
    Modder

    Sep 16, 2005
    Fallout 1's damage calculation is severely broken from what I remember, why would you want to force the Fallout 2 engine to be broken?
     
  17. JimTheDinosaur

    JimTheDinosaur Vault Dweller
    Modder

    Mar 17, 2013
    What Glovz said; the entire attraction of the conversion is to take advantage of FO2's superior mechanics and apply them to FO1... do you seriously want to do things like purposefully break ammo so it becomes more like FO1?
     
  18. Sduibek

    Sduibek Creator of Fallout Fixt Moderator Modder

    Oct 27, 2010
    Oops, forgot about that. No, I don't want to do that.

    What I do want to do, however, is have a "clean" version -- I don't want the engine conversion to be only for FIXT, I want the finished product to have a "clean" version for people who just want to play around with Fallout 1 stuff. Because I know there's going to be many modders who'll want that version, the one without all my mod's stuff included.

    So no don't change broken things, but anything else does need to be changed, I don't want it to "feel" like Fallout 2. This includes which Perks are available, etc. Players with FIXT will optionally be able to use new Perks and custom Perks of course, but there does need to be a baseline that is purely "Faithful reproduction of improved Fallout 1 experience using Fallout 2 engine".

    Basically there'll be two "versions" of this project:

    1) Fallout 1 using the Fallout 2 engine, only changing what is clearly broken. Think of it as an upgrade for purists. Once finished, this shouldn't need to ever change. This is mostly just a service to the modding community as a resource.
    2) Fallout FIXT using the Fallout 2 engine. This will continually change as it will become the new rendition of Fallout FIXT and old engine no longer used.

    Let me know if that doesn't make sense or you think it should be done differently.
     
  19. JimTheDinosaur

    JimTheDinosaur Vault Dweller
    Modder

    Mar 17, 2013
    I get what you're saying, but I find it hard to imagine precisely who these purists are you want to provide this service to. Purists who want to play FO1 with a mechanically FO1 feel can play FO1. I'd understand your objection to that if FO2 had introduced mechanical changes which were regarded by some people (or anyone really) as downgrades, but (though I might be wrong in this) I was always under the impression that FO2 was fairly unique as a sequel in that none of the mechanical changes were considered controversial in the slightest (which is of course mainly a testament to how close it stayed to the original in that respect). And then I'm not just talking about the overtly broken elements like the damage formula, but also things like progressive skill costs, green outlines for friendlies on start up, etc.

    I honestly think that you need to ask yourself whether the people interested in this thing are thinking "wouldn't it be awesome to experience FO1's superior story and setting with FO2's mechanics" or just "wouldn't it be awesome to be able to play FO1 with mouse scrolling through the inventory". I'm sure there's some who'd be more excited about the latter, but given the fact that it'll take an enormously bigger amount of work to satisfy those people than the people who want the former, I think it's fair to make that your priority.
     
  20. Sduibek

    Sduibek Creator of Fallout Fixt Moderator Modder

    Oct 27, 2010
    Hmm good point.

    Although I insist that increase skill costs is made optional. The skill checks in Fallout are stupid so having increased costs doesn't make sense.

    So what changes in Sfall need to be made, then? Most of what I said in the previous posts still applies since I'm pretty sure fallout 2 added a bunch of new perks and changed derived stats.

    Like I said I don't know sfall yet so I'm going to need you guys to direct me here.