#include <define.h>

//#define NAME                    SCRIPT_

#include <command.h>
//#include <ModReact.h>



procedure start;
#include <push.h>
procedure Lighting;
procedure Darkness;

export variable Master_Ptr;
export variable Red_Door_Ptr;
export variable Black_Door_Ptr;
export variable Laura_Ptr;
export variable Shop_Ptr;
export variable Shopkepper_Ptr;

procedure add_party;
procedure update_party;
procedure remove_party;

variable party_elevation;
variable dude_start_hex;

export variable Ian_ptr;
export variable Dog_ptr;
export variable Tycho_ptr;
export variable Katja_ptr;
export variable Tandi_ptr;

variable Player_Elevation;
variable cur_count;
variable prev_count;

procedure Invasion;


procedure start
begin
if (script_action == map_enter_proc) then begin
override_map_start_hex(20500, 0, 5);
    call Lighting;
    set_global_var(GVAR_CHILDREN_OF_CATHEDRAL, 2);
    if (metarule(14, 0)) then begin
      display_msg(message_str(SCRIPT_SHADYWST, 110));
    end
  end
  if (script_action == map_update_proc) then begin
    call Lighting;
    if (elevation(dude_obj) == 1) then begin
      set_global_var(GVAR_MARK_CHILD_2, 1);
    end
    if (global_var(GVAR_COUNTDOWN_TO_DESTRUCTION) != 0) then begin
      cur_count := 240 - ((game_time / 10) - global_var(GVAR_COUNTDOWN_TO_DESTRUCTION));
      if (cur_count != prev_count) then begin
        display_msg(message_str(SCRIPT_MASTER2, 100) + cur_count + message_str(SCRIPT_MASTER2, 101));
        prev_count := cur_count;
      end
      if (((game_time / 10) - global_var(GVAR_COUNTDOWN_TO_DESTRUCTION)) > 240) then begin
        display_msg(message_str(SCRIPT_CHILDRN1, 106));
        play_gmovie(MOVIE_CATHEXP);
        metarule(13, 0);
      end
    end
    call update_party;
  end
  if (script_action == map_exit_proc) then begin
    call remove_party;
  end
end

procedure Lighting
begin
  variable LVar0 := 0;
  LVar0 := game_time_hour;
  if ((LVar0 >= 600) and (LVar0 < 700)) then begin
    set_light_level(LVar0 - 600 + 40);
  end
  else begin
    if ((LVar0 >= 700) and (LVar0 < 1800)) then begin
      set_light_level(100);
    end
    else begin
      if ((LVar0 >= 1800) and (LVar0 < 1900)) then begin
        set_light_level(100 - (LVar0 - 1800));
      end
      else begin
        set_light_level(40);
      end
    end
  end
end

procedure Darkness
begin
  set_light_level(40);
end

procedure add_party
begin
  variable LVar0 := 0;
  variable LVar1 := 0;
  party_elevation := elevation(dude_obj);
  if (global_var(GVAR_TANDI_STATUS) == 5) then begin
    if (Tandi_ptr == 0) then begin
    end
    critter_add_trait(Tandi_ptr, 1, 6, 0);
  end
end

procedure update_party
begin
  variable LVar0 := 0;
  variable LVar1 := 0;
  if (elevation(dude_obj) != party_elevation) then begin
    party_elevation := elevation(dude_obj);
    if (global_var(GVAR_IAN_STATUS) == 2) then begin
      if (Ian_ptr == 0) then begin
      end
      else begin
        move_to(Ian_ptr, tile_num_in_direction(tile_num(dude_obj), 1, 2), elevation(dude_obj));
      end
    end
    if (global_var(GVAR_DOG_EMPATHY)) then begin
      if (Dog_ptr == 0) then begin
      end
      else begin
        move_to(Dog_ptr, tile_num_in_direction(tile_num(dude_obj), 2, 1), elevation(dude_obj));
      end
    end
    if (global_var(GVAR_HERNANDEZ_STATUS) == 2) then begin
      if (Tycho_ptr == 0) then begin
      end
      else begin
        move_to(Tycho_ptr, tile_num_in_direction(tile_num(dude_obj), 3, 2), elevation(dude_obj));
      end
    end
    if (global_var(GVAR_KATJA_STATUS) == 2) then begin
      if (Katja_ptr == 0) then begin
      end
      else begin
        move_to(Katja_ptr, tile_num_in_direction(tile_num(dude_obj), 4, 2), elevation(dude_obj));
      end
    end
    if (global_var(GVAR_TANDI_STATUS) == 5) then begin
      if (Tandi_ptr == 0) then begin
      end
      else begin
        move_to(Tandi_ptr, tile_num_in_direction(tile_num(dude_obj), 4, 4), elevation(dude_obj));
      end
    end
  end
end

procedure remove_party
begin
  if (global_var(GVAR_IAN_STATUS) == 2) then begin
    set_global_var(GVAR_IAN_STATUS, 2);
  end
  if (global_var(GVAR_DOG_EMPATHY)) then begin
    set_global_var(GVAR_DOG_EMPATHY, 1);
  end
  if (global_var(GVAR_HERNANDEZ_STATUS) == 2) then begin
    set_global_var(GVAR_HERNANDEZ_STATUS, 2);
  end
  if (global_var(GVAR_KATJA_STATUS) == 2) then begin
    set_global_var(GVAR_KATJA_STATUS, 2);
  end
  if (global_var(GVAR_TANDI_STATUS) == 5) then begin
  end
end

procedure Invasion
begin
  if (not(global_var(GVAR_MASTER_BLOWN) == 2)) then begin
    if (global_var(GVAR_NECROPOLIS_INVADED_DATE) > (game_time / (10 * 60 * 60 * 24))) then begin
      set_global_var(GVAR_NECROPOLIS_INVADED, 1);
    end
    if (global_var(GVAR_THE_HUB_INVADED_DATE) > (game_time / (10 * 60 * 60 * 24))) then begin
      set_global_var(GVAR_HUB_INVADED, 1);
    end
    if (global_var(GVAR_BROTHERHOOD_INVADED_DATE) > (game_time / (10 * 60 * 60 * 24))) then begin
      set_global_var(GVAR_BROTHERHOOD_INVADED, 1);
    end
    if (global_var(GVAR_JUNKTOWN_INVADED_DATE) > (game_time / (10 * 60 * 60 * 24))) then begin
      set_global_var(GVAR_JUNKTOWN_INVADED, 1);
    end
    if (global_var(GVAR_SHADY_SANDS_INVADED_DATE) > (game_time / (10 * 60 * 60 * 24))) then begin
      set_global_var(GVAR_SHADY_SANDS_INVADED, 1);
    end
    if (global_var(GVAR_VAULT_13_INVADED_DATE) <= 0) then begin
      set_global_var(GVAR_VAULT_INVADED, 1);
    end
    if (global_var(GVAR_FOLLOWERS_INVADED_DATE) > (game_time / (10 * 60 * 60 * 24))) then begin
      set_global_var(GVAR_FOLLOWERS_INVADED, 1);
    end
  end
end