--- race-curvywire.py 2004-11-15 18:28:30.329587584 +0200 +++ race.py 2004-11-15 18:30:39.991875920 +0200 @@ -1007,6 +1007,50 @@ p2 = Point( w8 + 8 , 18 , 1 + d ) u.add( Box( p1 , p2 ) ) return u , t + +def TargetJumpingObstacle( level ) : + u , t = Union() , UnionBox() + + length = 72 + holex = (3 - level) * 5 + 10 + holez = holex - level + height = rand ( 8 ) + 3 * level + borderwidth = 0.25 + jumpingdistance = rand( 20 ) + 20 + endspace = rand( 20 ) + 5 + zdistance = length - jumpingdistance + + t = RemoveSafetyTrack( x = length , z = length ) + + # target box + p1 = Point( - holex / 2 - borderwidth , 0 , - holez / 2 - borderwidth - zdistance ) + p2 = Point( holex / 2 + borderwidth , height , holez / 2 + borderwidth - zdistance ) + b = Box( p1 , p2 ) + # hole + p1 = Point( - holex / 2 , 0.25 , - holez / 2 - zdistance ) + p2 = Point( holex / 2 , height , + holez / 2 - zdistance ) + b = b - Box( p1 , p2 ) + # exit tunnel + p1 = Point( - holex / 2 - borderwidth , 0 , holez / 2 + borderwidth - zdistance) + p2 = Point( holex / 2 + borderwidth , 5 , length - endspace ) + b = b + Box( p1 , p2 ) + # hole + p1 = Point( - holex / 2 , 0.25 , holez / 2 - zdistance ) + p2 = Point( holex / 2 , 5 , length - endspace ) + b = b - Box( p1 , p2 ) + # clear end for jumping + p1 = Point( - holex / 2 - borderwidth , 0.25 , length - endspace ) + p2 = Point( holex / 2 + borderwidth , 5 , length - endspace - 5 ) + b = b - Box( p1 , p2 ) + + u.add( b ) + + # pyramid roof + p1 = Point( - holex / 2 - borderwidth , 5 , length - endspace - 5 ) + p2 = Point( holex / 2 + borderwidth , 8 , holez / 2 + borderwidth - zdistance ) + u.add( Pyramid( p1 , p2 ) ) + + return u , t def ThinMazeObstacle( level ) : u , t = Union() , UnionBox() @@ -1509,8 +1553,9 @@ 'RollerCoaster' : ( 2 , False , RollerCoasterObstacle ) , 'StickyHurdle' : ( 4 , True , StickyHurdleObstacle ) , 'SuspendedVhurdle' : ( 4 , True , SuspendedVhurdleObstacle ) , +'TargetJumping' : ( 10 , True , TargetJumpingObstacle ) , 'ThinTracks' : ( 4 , True , ThinTracksObstacle ) , 'ThinMaze' : ( 1 , False , ThinMazeObstacle ) , 'ThroughWeaponBox' : ( 1 , True , ThroughWeaponBoxObstacle ) ,