Fallout Wiki
Advertisement
Fallout Wiki
Details
Type Source file
SCRIPTS.LST comment Mom, who run's Mom's in the Den
MSG file N/A
Transcript

/*
        Copyright 1998-2003 Interplay Entertainment Corp. All rights reserved.
*/
/*
        Name:
        Location: Den
        Description:
        Log:
           Created: August 22, 1998
           Updated:
*/
/* Include Files */
#include "..\headers\define.h"
#define NAME SCRIPT_DCMOM
#define TOWN_REPUTATION GVAR_TOWN_REP_THE_DEN
#include "..\headers\command.h"
#include "..\headers\ModReact.h"
#include "..\headers\Den.h"
/* Standard Script Procedures */
procedure start;
procedure critter_p_proc;
procedure pickup_p_proc;
procedure talk_p_proc;
procedure destroy_p_proc;
procedure look_at_p_proc;
procedure description_p_proc;
procedure use_skill_on_p_proc;
procedure damage_p_proc;
procedure map_enter_p_proc;
procedure timed_event_p_proc;
/* Script Specific Procedure Calls */
procedure Node998; // This Node is Always Combat
procedure Node999; // This Node is Always Ending
procedure Node001;
procedure Node002;
procedure Node003;
procedure Node004;
procedure Node005;
procedure Node006;
procedure Node007;
procedure Node008;
procedure Node009;
procedure Node010;
procedure Node011;
procedure Node012;
procedure Node013;
procedure Node014;
procedure Node015;
procedure Node016;
procedure Node017;
procedure Node018;
procedure Node019;
procedure Node020;
procedure Node021;
procedure Node022;
procedure Node023;
procedure Node024;
procedure Node025;
/* Local Variables which are saved. All Local Variables need to be
   prepended by LVAR_ */
#define LVAR_Flags (4)
#define LVAR_ATE_AT_MOMS (5)
#define node_4_bit bit_10
#define node_4 lvar_bit(LVAR_Flags, node_4_bit)
#define set_node_4 set_lvar_bit_on(LVAR_Flags, node_4_bit)
#define ate_at_moms_today ((game_time >= local_var(LVAR_ATE_AT_MOMS)) and (local_var(LVAR_ATE_AT_MOMS) != 0))
#define set_ate_at_moms set_local_var(LVAR_ATE_AT_MOMS, game_time + ONE_GAME_DAY)
/* Imported variables from the Map scripts. These should only be
   pointers and variables that need not be saved. If a variable
   Needs to be saved, make it a map variable (MVAR_) */
/* Local variables which do not need to be saved between map changes. */
import variable den_mom_box_obj;
import variable generic_temp_box;
procedure start begin
end
procedure timed_event_p_proc begin
   if (fixed_param == timed_event_float) then begin
      if (combat_is_initialized == false) then begin
      end
   end
end
procedure map_enter_p_proc begin
   if (is_loading_game == false) then begin
      if (map_first_run) then begin
         critter_add_trait(self_obj,TRAIT_OBJECT,OBJECT_TEAM_NUM,TEAM_THE_DEN);
         critter_add_trait(self_obj,TRAIT_OBJECT,OBJECT_AI_PACKET,AI_PEASANT);
      end
   end
end
procedure critter_p_proc begin
   if (self_can_see_dude) then begin
      if (hostile) then begin
         self_attack_dude;
      end
   end
end
procedure damage_p_proc begin
   if (source_obj == dude_obj) then begin
      set_mom_attacked;
      set_personal_enemy;
   end
end
procedure pickup_p_proc begin
   if (source_obj == dude_obj) then begin
      call Node998;
   end
end
procedure talk_p_proc begin
   if ((smitty_deliver(state_smitty_deliver_in_progress)) and (smitty_deliver_time_up == false)) then begin
      call Node019;
   end else begin
      move_obj_inven_to_obj(self_obj,generic_temp_box);
      move_obj_inven_to_obj(den_mom_box_obj,self_obj);
         start_gdialog(NAME,self_obj,4,-1,-1);
         gSay_Start;
            if (dude_is_stupid) then begin
               call Node001;
            end else if (smitty_deliver(state_smitty_deliver_finished)) then begin
               call Node020;
            end else begin
               call Node013;
            end
         gSay_End;
         end_dialogue;
      move_obj_inven_to_obj(self_obj,den_mom_box_obj);
      move_obj_inven_to_obj(generic_temp_box,self_obj);
      set_herebefore;
   end
end
procedure destroy_p_proc begin
   set_mom_dead;
   move_obj_inven_to_obj(den_mom_box_obj,self_obj);
   inc_good_critter
end
procedure look_at_p_proc begin
   script_overrides;
   display_mstr(100);
end
procedure description_p_proc begin
   script_overrides;
   display_mstr(151 - herebefore);
   set_examined;
end
procedure use_skill_on_p_proc begin
end
procedure Node998 begin
   set_hostile;
end
procedure Node999 begin
end
procedure Node990 begin
   if (dude_caps > 10) then begin
      item_caps_adjust(dude_obj, -5);
   end else if (dude_caps > 0) then begin
      item_caps_adjust(dude_obj, -1);
   end
   call Node010;
