Megamod feedback - I'm mortified at the sexism

Discussion in 'Fallout General Modding' started by lujo, Jun 19, 2013.

  1. Elitech

    Elitech Still Mildly Glowing

    Apr 22, 2008
    Agreed, no point in getting involved. I really dont mind whats written in the mod, sometimes even get a good chuckle out of reading some of the stuff thats in the dialogues, so does my sister.

    If the game doesnt suit u (or any type of the respresentation (model vs character vs whatever) doesnt suit u), then ur welcome to:

    not play, play with a male character, play another mod, make another mod, alter the existing mod, not play mods at all... Am i missing something?

    U don't like it - thats fine, I respect ur opinion.

    MIB said he wont change anything, I agree with him. Keep working on bug squashing ;)

    EDIT: MegaMod might not be a "parody", but it is a mix of mods that were made by different people for different purposes...
     
  2. lujo

    lujo Look, Ma! Two Heads!

    Jun 14, 2013
    Ty guys for the help and pointers. A few questions if I may:

    I managed to find the sfall script editor, but I'm having a hard (impossible) time finding the hearders - .h files. So I can't seem to get anything to decompile. I also found a dos-based (?) decompiler of some sort but being a huge noob I can't make heads or tails out of it.

    I've also found the dialogue creation tool which might be a fallout 1 tool (not sure), but it seems to require .ssl files or files with its own extension.

    I've managed to open up a aklint.ssl included in a folder from the database and study it a bit - and I can "swim" there to a degree (possibly enough), but it's a vanilla klint script and references vanilla dialogue nodes.

    Could I have a few more pointers with this, please? Where do I find the headers? What am I supposed to decompile to access the character scripts (?) and would a decompiler produce a .ssl file I could edit with sfall script editor?

    I'll look through the posts you guys already posted again, and I may figure it out on my own somehow, but if you feel like helping out it would be much appreciated.

    EDIT: I looked here http://modguide.nma-fallout.com/#FileSystem001 and it clered a few things up (maybe). .int decompiles into .ssl, and .ssl can be edited and then compiled back (with some cleanup maybe). But there's no mention of .h files I can find, and I can't figure out how to decompile anything, really.
     
  3. Darek

    Darek is currently unavailable

    Jan 7, 2008
    @ lujo
    If the decompiler you are talking about is int2ssl, the syntax would be
    Code:
    int2ssl acklint.int acklint.ssl
    Either write that in command prompt or create a .bat file where you add that.
    You can also open uncompiled scripts with the sfall script editor, but I prefer to decompile them first.

    As for the headers, if you download the official mapper they come with it (in the scripts\HEADERS folder).
    Also, you don't need headers to decompile, as they are no longer in the scripts once compiled. But they do help when trying to understand the scripts and editing+recompiling them.
     
  4. JimTheDinosaur

    JimTheDinosaur Vault Dweller
    Modder

    Mar 17, 2013
    I'm guessing a better option would be to just wait for the Megamod source scripts + headers to come out. Might take a while though (or isn't MIB88 planning on releasing them with the final version?).
     
  5. lujo

    lujo Look, Ma! Two Heads!

    Jun 14, 2013
    Ty very much! The bat option worked (had to look up how to create a bat, but now I know something I didn't before :) )

    I've tried the Ruby interpreter but it kept returning errors (maybe syntax is the problem but I've followed the instructions from
    http://www.nma-fallout.com/forum/viewtopic.php?t=42365), but managed to not have success.

    Ok, I believe I can do stuff now! (and do it again once megamod updates, ofc, in case the klint situation stayes the way it is :) )



    Oh, and just in case there is an easy answer to this question - is there something like a map of numeric representations of various atributes, items and stuff? I'm sure I've seen it somewhere at some point but can't remember where :(
     
  6. NovaRain

    NovaRain Casual Modder Modder

    Mar 10, 2007
    @lujo
    Check the Define.h header file.
     
  7. lujo

    lujo Look, Ma! Two Heads!

    Jun 14, 2013
    Thank you, googled it :)

    EDIT: also took a look at vault13.gam to check some stuff out and browsed a few tutorials. As soon as I'm able to figure compiling it back up I think I can have a "treat any chosen one equaly" mod for klint working.

    I'm a bit lost still, but I don't mind writing a more mature set of nodes for the female chosen ones, but first to stop the guy running up to you. :) I got a funny dialogue line for "tagged: speech" chars where you point out that the village elder has in fact passed the test as opposed to all the warrior types ^^ Then when he gets dejected because you might not need his help, you can tell him you'll check the temple first and then if you do need it you'll be sure to come to him - lots of people failed allready and this is the biggest crisis yet, etc...
     
  8. MIB88

    MIB88 Sonny, I Watched the Vault Bein' Built!
    Modder

    Feb 22, 2005
    I haven't given any serious thought to releasing the source files, only because I didn't think they would be useful for anyone. For the longest time (2004 to 2009) I was using the Ruby decompiler. After that, and once Nirran started modding Fallout, too, I started using a decompiler he put together for me, which also takes into account Timeslip's new script features. I have never used header files. Everything is in the scripts themselves. If anyone does want my decompiled scripts, though, I can send them. I just don't know how useful they would be.
     
  9. lujo

    lujo Look, Ma! Two Heads!

    Jun 14, 2013
    Seeing how tricky the whole thing was/is to a coding noob like me I'd wager they could be rather helpful, especially if you use notes in the script. Doubly so if the scripts are "cleaned up" - I'm having trouble compiling the acklint.ssl with FSE because of errors in places I haven't changed or influenced in any way.

    Also, there's plenty of room to improve - I just visited Scrapheap and there's fallout 1 dialogue in there ("I know you, you're looking for the City of Necropolis..."). With easier access somebody could improve it and tie it to the rest of the wasteland rather more easily. Just saying.
     
  10. Drobovik

    Drobovik Vault Archivarius Modder

    Jun 20, 2011
    MIB88,

    I want your sources too :crazy:

    {212}{}{[Keeps bugging him until Mr. Mib88 throws a pile of decompiled scripts in his face] Man, you're annoying, kid!}
     
  11. MIB88

    MIB88 Sonny, I Watched the Vault Bein' Built!
    Modder

    Feb 22, 2005
    Yeah, there are still plenty of errors in the MM.

    As for those scripts, there are no notes. I decompile a script and toy with until I get a new recompiled script to work in the mapper and the game. The only place I make notes is in a changelog.

    I really don't know what to tell you if you are using FSE. I've never worked with it. I'll upload some examples somewhere so you can see what my scripts look like. Just tellin'.
     
  12. lujo

    lujo Look, Ma! Two Heads!

    Jun 14, 2013
    Well, I'm stuck again...

    What I do is I delete the bit of code with the runup (I think I've identified it correctly)

    Code:
    if ((get_critter_stat(dude_obj, 34) == 1) and (local_var(5) == 0) and (global_var(10) != 2)) then begin
    		LVar0 := tile_num_in_direction(tile_num(dude_obj), random(1, 5), random(1, 3));
    		animate_move_obj_to_tile(self_obj, LVar0, 1);
    		dialogue_system_enter;
    	end
    And then the FSE starts giving me trouble with compiling it until I delete all the mechanics related to handing a spear or powder over. I get errors here:

    Code:
    procedure Node020spear
    begin
    	variable LVar0 := 0;
    	LVar0 := obj_carrying_pid_obj(self_obj, 7);
    	metarule(43, self_obj);
    	rm_mult_objs_from_inven(self_obj, LVar0, 1);
    	add_mult_objs_to_inven(dude_obj, LVar0, 1);
    	LVar0 := obj_carrying_pid_obj(self_obj, 7);
    	wield_obj_critter(self_obj, LVar0);
    	gsay_reply(751, 396);
    	giq_option(1, 751, 398, Node999, 50);
    end
    At the line:

    Code:
    rm_mult_objs_from_inven(self_obj, LVar0, 1);
    saying I'm missing an ";" or something (without touching it, the bit of code I delete seems to be unrelated to that part).

    But just to see if I've cut the right part and if I can compile, I get rid of everything but:

    Code:
    procedure Node020spear
    begin
    	gsay_reply(751, 396);
    	giq_option(1, 751, 398, Node999, 50);
    end
    And then it compiles.

    But when I put into the directory, both male and female get a static Klint - with no dialogue at all. Anyone have any thoughts, an idea where exactly to find a working compiler (ruby seems to not do anything). How do you guys compile your scripts?[/code]
     
  13. Darek

    Darek is currently unavailable

    Jan 7, 2008
    @ lujo

    Code:
    Change
     	rm_mult_objs_from_inven(self_obj, LVar0, 1);
    to
    	rm_obj_from_inven(self_obj, LVar0);
    There are a few more lines like that. Just exchange the "rm_mult_objs_from_inven" with "rm_obj_from_inven" and also remove ", 1" at the end. After that it should compile just fine.

    @ Mark
    Clean up your code dammit. :P
    I know, I know, Ruby ain't so picky.
     
  14. lujo

    lujo Look, Ma! Two Heads!

    Jun 14, 2013
    Ty, I figured there was a syntax problem (or something) - after applying this it compiled just fine, and I managed to swap the "run up" around (had him run up to the guy) and eliminate it completely.

    I've got a different problem now - now there's no dialogue at all for either male or female. The conversation screen opens up and there are no lines, and you can't close it.

    I tried replacing the runup procedure (which has the dialogue_system_enter" with:

    Code:
    if ((local_var(7) == 0) and (tile_distance_objs(self_obj, dude_obj) < 5)) then begin
    		set_local_var(7, 1);
    		dialogue_system_enter;
    	end
    from the acklint2.int (ssl), because I thought that what that means is that if you use the dialogue option on Klint and are close enough it would take it over to the talk_p_proc procedure but no dice. You also can't exit dialogue, so if I restart the same screen is stuck even with a different character.

    You guys have been a fountain of useful info, and I've learned quite a bit, but does anyone have a solution to this conundrum?
     
  15. MIB88

    MIB88 Sonny, I Watched the Vault Bein' Built!
    Modder

    Feb 22, 2005
    @Darek:

    Hey, remember when I said those sources might not be useful to anyone else? (When I see these scripts decompiled elsewhere, it looks like, well, not another language, but definitely a very different dialect.) What I use works for me! :P (Thanks again, Nirran).


    @lujo:
    Why do you want to enter dialog when you get close enough? Why not just make it like (almost) every other critter, and use the enter dialog function when you click on them? I can't tell you what is going on there.
     
  16. JimTheDinosaur

    JimTheDinosaur Vault Dweller
    Modder

    Mar 17, 2013
    Respect mang, I don't even want to know what my scripts would look like decompiled. Though it's probably different when working with mechanics than with content (my define.h is a least twice as big only on account of checking for types of weapons wielded etc. for instance).

    Edit: Hmm, disappointing, my hs_tohit script is only the third biggest script in the game. Damn slaver run and caravan scripts.
     
  17. lujo

    lujo Look, Ma! Two Heads!

    Jun 14, 2013
    That would be fine too - what I'm looking for is is a way to do that. I'm a complete noob, remeber? What happens is I do enter dialogue, but it's completely blank. And I can't seem to figure out what exactly controlls entering dialogue when you click on something.

    I guess you can't help me due to platform reasons, but I wouldn't mind switching over to your platform if it makes life easier. Is it on nirrans downloads page?

    I mean, I'm only using FSE and int2ssl because int2ssl because I couldn't figure ruby out (and I've tried based on your imput to another user). Id gladly switch if I knew how to...
     
  18. Continuum

    Continuum Vault Fossil

    Nov 8, 2006
    This:

    Code:
    procedure talk_p_proc
    this controls the dialogue itself:

    Code:
    procedure Node001
    begin
    	Reply(111);
    	NOption(4, 113, Node003);
    	NOption(5, 114, Node010);
    	NOption(4, 115, Node998);
    end
    in the end whole thing looks like this:

    Code:
    procedure talk_p_proc
    begin
    	dialogue_start(-1, -1, -1)
    	if (game_time_hour >= 2130) or (game_time_hour 600) then begin
    		call Node016;
    	end
    	else begin
    		if (global_var(GVAR_SOME_SHIT) == 1) then begin
    			call Node017;
    		end
    		else begin
    			if (global_var(GVAR_SOME_SHIT) == 2) then begin
    				call Node018;
    			end
    			else begin
    				call Node001;
    			end
    		end
    	end
    	dialogue_end
    end
    
    procedure Node001
    begin
    	Reply(111);
    	NOption(4, 113, Node003);
    	NOption(5, 114, Node010);
    	NOption(4, 115, Node998);
    end
    Code:
    Reply(Y) := what NPC is saying,
    NOption(X,Y,Z) := what player has to say. 
    
    X := player's IQ,
    Y := line in MSG,
    Z := call to dialogue Node.
    there's also:

    Code:
    procedure Node014
    begin
    	NMessage(148);
    end
    which is a simple NPC's message, player can't reply to. In most cases it leads to dialogue end (DONE message, or something like that).

    also, also:

    Code:
    procedure Node999
    begin
    
    end
    "empty" Node above leads to dialogue end... so:

    Code:
    procedure some-shit
    begin
    	Reply(111);
    	NOption(4, 115, Node999);
    end
    picking this option will end the dialogue.

    Note that those are defines... not shit-numbers... shit-numbers will look like this:

    Code:
    #define dialogue_start(x,y,z)	start_gdialog(NAME,self_obj,z,x,y);	\
    								gsay_start;
    
    #define dialogue_end			gsay_end;		\
    								end_dialogue;
    
    #define Reply(x)						gSay_Reply(NAME,x)
    #define GMessage(x)						gSay_Message(NAME,x,GOOD_REACTION)
    #define NMessage(x)						gSay_Message(NAME,x,NEUTRAL_REACTION)
    #define BMessage(x)						gSay_Message(NAME,x,BAD_REACTION)
    // Option(IQ, Message Number, Node Number)	==>		giQ_Option(IQ, Message Number, Node Number)
    #define GOption(x,y,z)					giQ_Option(x,NAME,y,z,GOOD_REACTION)
    #define NOption(x,y,z)					giQ_Option(x,NAME,y,z,NEUTRAL_REACTION)
    #define BOption(x,y,z)					giQ_Option(x,NAME,y,z,BAD_REACTION)
    
    // Mood defines //
    #define GOOD_REACTION		(49)
    #define NEUTRAL_REACTION	(50)
    #define BAD_REACTION		(51)
    
    NAME := position of MSG in scripts.lst (456, 2, 128, etc.)
    if you want to force the dialogue then use dialogue_system_enter in critter_p_proc:

    Code:
    procedure critter_p_proc
    begin
    //--catch dude near the entrance
    	if (tile_distance_from_dude <= 7) then begin
    		if (local_var(LVAR_GUARD_STATUS) == 0) or (local_var(LVAR_GUARD_STATUS) == 5) then begin
    			dialogue_system_enter;
    		end
    	end
    end
    Code:
    #define tile_distance_from_dude				tile_distance_objs(self_obj,dude_obj)
    but remember to set LVAR during dialogue to something other than conditions needed to force the dialogue (LVAR_GUARD_STATUS == 0, or 5), otherwise critter will be entering dialogue without end.

    ---------------------------------EDIT

    This will make dialogue_system_enter only once:

    Code:
    procedure critter_p_proc
    begin
       if (tile_distance_objs(self_obj,dude_obj) <= 4) and (local_var(1) == 0) then begin
             dialogue_system_enter;
          end
       end
    end
    
    procedure talk_p_proc
    begin
    	start_gdialog(496, self_obj, 4, -1, -1);
    	gsay_start;
    	if (local_var(1) == 0) then begin
    		call SOME_SHIT_00;
    	end
    	else begin
    		call SOME_SHIT_01;
    	end	
    	gsay_end;
    	end_dialogue;
    end
    
    procedure SOME_SHIT_00
    begin
    	gSay_Reply(496, 130) 
    	giq_option(7, 496, 131, some_shitty_shit_00, 49);
    	giq_option(4, 496, 132, some_shitty_shit_01, 51);
    	giq_option(4, 496, 133, some_shitty_shit_02, 50);
    	set_local_var(1, 1);
    end
     
  19. lujo

    lujo Look, Ma! Two Heads!

    Jun 14, 2013
    Wow! I'll dig into this right away! :D

    Thank you!

    FSE doesn't recognize the

    Code:
    dialogue_start(-1, -1, -1) 
    command. :(

    What are the numbers for, and what editing method are you using? :)
     
  20. Darek

    Darek is currently unavailable

    Jan 7, 2008
    He he, just messing with ya. Isn't Ruby with all the op_code and stuff, or is that just from the NOID decompiler?
    Anyway, I believe you, and if you don't make notes or use headers, your source files won't be as useful (I don't use headers either by the way).
    Also, for those who knows what they are doing, it's not that hard to decompile, edit and recompile your scripts.

    @ lujo

    Shouldn't you rather have "start_gdialog(751, self_obj, 4, -1, -1);".
    That's assuming it's the acklint script.
    What you wrote was a macro, so you would need to define a header file, maybe define.H?