Graphics glitch - anyone know what could have caused this?

Users who are viewing this thread

dariel

Sergeant Knight at Arms
Hi all! Has anyone seen a graphics glitch like this one before? Any idea what causes it? It happened to a scene I made that had previously been working fine. The glitch was accompanied by really bad lag. Any help would be really appreciated. Thanks!

b6f2bbdd459d69e9d7ad18666eb3ccbf.jpg
 
Solution
Solved it. The problem was with entry points -- I forgot to insert an entry point in some of the ruins scenes. Now I feel like an idiot ... :smile:
Edit: oops, spoke too soon. Still need help! The bug reappeared. It's only occurring when I use a particular mission template and menu combination. The same mission template accessed through a different menu gives no glitches. FYI I'm using an adaptation of Highlander's hunting mission from Age of Machinery, copied from the original 1.011 code.

Is there anything in the mission template code or game menus code that could be causing the problem?

Python:
#DRQ ruins menu
("ruins",0,
    "{s13}. The locals say treasure is sometimes found here -- but so is peril.",
    "none",
    [
        #what is this ruin? find out from the icon
        (party_get_icon,":ruins_icon","$g_encountered_party"),
        (try_begin),
            (is_between,":ruins_icon","icon_ruins_c","icon_hero_rocket"),#pyramids
                (store_random_in_range,":scene_to_use","scn_crawl_pyramids_a","scn_crawl_crash_site"),             
                (str_store_string,s13,"@Enormous pyramids and other mysterious structures loom over the sands. There is a look of incredible age about them. From the guardian statues surrounding the pyramids, it seems the builders were a race of reptile-men."),
           (else_try),
             (eq,":ruins_icon","icon_ruins_a"),#towers
                (store_random_in_range,":scene_to_use","scn_crawl_towers_a","scn_crawl_end"),
                (str_store_string,s13,"@Tall towers burned and scarred as if by atomic weapons stand broken or leaning, half-buried in the sand."),
           (else_try),
            (eq,":ruins_icon","icon_ruins_b"),#crashed ufo
                (assign, ":scene_to_use", "scn_crawl_crash_site"),
                (str_store_string,s13,"@Huge, rusting domed or disc-shaped structures of metal lie half-buried in the desert sand. On coming closer, you realize that these can only be some kind of spacecraft, crashed here a long, long time ago."),
        (try_end),
        (assign,"$ruins_scene",":scene_to_use"),
        # (assign,"$ruins_scene","scn_crawl_pyramids_a"),
    ],
    [
        ("continue",[],"Explore the ruins.",[
            #set treasure chest contents - can be:
            #junk
            #ancient art
            #ancient artifacts of power - what power?
            #ancient energy weapons - energy shield, fulgurator guns, power packs
            (try_for_range,":treasure_chest","trp_ruin_chest_a","trp_companions_overview"),#1
                (try_for_range,":unused",0,5),#2 #5 tries
                    (store_random_in_range,":treasure_chance",0,10),
                    (gt,":treasure_chance",7),#30% chance of treasure
                    (store_random_in_range,":artifact","itm_fulgurator_power_pack","itm_items_end"),
                    (troop_add_item,":treasure_chest",":artifact"),
                (try_end),#2
            (try_end),#1
          
            #DRQ debug
            (try_begin),
                (eq,"$ruins_scene","scn_crawl_pyramids_a"),
                (str_store_string,s15,"@Scene used: crawl_pyramids_a"),
               (else_try),
                (eq,"$ruins_scene","scn_crawl_pyramids_b"),
                (str_store_string,s15,"@Scene used: crawl_pyramids_b"),
               (else_try),
                (eq,"$ruins_scene","scn_crawl_pyramids_c"),
                (str_store_string,s15,"@Scene used: crawl_pyramids_c"),
               (else_try),
                (eq,"$ruins_scene","scn_crawl_pyramids_d"),
                (str_store_string,s15,"@Scene used: crawl_pyramids_d"),
               (else_try),
                (eq,"$ruins_scene","scn_crawl_pyramids_e"),
                (str_store_string,s15,"@Scene used: crawl_pyramids_e"),
               (else_try),
                (eq,"$ruins_scene","scn_crawl_pyramids_f"),
                (str_store_string,s15,"@Scene used: crawl_pyramids_f"),
               (else_try),
                (eq,"$ruins_scene","scn_crawl_crash_site"),
                (str_store_string,s15,"@Scene used: scn_crawl_crash_site"),
               (else_try),
                (eq,"$ruins_scene","scn_crawl_towers_a"),
                (str_store_string,s15,"@Scene used: scn_crawl_towers_a"),
               (else_try),
                (eq,"$ruins_scene","scn_crawl_towers_b"),
                (str_store_string,s15,"@Scene used: scn_crawl_towers_b"),
            (try_end),
            (display_log_message,"@{s15}"),
            
            # set ruin denizens/guardians
            (assign,"$predator_no",0),
            (store_random_in_range,"$predator_no",3,12),
            (assign,"$predator_type","trp_varanid"),#set to constant for debugging
          
            #DRQ add enemies
            (modify_visitors_at_site,"$ruins_scene"),
            (reset_visitors),
                (try_begin),
                   (gt,"$predator_no",0),
                   (set_visitors, 2, "$predator_type", "$predator_no"),
                (try_end),
                ## Go to mission
                (set_party_battle_mode), #add to menu before set_jump_mission
                # (set_jump_mission,"mt_ai_training"), #it's ok with this
                (set_jump_mission,"mt_deer_hunting"), 
                    # (jump_to_scene,"scn_random_scene_steppe_forest"),
                    (jump_to_scene,"$ruins_scene"),
                        # (change_screen_mission),#why is this line doubled?
                        (music_set_situation, 0),
                        (jump_to_menu,"mnu_ruins_explored"),
                    (change_screen_mission),     
        ]),
      
        ("leave",[],"Leave.",[
            (change_screen_return),   
        ]),
      
    ]
),