end
procedure Node989 begin
   set_ate_at_moms;
   dude_eat_food(large_meal);
   gfade_out(ONE_GAME_SECOND);
      game_time_advance(random(5, 20) * ONE_GAME_MINUTE);
      critter_heal(dude_obj, random(2, 8));
   gfade_in(ONE_GAME_SECOND);
   if (dude_is_stupid) then begin
      call Node011;
   end else begin
      item_caps_adjust(dude_obj, -10);
      call Node007;
   end
end
procedure Node987 begin
   set_ate_at_moms;
   dude_eat_food(huge_meal);
   gfade_out(ONE_GAME_SECOND);
      game_time_advance(random(15, 45) * ONE_GAME_MINUTE);
      critter_heal(dude_obj, random(5, 20));
      set_smitty_deliver(state_smitty_deliver_reward_given);
   gfade_in(ONE_GAME_SECOND);
   call Node007;
end
procedure Node001 begin
   Reply(200 + herebefore);
   NOption(mstr(202) + dude_name, Node002, 001);
   NOption(203, Node999, 001);
end
procedure Node002 begin
   if (ate_at_moms_today) then begin
      Reply(220);
      GOption(223, Node999, 001);
   end else begin
      Reply(mstr(221) + dude_name + mstr(222));
      NOption(224, Node003, 001);
   end
   NOption(225, Node999, 001);
end
procedure Node003 begin
   Reply(240);
   GOption(241, Node990, 001);
   NOption(242, Node999, 001);
end
procedure Node004 begin
   Reply(250 + node_4);
   set_node_4;
   NOption(252, Node005, 004);
   NOption(253, Node006, 004);
   NOption(254, Node006, 004);
end
procedure Node005 begin
   Reply(270);
   NOption(271, Node006, 004);
end
procedure Node006 begin
   Reply(280);
   if (dude_caps < 10) then begin
      NOption(281, Node013, 004);
   end else begin
      GOption(282, Node989, 004);
      NOption(283, Node989, 004);
   end
   NOption(284, Node013, 004);
   NOption(285, Node999, 004);
end
procedure Node007 begin
   Reply(300);
   GOption(301, Node004, 004);
   GOption(302, Node013, 004);
   GOption(303, Node999, 004);
end
procedure Node008 begin
   Reply(320);
   GOption(321, Node012, 004);
   NOption(322, Node013, 004);
   BOption(323, Node999, 004);
end
procedure Node009 begin
   Reply(random(340, 359));
   GOption(360, Node004, 001);
end
procedure Node010 begin
   Reply(375);
   GOption(376, Node989, 001);
end
procedure Node011 begin
   Reply(385);
   GOption(386, Node999, 001);
end
procedure Node012 begin
   set_smitty_deliver(state_smitty_deliver_in_progress);
   give_pid_qty(dude_obj, PID_SMITTY_MEAL, 1)
   Reply(395);
   GOption(396, Node999, 004);
end
procedure Node013 begin
   if (smitty_deliver_failed) then begin
      set_smitty_deliver(state_smitty_deliver_failed);
      Reply(405);
   end else begin
      Reply(406 + herebefore);
   end
   NOption(408, Node014, 004);
   if ((anna_spoken) and (gave_anna_locket == false)) then begin
      NOption(600, Node021, 004);
   end
   if ((vic_known(state_vic_known_name)) and (vic_dead == false) and (vic_talk == false) and (vic_free == false)) then begin
      NOption(409, Node016, 004);
   end
   if ((smitty_dead == false) and (smitty_deliver(state_smitty_deliver_none))) then begin
      NOption(410, Node008, 004);
   end
   NOption(411, Node009, 004);
end
procedure Node014 begin
   Reply(425);
   NOption(426, Node015, 004);
end
procedure Node015 begin
   Reply(435);
   NOption(436, Node013, 004);
   NOption(437, Node999, 004);
end
procedure Node016 begin
   mark_vault_city_on_map
   Reply(445);
   NOption(446, Node017, 004);
   NOption(447, Node999, 004);
end
procedure Node017 begin
   Reply(455);
   NOption(456, Node018, 004);
   GOption(457, Node999, 004);
end
procedure Node018 begin
   Reply(465 + metzger_dead);
   NOption(467, Node013, 004);
   NOption(468, Node999, 004);
end
procedure Node019 begin
   floater_rand(475, 479);
end
procedure Node020 begin
   Reply(485);
   GOption(486, Node987, 004);
   BOption(487, Node999, 004);
end
procedure Node021 begin
   Reply(500);
   NOption(501, Node022, 005);
   NOption(502, Node023, 004);
   NOption(503, Node999, 004);
end
procedure Node022 begin
   Reply(520);
   NOption(521, Node023, 004);
   NOption(522, Node999, 004);
end
procedure Node023 begin
   Reply(540);
   NOption(541, Node024, 004);
   NOption(542, Node999, 004);
end
procedure Node024 begin
   set_mom_fingered_joey;
   Reply(560);
   NOption(561, Node025, 004);
   NOption(562, Node025, 004);
   NOption(563, Node013, 004);
   NOption(564, Node999, 004);
end
procedure Node025 begin
   Reply(580);
   NOption(581, Node013, 004);
   NOption(582, Node999, 004);
end

Advertisement