Fallout 1 scripting - spawning critters and and their items.

Discussion in 'Fallout General Modding' started by Sorrow, Sep 10, 2009.

  1. Sorrow

    Sorrow So Old I'm Losing Radiation Signs

    Feb 9, 2006
    How does it work? For example spawning Kenji in Junktown and Blades in laadytum?
     
  2. Jordan

    Jordan It Wandered In From the Wastes

    106
    May 8, 2008
    KILLIAN.ssl

    import variable Killian_ptr;

    map_enter_p_proc
    Killian_ptr := self_obj;

    talk_p_proc

    if ((map_var(5) == 1) and (local_var(7) == 0) and (global_var(GVAR_HIRED_BY_GIZMO) == 0)) then begin
    LVar1 := create_object_sid(16777528, 0, 0, SCRIPT_KENJI);
    GVar9 := create_object_sid(10, 0, 0, -1);
    add_obj_to_inven(LVar1, GVar9);
    critter_add_trait(LVar1, 1, 6, 13);
    critter_add_trait(LVar1, 1, 5, 1);
    critter_attempt_placement(LVar1, 28283, 0);
    set_map_var(5, 2);
    end

    KENJI.ssl

    import variable Killian_ptr;

    procedure critter_p_proc
    begin
    if (tile_distance(tile_num(self_obj), 26281) > 3) then begin
    animate_move_obj_to_tile(self_obj, 26281, ANIMATE_WALK);
    end
    else begin
    if (obj_on_screen(self_obj)) then begin
    float_msg(self_obj, message_str(SCRIPT_KENJI, 103), FLOAT_MSG_RED);
    attack_complex(Killian_ptr, 0, 1, 0, 0, 30000, 0, 0);
    end
    end
    end
     
  3. Sorrow

    Sorrow So Old I'm Losing Radiation Signs

    Feb 9, 2006
    Thanks :) .
     
  4. Sorrow

    Sorrow So Old I'm Losing Radiation Signs

    Feb 9, 2006
    Hmm...
    I can't find similar procedures for spawning and equipping Blades during their invasion on Boneyard - any idea in which script they are?
     
  5. Jordan

    Jordan It Wandered In From the Wastes

    106
    May 8, 2008
    Look scripts beginning on LA
    LAADYTUM.ssl
    LABLADES.ssl

    LAADYTUM.ssl

    export variable InBladePtr1;
    export variable InBladePtr2;
    export variable InBladePtr3;
    export variable InBladePtr4;
    export variable InBladePtr5;
    export variable InBladePtr6;
    export variable InBladePtr7;
    export variable InBladePtr8;


    procedure map_update_p_proc
    begin
    if (elevation(dude_obj) == 1) then begin
    call Darkness;
    end
    else begin
    call Lighting;
    end
    call add_party;
    if ((global_var(GVAR_BLADES) == 9103) and (map_var(2) == 0) and (global_var(GVAR_WATER_CHIP_9) == 1)) then begin
    call AddInBlades;
    gfade_in(600);
    end
    else begin
    if ((global_var(GVAR_BLADES) == 9104) and (map_var(2) == 0)) then begin
    set_map_var(2, 1);
    kill_critter(JonPtr, 0);
    kill_critter_type(16777216 + 3, 0);
    kill_critter_type(16777216 + 27, 0);
    kill_critter_type(16777216 + 36, 0);
    kill_critter_type(16777216 + 112, 0);
    kill_critter_type(16777216 + 215, 0);
    kill_critter_type(16777216 + 244, 0);
    kill_critter_type(16777216 + 245, 0);
    kill_critter_type(16777216 + 246, 0);
    kill_critter_type(16777216 + 247, 0);
    kill_critter_type(16777216 + 248, 0);
    kill_critter_type(16777216 + 249, 0);
    kill_critter_type(16777216 + 250, 0);
    kill_critter_type(16777216 + 251, 0);
    kill_critter_type(16777216 + 252, 0);
    kill_critter_type(16777216 + 253, 0);
    kill_critter_type(16777216 + 254, 0);
    kill_critter_type(16777216 + 255, 0);
    kill_critter_type(16777216 + 256, 0);
    kill_critter_type(16777216 + 257, 0);
    kill_critter_type(16777216 + 258, 0);
    kill_critter_type(16777216 + 259, 0);
    kill_critter_type(16777216 + 260, 0);
    kill_critter_type(16777216 + 261, 0);
    kill_critter_type(16777216 + 262, 0);
    kill_critter_type(16777216 + 263, 0);
    critter_attempt_placement(RazorPtr, 12700, 0);
    set_global_var(GVAR_BLADES, 2);
    set_global_var(GVAR_PLAYER_REPUTATION, global_var(GVAR_PLAYER_REPUTATION) + 2);
    display_msg(message_str(SCRIPT_GENCHAT, 103) + 2000 + message_str(SCRIPT_GENCHAT, 104));
    give_exp_points(2000);
    end
    else begin
    if ((map_var(1) == 0) and (global_var(GVAR_BLADES) == 9103)) then begin
    gfade_out(600);
    kill_critter_type(16777216 + 268, 0);
    critter_attempt_placement(RazorPtr, 12700, 0);
    set_global_var(GVAR_BLADES, 2);
    set_global_var(GVAR_MAKE_ANTIDOTE_3, 1);
    set_global_var(GVAR_PLAYER_REPUTATION, global_var(GVAR_PLAYER_REPUTATION) + 2);
    display_msg(message_str(SCRIPT_GENCHAT, 103) + 2000 + message_str(SCRIPT_GENCHAT, 104));
    give_exp_points(2000);
    gfade_in(600);
    end
    else begin
    if ((map_var(1) == 0) and (global_var(GVAR_BLADES) != 2) and (global_var(GVAR_MAKE_ANTIDOTE_2) == 1)) then begin
    set_global_var(GVAR_BLADES, 2);
    set_global_var(GVAR_MAKE_ANTIDOTE_1, 1);
    end
    end
    end
    end
    end

    procedure AddInBlades
    begin
    set_map_var(2, 1);
    critter_attempt_placement(InBladePtr1, 9702, 0);
    critter_attempt_placement(InBladePtr2, 9700, 0);
    critter_attempt_placement(InBladePtr3, 9698, 0);
    critter_attempt_placement(InBladePtr4, 9895, 0);
    critter_attempt_placement(InBladePtr5, 9696, 0);
    critter_attempt_placement(InBladePtr6, 26717, 0);
    critter_attempt_placement(InBladePtr7, 26711, 0);
    critter_attempt_placement(InBladePtr8, 24492, 0);
    end


    LABLADES.ssl

    export variable InBladePtr1;
    export variable InBladePtr2;
    export variable InBladePtr3;
    export variable InBladePtr4;
    export variable InBladePtr5;
     
  6. Sorrow

    Sorrow So Old I'm Losing Radiation Signs

    Feb 9, 2006
    I've seen them. Am I missing something or they don't have the equipment part?
    Is it hardcoded or something?
     
  7. Wasteland Ghost

    Wasteland Ghost Still Mildly Glowing

    296
    Sep 20, 2005
    That's because Blades are already placed on level 1 of the map. AddInBlades procedure in map script just moves them to level 0.
     
  8. Sorrow

    Sorrow So Old I'm Losing Radiation Signs

    Feb 9, 2006
    Thanks :D .