Python:
#DRQ modified hunting mod  - from Highlander
#copy of first mission line
#    "deer_hunting",mtf_battle_mode,-1,
  
  (
    "deer_hunting",mtf_battle_mode,charge,
    "You ride out after the prey. Hit [TAB] at any time to end the hunt.",
    [
     (1,mtef_team_0|mtef_use_exact_number,0,aif_start_alarmed,4,[]),
     (4,mtef_visitor_source,0,aif_start_alarmed,0,[]),
     (4,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,0,[]),#now they start at entry #8
     ],
    [
  
      #DRQ let's see if we get banners
       common_battle_init_banner,   
      
      (ti_tab_pressed, 0, 0,
        [
            (set_trigger_result,1)
        ],
            []), #leaving area

      # common_inventory_not_available,#DRQ making sure we don't open the chest
        #disabling this to check if the treasure chests are available
       #DRQ to get minimap
      common_battle_order_panel,
      common_battle_order_panel_tick,
 
      (0, 0, ti_once, [
      #spawning deers
        #(party_count_members_of_type,":num_deers","$g_encountered_party","trp_gazelle"),
        (assign,":num_deers","$game_found"),#DRQ
        #DRQ spawn some opponents
        (get_scene_boundaries, pos10,pos11),
        (position_get_x, ":scene_min_x", pos10),
        (position_get_x, ":scene_max_x", pos11),
        (position_get_y, ":scene_min_y", pos10),
        (position_get_y, ":scene_max_y", pos11),
             (store_div,":border_x",":scene_max_x",10),
             (val_add,":scene_min_x",":border_x"),
             (val_sub,":scene_max_x",":border_x"),
             (store_div,":border_y",":scene_max_y",10),
             (val_add,":scene_min_y",":border_y"),
             (val_sub,":scene_max_y",":border_y"),
             (store_random_in_range,":x_pos",":scene_min_x",":scene_max_x"),
             (store_random_in_range,":y_pos",":scene_min_y",":scene_max_y"),
                     (init_position, pos1),
             (position_set_x,pos1,":x_pos"),
             (position_set_y,pos1,":y_pos"),
             (position_set_z,pos1,10000),
             (position_set_z_to_ground_level,pos1),
                     (set_spawn_position, pos1),

        #DRQ set prey type
        (try_begin),
            (eq,"$prey_type",1),
                (assign,"$prey","itm_gazelle"),
               (else_try),
                (eq,"$prey_type",2),
                    (assign,"$prey","itm_dino"),
               (else_try),
                (eq,"$prey_type",3),
                    (assign,"$prey","itm_duckbill"),
        (try_end),
        #DRQ end setting prey type
          
             (ge,":num_deers",0),           
             (assign,"$num_deers_killed",0),(assign,"$predators_killed",0),
             (get_scene_boundaries, pos10,pos11),
             (position_get_x, ":scene_min_x", pos10),
             (position_get_x, ":scene_max_x", pos11),
             (position_get_y, ":scene_min_y", pos10),
             (position_get_y, ":scene_max_y", pos11),
             (store_div,":border_x",":scene_max_x",10),
             (val_add,":scene_min_x",":border_x"),
             (val_sub,":scene_max_x",":border_x"),
             (store_div,":border_y",":scene_max_y",10),
             (val_add,":scene_min_y",":border_y"),
             (val_sub,":scene_max_y",":border_y"),
             (store_random_in_range,":x_pos",":scene_min_x",":scene_max_x"),
             (store_random_in_range,":y_pos",":scene_min_y",":scene_max_y"),
                     (init_position, pos1),
             (position_set_x,pos1,":x_pos"),
             (position_set_y,pos1,":y_pos"),
             (position_set_z,pos1,10000),
             (position_set_z_to_ground_level,pos1),
                     (set_spawn_position, pos1),

#AHA! this block spawns a 'herd leader' - so total to spawn in the next block should be -1
#this works
             (spawn_horse, "$prey"),
             (str_store_item_name,s9,"$prey"),
             # (display_message,"@Spawning {s9}."),
                  
             (assign,"$leading_deer",reg0),
          
             (val_sub,":num_deers",1),#DRQ correcting number of prey found - this works
             (ge,":num_deers",0),#from Ramaraunt
             (try_for_range,":unused",0,":num_deers"),#was 0,":num_deers" - i think this was my bug!
                       (init_position, pos1),
                       (store_random_in_range,":x_pos_add",0,1000),
                       (store_random_in_range,":y_pos_add",0,1000),
                       (val_add,":x_pos_add",":x_pos"),
                       (val_add,":y_pos_add",":y_pos"),
                       (position_set_x,pos1,":x_pos_add"),
                       (position_set_y,pos1,":y_pos_add"),
                       (position_set_z,pos1,10000),
                       (position_set_z_to_ground_level,pos1),
                       (set_spawn_position, pos1),
                       (spawn_horse, "$prey"),                   
             (try_end),
          
#DRQ add enemies
#is this necessary? commenting out to see
#should this be a separate trigger?
      
         #DRQ adding companions - automatically make them follow
           ## DRQ AUTO FOLLOW
               (get_player_agent_no, ":player_agent"),
               (agent_get_team, ":player_team", ":player_agent"),
               # (set_show_messages, 0),
               (team_give_order, ":player_team", grc_everyone, mordr_follow),
               # (set_show_messages, 1),
           ## DRQ END AUTO FOLLOW
      
                 ], []),
              
       (0, 0, ti_once,[
         (try_begin),
            (gt,"$predator_no",0),
                    (add_visitors_to_current_scene, 4, "$predator_type", "$predator_no"),
                    (str_store_troop_name_plural,s10,"$predator_type"),
                    (display_message,"@Warning! {s10} sighted!",0xfc2626),
         (try_end),
    
       ],[]),
#wounded deers move slower
      (1,0,0,[],
      [(try_for_agents,reg(1)),
       (agent_get_item_id,reg(2),reg(1)),
       (eq,reg(2),"$prey"),
       (store_agent_hit_points,reg(2),reg(1)),
       (store_mul,reg(3),20,reg(2)),
       (val_div,reg(3),40),
       (agent_set_speed_limit,reg(1),reg(3)),
       (try_end),
      ]),
      (5,0,0,
      [
      (neg|agent_is_alive,"$leading_deer"),
      ],
      [
      (try_for_agents,reg(1)),
          (agent_get_item_id,reg(2),reg(1)),
    (eq,reg(2),"$prey"),
    (assign,"$leading_deer",reg(1)),
      (try_end),
      ]),
      (1,0,0,[],
      [
          (assign,":num_kills",0),(assign,":num_predator_kills",0),
          (try_for_agents,reg(1)),
            (agent_get_item_id,reg(2),reg(1)),
                (try_begin),
                    (eq,reg(2),"$prey"),
                        (store_agent_hit_points,reg(2),reg(1)),
                    (eq,reg(2),0),
                    (val_add,":num_kills",1),
                  (else_try),
                    (eq,reg(2),"$predator_type"),
                        (store_agent_hit_points,reg(2),reg(1)),
                    (eq,reg(2),0),
                    (val_add,":num_predator_kills",1),
                
                (try_end),
          (try_end), 

# #DRQ backup code block testing for kills
          # (try_for_agents,reg(1)),
            # (agent_get_item_id,reg(2),reg(1)),
            # (eq,reg(2),"$prey"),
                # (store_agent_hit_points,reg(2),reg(1)),
            # (eq,reg(2),0),
            # (val_add,":num_kills",1),
          # (try_end), 


          (gt,":num_kills","$num_deers_killed"),       
                     (get_scene_boundaries, pos10,pos11),
                     (position_get_x, ":scene_min_x", pos10),
                     (position_get_x, ":scene_max_x", pos11),
                     (position_get_y, ":scene_min_y", pos10),
                     (position_get_y, ":scene_max_y", pos11),
             (store_div,":border_x",":scene_max_x",10),
             (val_add,":scene_min_x",":border_x"),
             (val_sub,":scene_max_x",":border_x"),
             (store_div,":border_y",":scene_max_y",10),
             (val_add,":scene_min_y",":border_y"),
             (val_sub,":scene_max_y",":border_y"),
             (store_random_in_range,":x_pos",":scene_min_x",":scene_max_x"),
             (store_random_in_range,":y_pos",":scene_min_y",":scene_max_y"),
                     (init_position, pos1),
             (position_set_x,pos1,":x_pos"),
             (position_set_y,pos1,":y_pos"),
             (position_set_z,pos1,10000),
             (position_set_z_to_ground_level,pos1),
                     (agent_set_scripted_destination,"$leading_deer",pos1),
                 (assign,"$num_deers_killed",":num_kills"),
                 (assign,reg6,"$num_deers_killed"),
                 (assign,reg5,"$game_found"),
                 (display_message,"@You have killed {reg6} of {reg5} {s9}."),
                 (assign,"$predators_killed",":num_predator_kills"),
                 # (assign,reg7,"$predators_killed"),
      ]),
      (5,0,0,[],
      [
      (agent_get_position,pos1,"$leading_deer"),
      (position_get_x,":x_pos",pos1),
      (position_get_y,":y_pos",pos1),
      (this_or_next|le,":x_pos",5000),
      (this_or_next|le,":y_pos",5000),
      (this_or_next|ge,":x_pos",38000),
      (ge,":y_pos",38000),
                     (get_scene_boundaries, pos10,pos11),
                     (position_get_x, ":scene_min_x", pos10),
                     (position_get_x, ":scene_max_x", pos11),
                     (position_get_y, ":scene_min_y", pos10),
                     (position_get_y, ":scene_max_y", pos11),
             (store_div,":border_x",":scene_max_x",10),
             (val_add,":scene_min_x",":border_x"),
             (val_sub,":scene_max_x",":border_x"),
             (store_div,":border_y",":scene_max_y",10),
             (val_add,":scene_min_y",":border_y"),
             (val_sub,":scene_max_y",":border_y"),
             (store_random_in_range,":x_pos",":scene_min_x",":scene_max_x"),
             (store_random_in_range,":y_pos",":scene_min_y",":scene_max_y"),
                     (init_position, pos1),
             (position_set_x,pos1,":x_pos"),
             (position_set_y,pos1,":y_pos"),
             (position_set_z,pos1,10000),
             (position_set_z_to_ground_level,pos1),
                     (agent_set_scripted_destination,"$leading_deer",pos1),
      ]),
      (1,0,0,[],
      [
      (try_for_agents,reg(1)),
    (agent_get_item_id,reg(2),reg(1)),
    (eq,reg(2),"$prey"),#DRQ i missed this one
    (store_agent_hit_points,":health",reg(1)),
    (store_sub,":damage",100,":health"),
    (agent_get_slot,":prev_damage",reg(1),1),
    (neq,":prev_damage",":damage"),
    (agent_set_slot,reg(1),1,":damage"),
        (agent_get_position,pos1,reg(1)),
        (position_get_x,":x_pos",pos1),
    (position_get_y,":y_pos",pos1),
        (store_random_in_range,":x_pos_add",0,1000),
        (store_random_in_range,":y_pos_add",0,1000),
    (val_add,":x_pos",":x_pos_add"),
    (val_add,":y_pos",":y_pos_add"),
    (position_set_x,pos1,":x_pos"),
    (position_set_y,pos1,":y_pos"),
        (agent_set_scripted_destination,reg(1),pos1),
      (try_end),
      ]),
      (0.9,0,0, #deer travelling
      [],
      [
      (get_player_agent_no,reg(1)),
      (agent_get_position,pos1,reg(1)),
      (agent_get_position,pos4,"$leading_deer"),
      (position_get_x,":x_pos",pos4),
      (position_get_y,":y_pos",pos4),
      (try_for_agents,reg(1)),
    (agent_get_item_id,reg(2),reg(1)),
    (eq,reg(2),"$prey"),#and this one!
        (agent_get_position,pos2,reg(1)),
    (get_distance_between_positions,reg(3),pos1,pos2),
    (try_begin),
            (position_get_x,":pos_x",pos2),
            (position_get_x,":pos_y",pos2),
             (position_get_x, ":scene_min_x", pos10),
                     (position_get_x, ":scene_max_x", pos11),
                     (position_get_y, ":scene_min_y", pos10),
                     (position_get_y, ":scene_max_y", pos11),
             (store_div,":border_x",":scene_max_x",10),
             (val_add,":scene_min_x",":border_x"),
             (val_sub,":scene_max_x",":border_x"),
             (store_div,":border_y",":scene_max_y",10),
             (val_add,":scene_min_y",":border_y"),
             (val_sub,":scene_max_y",":border_y"),
        (this_or_next|gt,":pos_x",":scene_max_x"),
        (this_or_next|lt,":pos_x",":scene_min_x"),
        (this_or_next|gt,":pos_y",":scene_max_y"),
        (lt,":pos_y",":scene_min_y"),
        (store_random_in_range,":x_pos",":scene_min_x",":scene_max_x"),
        (store_random_in_range,":y_pos",":scene_min_y",":scene_max_y"),
                (init_position, pos1),
        (position_set_x,pos1,":x_pos"),
        (position_set_y,pos1,":y_pos"),
        (position_set_z,pos1,10000),
        (position_set_z_to_ground_level,pos1),
                (agent_set_scripted_destination,reg(1),pos1),
    (else_try),
        (le,reg(3),2500),
        (position_get_x,reg(4),pos1),
        (position_get_x,reg(5),pos2),
        (store_sub,":x_dist",reg(5),reg(4)),
        (val_mul,":x_dist",10),
        (position_get_y,reg(6),pos1),
        (position_get_y,reg(7),pos2),
        (store_sub,":y_dist",reg(7),reg(6)),
        (val_mul,":y_dist",10),
        (init_position,pos3),
        (val_add,":x_dist",reg(5)),
        (val_add,":y_dist",reg(7)),
        (position_set_x,pos3,":x_dist"),
        (position_set_y,pos3,":y_dist"),
            (position_set_z,pos3,10000),
            (position_set_z_to_ground_level,pos3),
        (agent_set_scripted_destination,reg(1),pos3),
    (else_try),
        (get_distance_between_positions,reg(3),pos4,pos2),
        (ge,reg(3),2000),
                       (init_position, pos6),
               (store_random_in_range,":x_pos_add",0,1000),
               (store_random_in_range,":y_pos_add",0,1000),
               (val_add,":x_pos_add",":x_pos"),
               (val_add,":y_pos_add",":y_pos"),
               (position_set_x,pos6,":x_pos_add"),
               (position_set_y,pos6,":y_pos_add"),
               (position_set_z,pos6,10000),
               (position_set_z_to_ground_level,pos6),
               (agent_set_scripted_destination,reg(1),pos6),
    (try_end),
      (try_end),
      ]),
    ]),
  
#DRQ end hunting mod
 
Last edited:
Upvote 0
Solved it. The problem was with entry points -- I forgot to insert an entry point in some of the ruins scenes. Now I feel like an idiot ... :smile:
 
Upvote 0
Solution
Back
Top Bottom