//----------------------------------------------------------------- // Executes a link, attached to a trigger. // Toggles all walls linked to the switch. // Opens doors, Blasts blast walls, turns off illusions. void do_link(sbyte trigger_num) { int i; if (trigger_num != -1) { for (i=0;i<Triggers[trigger_num].num_links;i++) { wall_toggle(&Segments[Triggers[trigger_num].seg[i]], Triggers[trigger_num].side[i]); } } }
//----------------------------------------------------------------- // Executes a link, attached to a trigger. // Toggles all walls linked to the switch. // Opens doors, Blasts blast walls, turns off illusions. void do_link(byte trigger_num) { int i; mprintf((0, "Door link!\n")); if (trigger_num != -1) { for (i=0;i<Triggers[trigger_num].num_links;i++) { wall_toggle(&Segments[Triggers[trigger_num].seg[i]], Triggers[trigger_num].side[i]); mprintf((0," trigger_num %d : seg %d, side %d\n", trigger_num, Triggers[trigger_num].seg[i], Triggers[trigger_num].side[i])); } } }
// ----------------------------------------------------------------------------- // Called when control center gets destroyed. // This code is common to whether control center is implicitly imbedded in a boss, // or is an object of its own. // if objp == NULL that means the boss was the control center and don't set Dead_controlcen_object_num void do_controlcen_destroyed_stuff(object *objp) { int i; // Must toggle walls whether it is a boss or control center. for (i=0;i<ControlCenterTriggers.num_links;i++) wall_toggle(&Segments[ControlCenterTriggers.seg[i]], ControlCenterTriggers.side[i]); // And start the countdown stuff. Fuelcen_control_center_destroyed = 1; if (!Control_center_present) return; if (objp != NULL) Dead_controlcen_object_num = objp-Objects; }
// ----------------------------------------------------------------------------- // Called when control center gets destroyed. // This code is common to whether control center is implicitly imbedded in a boss, // or is an object of its own. // if objp == NULL that means the boss was the control center and don't set Dead_controlcen_object_num void do_controlcen_destroyed_stuff(object *objp) { int i; if ((Game_mode & GM_MULTI_ROBOTS) && Control_center_destroyed) return; // Don't allow resetting if control center and boss on same level // Must toggle walls whether it is a boss or control center. for (i=0;i<ControlCenterTriggers.num_links;i++) wall_toggle(&Segments[ControlCenterTriggers.seg[i]], ControlCenterTriggers.side[i]); // And start the countdown stuff. Control_center_destroyed = 1; // If a secret level, delete secret.sgc to indicate that we can't return to our secret level. if (Current_level_num < 0) { int rval; #ifndef MACINTOSH rval = unlink("secret.sgc"); #else rval = unlink(":Players:secret.sgc"); #endif mprintf((0, "Deleting secret.sgc, return value = %i\n", rval)); } if (Base_control_center_explosion_time != DEFAULT_CONTROL_CENTER_EXPLOSION_TIME) Total_countdown_time = Base_control_center_explosion_time + Base_control_center_explosion_time * (NDL-Difficulty_level-1)/2; else Total_countdown_time = Alan_pavlish_reactor_times[Difficulty_level]; Countdown_timer = i2f(Total_countdown_time); if (!Control_center_present || objp==NULL) { //Assert(objp == NULL); return; } //Assert(objp != NULL); Dead_controlcen_object_num = objp-Objects; }
// ----------------------------------------------------------------------------- // Called when control center gets destroyed. // This code is common to whether control center is implicitly imbedded in a boss, // or is an object of its own. // if objp == NULL that means the boss was the control center and don't set Dead_controlcen_object_num void do_controlcen_destroyed_stuff(object *objp) { int i; // Must toggle walls whether it is a boss or control center. for (i=0;i<ControlCenterTriggers.num_links;i++) wall_toggle(ControlCenterTriggers.seg[i], ControlCenterTriggers.side[i]); // And start the countdown stuff. Control_center_destroyed = 1; Total_countdown_time = Alan_pavlish_reactor_times[Difficulty_level]; Countdown_timer = i2f(Total_countdown_time); if (!Control_center_present) return; if (objp != NULL) Dead_controlcen_object_num = objp-Objects; }