Help: Crippled leg problem (Fallout Fixt 6.7.3)

worst

First time out of the vault
Hey,

I'm playing Fallout 1 on Windows with the Full installation of Fallout Fixt alpha 6.7.3.

It's been really long since the last time I played Fallout, so I'm not sure if this a mod problem, or if it was just the way the game works..
So far I have played a couple of hours, and at some point I noticed that I could not run anymore.. turns out my character's leg is crippled.:cry:

I've tried to go to some different doctors (shady sands, junktown, the hub, vault 13), but they all say that I look healthy, and won't treat my leg.
My doctor skill is at 2%, so I don't think I have much chances of getting that to work.


Am I basically screwed, or is there some way to treat my leg in this situation?
 
Last edited:
Somehow I managed to miss this page on the wiki while I was looking for information..

I hadn't even thought of going back to vault 13 yet.. so I went there now, but the medic there reacts the same; says that I look healthy, and won't treat my leg. :?

I guess this either has to be a bug in Fallout Fixt, or it's just that nobody else never had to treat their crippled limbs at the doctors..

Seems like I have no choice but to load an old save if I don't want to play the rest of the game crippled.
 
Well, as far as I can see in scripts (not FIXT), "doctors" can't heal crippled limbs - they only check cur/max hits, and radiation/poison.

There's a:

Code:
// Fallout 2:
#define DAM_PERFORM_REVERSE        8388608
#define critter_uninjure(WHO, FLAGS)        critter_injure(WHO, (FLAGS BWOR DAM_PERFORM_REVERSE))

critter_injure function cripples the critter if used (haven't checked above, though - I'm not working with Fallout 2 crap)

If the comment is right then: yet another dumb shit in already full of dumb shit engine.
 
I suppose you could cheat a little with Vad's Fallout Save Game Editor and fix it that way. There is a link for it on the first page and the thread is just below this one. That way you don't have to start over.
 
No. But to be sure I crippled, and damaged myself, and went to Morbid. critter_heal function that doctors are using in Fallout, only restores hit points - it does exactly what scripts' commands/functions/whatever documentation says.

There's a workaround though: simply make doctors using item on player. The shit thing is: messages are displayed as player would perform healing on himself, i.e.: "You heal your crippled arm.", or "You fail to do any healing." (in case of "fail" crippled limbs are back to normal anyway).

Example:

Code:
procedure critter_p_proc begin
    // or use oridnary variable instead, or disable the ui to prevent fuck-ups
    if (local_var(LVAR_DOC_MORBID_HEALS_CRIPPLED_LIMBS)) then begin
        // don't run like an idiot, but walk intead
        if (tile_distance_objs(self_obj, dude_obj > 2) then begin
            animate_move_to_tile(tile_num_in_direction(dude_tile, random(0, 5), 1));
        end
        else begin
            if (self_item_count(PID_DOCTORS_BAG)) then begin
                use_obj_on_obj(self_has_item(PID_DOCTORS_BAG), dude_obj);
            end
            else begin
                // is there a function that makes critters using skills on objects?
                // nah, let's punish the thieves - hi hi hi
                // or transfer Bag from Morbid's locker to his pocket, and later put it back
                float_msg(self_obj, "Flash, show our 'patient' what we're doing with thieves.", 2);
                attack_setup(Flash_ptr, dude_obj);
            end
            set_local_var(LVAR_DOC_MORBID_HEALS_CRIPPLED_LIMBS, 0);
        end
    end
end

To fix default engine's message you could try to add to player's script:

Code:
procedure use_obj_on_p_proc begin
    if (source_obj != dude_obj) then begin
        if (item_used_pid(PID_DOCTORS_BAG)) then begin
            script_overrides;
            // or use cur_map_index intead
            if (source_is(Morbid_ptr)) then begin
                // let's roll - hi hi hi
                if (dude_stat_success(STAT_ENDURANCE, 0)) then begin
                    display_msg("Doc Morbid successfully healed your crippled limbs.");
                end
                else begin
                    reg_anim_clear(dude_obj);
                    reg_anim_begin;
                    reg_anim(dude_obj, ANIM_FALL_BACK, -1);
                    reg_anim_end;
                    critter_dmg(dude_obj, value, flags);
                    display_msg("Doc Morbid has healed your crippled limbs, but the pain knocks you off your feet.");
                end
            end
            else begin
                display_msg("Some generic shit.");
            end
        end
    end
end

but this probably would override healing by non-player objects too, unless healing crippled limbs is somewhat different than other engine's behaviors.

Knocking out player "cut-scene" is very fun stuff, IMO. It would require timed_event_p_proc, and ui enable/disable to make it looking/running nicely/not allow player to cancel it (it's wiser to move it to doctor's script). Something like this:

Code:
procedure timed_event_p_proc begin
    if (fixed_param == 1) then begin
        game_ui_disable;
        display_msg(mstr(122) + " " + mstr(124));
        reg_anim_clear(dude_obj);
        reg_anim_begin;
        reg_anim(dude_obj, ANIM_FALL_BACK, -1);
        reg_anim_end;
        // play the sounds too
        if (dude_is_female) then begin
            play_sfx("HFXXXXBA");
        end
        else begin
            play_sfx("HMXXXXBA");
        end
        self_add_timer(game_ticks(1), 2);
    end
    else begin
        if (fixed_param == 2) then begin
            critter_dmg(dude_obj, random(1, 3), DMG_NORMAL bwor DMG_NOANIMATE bwor DMG_BYPASS_ARMOR);
            game_ui_disable;        // critter_dmg function seems to enable UI that is disabled, or something
            reg_anim_clear(dude_obj);
            reg_anim_begin;
            reg_anim(dude_obj, ANIM_BACK_TO_STANDING, -1);
            reg_anim_end;
            self_add_timer(game_ticks(2), 3);
        end
        else begin
            game_ui_enable;
        end
    end
end


Doctors should be able to check for crippled limbs without problems since there's critter_state function:

Code:
if (critter_state(dude_obj) bwand (DAM_CRIP_LEG_LEFT bwor DAM_CRIP_LEG_RIGHT)) then begin
    NMessage("One of your legs is broken. This will cost you 100000000000 caps.");
end


Fun stuff, except that stupid message - will have to add it to Morbid's script.
 
Last edited:
Simply add

Code:
critter_uninjure(dude_obj, (DAM_CRIP_LEG_LEFT bwor DAM_CRIP_LEG_RIGHT bwor DAM_CRIP_ARM_LEFT bwor DAM_CRIP_ARM_RIGHT));

to the doctor script, so he will heal limbs. I don't see where the problem is???

/Edit: I have no idea if this works in Fo1 though. Never did anything with it.
 
As I already wrote it's Fallout 2 exclusive feature - tried it but it crippled me instead of heal...
 
Last edited:
Thank you all for the posts in this thread, and @worst for starting it. I am surprised this feature is missing from the game.

Thanks for the code, Continuum :)

This feature will be added to my ToDo list for the mod.

I have a question though, don't crippled looms heal by themselves, given enough time? I thought they did.
 
Last edited by a moderator:
Back
Top