I was doing the Die Rise EE and found a lock that prevents you from completing the EE, I think it's a vanilla game bug, it's the step where you choose either:
Richtofen: having the balls sliquified.
Maxis: Picking up the balls.
The bug is that if you sliquified a ball, if you pick the other ball up you no longer can sliquifie it, and the sliquified ball can't be picked up, thus locking yourself out of the EE.
I have did this fix and it works, by changing the self endon( "sliquified" ) to a level endon, same for the notify, to make it that if you sliquified a ball the other can't be picked up and locking you into Richtofen path, and you already get locked into maxis path if you picked up a ball.
#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\zm_highrise_sq_atd;
#include maps\mp\zm_highrise_sq_pts;
#include maps\mp\zombies\_zm_equipment;
#include maps\mp\zombies\_zm_utility;
main()
{
replaceFunc( maps\mp\zm_highrise_sq_slb::lion_ball_enable_pickup, ::lion_ball_enable_pickup );
replaceFunc( maps\mp\zm_highrise_sq_ssp::watch_model_sliquification, ::watch_model_sliquification );
}
lion_ball_enable_pickup()
{
level endon( "sq_sliquified" );//changed from self endon
while ( true )
{
self.can_pickup = 1;
self.t_pickup = sq_slb_create_use_trigger( self.origin, 32, 70, &"ZM_HIGHRISE_SQ_PICKUP_BALL" );
while ( self.can_pickup )
{
self.t_pickup waittill( "trigger", player );
if ( !isdefined( player.zm_sq_has_ball ) )
{
player.zm_sq_has_ball = 1;
player.which_ball = self;
self.can_pickup = 0;
self.player = player;
flag_set( "sq_ball_picked_up" );
level thread maps\mp\zm_highrise_sq_pts::pts_should_player_create_trigs( player );
level notify( "zm_ball_picked_up", player );
}
}
self.t_pickup delete();
self hide();
self setcandamage( 0 );
wait 1;
self.t_putdown = sq_slb_create_use_trigger( self.origin, 16, 70, &"ZM_HIGHRISE_SQ_PUTDOWN_BALL" );
self.player clientclaimtrigger( self.t_putdown );
self.player.t_putdown_ball = self.t_putdown;
self ball_pickup_waittill_change();
play_spark = 0;
if ( !isdefined( self.t_putdown ) )
{
self waittill( "sq_pickup_reset" );
play_spark = 1;
}
else
self.t_putdown delete();
self.player notify( "zm_sq_ball_putdown" );
if ( play_spark )
{
self.sq_pickup_reset = undefined;
playfx( level._effect["sidequest_flash"], self.origin );
}
self show();
self setcandamage( 1 );
self.player.zm_sq_has_ball = undefined;
self.player = undefined;
wait 1;
}
}
watch_model_sliquification( n_end_limit, str_complete_flag )
{
n_count = 0;
self setcandamage( 1 );
while ( !flag( str_complete_flag ) )
{
self waittill( "damage", amount, attacker, direction, point, mod, tagname, modelname, partname, weaponname );
if ( issubstr( weaponname, "slipgun" ) && !flag( "sq_ball_picked_up" ) )
{
n_count++;
if ( n_count >= n_end_limit )
{
/#
iprintlnbold( "MODEL COMPLETE: " + str_complete_flag );
#/
level notify( "sq_sliquified" );// changed from self notify
if ( isdefined( self.t_pickup ) )
self.t_pickup delete();
flag_set( str_complete_flag );
}
else if ( n_count == 1 )
level notify( "ssp1_ball_first_sliquified" );
else if ( n_count == 10 )
level notify( "ssp1_ball_sliquified_2" );
}
}
}```