home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 476-500 / apd480 / autoexec.amos / autoexec.amosSourceCode next >
AMOS Source Code  |  1993-04-24  |  149KB  |  3,840 lines

  1. 'SlamBall  
  2. 'Written by Michael Keith Lysons 
  3. 'Originally started Saturday 11th July 1992 as Footy Manager 
  4. 'Resurrected 11th September 1992 as SlamBall 
  5. '(c) M K Lysons 1993 
  6. Set Buffer 50
  7. Close Editor 
  8. Amos Lock 
  9. Break Off 
  10. Screen Open 0,320,260,8,Lowres : Flash Off 
  11. Screen Open 1,320,260,8,Lowres : Flash Off 
  12. Screen Open 2,320,260,8,Lowres : Flash Off 
  13. Screen Open 3,640,260,8,Hires : Flash Off : Cls 0
  14. Limit Mouse 128,42 To 447,298
  15. NUMBER_OF_TEAMS=16 : NUMBER_OF_DIVISIONS=2
  16. TEAMS_IN_DIVISION=NUMBER_OF_TEAMS/NUMBER_OF_DIVISIONS
  17. WIN_POINTS=2 : EQUAL_POINTS=1
  18. CURRENT_WEEK=1 : TEMP_WEEK=1
  19. THE_DRAW_FLAG=0 : FILE_OPEN_FLAG=0
  20. WHICH_MATCH_FLAG=0
  21. GAME_DISK$="SlamBall_Game_Disk:"
  22. Dir$=GAME_DISK$
  23. FILENAME$=""
  24. '
  25. NUMBER_OF_PLAYERS_MAXIMUM=10
  26. TEAM_MAX=NUMBER_OF_TEAMS*NUMBER_OF_PLAYERS_MAXIMUM
  27. CURRENT_TEAM=16 : CURRENT_LETTER=0
  28. CONTRACT_POINTS=0 : CONTRACT_QUIT=0
  29. RESIGN_FLAG=0 : MANAGER_HAS_NOT_RESIGNED=0 : MANAGER_HAS_RESIGNED=1
  30. FULL_BOX=3 : EDGE_TOP=5 : EDGE_BOTTOM=6
  31. MENU_SCREEN=9
  32. MAIN_SCREEN=6
  33. DISPLAY_PLAYER_SCREEN=7
  34. MANAGER_DISPLAY_SCREEN=8
  35. '********************************************************************
  36. '*                        GENERAL PROCEDURES                        *
  37. '********************************************************************
  38. FILE_IS_NOT_OPEN=0 : FILE_IS_OPEN=1 : QUIT_MENU=0 : PROMOTE_FLAG=0
  39. Procedure INITIALISE_VARIABLES_WHEN_GAME_LOADS
  40.    INITIALISE_FIXTURES_ARRAY
  41.    INITIALISE_TEAMNAMES_AND_STADIUMS
  42.    INITIALISE_MANAGER_NAME_ARRAY
  43.    INITIALISE_LETTERS_OF_NAME
  44.    INITIALISE_TRAINING_MESSAGE_ARRAY
  45.    INITIALISE_SQUAD_ARRAYS
  46. End Proc
  47. Procedure INITIALISE_VARIABLES
  48.    Shared TEAM_MAX
  49.    INITIALISE_NEW_SEASON_VARIABLES
  50.    For PERSON=0 To TEAM_MAX
  51.       INITIALISE_PLAYER_ARRAYS[PERSON]
  52.    Next PERSON
  53.    INITIALISE_MANAGER_VARIABLES
  54.    INITIALISE_USER_TEAM
  55. End Proc
  56. Procedure INITIALISE_NEW_SEASON_VARIABLES
  57.    INITIALISE_LEAGUE_ARRAYS
  58.    INITIALISE_CUP_ARRAYS
  59. End Proc
  60. Procedure INITIALISE_NEW_GAME
  61.    Shared TEAM_CASH(),CURRENT_TEAM,CURRENT_WEEK,CASH_FORWARD
  62.    Shared RESIGN_FLAG,MANAGER_HAS_NOT_RESIGNED
  63.    Shared TACTIC_USER_A,TACTIC_USER_B,TACTIC_USER_C,TACTIC_USER_D
  64.    INITIALISE_VARIABLES
  65.    MAKE_ORIGINAL_PLAYERS_AND_TRANSFER_LIST[CURRENT_TEAM]
  66.    CASH_FORWARD=TEAM_CASH(CURRENT_TEAM)
  67.    THE_END_OF_THE_WEEK
  68.    Reserve Zone 
  69.    INITIALISE_MAIN_GAME_SCREEN
  70.    RESIGN_FLAG=MANAGER_HAS_NOT_RESIGNED
  71.    CURRENT_WEEK=1
  72.    TACTIC_USER_A=50 : TACTIC_USER_B=50
  73.    TACTIC_USER_C=50 : TACTIC_USER_D=50
  74. End Proc
  75. Procedure RETRIEVE_INITIAL_STORED_DATA
  76.    RETRIEVE_PLAYER_NAMES : Wait 150
  77.    RETRIEVE_MATCH_MESSAGES : Wait 150
  78. End Proc
  79. Procedure MAKE_ORIGINAL_PLAYERS_AND_TRANSFER_LIST[TEAM]
  80.    MAKE_ORIGINAL_PLAYERS
  81.    MAKE_ORIGINAL_TRANSFER_LIST[TEAM]
  82. End Proc
  83. Procedure INITIALISE_MAIN_MENU_SCREEN
  84.    Shared MENU_SCREEN
  85.    Unpack MENU_SCREEN To 1
  86.    Screen 0 : Get Palette 1
  87.    Screen 2 : Get Palette 1
  88.    Screen 3 : Get Palette 1
  89.    Screen 1
  90.    CREATE_ZONES_FOR_MENU_SCREEN
  91. End Proc
  92. Procedure INITIALISE_MAIN_GAME_SCREEN
  93.    Shared MAIN_SCREEN
  94.    Unpack MAIN_SCREEN To 0
  95.    CREATE_ZONES_FOR_MAIN_SCREEN
  96. End Proc
  97. Procedure PLACE_TEXT_CENTRALLY[Y_POSITION,MESSAGE$,WIDTH]
  98.    MESSAGE_LENGTH=Len(MESSAGE$)
  99.    HALF_WIDTH=WIDTH/2
  100.    BEGIN_POSITION=HALF_WIDTH-((MESSAGE_LENGTH*8)/2)
  101.    Text BEGIN_POSITION,Y_POSITION,MESSAGE$
  102. End Proc
  103. Procedure MAIN_MENU_SELECTION
  104.    Shared QUIT_MENU
  105.    CHECK_MOUSE=Mouse Click
  106.    WHICH_ZONE=Mouse Zone
  107.    If CHECK_MOUSE=1 and WHICH_ZONE=1
  108.       INITIALISE_TEAMNAMES_AND_STADIUMS
  109.       RESET_GATE_RECEIPTS
  110.       USER_SELECTED_NEW_GAME
  111.    End If 
  112.    If CHECK_MOUSE=1 and WHICH_ZONE=2
  113.       QUIT_MENU=1
  114.       INITIALISE_TEAMNAMES_AND_STADIUMS
  115.       INITIALISE_MANAGER_NAME
  116.       RESET_GATE_RECEIPTS
  117.    End If 
  118.    If CHECK_MOUSE=1 and WHICH_ZONE=3
  119.       USER_SELECTED_CREDITS
  120.    End If 
  121.    If CHECK_MOUSE=1 and WHICH_ZONE=4
  122.       LEAVE_GAME
  123.    End If 
  124. End Proc
  125. Procedure USER_SELECTED_CREDITS
  126.    Screen 2
  127.    Cls 4
  128.    MAKE_BOX_FOR_FIXTURE_SCREEN
  129.    Ink 7,3, : PLACE_TEXT_CENTRALLY[10,"Credits",Screen Width]
  130.    Ink 1,3,
  131.    Text 10,25,"Written by: Michael Keith Lysons"
  132.    Text 10,45,"This game is a shareware product."
  133.    Text 10,55,"If you like this game and play"
  134.    Text 10,65,"it often then please send ï¿½5"
  135.    Text 10,75,"to me at the following address;"
  136.    PLACE_TEXT_CENTRALLY[95,"9 Glencourse Road",Screen Width]
  137.    PLACE_TEXT_CENTRALLY[105,"Widnes",Screen Width]
  138.    PLACE_TEXT_CENTRALLY[115,"Cheshire",Screen Width]
  139.    PLACE_TEXT_CENTRALLY[125,"WA8 9JE",Screen Width]
  140.    PLACE_TEXT_CENTRALLY[135,"England",Screen Width]
  141.    Text 10,155,"It took me over 6 months to write so"
  142.    Text 10,165,"I hope that you enjoy playing it!!"
  143.    Text 10,175,"If you find any bugs or have any"
  144.    Text 10,185,"comments then please write to me at"
  145.    Text 10,195,"the above address."
  146.    PLACE_TEXT_CENTRALLY[240,"Click a mouse button",Screen Width]
  147.    Screen To Front 2
  148.    CHECK_FOR_MOUSE_CLICK
  149.    Screen 1
  150.    Screen To Front 1
  151. End Proc
  152. Procedure LEAVE_GAME
  153.    Screen Close 0 : Screen Close 2 : Screen Close 3
  154.    Fade 3 : Wait 50 : Screen Close 1
  155.    End 
  156. End Proc
  157. Procedure MAIN_GAME_MENU_SELECTION
  158.    Shared NUMBER_OF_PLAYERS_MAXIMUM,CURRENT_WEEK,THE_DRAW_FLAG,CURRENT_TEAM
  159.    Shared CURRENT_TRAINING,TRAINING_MAX,RESIGN_FLAG,MANAGER_HAS_RESIGNED
  160.    Ink 2,6, : Text 132,57,"Week "+Str$(CURRENT_WEEK)-" "+" "
  161.    If CURRENT_WEEK=2 and THE_DRAW_FLAG=0
  162.       MAKE_THE_DRAW[15]
  163.       THE_DRAW_FLAG=1
  164.    End If 
  165.    If CURRENT_WEEK=11 and THE_DRAW_FLAG=0
  166.       MAKE_THE_DRAW[7]
  167.       THE_DRAW_FLAG=1
  168.    End If 
  169.    If CURRENT_WEEK=18 and THE_DRAW_FLAG=0
  170.       MAKE_THE_DRAW[3]
  171.       THE_DRAW_FLAG=1
  172.    End If 
  173.    If CURRENT_WEEK=25 and THE_DRAW_FLAG=0
  174.       MAKE_THE_DRAW[1]
  175.       THE_DRAW_FLAG=1
  176.    End If 
  177.    CHECK_MOUSE=Mouse Click
  178.    WHICH_ZONE=Mouse Zone
  179.    If CHECK_MOUSE=1 and WHICH_ZONE=1
  180.       DISPLAY_LEAGUE_TABLE[1,8,10,62]
  181.    End If 
  182.    If CHECK_MOUSE=1 and WHICH_ZONE=2
  183.       FIND_WHICH_CUP_ROUND_TO_DISPLAY
  184.    End If 
  185.    If CHECK_MOUSE=1 and WHICH_ZONE=3
  186.       DISPLAY_LEAGUE_TABLE[9,16,10,62]
  187.    End If 
  188.    If CHECK_MOUSE=1 and WHICH_ZONE=4 and CURRENT_WEEK>1
  189.       DISPLAY_LEAGUE_RESULTS[CURRENT_WEEK-1,10,49]
  190.    End If 
  191.    If CHECK_MOUSE=1 and WHICH_ZONE=5
  192.       FIND_WHICH_FIXTURES_TO_DISPLAY
  193.    End If 
  194.    If CHECK_MOUSE=1 and WHICH_ZONE=6
  195.       USER_SELECTED_MATCH_OPTION
  196.    End If 
  197.    If CHECK_MOUSE=1 and WHICH_ZONE=7
  198.       DISPLAY_INITIAL_PLAYER_DATA[CURRENT_TEAM]
  199.       FIND_WHICH_PLAYER_TO_DISPLAY[CURRENT_TEAM,Param]
  200.    End If 
  201.    If CHECK_MOUSE=1 and WHICH_ZONE=8
  202.       DISPLAY_TRANSFER_LIST
  203.       FIND_WHICH_TRANSFER_PLAYER_TO_DISPLAY[Param]
  204.    End If 
  205.    If CHECK_MOUSE=1 and WHICH_ZONE=9 and CURRENT_TRAINING<TRAINING_MAX
  206.       FIND_WHICH_ATTRIBUTES_TO_TRAIN
  207.    End If 
  208.    If CHECK_MOUSE=1 and WHICH_ZONE=10
  209.       DISPLAY_MANAGER_DATA[CURRENT_TEAM]
  210.    End If 
  211.    If CHECK_MOUSE=1 and WHICH_ZONE=11
  212.       STORE_ALL_DATA
  213.    End If 
  214.    If CHECK_MOUSE=1 and WHICH_ZONE=12
  215.       RETRIEVE_ALL_DATA
  216.    End If 
  217.    If CHECK_MOUSE=1 and WHICH_ZONE=13
  218.       RESIGN_FLAG=MANAGER_HAS_RESIGNED
  219.    End If 
  220.    Randomize Timer
  221. End Proc
  222. Procedure USER_SELECTED_NEW_GAME
  223.    Shared QUIT_MENU,MANAGER_NAME$,TEAMNAME$(),STADIUM$(),CURRENT_TEAM
  224.    QUIT_MENU=1
  225.    MAKE_BOXES_FOR_ENTERING_NAME
  226.    INITIALISE_LETTERS_OF_NAME
  227.    ENTER_A_NAME["Enter Managers Name",18] : MANAGER_NAME$=Param$
  228.    INITIALISE_LETTERS_OF_NAME
  229.    Text 24,60,"                        "
  230.    ENTER_A_NAME["Enter Team Name",14] : TEAMNAME$(CURRENT_TEAM)=Param$
  231.    INITIALISE_LETTERS_OF_NAME
  232.    Text 24,60,"                        "
  233.    ENTER_A_NAME["Enter Stadium Name",18] : STADIUM$(CURRENT_TEAM)=Param$
  234.    GIVE_MANAGER_AN_AGE
  235. End Proc
  236. Procedure USER_SELECTED_MATCH_OPTION
  237.    Shared LEAGUE_GOALS(),TEAM_CASH(),CURRENT_WEEK,THE_DRAW_FLAG
  238.    Shared CURRENT_TEAM,CASH_FORWARD,NUMBER_OF_TEAMS
  239.    RESET_GATE_RECEIPTS
  240.    CASH_FORWARD=TEAM_CASH(CURRENT_TEAM)
  241.    If CURRENT_WEEK<29
  242.       For TEAM=1 To NUMBER_OF_TEAMS
  243.          LEAGUE_GOALS(TEAM)=0
  244.       Next TEAM
  245.       GENERATE_LEAGUE_RESULTS
  246.       LEAGUE_TABLE_SORT[1,8]
  247.       LEAGUE_TABLE_SORT[9,16]
  248.    End If 
  249.    If(CURRENT_WEEK=8) or(CURRENT_WEEK=15) or(CURRENT_WEEK=22)
  250.       FIRST_LEG_CUP_MATCHES[CURRENT_WEEK]
  251.    End If 
  252.    If(CURRENT_WEEK=10) or(CURRENT_WEEK=17) or(CURRENT_WEEK=24)
  253.       SECOND_LEG_CUP_MATCHES[CURRENT_WEEK]
  254.    End If 
  255.    If CURRENT_WEEK=29
  256.       GENERATE_SECOND_LEG_RESULTS[2]
  257.    End If 
  258.    GRAPHIC_SCREEN_FADE
  259.    THE_END_OF_THE_WEEK
  260.    Inc CURRENT_WEEK
  261.    THE_DRAW_FLAG=0
  262.    Ink 2,6, : Text 129,57," .Wait. "
  263.    For TRANSFER=1 To 5
  264.       FIND_POSSIBLE_TRANSFER_BID
  265.    Next TRANSFER
  266.    For TRAINING=1 To 4
  267.       TRAIN_OTHER_TEAMS_PLAYERS
  268.    Next TRAINING
  269. End Proc
  270. Procedure CHECK_FOR_MOUSE_CLICK
  271.    Repeat 
  272.    Until Mouse Click
  273. End Proc
  274. Procedure MAKE_A_BOX[X1,Y1,X2,Y2,MAIN_BOX,THE_TOP_EDGE,THE_BOTTOM_EDGE]
  275.    Ink MAIN_BOX,1,
  276.    Bar X1,Y1 To X2,Y2
  277.    Ink THE_TOP_EDGE,11,
  278.    Draw X1+1,Y1 To X2,Y1 : Draw X2,Y1 To X2,Y2
  279.    Ink THE_BOTTOM_EDGE,11
  280.    Draw X1,Y1 To X1,Y2 : Draw X1,Y2 To X2-1,Y2
  281. End Proc
  282. Procedure MAKE_BOXES_FOR_MESSAGE
  283.    Shared FULL_BOX,EDGE_TOP,EDGE_BOTTOM
  284.    MAKE_A_BOX[3,10,316,22,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  285.    MAKE_A_BOX[3,73,316,183,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  286.    MAKE_A_BOX[3,235,316,247,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  287.    Ink 5,3, : Text 79,244,"Click a mouse button"
  288. End Proc
  289. Procedure GRAPHIC_SCREEN_FADE
  290.    Screen To Front 0
  291.    Screen 0
  292. End Proc
  293. Procedure CREATE_ZONES_FOR_MENU_SCREEN
  294.    Reserve Zone 4
  295.    Set Zone 1,60,126 To 140,145
  296.    Set Zone 2,206,126 To 261,145
  297.    Set Zone 3,82,171 To 118,190
  298.    Set Zone 4,224,171 To 244,190
  299. End Proc
  300. Procedure CREATE_ZONES_FOR_MAIN_SCREEN
  301.    Reserve Zone 13
  302.    Set Zone 1,48,92 To 102,108 : Set Zone 2,132,92 To 186,108
  303.    Set Zone 3,216,92 To 270,108 : Set Zone 4,48,131 To 102,147
  304.    Set Zone 6,132,131 To 186,147 : Set Zone 5,216,131 To 270,147
  305.    Set Zone 7,48,171 To 102,187 : Set Zone 8,132,171 To 186,187
  306.    Set Zone 9,216,171 To 270,187 : Set Zone 10,32,208 To 86,224
  307.    Set Zone 11,99,208 To 153,224 : Set Zone 12,166,208 To 220,224
  308.    Set Zone 13,233,208 To 287,224
  309. End Proc
  310. Procedure ENTER_FILENAME[MESSAGE$]
  311.    Shared FILENAME$,FILE_OPEN_FLAG,FILE_IS_OPEN,FILE_IS_NOT_OPEN,GAME_DISK$
  312.    FILE_OPEN_FLAG=FILE_IS_NOT_OPEN
  313.    FILENAME$=Fsel$(GAME_DISK$+"*.slamball","",MESSAGE$,"")
  314.    If FILENAME$=""
  315.       FILE_OPEN_FLAG=FILE_IS_NOT_OPEN
  316.    Else 
  317.       FILENAME$=FILENAME$-".slamball"+".slamball"
  318.       If MESSAGE$="Select File To Save"
  319.          Open Out 1,FILENAME$
  320.          Print #1,FILENAME$
  321.          Close 1
  322.          FILE_OPEN_FLAG=FILE_IS_OPEN
  323.       End If 
  324.       If MESSAGE$="Select File To Load"
  325.          If Exist(FILENAME$)
  326.             FILE_OPEN_FLAG=FILE_IS_OPEN
  327.          Else 
  328.             Text 129,57," .Fail. "
  329.          End If 
  330.       End If 
  331.    End If 
  332. End Proc
  333. Procedure STORE_ALL_DATA
  334.    Shared FILE_OPEN_FLAG,FILE_IS_OPEN
  335.    ENTER_FILENAME["Select File To Save"]
  336.    If FILE_OPEN_FLAG=FILE_IS_OPEN
  337.       Ink 2,6, : Text 129,57," .Save. "
  338.       STORE_LEAGUE_DATA
  339.       STORE_CUP_DATA
  340.       STORE_PLAYER_DATA
  341.       STORE_MANAGER_DATA
  342.       STORE_USER_TEAM_DATA
  343.    End If 
  344.    Wait 150
  345. End Proc
  346. Procedure RETRIEVE_ALL_DATA
  347.    Shared FILE_OPEN_FLAG,FILE_IS_OPEN
  348.    ENTER_FILENAME["Select File To Load"]
  349.    If FILE_OPEN_FLAG=FILE_IS_OPEN
  350.       Ink 2,6, : Text 129,57," .Wait. "
  351.       INITIALISE_VARIABLES
  352.       Ink 2,6, : Text 129,57," .Load. "
  353.       RETRIEVE_LEAGUE_DATA
  354.       RETRIEVE_CUP_DATA
  355.       RETRIEVE_PLAYER_DATA
  356.       RETRIEVE_MANAGER_DATA
  357.       RETRIEVE_USER_TEAM_DATA
  358.    End If 
  359.    Wait 150
  360. End Proc
  361. '********************************************************************
  362. '
  363. '********************************************************************
  364. '*                        LEAGUE PART                               *
  365. '********************************************************************
  366. Dim TEAMNAME$(NUMBER_OF_TEAMS),LEAGUE_POSITION(NUMBER_OF_TEAMS),STADIUM$(NUMBER_OF_TEAMS)
  367. Dim GAMES_WON(NUMBER_OF_TEAMS),GAMES_DRAWN(NUMBER_OF_TEAMS)
  368. Dim GAMES_LOST(NUMBER_OF_TEAMS),GOALS_FOR(NUMBER_OF_TEAMS)
  369. Dim GOALS_AGAINST(NUMBER_OF_TEAMS),GOAL_DIFFERENCE(NUMBER_OF_TEAMS)
  370. Dim TEAM_POINTS(NUMBER_OF_TEAMS),LEAGUE_GOALS(NUMBER_OF_TEAMS)
  371. Dim GAME_A(1,1),GAME_B(1,1),GAME_C(1,1),GAME_D(1,1)
  372. Dim TEAM_FIXTURES(NUMBER_OF_TEAMS),ARRAY_OF_FIXTURES(224)
  373. Procedure INITIALISE_TEAMNAMES_AND_STADIUMS
  374.    Shared TEAMNAME$(),STADIUM$(),LEAGUE_POSITION(),TEAM_FIXTURES(),NUMBER_OF_TEAMS
  375.    For TEAM=1 To NUMBER_OF_TEAMS
  376.       Read TEAMNAME$ : TEAMNAME$(TEAM)=TEAMNAME$
  377.       Read STADIUM$ : STADIUM$(TEAM)=STADIUM$
  378.       LEAGUE_POSITION(TEAM)=TEAM
  379.       TEAM_FIXTURES(TEAM)=TEAM
  380.    Next TEAM
  381.    Data "Maimers","Wrath Field","Phantoms","The Ethereal Plain"
  382.    Data "Hack n Slice","Carnage","Cowboys","Gunsling Towers"
  383.    Data "Terror","Fear Heights","Deep Sleep","The Snooze Pit"
  384.    Data "Raiders","Steeplewatch","Destroyers","The House Of Pain"
  385.    Data "Armour Fist","The Armour Dome","Cutting Crew","Syphon City"
  386.    Data "Steel Knights","The Steel Cavern","Psycho Crazees","The Mad House"
  387.    Data "Death Demons","The Hell Pit","Pyrotechnics","Firefight Central"
  388.    Data "Razor Blades","Knife Edge City","Raw Rockers","The Rockerdrome"
  389. End Proc
  390. Procedure INITIALISE_LEAGUE_ARRAYS
  391.    Shared GAMES_WON(),GAMES_DRAWN(),GAMES_LOST(),GOALS_FOR(),NUMBER_OF_TEAMS
  392.    Shared GOALS_AGAINST(),GOAL_DIFFERENCE(),TEAM_POINTS(),LEAGUE_GOALS()
  393.    For TEAM=1 To NUMBER_OF_TEAMS
  394.       GAMES_WON(TEAM)=0 : GAMES_DRAWN(TEAM)=0 : GAMES_LOST(TEAM)=0
  395.       GOALS_FOR(TEAM)=0 : GOALS_AGAINST(TEAM)=0 : GOAL_DIFFERENCE(TEAM)=0
  396.       TEAM_POINTS(TEAM)=0 : LEAGUE_GOALS(TEAM)=0
  397.    Next TEAM
  398. End Proc
  399. Procedure INITIALISE_FIXTURES_ARRAY
  400.    Shared ARRAY_OF_FIXTURES()
  401.    For INIT_LOOP=1 To 224
  402.       Read A_FIXTURE
  403.       ARRAY_OF_FIXTURES(INIT_LOOP)=A_FIXTURE
  404.    Next INIT_LOOP
  405.    Data 1,2,3,4,5,6,7,8,6,1,8,3,2,5,4,7
  406.    Data 1,3,2,4,5,7,6,8,5,1,7,2,3,6,4,8
  407.    Data 1,4,2,3,8,5,6,7,7,1,8,2,4,6,5,3
  408.    Data 1,8,2,6,3,7,4,5,2,1,4,3,6,5,8,7
  409.    Data 1,6,3,8,5,2,7,4,3,1,4,2,7,5,8,6
  410.    Data 1,5,2,7,6,3,8,4,4,1,3,2,5,8,7,6
  411.    Data 1,7,2,8,6,4,3,5,8,1,6,2,7,3,5,4
  412.    Data 1,2,3,4,5,6,7,8,6,1,8,3,2,5,4,7
  413.    Data 1,3,2,4,5,7,6,8,5,1,7,2,3,6,4,8
  414.    Data 1,4,2,3,8,5,6,7,7,1,8,2,4,6,5,3
  415.    Data 1,8,2,6,3,7,4,5,2,1,4,3,6,5,8,7
  416.    Data 1,6,3,8,5,2,7,4,3,1,4,2,7,5,8,6
  417.    Data 1,5,2,7,6,3,8,4,4,1,3,2,5,8,7,6
  418.    Data 1,7,2,8,6,4,3,5,8,1,6,2,7,3,5,4
  419. End Proc
  420. Procedure CREATE_ZONES_FOR_FIXTURES_SELECTOR
  421.    Reserve Zone 5
  422.    Set Zone 1,44,55 To 264,71 : Set Zone 2,84,110 To 122,143
  423.    Set Zone 3,187,110 To 225,143 : Set Zone 4,44,160 To 264,176
  424.    Set Zone 5,44,231 To 264,247
  425. End Proc
  426. Procedure DISPLAY_FIXTURE_SELECT_SCREEN
  427.    Shared FULL_BOX,EDGE_TOP,EDGE_BOTTOM
  428.    MAKE_A_BOX[52,8,264,28,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  429.    MAKE_A_BOX[52,55,264,71,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  430.    MAKE_A_BOX[84,110,122,143,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  431.    MAKE_A_BOX[187,110,225,143,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  432.    MAKE_A_BOX[52,160,264,176,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  433.    MAKE_A_BOX[52,231,264,247,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  434.    MAKE_A_BOX[140,113,170,140,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  435.    Ink 7,3,
  436.    PLACE_TEXT_CENTRALLY[21,"Fixture Selector",320]
  437.    PLACE_TEXT_CENTRALLY[66,"This weeks fixtures",320]
  438.    Ink 1,3, : Text 96,130,"Up" : Text 191,130,"Down"
  439.    Ink 7,3, : PLACE_TEXT_CENTRALLY[171,"Click here when ready",Screen Width]
  440.    Ink 5,3, : PLACE_TEXT_CENTRALLY[242,"Click here when finished",Screen Width]
  441. End Proc
  442. Procedure FIND_WHICH_FIXTURES_TO_DISPLAY
  443.    Shared CURRENT_WEEK,TEMP_WEEK,SELECT_FIXTURES_SCREEN,CURRENT_WEEK
  444.    Screen 1 : Cls 4
  445.    DISPLAY_FIXTURE_SELECT_SCREEN
  446.    CREATE_ZONES_FOR_FIXTURES_SELECTOR
  447.    CANCEL=0
  448.    Screen To Front 1 : Ink 1,3,
  449.    Repeat 
  450.       CHECK_MOUSE=Mouse Click
  451.       WHICH_ZONE=Mouse Zone
  452.       If TEMP_WEEK<10
  453.          Text 143,130," "+Str$(TEMP_WEEK)-" "+" "
  454.       End If 
  455.       If TEMP_WEEK>9
  456.          Text 147,130,Str$(TEMP_WEEK)-" "
  457.       End If 
  458.       If CHECK_MOUSE=1 and WHICH_ZONE=1 and CURRENT_WEEK<=28
  459.          DISPLAY_LEAGUE_FIXTURES[CURRENT_WEEK,10,49]
  460.       End If 
  461.       If CHECK_MOUSE=1 and WHICH_ZONE=2
  462.          Inc TEMP_WEEK
  463.          If TEMP_WEEK>28
  464.             TEMP_WEEK=1
  465.          End If 
  466.       End If 
  467.       If CHECK_MOUSE=1 and WHICH_ZONE=3
  468.          Dec TEMP_WEEK
  469.          If TEMP_WEEK<1
  470.             TEMP_WEEK=28
  471.          End If 
  472.       End If 
  473.       If CHECK_MOUSE=1 and WHICH_ZONE=4
  474.          DISPLAY_LEAGUE_FIXTURES[TEMP_WEEK,10,49]
  475.       End If 
  476.       If CHECK_MOUSE=1 and WHICH_ZONE=5
  477.          CANCEL=1
  478.       End If 
  479.    Until CANCEL=1
  480.    Reserve Zone 
  481.    GRAPHIC_SCREEN_FADE
  482. End Proc
  483. Procedure DISPLAY_RESULTS_FIXTURES_SCREEN[THE_SCREEN]
  484.    Shared FULL_BOX,EDGE_TOP,EDGE_BOTTOM
  485.    Screen THE_SCREEN : Y_POS=41 : TEMP=10 : Cls 4
  486.    For X=1 To 4
  487.       MAKE_A_BOX[5,Y_POS,127,Y_POS+TEMP,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  488.       MAKE_A_BOX[130,Y_POS,147,Y_POS+TEMP,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  489.       MAKE_A_BOX[150,Y_POS,167,Y_POS+TEMP,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  490.       MAKE_A_BOX[170,Y_POS,188,Y_POS+TEMP,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  491.       MAKE_A_BOX[191,Y_POS,313,Y_POS+TEMP,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  492.       Add Y_POS,20
  493.    Next X
  494.    Add Y_POS,27
  495.    For X=1 To 4
  496.       MAKE_A_BOX[5,Y_POS,127,Y_POS+TEMP,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  497.       MAKE_A_BOX[130,Y_POS,147,Y_POS+TEMP,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  498.       MAKE_A_BOX[150,Y_POS,167,Y_POS+TEMP,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  499.       MAKE_A_BOX[170,Y_POS,188,Y_POS+TEMP,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  500.       MAKE_A_BOX[191,Y_POS,313,Y_POS+TEMP,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  501.       Add Y_POS,20
  502.    Next X
  503.    MAKE_A_BOX[6,236,312,246,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  504.    Ink 5,3, : PLACE_TEXT_CENTRALLY[244,"CLICK A MOUSE BUTTON",320]
  505. End Proc
  506. Procedure DISPLAY_LEAGUE_FIXTURES[WEEK_NUMBER,X_POS,Y_POS]
  507.    Shared TEAMNAME$(),RESULTS_SCREEN,SELECT_FIXTURES_SCREEN
  508.    Shared GAME_A(),GAME_B(),GAME_C(),GAME_D()
  509.    Shared FULL_BOX,EDGE_TOP,EDGE_BOTTOM,NUMBER_OF_TEAMS
  510.    DISPLAY_RESULTS_FIXTURES_SCREEN[2]
  511.    For DISPLAY_FIXTURE_LOOP=1 To 2
  512.       If DISPLAY_FIXTURE_LOOP=1
  513.          WORK_OUT_LEAGUE_FIXTURES[WEEK_NUMBER,0]
  514.          THE_DIVISION$="Division 1"
  515.       End If 
  516.       If DISPLAY_FIXTURE_LOOP=2
  517.          WORK_OUT_LEAGUE_FIXTURES[WEEK_NUMBER,NUMBER_OF_TEAMS/2]
  518.          THE_DIVISION$="Division 2"
  519.       End If 
  520.       MAKE_A_BOX[78,2,248,12,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  521.       Ink 7,11, : Text 86,10,"Fixtures for Week "+Str$(WEEK_NUMBER)-" "
  522.       MAKE_A_BOX[118,Y_POS-23,200,Y_POS-13,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  523.       Ink 7,11, : Text 120,Y_POS-15,THE_DIVISION$ : Ink 1,11,
  524.       Text X_POS,Y_POS,TEAMNAME$(GAME_A(1,0)) : Text X_POS+186,Y_POS,TEAMNAME$(GAME_A(1,1))
  525.       Text X_POS+145,Y_POS,"V"
  526.       Text X_POS,Y_POS+20,TEAMNAME$(GAME_B(1,0)) : Text X_POS+186,Y_POS+20,TEAMNAME$(GAME_B(1,1))
  527.       Text X_POS+145,Y_POS+20,"V"
  528.       Text X_POS,Y_POS+40,TEAMNAME$(GAME_C(1,0)) : Text X_POS+186,Y_POS+40,TEAMNAME$(GAME_C(1,1))
  529.       Text X_POS+145,Y_POS+40,"V"
  530.       Text X_POS,Y_POS+60,TEAMNAME$(GAME_D(1,0)) : Text X_POS+186,Y_POS+60,TEAMNAME$(GAME_D(1,1))
  531.       Text X_POS+145,Y_POS+60,"V"
  532.       Y_POS=Y_POS+107
  533.    Next DISPLAY_FIXTURE_LOOP
  534.    Screen To Front 2
  535.    CHECK_FOR_MOUSE_CLICK
  536.    Screen To Front 1 : Screen 1
  537.    CREATE_ZONES_FOR_FIXTURES_SELECTOR
  538. End Proc
  539. Procedure DISPLAY_LEAGUE_RESULTS[WEEK_NUMBER,X_POS,Y_POS]
  540.    Shared TEAMNAME$(),LEAGUE_GOALS(),RESULTS_SCREEN
  541.    Shared GAME_A(),GAME_B(),GAME_C(),GAME_D()
  542.    Shared FULL_BOX,EDGE_TOP,EDGE_BOTTOM,NUMBER_OF_TEAMS
  543.    If WEEK_NUMBER>28 : WEEK_NUMBER=28 : End If 
  544.    DISPLAY_RESULTS_FIXTURES_SCREEN[1]
  545.    For DISPLAY_RESULTS_LOOP=1 To 2
  546.       If DISPLAY_RESULTS_LOOP=1
  547.          WORK_OUT_LEAGUE_FIXTURES[WEEK_NUMBER,0]
  548.          THE_DIVISION$="Division 1"
  549.       End If 
  550.       If DISPLAY_RESULTS_LOOP=2
  551.          WORK_OUT_LEAGUE_FIXTURES[WEEK_NUMBER,NUMBER_OF_TEAMS/2]
  552.          THE_DIVISION$="Division 2"
  553.       End If 
  554.       MAKE_A_BOX[86,2,240,12,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  555.       MAKE_A_BOX[118,Y_POS-23,200,Y_POS-13,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  556.       Ink 7,3, : Text 88,10,"Results for Week "+Str$(WEEK_NUMBER)-" "
  557.       Ink 7,3, : PLACE_TEXT_CENTRALLY[Y_POS-15,THE_DIVISION$,320]
  558.       Ink 1,3,
  559.       Text X_POS,Y_POS,TEAMNAME$(GAME_A(1,0)) : Text X_POS+121,Y_POS,Str$(LEAGUE_GOALS(GAME_A(1,0)))-" "
  560.       Text X_POS+186,Y_POS,TEAMNAME$(GAME_A(1,1)) : Text X_POS+161,Y_POS,Str$(LEAGUE_GOALS(GAME_A(1,1)))-" "
  561.       Text X_POS,Y_POS+20,TEAMNAME$(GAME_B(1,0)) : Text X_POS+121,Y_POS+20,Str$(LEAGUE_GOALS(GAME_B(1,0)))-" "
  562.       Text X_POS+186,Y_POS+20,TEAMNAME$(GAME_B(1,1)) : Text X_POS+161,Y_POS+20,Str$(LEAGUE_GOALS(GAME_B(1,1)))-" "
  563.       Text X_POS,Y_POS+40,TEAMNAME$(GAME_C(1,0)) : Text X_POS+121,Y_POS+40,Str$(LEAGUE_GOALS(GAME_C(1,0)))-" "
  564.       Text X_POS+186,Y_POS+40,TEAMNAME$(GAME_C(1,1)) : Text X_POS+161,Y_POS+40,Str$(LEAGUE_GOALS(GAME_C(1,1)))-" "
  565.       Text X_POS,Y_POS+60,TEAMNAME$(GAME_D(1,0)) : Text X_POS+121,Y_POS+60,Str$(LEAGUE_GOALS(GAME_D(1,0)))-" "
  566.       Text X_POS+186,Y_POS+60,TEAMNAME$(GAME_D(1,1)) : Text X_POS+161,Y_POS+60,Str$(LEAGUE_GOALS(GAME_D(1,1)))-" "
  567.       Y_POS=Y_POS+107
  568.    Next DISPLAY_RESULTS_LOOP
  569.    Screen To Front 1
  570.    CHECK_FOR_MOUSE_CLICK
  571.    GRAPHIC_SCREEN_FADE
  572. End Proc
  573. Procedure DISPLAY_LEAGUE_TABLE_SCREEN[DIVISION$]
  574.    Shared FULL_BOX,EDGE_TOP,EDGE_BOTTOM
  575.    Screen 1 : Y_POS=54 : TEMP=10 : Cls 4
  576.    For X=1 To 8
  577.       MAKE_A_BOX[6,Y_POS,128,Y_POS+TEMP,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  578.       MAKE_A_BOX[131,Y_POS,148,Y_POS+TEMP,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  579.       MAKE_A_BOX[151,Y_POS,168,Y_POS+TEMP,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  580.       MAKE_A_BOX[171,Y_POS,188,Y_POS+TEMP,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  581.       MAKE_A_BOX[191,Y_POS,208,Y_POS+TEMP,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  582.       MAKE_A_BOX[211,Y_POS,236,Y_POS+TEMP,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  583.       MAKE_A_BOX[239,Y_POS,264,Y_POS+TEMP,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  584.       MAKE_A_BOX[267,Y_POS,292,Y_POS+TEMP,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  585.       MAKE_A_BOX[295,Y_POS,312,Y_POS+TEMP,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  586.       Add Y_POS,20
  587.    Next X
  588.    MAKE_A_BOX[112,8,202,18,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  589.    Ink 7,11, : Text 118,16,DIVISION$
  590.    MAKE_A_BOX[6,35,312,45,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  591.    Ink 7,11 : Text 8,43,"Name"
  592.    Text 134,43,"P" : Text 154,43,"W" : Text 174,43,"D" : Text 194,43,"L"
  593.    Text 214,43,"Gf" : Text 242,43,"Ga" : Text 270,43,"Gd" : Text 296,43,"Pt"
  594.    MAKE_A_BOX[6,236,312,246,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  595.    Ink 5,11, : Text 78,244,"CLICK A MOUSE BUTTON"
  596. End Proc
  597. Procedure DISPLAY_LEAGUE_TABLE[TEAMS_A,TEAMS_B,X_POS,Y_POS]
  598.    Shared TEAMNAME$(),LEAGUE_POSITION(),GAMES_WON(),GAMES_DRAWN()
  599.    Shared GAMES_LOST(),GOALS_FOR(),GOALS_AGAINST(),GOAL_DIFFERENCE()
  600.    Shared TEAM_POINTS(),LEAGUE_GOALS(),TEAMS,TEAMS_IN_DIVISION
  601.    Shared CURRENT_WEEK
  602.    If TEAMS_A=1 : THE_DIVISION$="Division 1" : End If 
  603.    If TEAMS_A=9 : THE_DIVISION$="Division 2" : End If 
  604.    DISPLAY_LEAGUE_TABLE_SCREEN[THE_DIVISION$]
  605.    Ink 1,11, : TEMP_WEEK=CURRENT_WEEK
  606.    If TEMP_WEEK>29 : TEMP_WEEK=29 : End If 
  607.    For DISPLAY_TABLE_LOOP=TEAMS_A To TEAMS_B
  608.       Text X_POS,Y_POS,TEAMNAME$(LEAGUE_POSITION(DISPLAY_TABLE_LOOP))
  609.       Text X_POS+122,Y_POS,Str$(TEMP_WEEK-1)-" "
  610.       Text X_POS+142,Y_POS,Str$(GAMES_WON(LEAGUE_POSITION(DISPLAY_TABLE_LOOP)))-" "
  611.       Text X_POS+162,Y_POS,Str$(GAMES_DRAWN(LEAGUE_POSITION(DISPLAY_TABLE_LOOP)))-" "
  612.       Text X_POS+182,Y_POS,Str$(GAMES_LOST(LEAGUE_POSITION(DISPLAY_TABLE_LOOP)))-" "
  613.       Text X_POS+202,Y_POS,Str$(GOALS_FOR(LEAGUE_POSITION(DISPLAY_TABLE_LOOP)))-" "
  614.       Text X_POS+230,Y_POS,Str$(GOALS_AGAINST(LEAGUE_POSITION(DISPLAY_TABLE_LOOP)))-" "
  615.       Text X_POS+258,Y_POS,Str$(GOAL_DIFFERENCE(LEAGUE_POSITION(DISPLAY_TABLE_LOOP)))-" "
  616.       Text X_POS+286,Y_POS,Str$(TEAM_POINTS(LEAGUE_POSITION(DISPLAY_TABLE_LOOP)))-" "
  617.       Y_POS=Y_POS+20
  618.    Next DISPLAY_TABLE_LOOP
  619.    Screen To Front 1
  620.    CHECK_FOR_MOUSE_CLICK
  621.    GRAPHIC_SCREEN_FADE
  622. End Proc
  623. Procedure WORK_OUT_LEAGUE_FIXTURES[WEEK_NUMBER,WHICH_DIVISION]
  624.    Shared TEAM_FIXTURES(),ARRAY_OF_FIXTURES()
  625.    Shared GAME_A(),GAME_B(),GAME_C(),GAME_D()
  626.    COUNTER=0
  627.    For FIND_FIXTURES_LOOP=1 To 28
  628.       If WEEK_NUMBER=FIND_FIXTURES_LOOP
  629.          GAME_A(1,0)=TEAM_FIXTURES(ARRAY_OF_FIXTURES(1+COUNTER)+WHICH_DIVISION)
  630.          GAME_A(1,1)=TEAM_FIXTURES(ARRAY_OF_FIXTURES(2+COUNTER)+WHICH_DIVISION)
  631.          GAME_B(1,0)=TEAM_FIXTURES(ARRAY_OF_FIXTURES(3+COUNTER)+WHICH_DIVISION)
  632.          GAME_B(1,1)=TEAM_FIXTURES(ARRAY_OF_FIXTURES(4+COUNTER)+WHICH_DIVISION)
  633.          GAME_C(1,0)=TEAM_FIXTURES(ARRAY_OF_FIXTURES(5+COUNTER)+WHICH_DIVISION)
  634.          GAME_C(1,1)=TEAM_FIXTURES(ARRAY_OF_FIXTURES(6+COUNTER)+WHICH_DIVISION)
  635.          GAME_D(1,0)=TEAM_FIXTURES(ARRAY_OF_FIXTURES(7+COUNTER)+WHICH_DIVISION)
  636.          GAME_D(1,1)=TEAM_FIXTURES(ARRAY_OF_FIXTURES(8+COUNTER)+WHICH_DIVISION)
  637.       End If 
  638.       Add COUNTER,8
  639.    Next FIND_FIXTURES_LOOP
  640. End Proc
  641. Procedure WORK_OUT_THE_RESULTS[THE_HOME_TEAM,THE_AWAY_TEAM]
  642.    Shared LEAGUE_GOALS(),TEAM_POINTS()
  643.    Shared GOALS_FOR(),GOALS_AGAINST(),GOAL_DIFFERENCE()
  644.    Shared GAMES_WON(),GAMES_LOST(),GAMES_DRAWN()
  645.    Shared CURRENT_TEAM,WIN_POINTS,EQUAL_POINTS
  646.    Add GOALS_FOR(THE_HOME_TEAM),LEAGUE_GOALS(THE_HOME_TEAM)
  647.    Add GOALS_AGAINST(THE_HOME_TEAM),LEAGUE_GOALS(THE_AWAY_TEAM)
  648.    GOAL_DIFFERENCE(THE_HOME_TEAM)=GOALS_FOR(THE_HOME_TEAM)-GOALS_AGAINST(THE_HOME_TEAM)
  649.    Add GOALS_FOR(THE_AWAY_TEAM),LEAGUE_GOALS(THE_AWAY_TEAM)
  650.    Add GOALS_AGAINST(THE_AWAY_TEAM),LEAGUE_GOALS(THE_HOME_TEAM)
  651.    GOAL_DIFFERENCE(THE_AWAY_TEAM)=GOALS_FOR(THE_AWAY_TEAM)-GOALS_AGAINST(THE_AWAY_TEAM)
  652.    If LEAGUE_GOALS(THE_HOME_TEAM)>LEAGUE_GOALS(THE_AWAY_TEAM)
  653.       Inc GAMES_WON(THE_HOME_TEAM) : Inc GAMES_LOST(THE_AWAY_TEAM)
  654.       Add TEAM_POINTS(THE_HOME_TEAM),WIN_POINTS
  655.       ALTER_TEAM_FAME[THE_HOME_TEAM,1,1]
  656.       ALTER_TEAM_FAME[THE_AWAY_TEAM,1,2]
  657.       If THE_HOME_TEAM=CURRENT_TEAM : CHANGE_MANAGERS_RATING[1,1,1] : End If 
  658.       If THE_AWAY_TEAM=CURRENT_TEAM : CHANGE_MANAGERS_RATING[1,1,2] : End If 
  659.    End If 
  660.    If LEAGUE_GOALS(THE_AWAY_TEAM)>LEAGUE_GOALS(THE_HOME_TEAM)
  661.       Inc GAMES_WON(THE_AWAY_TEAM) : Inc GAMES_LOST(THE_HOME_TEAM)
  662.       Add TEAM_POINTS(THE_AWAY_TEAM),WIN_POINTS
  663.       ALTER_TEAM_FAME[THE_AWAY_TEAM,1,1]
  664.       ALTER_TEAM_FAME[THE_HOME_TEAM,1,2]
  665.       If THE_AWAY_TEAM=CURRENT_TEAM : CHANGE_MANAGERS_RATING[1,1,1] : End If 
  666.       If THE_HOME_TEAM=CURRENT_TEAM : CHANGE_MANAGERS_RATING[1,1,2] : End If 
  667.    End If 
  668.    If LEAGUE_GOALS(THE_HOME_TEAM)=LEAGUE_GOALS(THE_AWAY_TEAM)
  669.       Inc GAMES_DRAWN(THE_HOME_TEAM) : Inc GAMES_DRAWN(THE_AWAY_TEAM)
  670.       Add TEAM_POINTS(THE_HOME_TEAM),EQUAL_POINTS
  671.       Add TEAM_POINTS(THE_AWAY_TEAM),EQUAL_POINTS
  672.    End If 
  673. End Proc
  674. Procedure LEAGUE_TABLE_SORT[TEAMS_A,TEAMS_B]
  675.    Shared TEAM_POINTS(),GOALS_FOR(),GOAL_DIFFERENCE()
  676.    Shared LEAGUE_POSITION(),GAMES_WON()
  677.    For OUTER_LOOP=TEAMS_A To TEAMS_B
  678.       For I=TEAMS_A To TEAMS_B-1
  679.          If TEAM_POINTS(LEAGUE_POSITION(I))<TEAM_POINTS(LEAGUE_POSITION(I+1))
  680.             Swap LEAGUE_POSITION(I),LEAGUE_POSITION(I+1)
  681.          End If 
  682.       Next I
  683.    Next OUTER_LOOP
  684.    For OUTER_LOOP=TEAMS_A To TEAMS_B
  685.       For I=TEAMS_A To TEAMS_B-1
  686.          If TEAM_POINTS(LEAGUE_POSITION(I))=TEAM_POINTS(LEAGUE_POSITION(I+1)) and GOAL_DIFFERENCE(LEAGUE_POSITION(I))<GOAL_DIFFERENCE(LEAGUE_POSITION(I+1))
  687.             Swap LEAGUE_POSITION(I),LEAGUE_POSITION(I+1)
  688.          End If 
  689.       Next I
  690.    Next OUTER_LOOP
  691.    For OUTER_LOOP=TEAMS_A To TEAMS_B
  692.       For I=TEAMS_A To TEAMS_B-1
  693.          If TEAM_POINTS(LEAGUE_POSITION(I))=TEAM_POINTS(LEAGUE_POSITION(I+1)) and GOAL_DIFFERENCE(LEAGUE_POSITION(I))=GOAL_DIFFERENCE(LEAGUE_POSITION(I+1)) and GOALS_FOR(LEAGUE_POSITION(I))<GOALS_FOR(LEAGUE_POSITION(I+1))
  694.             Swap LEAGUE_POSITION(I),LEAGUE_POSITION(I+1)
  695.          End If 
  696.       Next I
  697.    Next OUTER_LOOP
  698. End Proc
  699. Procedure STORE_LEAGUE_DATA
  700.    Shared TEAMNAME$(),LEAGUE_POSITION(),GAMES_WON(),GAMES_DRAWN()
  701.    Shared GAMES_LOST(),GOALS_FOR(),GOALS_AGAINST(),GOAL_DIFFERENCE()
  702.    Shared TEAM_POINTS(),LEAGUE_GOALS(),STADIUM$()
  703.    Shared GATE_RECEIPTS(),SPONSOR(),PRIZE_MONEY(),WAGE_BILL()
  704.    Shared TEAM_FAME(),TEAM_CASH(),TEAM_FIXTURES()
  705.    Shared NUMBER_OF_TEAMS,FILENAME$
  706.    STORE_FILENAME$=FILENAME$-".slamball"+".league_data"
  707.    Open Out 1,STORE_FILENAME$
  708.    For STORING_LOOP=1 To NUMBER_OF_TEAMS
  709.       Print #1,TEAMNAME$(STORING_LOOP)
  710.       Print #1,STADIUM$(STORING_LOOP)
  711.       Print #1,LEAGUE_POSITION(STORING_LOOP)
  712.       Print #1,GAMES_WON(STORING_LOOP)
  713.       Print #1,GAMES_DRAWN(STORING_LOOP)
  714.       Print #1,GAMES_LOST(STORING_LOOP)
  715.       Print #1,GOALS_FOR(STORING_LOOP)
  716.       Print #1,GOALS_AGAINST(STORING_LOOP)
  717.       Print #1,GOAL_DIFFERENCE(STORING_LOOP)
  718.       Print #1,TEAM_POINTS(STORING_LOOP)
  719.       Print #1,LEAGUE_GOALS(STORING_LOOP)
  720.       Print #1,GATE_RECEIPTS(STORING_LOOP)
  721.       Print #1,SPONSOR(STORING_LOOP)
  722.       Print #1,WAGE_BILL(STORING_LOOP)
  723.       Print #1,PRIZE_MONEY(STORING_LOOP)
  724.       Print #1,TEAM_CASH(STORING_LOOP)
  725.       Print #1,TEAM_FAME(STORING_LOOP)
  726.       Print #1,TEAM_FIXTURES(STORING_LOOP)
  727.    Next STORING_LOOP
  728.    Close 1
  729. End Proc
  730. Procedure RETRIEVE_LEAGUE_DATA
  731.    Shared TEAMNAME$(),LEAGUE_POSITION(),GAMES_WON(),GAMES_DRAWN()
  732.    Shared GAMES_LOST(),GOALS_FOR(),GOALS_AGAINST(),GOAL_DIFFERENCE()
  733.    Shared TEAM_POINTS(),LEAGUE_GOALS(),STADIUM$()
  734.    Shared GATE_RECEIPTS(),SPONSOR(),PRIZE_MONEY(),WAGE_BILL()
  735.    Shared TEAM_FAME(),TEAM_CASH(),TEAM_FIXTURES()
  736.    Shared NUMBER_OF_TEAMS,FILENAME$
  737.    RETRIEVE_FILENAME$=FILENAME$-".slamball"+".league_data"
  738.    Open In 1,RETRIEVE_FILENAME$
  739.    For RETRIEVING_LOOP=1 To NUMBER_OF_TEAMS
  740.       Input #1,TEAMNAME$(RETRIEVING_LOOP)
  741.       Input #1,STADIUM$(RETRIEVING_LOOP)
  742.       Input #1,LEAGUE_POSITION(RETRIEVING_LOOP)
  743.       Input #1,GAMES_WON(RETRIEVING_LOOP)
  744.       Input #1,GAMES_DRAWN(RETRIEVING_LOOP)
  745.       Input #1,GAMES_LOST(RETRIEVING_LOOP)
  746.       Input #1,GOALS_FOR(RETRIEVING_LOOP)
  747.       Input #1,GOALS_AGAINST(RETRIEVING_LOOP)
  748.       Input #1,GOAL_DIFFERENCE(RETRIEVING_LOOP)
  749.       Input #1,TEAM_POINTS(RETRIEVING_LOOP)
  750.       Input #1,LEAGUE_GOALS(RETRIEVING_LOOP)
  751.       Input #1,GATE_RECEIPTS(RETRIEVING_LOOP)
  752.       Input #1,SPONSOR(RETRIEVING_LOOP)
  753.       Input #1,WAGE_BILL(RETRIEVING_LOOP)
  754.       Input #1,PRIZE_MONEY(RETRIEVING_LOOP)
  755.       Input #1,TEAM_CASH(RETRIEVING_LOOP)
  756.       Input #1,TEAM_FAME(RETRIEVING_LOOP)
  757.       Input #1,TEAM_FIXTURES(RETRIEVING_LOOP)
  758.    Next RETRIEVING_LOOP
  759.    Close 1
  760. End Proc
  761. '********************************************************************
  762. '
  763. '********************************************************************
  764. '                            CUP PART                               *
  765. '********************************************************************
  766. Dim PICK_LIST(NUMBER_OF_TEAMS),PICKED(NUMBER_OF_TEAMS)
  767. Dim THE_DRAW(NUMBER_OF_TEAMS),GOALS_HOME(NUMBER_OF_TEAMS),GOALS_AWAY(NUMBER_OF_TEAMS)
  768. Dim ROUND_1(16),ROUND_Q(8),ROUND_S(4),ROUND_F(2)
  769. Dim GOALS_HOME_1(16),GOALS_AWAY_1(16),GOALS_TOTAL_1(16)
  770. Dim GOALS_HOME_Q(16),GOALS_AWAY_Q(16),GOALS_TOTAL_Q(16)
  771. Dim GOALS_HOME_S(16),GOALS_AWAY_S(16),GOALS_TOTAL_S(16)
  772. Dim GOALS_HOME_F(16),GOALS_AWAY_F(16),GOALS_TOTAL_F(16)
  773. Procedure INITIALISE_CUP_ARRAYS
  774.    INITIALISE_CUP_RECORD_ARRAYS
  775.    INITIALISE_PICK_LIST_ARRAY
  776.    INITIALISE_PICKED_ARRAY
  777. End Proc
  778. Procedure INITIALISE_CUP_RECORD_ARRAYS
  779.    Shared GOALS_HOME_1(),GOALS_AWAY_1(),GOALS_TOTAL_1()
  780.    Shared GOALS_HOME_Q(),GOALS_AWAY_Q(),GOALS_TOTAL_Q()
  781.    Shared GOALS_HOME_S(),GOALS_AWAY_S(),GOALS_TOTAL_S()
  782.    Shared GOALS_HOME_F(),GOALS_AWAY_F(),GOALS_TOTAL_F()
  783.    Shared ROUND_1(),ROUND_Q(),ROUND_S(),ROUND_F(),NUMBER_OF_TEAMS
  784.    For X=1 To NUMBER_OF_TEAMS
  785.       GOALS_HOME_1(X)=0 : GOALS_AWAY_1(X)=0 : GOALS_TOTAL_1(X)=0
  786.       GOALS_HOME_Q(X)=0 : GOALS_AWAY_Q(X)=0 : GOALS_TOTAL_Q(X)=0
  787.       GOALS_HOME_S(X)=0 : GOALS_AWAY_S(X)=0 : GOALS_TOTAL_S(X)=0
  788.       GOALS_HOME_F(X)=0 : GOALS_AWAY_F(X)=0 : GOALS_TOTAL_F(X)=0
  789.       ROUND_1(X)=0 : ROUND_Q(X/2)=0 : ROUND_S(X/4)=0 : ROUND_F(X/8)=0
  790.    Next X
  791. End Proc
  792. Procedure INITIALISE_PICK_LIST_ARRAY
  793.    Shared PICK_LIST(),NUMBER_OF_TEAMS
  794.    For X=1 To NUMBER_OF_TEAMS
  795.       PICK_LIST(X)=X
  796.    Next X
  797. End Proc
  798. Procedure INITIALISE_PICKED_ARRAY
  799.    Shared PICKED(),NUMBER_OF_TEAMS
  800.    For X=1 To NUMBER_OF_TEAMS
  801.       PICKED(X)=0
  802.    Next X
  803. End Proc
  804. Procedure DISPLAY_CUP_WINNERS_MESSAGE
  805.    Screen 2 : Cls 4 : MAKE_BOXES_FOR_MESSAGE
  806.    Ink 7,3, : PLACE_TEXT_CENTRALLY[19,"Team Owners",Screen Width]
  807.    Ink 1,3, : Text 8,85,"We are absolutely delighted!!"
  808.    Text 8,105,"To win the Cup is a great honour"
  809.    Text 8,125,"for the club.  You have managed"
  810.    Text 8,145,"and coached the team astutely."
  811.    Text 8,165,"Long may the success continue!!"
  812.    Screen To Front 2
  813.    CHECK_FOR_MOUSE_CLICK
  814. End Proc
  815. Procedure DISPLAY_CUP_LOSERS_MESSAGE
  816.    Screen 2 : Cls 4 : MAKE_BOXES_FOR_MESSAGE
  817.    Ink 7,3, : PLACE_TEXT_CENTRALLY[19,"Team Owners",Screen Width]
  818.    Ink 1,3, : Text 8,85,"We are relatively happy!"
  819.    Text 8,105,"We came close to winning the Cup"
  820.    Text 8,125,"which would have been good for the"
  821.    Text 8,145,"club.  However, you have done well."
  822.    Text 8,165,"Maybe next year we can go one better!"
  823.    Screen To Front 2
  824.    CHECK_FOR_MOUSE_CLICK
  825. End Proc
  826. Procedure CREATE_ZONES_FOR_CUP_SELECTOR
  827.    Reserve Zone 5
  828.    Set Zone 1,28,44 To 115,89 : Set Zone 2,200,44 To 286,89
  829.    Set Zone 3,28,158 To 115,203 : Set Zone 4,200,158 To 286,203
  830.    Set Zone 5,60,238 To 248,253
  831. End Proc
  832. Procedure DISPLAY_MAIN_CUP_SCREEN
  833.    Shared FULL_BOX,EDGE_TOP,EDGE_BOTTOM
  834.    Cls 4
  835.    MAKE_A_BOX[28,44,115,89,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  836.    MAKE_A_BOX[200,44,286,89,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  837.    MAKE_A_BOX[28,158,115,203,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  838.    MAKE_A_BOX[200,158,286,203,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  839.    MAKE_A_BOX[60,238,248,253,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  840.    MAKE_A_BOX[28,8,286,18,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  841.    Ink 7,3, : Text 108,16,"Cup Selector" : Text 44,71,"Round 1"
  842.    Text 215,62,"Quarter" : Text 224,76,"Final"
  843.    Text 56,177,"Semi" : Text 52,191,"Final"
  844.    Text 223,185,"Final"
  845.    Ink 6,3, : Text 120,248,"Main Menu"
  846.    CREATE_ZONES_FOR_CUP_SELECTOR
  847. End Proc
  848. Procedure MAKE_BOXES_FOR_DISPLAYING_ROUNDS
  849.    Shared FULL_BOX,EDGE_TOP,EDGE_BOTTOM
  850.    MAKE_A_BOX[67,2,264,12,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  851.    Ink 7,11, : Text 70,10,"Cup Fixtures And Results"
  852. End Proc
  853. Procedure FIND_WHICH_CUP_ROUND_TO_DISPLAY
  854.    Shared CURRENT_WEEK
  855.    Screen 1
  856.    DISPLAY_MAIN_CUP_SCREEN
  857.    CANCEL=0 : Screen To Front 1
  858.    Repeat 
  859.       CHECK_MOUSE=Mouse Click
  860.       WHICH_ZONE=Mouse Zone
  861.       If CHECK_MOUSE=1 and WHICH_ZONE=1 and CURRENT_WEEK>=2
  862.          DISPLAY_ROUND_1[10,49]
  863.       End If 
  864.       If CHECK_MOUSE=1 and WHICH_ZONE=2 and CURRENT_WEEK>=11
  865.          DISPLAY_ROUND_Q[10,49]
  866.       End If 
  867.       If CHECK_MOUSE=1 and WHICH_ZONE=3 and CURRENT_WEEK>=18
  868.          DISPLAY_ROUND_S[10,49]
  869.       End If 
  870.       If CHECK_MOUSE=1 and WHICH_ZONE=4 and CURRENT_WEEK>=25
  871.          DISPLAY_ROUND_F[10,49]
  872.       End If 
  873.       If CHECK_MOUSE=1 and WHICH_ZONE=5
  874.          CANCEL=1
  875.       End If 
  876.    Until CANCEL=1
  877.    Reserve Zone 
  878.    GRAPHIC_SCREEN_FADE
  879. End Proc
  880. Procedure MAKE_THE_DRAW[ROUND]
  881.    Shared PICK_LIST(),PICKED(),THE_DRAW(),GOALS_HOME(),GOALS_AWAY()
  882.    INITIALISE_PICKED_ARRAY
  883.    COUNTER=1
  884.    Repeat 
  885.       TEMP_VALUE=Rnd(ROUND)+1
  886.       If PICKED(TEMP_VALUE)=0
  887.          THE_DRAW(COUNTER)=PICK_LIST(TEMP_VALUE)
  888.          PICKED(TEMP_VALUE)=1
  889.          Inc COUNTER
  890.       End If 
  891.    Until COUNTER=(ROUND)+2
  892.    For X=1 To 16
  893.       GOALS_HOME(X)=0 : GOALS_AWAY(X)=0
  894.    Next X
  895.    If ROUND=15 : FIRST_ROUND_DRAW : End If 
  896.    If ROUND=7 : QUARTER_ROUND_DRAW : End If 
  897.    If ROUND=3 : SEMI_ROUND_DRAW : End If 
  898.    If ROUND=1 : FINAL_ROUND_DRAW : End If 
  899. End Proc
  900. Procedure FIRST_ROUND_DRAW
  901.    Shared ROUND_1(),THE_DRAW()
  902.    For X=1 To 16
  903.       ROUND_1(X)=THE_DRAW(X)
  904.    Next X
  905. End Proc
  906. Procedure QUARTER_ROUND_DRAW
  907.    Shared ROUND_Q(),THE_DRAW()
  908.    For X=1 To 8
  909.       ROUND_Q(X)=THE_DRAW(X)
  910.    Next X
  911. End Proc
  912. Procedure SEMI_ROUND_DRAW
  913.    Shared ROUND_S(),THE_DRAW()
  914.    For X=1 To 4
  915.       ROUND_S(X)=THE_DRAW(X)
  916.    Next X
  917. End Proc
  918. Procedure FINAL_ROUND_DRAW
  919.    Shared ROUND_F(),THE_DRAW()
  920.    For X=1 To 2
  921.       ROUND_F(X)=THE_DRAW(X)
  922.    Next X
  923. End Proc
  924. Procedure DISPLAY_ROUND_1[X_POS,Y_POS]
  925.    Shared TEAMNAME$(),ROUND_1(),GOALS_HOME_1(),NUMBER_OF_TEAMS
  926.    Shared GOALS_AWAY_1(),GOALS_TOTAL_1()
  927.    Shared FULL_BOX,EDGE_TOP,EDGE_BOTTOM
  928.    TEMP_Y_POS=Y_POS
  929.    DISPLAY_RESULTS_FIXTURES_SCREEN[2]
  930.    MAKE_BOXES_FOR_DISPLAYING_ROUNDS
  931.    MAKE_A_BOX[67,20,264,30,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  932.    Text 80,28,"First Round First Leg"
  933.    WIN_A=1 : WIN_B=1 : Ink 1,11,
  934.    For X=1 To(NUMBER_OF_TEAMS) Step 2
  935.       Text X_POS,Y_POS,TEAMNAME$(ROUND_1(X))
  936.       Text X_POS+121,Y_POS,Str$(GOALS_HOME_1(ROUND_1(X)))-" "
  937.       Text X_POS+161,Y_POS,Str$(GOALS_AWAY_1(ROUND_1(X+1)))-" "
  938.       Text X_POS+186,Y_POS,TEAMNAME$(ROUND_1(X+1))
  939.       Add Y_POS,20
  940.       If X=7 : Add Y_POS,27 : End If 
  941.    Next X
  942.    Screen To Front 2
  943.    CHECK_FOR_MOUSE_CLICK
  944.    Cls 4
  945.    DISPLAY_RESULTS_FIXTURES_SCREEN[2]
  946.    MAKE_BOXES_FOR_DISPLAYING_ROUNDS
  947.    MAKE_A_BOX[67,20,264,30,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  948.    Text 78,28,"First Round Second Leg"
  949.    Y_POS=TEMP_Y_POS
  950.    For X=1 To(NUMBER_OF_TEAMS) Step 2
  951.       WIN_A=1 : WIN_B=1
  952.       If GOALS_TOTAL_1(ROUND_1(X))>GOALS_TOTAL_1(ROUND_1(X+1))
  953.          WIN_A=1 : WIN_B=0
  954.       End If 
  955.       If GOALS_TOTAL_1(ROUND_1(X))<GOALS_TOTAL_1(ROUND_1(X+1))
  956.          WIN_A=0 : WIN_B=1
  957.       End If 
  958.       Ink WIN_B,11,
  959.       Text X_POS,Y_POS,TEAMNAME$(ROUND_1(X+1))
  960.       Text X_POS+121,Y_POS,Str$(GOALS_HOME_1(ROUND_1(X+1)))-" "
  961.       Ink WIN_A,11,
  962.       Text X_POS+161,Y_POS,Str$(GOALS_AWAY_1(ROUND_1(X)))-" "
  963.       Text X_POS+186,Y_POS,TEAMNAME$(ROUND_1(X))
  964.       Add Y_POS,20
  965.       If X=7 : Add Y_POS,27 : End If 
  966.    Next X
  967.    CHECK_FOR_MOUSE_CLICK
  968.    Screen 1
  969.    DISPLAY_MAIN_CUP_SCREEN
  970.    Screen To Front 1
  971. End Proc
  972. Procedure DISPLAY_ROUND_Q[X_POS,Y_POS]
  973.    Shared TEAMNAME$(),ROUND_Q(),GOALS_HOME_Q(),NUMBER_OF_TEAMS
  974.    Shared GOALS_AWAY_Q(),GOALS_TOTAL_Q()
  975.    Shared FULL_BOX,EDGE_TOP,EDGE_BOTTOM
  976.    DISPLAY_RESULTS_FIXTURES_SCREEN[2]
  977.    MAKE_BOXES_FOR_DISPLAYING_ROUNDS
  978.    MAKE_A_BOX[67,20,264,30,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  979.    Text 74,28,"Quarter Final First Leg"
  980.    WIN_A=1 : WIN_B=1 : Ink 1,11,
  981.    For X=1 To(NUMBER_OF_TEAMS/2) Step 2
  982.       Text X_POS,Y_POS,TEAMNAME$(ROUND_Q(X))
  983.       Text X_POS+121,Y_POS,Str$(GOALS_HOME_Q(ROUND_Q(X)))-" "
  984.       Text X_POS+161,Y_POS,Str$(GOALS_AWAY_Q(ROUND_Q(X+1)))-" "
  985.       Text X_POS+186,Y_POS,TEAMNAME$(ROUND_Q(X+1))
  986.       Add Y_POS,20
  987.    Next X
  988.    Add Y_POS,27
  989.    MAKE_A_BOX[67,132,264,142,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  990.    Text 70,140,"Quarter Final Second Leg"
  991.    For X=1 To(NUMBER_OF_TEAMS/2) Step 2
  992.       WIN_A=1 : WIN_B=1
  993.       If GOALS_TOTAL_Q(ROUND_Q(X))>GOALS_TOTAL_Q(ROUND_Q(X+1))
  994.          WIN_A=1 : WIN_B=0
  995.       End If 
  996.       If GOALS_TOTAL_Q(ROUND_Q(X))<GOALS_TOTAL_Q(ROUND_Q(X+1))
  997.          WIN_A=0 : WIN_B=1
  998.       End If 
  999.       Ink WIN_B,11,
  1000.       Text X_POS,Y_POS,TEAMNAME$(ROUND_Q(X+1))
  1001.       Text X_POS+121,Y_POS,Str$(GOALS_HOME_Q(ROUND_Q(X+1)))-" "
  1002.       Ink WIN_A,11,
  1003.       Text X_POS+161,Y_POS,Str$(GOALS_AWAY_Q(ROUND_Q(X)))-" "
  1004.       Text X_POS+186,Y_POS,TEAMNAME$(ROUND_Q(X))
  1005.       Add Y_POS,20
  1006.    Next X
  1007.    Screen To Front 2
  1008.    CHECK_FOR_MOUSE_CLICK
  1009.    Screen 1
  1010.    DISPLAY_MAIN_CUP_SCREEN
  1011.    Screen To Front 1
  1012. End Proc
  1013. Procedure DISPLAY_ROUND_S[X_POS,Y_POS]
  1014.    Shared TEAMNAME$(),ROUND_S(),GOALS_HOME_S(),NUMBER_OF_TEAMS
  1015.    Shared GOALS_AWAY_S(),GOALS_TOTAL_S()
  1016.    Shared FULL_BOX,EDGE_TOP,EDGE_BOTTOM
  1017.    DISPLAY_RESULTS_FIXTURES_SCREEN[2]
  1018.    MAKE_BOXES_FOR_DISPLAYING_ROUNDS
  1019.    MAKE_A_BOX[67,16,264,26,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  1020.    Text 82,24,"Semi Final First Leg"
  1021.    WIN_A=1 : WIN_B=1 : Ink 1,11,
  1022.    For X=1 To(NUMBER_OF_TEAMS/4) Step 2
  1023.       Text X_POS,Y_POS,TEAMNAME$(ROUND_S(X))
  1024.       Text X_POS+121,Y_POS,Str$(GOALS_HOME_S(ROUND_S(X)))-" "
  1025.       Text X_POS+161,Y_POS,Str$(GOALS_AWAY_S(ROUND_S(X+1)))-" "
  1026.       Text X_POS+186,Y_POS,TEAMNAME$(ROUND_S(X+1))
  1027.       Add Y_POS,20
  1028.    Next X
  1029.    Add Y_POS,67
  1030.    MAKE_A_BOX[67,132,264,142,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  1031.    Ink 6,11, : Text 80,140,"Semi Final Second Leg"
  1032.    For X=1 To(NUMBER_OF_TEAMS/4) Step 2
  1033.       WIN_A=1 : WIN_B=1
  1034.       If GOALS_TOTAL_S(ROUND_S(X))>GOALS_TOTAL_S(ROUND_S(X+1))
  1035.          WIN_A=1 : WIN_B=0
  1036.       End If 
  1037.       If GOALS_TOTAL_S(ROUND_S(X))<GOALS_TOTAL_S(ROUND_S(X+1))
  1038.          WIN_A=0 : WIN_B=1
  1039.       End If 
  1040.       Ink WIN_B,11,
  1041.       Text X_POS,Y_POS,TEAMNAME$(ROUND_S(X+1))
  1042.       Text X_POS+121,Y_POS,Str$(GOALS_HOME_S(ROUND_S(X+1)))-" "
  1043.       Ink WIN_A,11,
  1044.       Text X_POS+161,Y_POS,Str$(GOALS_AWAY_S(ROUND_S(X)))-" "
  1045.       Text X_POS+186,Y_POS,TEAMNAME$(ROUND_S(X))
  1046.       Add Y_POS,20
  1047.    Next X
  1048.    Screen To Front 2
  1049.    CHECK_FOR_MOUSE_CLICK
  1050.    Screen 1
  1051.    DISPLAY_MAIN_CUP_SCREEN
  1052.    Screen To Front 1
  1053. End Proc
  1054. Procedure DISPLAY_ROUND_F[X_POS,Y_POS]
  1055.    Shared TEAMNAME$(),ROUND_F(),GOALS_HOME_F(),GOALS_AWAY_F()
  1056.    Shared FULL_BOX,EDGE_TOP,EDGE_BOTTOM
  1057.    DISPLAY_RESULTS_FIXTURES_SCREEN[2]
  1058.    MAKE_BOXES_FOR_DISPLAYING_ROUNDS
  1059.    MAKE_A_BOX[67,16,264,26,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  1060.    Ink 1,11 : Text 126,24,"Cup Final"
  1061.    Text X_POS,Y_POS,TEAMNAME$(ROUND_F(2))
  1062.    Text X_POS+121,Y_POS,Str$(GOALS_HOME_F(ROUND_F(2)))-" "
  1063.    Text X_POS+161,Y_POS,Str$(GOALS_AWAY_F(ROUND_F(1)))-" "
  1064.    Text X_POS+186,Y_POS,TEAMNAME$(ROUND_F(1))
  1065.    Screen To Front 2
  1066.    CHECK_FOR_MOUSE_CLICK
  1067.    Screen 1
  1068.    DISPLAY_MAIN_CUP_SCREEN
  1069.    Screen To Front 1
  1070. End Proc
  1071. Procedure FIRST_LEG_CUP_MATCHES[WEEK_NUMBER]
  1072.    If WEEK_NUMBER=8 : GENERATE_FIRST_LEG_RESULTS[16] : End If 
  1073.    If WEEK_NUMBER=15 : GENERATE_FIRST_LEG_RESULTS[8] : End If 
  1074.    If WEEK_NUMBER=22 : GENERATE_FIRST_LEG_RESULTS[4] : End If 
  1075. End Proc
  1076. Procedure SECOND_LEG_CUP_MATCHES[WEEK_NUMBER]
  1077.    If WEEK_NUMBER=10 : GENERATE_SECOND_LEG_RESULTS[16] : End If 
  1078.    If WEEK_NUMBER=17 : GENERATE_SECOND_LEG_RESULTS[8] : End If 
  1079.    If WEEK_NUMBER=24 : GENERATE_SECOND_LEG_RESULTS[4] : End If 
  1080. End Proc
  1081. Procedure GENERATE_FIRST_LEG_RESULTS[ROUND]
  1082.    Shared THE_DRAW()
  1083.    For X=1 To ROUND Step 2
  1084.       THE_HOME_TEAM=(THE_DRAW(X)) : THE_AWAY_TEAM=(THE_DRAW(X+1))
  1085.       SEE_IF_USER_WATCHES_MATCH[THE_HOME_TEAM,THE_AWAY_TEAM,ROUND]
  1086.       GENERATE_RESULT[THE_HOME_TEAM,THE_AWAY_TEAM,Param,2]
  1087.    Next X
  1088.    If ROUND=16 : ROUND_1_RESULTS[ROUND] : End If 
  1089.    If ROUND=8 : ROUND_Q_RESULTS[ROUND] : End If 
  1090.    If ROUND=4 : ROUND_S_RESULTS[ROUND] : End If 
  1091. End Proc
  1092. Procedure GENERATE_SECOND_LEG_RESULTS[ROUND]
  1093.    Shared GOALS_HOME(),GOALS_AWAY(),THE_DRAW()
  1094.    For X=1 To ROUND Step 2
  1095.       THE_HOME_TEAM=(THE_DRAW(X+1)) : THE_AWAY_TEAM=(THE_DRAW(X))
  1096.       SEE_IF_USER_WATCHES_MATCH[THE_HOME_TEAM,THE_AWAY_TEAM,ROUND]
  1097.       GENERATE_LEG_TWO_RESULTS[THE_HOME_TEAM,THE_AWAY_TEAM,Param,2]
  1098.    Next X
  1099.    If ROUND=16 : ROUND_1_RESULTS[ROUND] : ROUND_1_WINNERS : End If 
  1100.    If ROUND=8 : ROUND_Q_RESULTS[ROUND] : ROUND_Q_WINNERS : End If 
  1101.    If ROUND=4 : ROUND_S_RESULTS[ROUND] : ROUND_S_WINNERS : End If 
  1102.    If ROUND=2 : ROUND_F_RESULTS[ROUND] : ROUND_F_WINNERS : End If 
  1103. End Proc
  1104. Procedure ROUND_1_RESULTS[ROUND]
  1105.    Shared GOALS_HOME(),GOALS_AWAY(),GOALS_HOME_1(),GOALS_AWAY_1()
  1106.    Shared GOALS_TOTAL_1(),ROUND_1()
  1107.    For X=1 To ROUND Step 2
  1108.       GOALS_HOME_1(ROUND_1(X))=GOALS_HOME(ROUND_1(X))
  1109.       GOALS_AWAY_1(ROUND_1(X))=GOALS_AWAY(ROUND_1(X))
  1110.       GOALS_TOTAL_1(ROUND_1(X))=GOALS_HOME(ROUND_1(X))+GOALS_AWAY(ROUND_1(X))
  1111.       GOALS_HOME_1(ROUND_1(X+1))=GOALS_HOME(ROUND_1(X+1))
  1112.       GOALS_AWAY_1(ROUND_1(X+1))=GOALS_AWAY(ROUND_1(X+1))
  1113.       GOALS_TOTAL_1(ROUND_1(X+1))=GOALS_HOME(ROUND_1(X+1))+GOALS_AWAY(ROUND_1(X+1))
  1114.    Next X
  1115. End Proc
  1116. Procedure ROUND_1_WINNERS
  1117.    Shared ROUND_1(),GOALS_TOTAL_1(),PICK_LIST()
  1118.    COUNTER=1
  1119.    For X=1 To 16 Step 2
  1120.       If GOALS_TOTAL_1(ROUND_1(X))>GOALS_TOTAL_1(ROUND_1(X+1))
  1121.          PICK_LIST(COUNTER)=ROUND_1(X)
  1122.          TEAM_WON=ROUND_1(X) : TEAM_LOST=ROUND_1(X+1)
  1123.       Else 
  1124.          PICK_LIST(COUNTER)=ROUND_1(X+1)
  1125.          TEAM_WON=ROUND_1(X+1) : TEAM_LOST=ROUND_1(X)
  1126.       End If 
  1127.       ALTER_TEAM_FAME[TEAM_WON,1,1] : ALTER_TEAM_FAME[TEAM_LOST,2,2]
  1128.       Inc COUNTER
  1129.    Next X
  1130. End Proc
  1131. Procedure ROUND_Q_RESULTS[ROUND]
  1132.    Shared GOALS_HOME(),GOALS_AWAY(),GOALS_HOME_Q(),GOALS_AWAY_Q()
  1133.    Shared GOALS_TOTAL_Q(),ROUND_Q()
  1134.    For X=1 To ROUND Step 2
  1135.       GOALS_HOME_Q(ROUND_Q(X))=GOALS_HOME(ROUND_Q(X))
  1136.       GOALS_AWAY_Q(ROUND_Q(X))=GOALS_AWAY(ROUND_Q(X))
  1137.       GOALS_TOTAL_Q(ROUND_Q(X))=GOALS_HOME(ROUND_Q(X))+GOALS_AWAY(ROUND_Q(X))
  1138.       GOALS_HOME_Q(ROUND_Q(X+1))=GOALS_HOME(ROUND_Q(X+1))
  1139.       GOALS_AWAY_Q(ROUND_Q(X+1))=GOALS_AWAY(ROUND_Q(X+1))
  1140.       GOALS_TOTAL_Q(ROUND_Q(X+1))=GOALS_HOME(ROUND_Q(X+1))+GOALS_AWAY(ROUND_Q(X+1))
  1141.    Next X
  1142. End Proc
  1143. Procedure ROUND_Q_WINNERS
  1144.    Shared ROUND_Q(),GOALS_TOTAL_Q(),PICK_LIST()
  1145.    COUNTER=1
  1146.    For X=1 To 8 Step 2
  1147.       If GOALS_TOTAL_Q(ROUND_Q(X))>GOALS_TOTAL_Q(ROUND_Q(X+1))
  1148.          PICK_LIST(COUNTER)=ROUND_Q(X)
  1149.          TEAM_WON=ROUND_Q(X) : TEAM_LOST=ROUND_Q(X+1)
  1150.       Else 
  1151.          PICK_LIST(COUNTER)=ROUND_Q(X+1)
  1152.          TEAM_WON=ROUND_Q(X+1) : TEAM_LOST=ROUND_Q(X)
  1153.       End If 
  1154.       ALTER_TEAM_FAME[TEAM_WON,2,1] : ALTER_TEAM_FAME[TEAM_LOST,2,2]
  1155.       Inc COUNTER
  1156.    Next X
  1157. End Proc
  1158. Procedure ROUND_S_RESULTS[ROUND]
  1159.    Shared GOALS_HOME(),GOALS_AWAY(),GOALS_HOME_S(),GOALS_AWAY_S()
  1160.    Shared GOALS_TOTAL_S(),ROUND_S()
  1161.    For X=1 To ROUND Step 2
  1162.       GOALS_HOME_S(ROUND_S(X))=GOALS_HOME(ROUND_S(X))
  1163.       GOALS_AWAY_S(ROUND_S(X))=GOALS_AWAY(ROUND_S(X))
  1164.       GOALS_TOTAL_S(ROUND_S(X))=GOALS_HOME(ROUND_S(X))+GOALS_AWAY(ROUND_S(X))
  1165.       GOALS_HOME_S(ROUND_S(X+1))=GOALS_HOME(ROUND_S(X+1))
  1166.       GOALS_AWAY_S(ROUND_S(X+1))=GOALS_AWAY(ROUND_S(X+1))
  1167.       GOALS_TOTAL_S(ROUND_S(X+1))=GOALS_HOME(ROUND_S(X+1))+GOALS_AWAY(ROUND_S(X+1))
  1168.    Next X
  1169. End Proc
  1170. Procedure ROUND_S_WINNERS
  1171.    Shared ROUND_S(),GOALS_TOTAL_S(),PICK_LIST()
  1172.    COUNTER=1
  1173.    For X=1 To 4 Step 2
  1174.       If GOALS_TOTAL_S(ROUND_S(X))>GOALS_TOTAL_S(ROUND_S(X+1))
  1175.          PICK_LIST(COUNTER)=ROUND_S(X)
  1176.          TEAM_WON=ROUND_S(X) : TEAM_LOST=ROUND_S(X+1)
  1177.       Else 
  1178.          PICK_LIST(COUNTER)=ROUND_S(X+1)
  1179.          TEAM_WON=ROUND_S(X+1) : TEAM_LOST=ROUND_S(X)
  1180.       End If 
  1181.       ALTER_TEAM_FAME[TEAM_WON,3,1] : ALTER_TEAM_FAME[TEAM_LOST,2,2]
  1182.       Inc COUNTER
  1183.    Next X
  1184. End Proc
  1185. Procedure ROUND_F_RESULTS[ROUND]
  1186.    Shared GOALS_HOME(),GOALS_AWAY(),GOALS_HOME_F(),GOALS_AWAY_F()
  1187.    Shared GOALS_TOTAL_F(),ROUND_F()
  1188.    GOALS_HOME_F(ROUND_F(2))=GOALS_HOME(ROUND_F(2))
  1189.    GOALS_AWAY_F(ROUND_F(2))=GOALS_AWAY(ROUND_F(2))
  1190.    GOALS_TOTAL_F(ROUND_F(2))=GOALS_HOME(ROUND_F(2))+GOALS_AWAY(ROUND_F(2))
  1191.    GOALS_HOME_F(ROUND_F(1))=GOALS_HOME(ROUND_F(1))
  1192.    GOALS_AWAY_F(ROUND_F(1))=GOALS_AWAY(ROUND_F(1))
  1193.    GOALS_TOTAL_F(ROUND_F(1))=GOALS_HOME(ROUND_F(1))+GOALS_AWAY(ROUND_F(1))
  1194. End Proc
  1195. Procedure ROUND_F_WINNERS
  1196.    Shared ROUND_F(),GOALS_TOTAL_F(),TEAM_CASH(),PRIZE_MONEY(),CURRENT_TEAM
  1197.    If GOALS_TOTAL_F(ROUND_F(1))>GOALS_TOTAL_F(ROUND_F(2))
  1198.       Add TEAM_CASH(ROUND_F(1)),150000 : PRIZE_MONEY(ROUND_F(1))=150000
  1199.       If ROUND_F(1)=CURRENT_TEAM : DISPLAY_CUP_WINNERS_MESSAGE : End If 
  1200.       Add TEAM_CASH(ROUND_F(2)),75000 : PRIZE_MONEY(ROUND_F(2))=75000
  1201.       If ROUND_F(2)=CURRENT_TEAM : DISPLAY_CUP_LOSERS_MESSAGE : End If 
  1202.       TEAM_WON=ROUND_F(1) : TEAM_LOST=ROUND_F(2)
  1203.    Else 
  1204.       Add TEAM_CASH(ROUND_F(2)),150000 : PRIZE_MONEY(ROUND_F(2))=150000
  1205.       If ROUND_F(2)=CURRENT_TEAM : DISPLAY_CUP_WINNERS_MESSAGE : End If 
  1206.       Add TEAM_CASH(ROUND_F(1)),75000 : PRIZE_MONEY(ROUND_F(1))=75000
  1207.       If ROUND_F(1)=CURRENT_TEAM : DISPLAY_CUP_LOSERS_MESSAGE : End If 
  1208.       TEAM_WON=ROUND_F(2) : TEAM_LOST=ROUND_F(1)
  1209.    End If 
  1210.    ALTER_TEAM_FAME[TEAM_WON,5,1] : ALTER_TEAM_FAME[TEAM_LOST,2,2]
  1211. End Proc
  1212. Procedure STORE_CUP_DATA
  1213.    Shared FILENAME$,NUMBER_OF_TEAMS
  1214.    Shared THE_DRAW(),GOALS_HOME(),GOALS_AWAY()
  1215.    Shared ROUND_1(),GOALS_HOME_1(),GOALS_AWAY_1(),GOALS_TOTAL_1()
  1216.    Shared ROUND_Q(),GOALS_HOME_Q(),GOALS_AWAY_Q(),GOALS_TOTAL_Q()
  1217.    Shared ROUND_S(),GOALS_HOME_S(),GOALS_AWAY_S(),GOALS_TOTAL_S()
  1218.    Shared ROUND_F(),GOALS_HOME_F(),GOALS_AWAY_F(),GOALS_TOTAL_F()
  1219.    STORE_FILENAME$=FILENAME$-".slamball"+".cup_data"
  1220.    Open Out 1,STORE_FILENAME$
  1221.    For STORING_LOOP=1 To NUMBER_OF_TEAMS
  1222.       Print #1,THE_DRAW(STORING_LOOP)
  1223.       Print #1,GOALS_HOME(STORING_LOOP)
  1224.       Print #1,GOALS_AWAY(STORING_LOOP)
  1225.    Next STORING_LOOP
  1226.    Close 1
  1227.    STORE_FILENAME$=FILENAME$-".slamball"+".all_cup_data"
  1228.    Open Out 1,STORE_FILENAME$
  1229.    For STORING_LOOP=1 To NUMBER_OF_TEAMS
  1230.       Print #1,ROUND_1(STORING_LOOP)
  1231.       Print #1,GOALS_HOME_1(STORING_LOOP)
  1232.       Print #1,GOALS_AWAY_1(STORING_LOOP)
  1233.       Print #1,GOALS_TOTAL_1(STORING_LOOP)
  1234.       Print #1,GOALS_HOME_Q(STORING_LOOP)
  1235.       Print #1,GOALS_AWAY_Q(STORING_LOOP)
  1236.       Print #1,GOALS_TOTAL_Q(STORING_LOOP)
  1237.       Print #1,GOALS_HOME_S(STORING_LOOP)
  1238.       Print #1,GOALS_AWAY_S(STORING_LOOP)
  1239.       Print #1,GOALS_TOTAL_S(STORING_LOOP)
  1240.       Print #1,GOALS_HOME_F(STORING_LOOP)
  1241.       Print #1,GOALS_AWAY_F(STORING_LOOP)
  1242.       Print #1,GOALS_TOTAL_F(STORING_LOOP)
  1243.    Next STORING_LOOP
  1244.    For STORING_LOOP=1 To NUMBER_OF_TEAMS/2
  1245.       Print #1,ROUND_Q(STORING_LOOP)
  1246.    Next STORING_LOOP
  1247.    For STORING_LOOP=1 To NUMBER_OF_TEAMS/4
  1248.       Print #1,ROUND_S(STORING_LOOP)
  1249.    Next STORING_LOOP
  1250.    For STORING_LOOP=1 To NUMBER_OF_TEAMS/8
  1251.       Print #1,ROUND_F(STORING_LOOP)
  1252.    Next STORING_LOOP
  1253.    Close 1
  1254. End Proc
  1255. Procedure RETRIEVE_CUP_DATA
  1256.    Shared FILENAME$,FILE_OPEN_FLAG,NUMBER_OF_TEAMS
  1257.    Shared THE_DRAW(),GOALS_HOME(),GOALS_AWAY()
  1258.    Shared ROUND_1(),GOALS_HOME_1(),GOALS_AWAY_1(),GOALS_TOTAL_1()
  1259.    Shared ROUND_Q(),GOALS_HOME_Q(),GOALS_AWAY_Q(),GOALS_TOTAL_Q()
  1260.    Shared ROUND_S(),GOALS_HOME_S(),GOALS_AWAY_S(),GOALS_TOTAL_S()
  1261.    Shared ROUND_F(),GOALS_HOME_F(),GOALS_AWAY_F(),GOALS_TOTAL_F()
  1262.    RETRIEVE_FILENAME$=FILENAME$-".slamball"+".cup_data"
  1263.    Open In 1,RETRIEVE_FILENAME$
  1264.    For RETRIEVING_LOOP=1 To NUMBER_OF_TEAMS
  1265.       Input #1,THE_DRAW(RETRIEVING_LOOP)
  1266.       Input #1,GOALS_HOME(RETRIEVING_LOOP)
  1267.       Input #1,GOALS_AWAY(RETRIEVING_LOOP)
  1268.    Next RETRIEVING_LOOP
  1269.    Close 1
  1270.    RETRIEVE_FILENAME$=FILENAME$-".slamball"+".all_cup_data"
  1271.    Open In 1,RETRIEVE_FILENAME$
  1272.    For RETRIEVING_LOOP=1 To NUMBER_OF_TEAMS
  1273.       Input #1,ROUND_1(RETRIEVING_LOOP)
  1274.       Input #1,GOALS_HOME_1(RETRIEVING_LOOP)
  1275.       Input #1,GOALS_AWAY_1(RETRIEVING_LOOP)
  1276.       Input #1,GOALS_TOTAL_1(RETRIEVING_LOOP)
  1277.       Input #1,GOALS_HOME_Q(RETRIEVING_LOOP)
  1278.       Input #1,GOALS_AWAY_Q(RETRIEVING_LOOP)
  1279.       Input #1,GOALS_TOTAL_Q(RETRIEVING_LOOP)
  1280.       Input #1,GOALS_HOME_S(RETRIEVING_LOOP)
  1281.       Input #1,GOALS_AWAY_S(RETRIEVING_LOOP)
  1282.       Input #1,GOALS_TOTAL_S(RETRIEVING_LOOP)
  1283.       Input #1,GOALS_HOME_F(RETRIEVING_LOOP)
  1284.       Input #1,GOALS_AWAY_F(RETRIEVING_LOOP)
  1285.       Input #1,GOALS_TOTAL_F(RETRIEVING_LOOP)
  1286.    Next RETRIEVING_LOOP
  1287.    For RETRIEVING_LOOP=1 To NUMBER_OF_TEAMS/2
  1288.       Input #1,ROUND_Q(RETRIEVING_LOOP)
  1289.    Next RETRIEVING_LOOP
  1290.    For RETRIEVING_LOOP=1 To NUMBER_OF_TEAMS/4
  1291.       Input #1,ROUND_S(RETRIEVING_LOOP)
  1292.    Next RETRIEVING_LOOP
  1293.    For RETRIEVING_LOOP=1 To NUMBER_OF_TEAMS/8
  1294.       Input #1,ROUND_F(RETRIEVING_LOOP)
  1295.    Next RETRIEVING_LOOP
  1296.    Close 1
  1297. End Proc
  1298. '********************************************************************
  1299. '
  1300. '********************************************************************
  1301. '*                        PLAYERS PART                              *
  1302. '********************************************************************
  1303. Dim FIRST_NAME$(156),SECOND_NAME$(156)
  1304. Dim NAME$(TEAM_MAX),AGE(TEAM_MAX),POSITION(TEAM_MAX)
  1305. Dim MORALE(TEAM_MAX),KNOWLEDGE(TEAM_MAX),INJURY_LENGTH(TEAM_MAX),INJURIES(TEAM_MAX)
  1306. Dim TRANSFER(TEAM_MAX),PRICE(TEAM_MAX),CLUB_TO_PAY(TEAM_MAX),SKILL_TOTAL(TEAM_MAX)
  1307. Dim CONTRACT(TEAM_MAX),WEEKLY_WAGE(TEAM_MAX),WAGE_REQUIRED(TEAM_MAX)
  1308. Dim WAGE_OFFER(TEAM_MAX),CONTRACT_ACCEPTED(TEAM_MAX)
  1309. Dim SEASONS_WITH_CLUB(TEAM_MAX),GAMES_SEASON(TEAM_MAX),GAMES_CAREER(TEAM_MAX)
  1310. Dim GOALS_SEASON(TEAM_MAX),GOALS_CAREER(TEAM_MAX)
  1311. Dim STRENGTH(TEAM_MAX),SPEED(TEAM_MAX),DEXTERITY(TEAM_MAX)
  1312. Dim INSTINCT(TEAM_MAX),HARDNESS(TEAM_MAX),STAMINA(TEAM_MAX)
  1313. Dim STRENGTH_MAX(TEAM_MAX),SPEED_MAX(TEAM_MAX),DEXTERITY_MAX(TEAM_MAX)
  1314. Dim INSTINCT_MAX(TEAM_MAX),HARDNESS_MAX(TEAM_MAX),STAMINA_MAX(TEAM_MAX)
  1315. Dim SKILL_SHOT(TEAM_MAX),SKILL_PASS(TEAM_MAX),SKILL_TACKLE(TEAM_MAX)
  1316. Dim SKILL_STEAL(TEAM_MAX),SKILL_ART(TEAM_MAX)
  1317. Dim DISPLAY_POSITION(20),ACTUAL_POSITION$(4),ACTUAL_MORALE$(10),ACTUAL_ATTRIBUTE$(10)
  1318. CONTRACT_POINTS=0
  1319. CONTRACT_QUIT=0
  1320. Procedure INITIALISE_SQUAD_ARRAYS
  1321.    Shared ACTUAL_POSITION$(),ACTUAL_MORALE$(),ACTUAL_ATTRIBUTE$()
  1322.    For X=1 To 3
  1323.       Read A$ : ACTUAL_POSITION$(X)=A$
  1324.    Next X
  1325.    For X=0 To 10
  1326.       Read A$ : ACTUAL_MORALE$(X)=A$
  1327.    Next X
  1328.    For X=0 To 10
  1329.       Read A$ : ACTUAL_ATTRIBUTE$(X)=A$
  1330.    Next X
  1331.    Data "Defence","Midfield","Attack"
  1332.    Data "Abysmal","Very Low","Low","Poor","Bad","Average"
  1333.    Data "Good","V Good","Great","Superb","Fabulous!"
  1334.    Data "Abysmal","V Weak","Weak","Poor","Bad"
  1335.    Data "Average","Good","V Good","Great","Superb","Genius!"
  1336. End Proc
  1337. Procedure INITIALISE_PLAYER_ARRAYS[PERSON]
  1338.    Shared NAME$(),AGE(),POSITION(),MORALE(),KNOWLEDGE(),INJURY_LENGTH(),INJURIES(),TRANSFER(),PRICE()
  1339.    Shared CLUB_TO_PAY(),SKILL_TOTAL(),CONTRACT(),CONTRACT_ACCEPTED(),WEEKLY_WAGE()
  1340.    Shared WAGE_REQUIRED(),WAGE_OFFER(),SEASONS_WITH_CLUB(),GAMES_SEASON(),GAMES_CAREER(),GOALS_SEASON(),GOALS_CAREER()
  1341.    Shared STRENGTH(),SPEED(),DEXTERITY(),INSTINCT(),HARDNESS(),STAMINA()
  1342.    Shared STRENGTH_MAX(),SPEED_MAX(),DEXTERITY_MAX(),INSTINCT_MAX(),HARDNESS_MAX(),STAMINA_MAX()
  1343.    Shared SKILL_SHOT(),SKILL_PASS(),SKILL_TACKLE(),SKILL_STEAL(),SKILL_ART()
  1344.    NAME$(PERSON)="A  Reserve  Player" : AGE(PERSON)=18 : POSITION(PERSON)=2 : MORALE(PERSON)=1
  1345.    KNOWLEDGE(PERSON)=0 : INJURY_LENGTH(PERSON)=0 : INJURIES(PERSON)=0 : TRANSFER(PERSON)=0
  1346.    PRICE(PERSON)=1000 : CLUB_TO_PAY(PERSON)=0 : SKILL_TOTAL(PERSON)=0 : CONTRACT(PERSON)=0 : CONTRACT_ACCEPTED(PERSON)=0
  1347.    WEEKLY_WAGE(PERSON)=0 : WAGE_REQUIRED(PERSON)=0 : WAGE_OFFER(PERSON)=100 : SEASONS_WITH_CLUB(PERSON)=0
  1348.    GAMES_SEASON(PERSON)=0 : GAMES_CAREER(PERSON)=0 : GOALS_SEASON(PERSON)=0 : GOALS_CAREER(PERSON)=0
  1349.    STRENGTH(PERSON)=1 : SPEED(PERSON)=1 : DEXTERITY(PERSON)=1
  1350.    INSTINCT(PERSON)=1 : HARDNESS(PERSON)=1 : STAMINA(PERSON)=1
  1351.    STRENGTH_MAX(PERSON)=100 : SPEED_MAX(PERSON)=100 : DEXTERITY_MAX(PERSON)=100
  1352.    INSTINCT_MAX(PERSON)=100 : HARDNESS_MAX(PERSON)=100 : STAMINA_MAX(PERSON)=100
  1353.    SKILL_SHOT(PERSON)=1 : SKILL_PASS(PERSON)=1 : SKILL_TACKLE(PERSON)=1
  1354.    SKILL_STEAL(PERSON)=1 : SKILL_ART(PERSON)=1
  1355. End Proc
  1356. Procedure INITIALISE_DISPLAY_POSITION
  1357.    Shared DISPLAY_POSITION()
  1358.    For POSITION=1 To 20
  1359.       DISPLAY_POSITION(POSITION)=0
  1360.    Next POSITION
  1361. End Proc
  1362. Procedure RETRIEVE_PLAYER_NAMES
  1363.    Shared FIRST_NAME$(),SECOND_NAME$(),GAME_DISK$
  1364.    Open In 1,GAME_DISK$+"SlamBall.players_names"
  1365.    For X=1 To 156
  1366.       Input #1,FIRST_NAME$(X)
  1367.       Input #1,SECOND_NAME$(X)
  1368.    Next X
  1369.    Close 1
  1370. End Proc
  1371. Procedure DISPLAY_MAIN_PLAYER_SELECT_SCREEN
  1372.    Shared FULL_BOX,EDGE_TOP,EDGE_BOTTOM
  1373.    Cls 4
  1374.    MAKE_A_BOX[2,4,316,24,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  1375.    MAKE_A_BOX[2,29,316,229,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  1376.    MAKE_A_BOX[2,232,316,247,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  1377.    Ink 5,11, : MESSAGE$="Click here when finished"
  1378.    PLACE_TEXT_CENTRALLY[243,MESSAGE$,320]
  1379. End Proc
  1380. Procedure DISPLAY_WHOLE_PLAYER_SCREEN
  1381.    Shared DISPLAY_PLAYER_SCREEN
  1382.    Unpack DISPLAY_PLAYER_SCREEN To 2 : Ink 1,11,
  1383.    CREATE_ZONES_FOR_WHOLE_PLAYER_SCREEN
  1384. End Proc
  1385. Procedure CREATE_ZONES_FOR_WHOLE_PLAYER_SCREEN
  1386.    Reserve Zone 10
  1387.    Set Zone 1,216,91 To 230,105 : Set Zone 2,216,108 To 230,122
  1388.    Set Zone 3,238,91 To 308,105 : Set Zone 4,238,108 To 308,122
  1389.    Set Zone 5,257,136 To 271,150 : Set Zone 6,294,136 To 308,150
  1390.    Set Zone 7,262,164 To 276,178 : Set Zone 8,289,164 To 303,178
  1391.    Set Zone 9,259,202 To 306,214 : Set Zone 10,2,232 To 316,247
  1392. End Proc
  1393. Procedure TRANSFER_OR_CONTRACT_WITH_PLAYER[PERSON]
  1394.    Shared PRICE(),TRANSFER(),WAGE_OFFER(),CONTRACT(),CONTRACT_ACCEPTED()
  1395.    Shared CONTRACT_QUIT,CURRENT_TEAM
  1396.    CONTRACT_QUIT=0 : CONTRACT_OFFER=CONTRACT(PERSON) : PRICE_CHECK=0
  1397.    Repeat 
  1398.       Text 142,110,Str$(PRICE(PERSON))-" "+" "
  1399.       Text 279,146,Str$(CONTRACT_OFFER)-" "
  1400.       Text 263,190,Str$(WAGE_OFFER(PERSON))-" "+" "
  1401.       CHECK_MOUSE=Mouse Click : CHECK_MOUSE_KEY=Mouse Key
  1402.       WHICH_ZONE=Mouse Zone
  1403.       If CHECK_MOUSE=1 and WHICH_ZONE=1 and PRICE(PERSON)<4999000
  1404.          Add PRICE(PERSON),1000
  1405.       End If 
  1406.       If CHECK_MOUSE_KEY=2 and WHICH_ZONE=1 and PRICE(PERSON)<4999000
  1407.          Add PRICE(PERSON),1000
  1408.       End If 
  1409.       If CHECK_MOUSE=1 and WHICH_ZONE=2 and PRICE(PERSON)>=2000
  1410.          Add PRICE(PERSON),-1000
  1411.       End If 
  1412.       If CHECK_MOUSE_KEY=2 and WHICH_ZONE=2 and PRICE(PERSON)>=2000
  1413.          Add PRICE(PERSON),-1000
  1414.       End If 
  1415.       If CHECK_MOUSE=1 and WHICH_ZONE=3 and TRANSFER(PERSON)=0
  1416.          PLACE_PLAYER_ON_TRANSFER_LIST[PERSON]
  1417.          TRANSFER_MESSAGE_ON_LIST[PERSON]
  1418.       End If 
  1419.       If CHECK_MOUSE=1 and WHICH_ZONE=4 and TRANSFER(PERSON)=1
  1420.          Dec MANAGER_TRANSFERS
  1421.          TAKE_PLAYER_OFF_TRANSFER_LIST[PERSON]
  1422.          TRANSFER_MESSAGE_OFF_LIST[PERSON]
  1423.       End If 
  1424.       If CHECK_MOUSE=1 and WHICH_ZONE=5
  1425.          Add CONTRACT_OFFER,1
  1426.          If CONTRACT_OFFER>5 : CONTRACT_OFFER=1 : End If 
  1427.       End If 
  1428.       If CHECK_MOUSE=1 and WHICH_ZONE=6
  1429.          CONTRACT_OFFER=CONTRACT_OFFER-1
  1430.          If CONTRACT_OFFER<1 : CONTRACT_OFFER=5 : End If 
  1431.       End If 
  1432.       If CHECK_MOUSE=1 and WHICH_ZONE=7 and WAGE_OFFER(PERSON)<=6990
  1433.          Add WAGE_OFFER(PERSON),10
  1434.       End If 
  1435.       If CHECK_MOUSE_KEY=2 and WHICH_ZONE=7 and WAGE_OFFER(PERSON)<=6990
  1436.          Add WAGE_OFFER(PERSON),10
  1437.       End If 
  1438.       If CHECK_MOUSE=1 and WHICH_ZONE=8 and WAGE_OFFER(PERSON)>=110
  1439.          Add WAGE_OFFER(PERSON),-10
  1440.       End If 
  1441.       If CHECK_MOUSE_KEY=2 and WHICH_ZONE=8 and WAGE_OFFER(PERSON)>=110
  1442.          Add WAGE_OFFER(PERSON),-10
  1443.       End If 
  1444.       If CHECK_MOUSE=1 and WHICH_ZONE=9
  1445.          If CONTRACT_ACCEPTED(PERSON)=0
  1446.             OFFER_CONTRACT_TO_PLAYER[PERSON,CONTRACT_OFFER]
  1447.             If Param=1
  1448.                ACCEPT_OFFER[PERSON,CONTRACT_OFFER]
  1449.                CONTRACT_VARIABLES_UPDATE[PERSON,CONTRACT_OFFER]
  1450.                CALCULATE_WAGE_BILLS
  1451.             Else 
  1452.                REFUSE_OFFER[PERSON]
  1453.             End If 
  1454.          Else 
  1455.             CONTRACT_ALREADY_AGREED[PERSON]
  1456.          End If 
  1457.       End If 
  1458.       If CHECK_MOUSE=1 and WHICH_ZONE=10
  1459.          CONTRACT_QUIT=1
  1460.       End If 
  1461.    Until CONTRACT_QUIT=1
  1462.    Reserve Zone 
  1463.    DISPLAY_INITIAL_PLAYER_DATA[CURRENT_TEAM]
  1464. End Proc
  1465. Procedure FIND_WHICH_PLAYER_TO_DISPLAY[TEAM,PERSON_TOTAL]
  1466.    Shared DISPLAY_POSITION(),CLUB_TO_PAY()
  1467.    CANCEL=0
  1468.    Repeat 
  1469.       For X=1 To PERSON_TOTAL
  1470.          CHECK_MOUSE=Mouse Key
  1471.          WHICH_ZONE=Mouse Zone
  1472.          If CHECK_MOUSE=1 and WHICH_ZONE=X
  1473.             PERSON=DISPLAY_POSITION(WHICH_ZONE)
  1474.             If CLUB_TO_PAY(PERSON)=TEAM
  1475.                DISPLAY_WHOLE_PLAYER_DATA[PERSON,0]
  1476.                TRANSFER_OR_CONTRACT_WITH_PLAYER[PERSON]
  1477.             End If 
  1478.          End If 
  1479.       Next X
  1480.       If CHECK_MOUSE=1 and WHICH_ZONE=21
  1481.          CANCEL=1
  1482.       End If 
  1483.    Until CANCEL=1
  1484.    Reserve Zone 
  1485.    GRAPHIC_SCREEN_FADE
  1486. End Proc
  1487. Procedure DISPLAY_INITIAL_PLAYER_DATA[TEAM]
  1488.    Shared POSITION(),CLUB_TO_PAY(),DISPLAY_POSITION(),TEAMNAME$(),TEAM_MAX
  1489.    Screen 1
  1490.    DISPLAY_MAIN_PLAYER_SELECT_SCREEN
  1491.    INITIALISE_DISPLAY_POSITION
  1492.    Ink 7,3, : PLACE_TEXT_CENTRALLY[13,TEAMNAME$(TEAM),320]
  1493.    Reserve Zone 21 : Ink 1,3,
  1494.    FLAG_ZONE=1 : Y_POS=37
  1495.    For OUTER_LOOP=1 To 3
  1496.       For PERSON=1 To TEAM_MAX
  1497.          If POSITION(PERSON)=OUTER_LOOP and CLUB_TO_PAY(PERSON)=TEAM
  1498.             DISPLAY_POSITION(FLAG_ZONE)=PERSON
  1499.             DISPLAY_PLAYER[PERSON,Y_POS]
  1500.             Set Zone FLAG_ZONE,6,Y_POS-5 To 310,Y_POS
  1501.             Inc FLAG_ZONE : Add Y_POS,10
  1502.          End If 
  1503.       Next PERSON
  1504.    Next OUTER_LOOP
  1505.    Set Zone 21,2,232 To 316,247
  1506.    Screen To Front 1
  1507. End Proc[FLAG_ZONE]
  1508. Procedure DISPLAY_PLAYER[PERSON,Y_POS]
  1509.    Shared NAME$(),AGE(),POSITION()
  1510.    Shared INJURY_LENGTH(),TRANSFER(),ACTUAL_POSITION$()
  1511.    Text 6,Y_POS,NAME$(PERSON)
  1512.    Text 156,Y_POS,Str$(AGE(PERSON))-" "
  1513.    Text 177,Y_POS,ACTUAL_POSITION$(POSITION(PERSON))
  1514.    If INJURY_LENGTH(PERSON)>0
  1515.       Text 274,Y_POS,Str$(INJURY_LENGTH(PERSON))-" "
  1516.    Else 
  1517.       Text 274,Y_POS,"N"
  1518.    End If 
  1519.    If TRANSFER(PERSON)=0
  1520.       Text 298,Y_POS,"N"
  1521.    Else 
  1522.       Text 298,Y_POS,"Y"
  1523.    End If 
  1524. End Proc
  1525. Procedure DISPLAY_WHOLE_PLAYER_DATA[PERSON,TYPE]
  1526.    Shared NAME$(),AGE(),POSITION(),MORALE(),KNOWLEDGE()
  1527.    Shared INJURY_LENGTH(),INJURIES(),TRANSFER(),PRICE(),CLUB_TO_PAY()
  1528.    Shared SKILL_TOTAL(),CONTRACT(),WEEKLY_WAGE(),WAGE_REQUIRED()
  1529.    Shared SEASONS_WITH_CLUB(),GAMES_SEASON(),GAMES_CAREER()
  1530.    Shared GOALS_SEASON(),GOALS_CAREER()
  1531.    Shared STRENGTH(),SPEED(),DEXTERITY(),INSTINCT(),HARDNESS(),STAMINA()
  1532.    Shared SKILL_SHOT(),SKILL_PASS(),SKILL_TACKLE(),SKILL_STEAL(),SKILL_ART()
  1533.    Shared ACTUAL_POSITION$(),ACTUAL_MORALE$(),ACTUAL_ATTRIBUTE$()
  1534.    DISPLAY_WHOLE_PLAYER_SCREEN
  1535.    Text 50,17,NAME$(PERSON)
  1536.    Text 50,28,Str$(AGE(PERSON))-" "
  1537.    Text 50,39,Str$(CONTRACT(PERSON))-" "
  1538.    Text 50,50,Str$(KNOWLEDGE(PERSON))-" "
  1539.    Text 50,61,ACTUAL_MORALE$(MORALE((PERSON))/10)
  1540.    Text 247,17,ACTUAL_POSITION$(POSITION(PERSON))
  1541.    Text 247,28,Str$(INJURY_LENGTH(PERSON))-" "
  1542.    Text 247,39,Str$(SEASONS_WITH_CLUB(PERSON))-" "
  1543.    Text 247,50,Str$(GAMES_CAREER(PERSON))-" "
  1544.    Text 247,61,Str$(GOALS_CAREER(PERSON))-" "
  1545.    Text 50,98,Str$(INJURIES(PERSON))-" "
  1546.    Text 50,109,Str$(GAMES_SEASON(PERSON))-" "
  1547.    Text 50,120,Str$(GOALS_SEASON(PERSON))-" "
  1548.    Text 50,156,ACTUAL_ATTRIBUTE$(STRENGTH(PERSON)/10)
  1549.    Text 50,167,ACTUAL_ATTRIBUTE$(SPEED(PERSON)/10)
  1550.    Text 50,178,ACTUAL_ATTRIBUTE$(DEXTERITY(PERSON)/10)
  1551.    Text 50,189,ACTUAL_ATTRIBUTE$(INSTINCT(PERSON)/10)
  1552.    Text 50,200,ACTUAL_ATTRIBUTE$(HARDNESS(PERSON)/10)
  1553.    Text 50,211,ACTUAL_ATTRIBUTE$(STAMINA(PERSON)/10)
  1554.    If TYPE=0
  1555.       Text 50,72,Str$(WEEKLY_WAGE(PERSON))-" "
  1556.       Text 176,155,ACTUAL_ATTRIBUTE$(SKILL_SHOT(PERSON)/10)
  1557.       Text 176,166,ACTUAL_ATTRIBUTE$(SKILL_PASS(PERSON)/10)
  1558.       Text 176,177,ACTUAL_ATTRIBUTE$(SKILL_TACKLE(PERSON)/10)
  1559.       Text 176,188,ACTUAL_ATTRIBUTE$(SKILL_STEAL(PERSON)/10)
  1560.       Text 176,199,ACTUAL_ATTRIBUTE$(SKILL_ART(PERSON)/10)
  1561.    End If 
  1562. End Proc
  1563. Procedure OFFER_CONTRACT_TO_PLAYER[PERSON,CONTRACT_LENGTH]
  1564.    Shared WAGE_OFFER(),WAGE_REQUIRED(),AGE(),MORALE(),CONTRACT_POINTS
  1565.    CONTRACT_POINTS=0 : ACCEPT_REJECT=0
  1566.    If AGE(PERSON)>=18 and AGE(PERSON)<=22 and CONTRACT_LENGTH>=3 and CONTRACT_LENGTH<=5
  1567.       Add CONTRACT_POINTS,5
  1568.    End If 
  1569.    If AGE(PERSON)>=23 and AGE(PERSON)<=26 and CONTRACT_LENGTH>=2 and CONTRACT_LENGTH<=4
  1570.       Add CONTRACT_POINTS,5
  1571.    End If 
  1572.    If AGE(PERSON)>=27 and AGE(PERSON)<=28 and CONTRACT_LENGTH>=1 and CONTRACT_LENGTH<=3
  1573.       Add CONTRACT_POINTS,5
  1574.    End If 
  1575.    If AGE(PERSON)>=29 and CONTRACT_LENGTH>=3 and CONTRACT_LENGTH<=5
  1576.       Add CONTRACT_POINTS,5
  1577.    End If 
  1578.    TEMP_POINTS=WAGE_REQUIRED(PERSON)-WAGE_OFFER(PERSON)/10
  1579.    CONTRACT_POINTS=CONTRACT_POINTS-TEMP_POINTS
  1580.    Add CONTRACT_POINTS,MORALE(PERSON)/10
  1581.    If CONTRACT_POINTS>=9
  1582.       ACCEPT_REJECT=1
  1583.    Else 
  1584.       ACCEPT_REJECT=0
  1585.    End If 
  1586. End Proc[ACCEPT_REJECT]
  1587. Procedure CONTRACT_ALREADY_AGREED[PERSON]
  1588.    Shared NAME$(),CONTRACT_QUIT
  1589.    Cls 4
  1590.    MAKE_BOXES_FOR_MESSAGE
  1591.    Ink 5,11, : Text 90,19,"CONTRACT MESSAGE"
  1592.    Ink 1,11, : Text 8,85,NAME$(PERSON)+" has already"
  1593.    Text 8,105,"agreed a contract this year."
  1594.    Text 8,125,"You must wait until next year"
  1595.    Text 8,145,"to offer him a new contract."
  1596.    CHECK_FOR_MOUSE_CLICK
  1597.    CONTRACT_QUIT=1
  1598. End Proc
  1599. Procedure ACCEPT_OFFER[PERSON,CONTRACT_LENGTH]
  1600.    Shared NAME$(),WAGE_OFFER(),WEEKLY_WAGE()
  1601.    Shared CONTRACT(),MORALE(),CONTRACT_POINTS,CONTRACT_QUIT
  1602.    Cls 4
  1603.    MAKE_BOXES_FOR_MESSAGE
  1604.    Ink 7,3, : Text 58,19,"Response to Contract Offer"
  1605.    Ink 1,3, : Text 8,85,NAME$(PERSON)+"'s response......"
  1606.    Wait Rnd(50)+Rnd(50)
  1607.    Text 8,105,NAME$(PERSON)+" accepts your offer."
  1608.    Text 8,125,NAME$(PERSON)+" will now receive;"
  1609.    Text 14,140,"�"+Str$(WAGE_OFFER(PERSON))-" "+" a week for "+Str$(CONTRACT_LENGTH)-" "+" years."
  1610.    CHECK_FOR_MOUSE_CLICK
  1611.    CONTRACT_QUIT=1
  1612. End Proc
  1613. Procedure CONTRACT_VARIABLES_UPDATE[PERSON,CONTRACT_LENGTH]
  1614.    Shared NAME$(),WAGE_OFFER(),WEEKLY_WAGE(),CONTRACT_ACCEPTED()
  1615.    Shared CONTRACT(),MORALE(),CONTRACT_POINTS
  1616.    WEEKLY_WAGE(PERSON)=WAGE_OFFER(PERSON) : CONTRACT(PERSON)=CONTRACT_LENGTH
  1617.    CONTRACT_ACCEPTED(PERSON)=1
  1618.    Add MORALE(PERSON),CONTRACT_POINTS
  1619.    If MORALE(PERSON)>100 : MORALE(PERSON)=100 : End If 
  1620. End Proc
  1621. Procedure REFUSE_OFFER[PERSON]
  1622.    Shared NAME$(),WAGE_OFFER(),WEEKLY_WAGE(),CONTRACT(),CONTRACT_QUIT
  1623.    Cls 4
  1624.    MAKE_BOXES_FOR_MESSAGE
  1625.    Ink 7,3, : Text 58,19,"Response to Contract Offer"
  1626.    Ink 1,3, : Text 8,85,NAME$(PERSON)+"'s response......."
  1627.    Wait Rnd(50)+Rnd(50)
  1628.    Text 8,105,NAME$(PERSON)+" rejected your terms"
  1629.    Text 8,125,"and refused to sign the new contract."
  1630.    CHECK_FOR_MOUSE_CLICK
  1631.    CONTRACT_QUIT=1
  1632. End Proc
  1633. Procedure TRANSFER_MESSAGE_ON_LIST[PERSON]
  1634.    Shared NAME$(),PRICE(),CONTRACT_QUIT
  1635.    Cls 4
  1636.    MAKE_BOXES_FOR_MESSAGE
  1637.    Ink 5,11, : Text 78,19,"TRANSFER INFORMATION"
  1638.    Ink 1,11, : Text 8,85,NAME$(PERSON)+" is on the"
  1639.    Text 8,105,"transfer list for ï¿½"+Str$(PRICE(PERSON))-" "+"."
  1640.    CHECK_FOR_MOUSE_CLICK
  1641.    CONTRACT_QUIT=1
  1642. End Proc
  1643. Procedure TRANSFER_MESSAGE_OFF_LIST[PERSON]
  1644.    Shared NAME$(),PRICE(),CONTRACT_QUIT
  1645.    Cls 4
  1646.    MAKE_BOXES_FOR_MESSAGE
  1647.    Ink 5,11, : Text 78,19,"TRANSFER INFORMATION"
  1648.    Ink 1,11, : Text 8,85,NAME$(PERSON)+" is off the"
  1649.    Text 8,105,"transfer list."
  1650.    Text 8,125,"He was on for ï¿½"+Str$(PRICE(PERSON))-" "+"."
  1651.    CHECK_FOR_MOUSE_CLICK
  1652.    CONTRACT_QUIT=1
  1653. End Proc
  1654. Procedure MAKE_ORIGINAL_PLAYERS
  1655.    Shared NUMBER_OF_TEAMS
  1656.    COUNT=1
  1657.    For TEAM=1 To NUMBER_OF_TEAMS
  1658.       For PERSON=1 To 7
  1659.          FIND_QUALITY_OF_PLAYER[TEAM]
  1660.          MAKE_NEW_PLAYER[TEAM,COUNT,Param]
  1661.          Inc COUNT
  1662.       Next PERSON
  1663.       CALCULATE_WAGE_BILLS
  1664.    Next TEAM
  1665. End Proc
  1666. Procedure FIND_QUALITY_OF_PLAYER[TEAM]
  1667.    If TEAM>=1 and TEAM<=4
  1668.       FIND_QUALITY[1]
  1669.    End If 
  1670.    If TEAM>=5 and TEAM<=8
  1671.       FIND_QUALITY[5]
  1672.    End If 
  1673.    If TEAM>=9 and TEAM<=12
  1674.       FIND_QUALITY[9]
  1675.    End If 
  1676.    If TEAM>=13 and TEAM<=16
  1677.       FIND_QUALITY[14]
  1678.    End If 
  1679.    TEMP_QUALITY=Param
  1680. End Proc[TEMP_QUALITY]
  1681. Procedure FIND_QUALITY[QUALITY]
  1682.    TEMP=Rnd(QUALITY)
  1683.    If TEMP=0 : TEMP_QUALITY=5 : End If 
  1684.    If TEMP>=1 and TEMP<=2 : TEMP_QUALITY=4 : End If 
  1685.    If TEMP>=3 and TEMP<=5 : TEMP_QUALITY=3 : End If 
  1686.    If TEMP>=6 and TEMP<=9 : TEMP_QUALITY=2 : End If 
  1687.    If TEMP>=10 and TEMP<=14 : TEMP_QUALITY=1 : End If 
  1688. End Proc[TEMP_QUALITY]
  1689. Procedure MAKE_NEW_PLAYER[TEAM,PERSON,QUALITY]
  1690.    Shared STRENGTH(),SPEED(),DEXTERITY(),INSTINCT(),HARDNESS(),STAMINA()
  1691.    Shared STRENGTH_MAX(),SPEED_MAX(),DEXTERITY_MAX()
  1692.    Shared INSTINCT_MAX(),HARDNESS_MAX(),STAMINA_MAX()
  1693.    GIVE_PLAYER_A_NAME[PERSON]
  1694.    GIVE_PLAYER_AN_AGE[PERSON,12]
  1695.    GIVE_PLAYER_A_POSITION[PERSON]
  1696.    GIVE_PLAYER_MORALE[PERSON,30,30,1]
  1697.    GIVE_PLAYER_CONTRACT[PERSON]
  1698.    GIVE_PLAYER_STRENGTH[PERSON,QUALITY*10,10] : GIVE_PLAYER_MAXIMUM[Param] : STRENGTH_MAX(PERSON)=Param
  1699.    GIVE_PLAYER_SPEED[PERSON,QUALITY*10,10] : GIVE_PLAYER_MAXIMUM[Param] : SPEED_MAX(PERSON)=Param
  1700.    GIVE_PLAYER_DEXTERITY[PERSON,QUALITY*10,10] : GIVE_PLAYER_MAXIMUM[Param] : DEXTERITY_MAX(PERSON)=Param
  1701.    GIVE_PLAYER_INSTINCT[PERSON,QUALITY*10,10] : GIVE_PLAYER_MAXIMUM[Param] : INSTINCT_MAX(PERSON)=Param
  1702.    GIVE_PLAYER_HARDNESS[PERSON,QUALITY*10,10] : GIVE_PLAYER_MAXIMUM[Param] : HARDNESS_MAX(PERSON)=Param
  1703.    GIVE_PLAYER_STAMINA[PERSON,60,40] : GIVE_PLAYER_MAXIMUM[Param] : STAMINA_MAX(PERSON)=Param
  1704.    GIVE_PLAYER_SHOOTING_SKILL[PERSON] : GIVE_PLAYER_PASSING_SKILL[PERSON]
  1705.    GIVE_PLAYER_TACKLING_SKILL[PERSON] : GIVE_PLAYER_STEALING_SKILL[PERSON]
  1706.    GIVE_PLAYER_ARTISTRY_SKILL[PERSON]
  1707.    GIVE_PLAYER_A_CLUB[TEAM,PERSON]
  1708.    GIVE_PLAYER_SEASONS_WITH_CLUB[PERSON]
  1709.    GIVE_PLAYER_GAMES[PERSON]
  1710.    GIVE_PLAYER_GOALS[PERSON]
  1711.    GIVE_PLAYER_SKILL_TOTAL[PERSON]
  1712.    GIVE_PLAYER_WAGES[PERSON]
  1713.    GIVE_PLAYER_REQUIRED_WAGE[PERSON]
  1714.    GIVE_PLAYER_EXPERIENCE[PERSON]
  1715. End Proc
  1716. Procedure GIVE_PLAYER_A_NAME[PERSON]
  1717.    Shared NAME$(),FIRST_NAME$(),SECOND_NAME$()
  1718.    Repeat 
  1719.       TEMP_A=Rnd(155)+1 : TEMP_B=Rnd(155)+1
  1720.       NAME$(PERSON)=FIRST_NAME$(TEMP_A)+SECOND_NAME$(TEMP_B)
  1721.    Until Len(NAME$(PERSON))>2 and Len(NAME$(PERSON))<19
  1722. End Proc
  1723. Procedure GIVE_PLAYER_AN_AGE[PERSON,AGE_BOUND]
  1724.    Shared AGE()
  1725.    AGE(PERSON)=Rnd(AGE_BOUND)+18
  1726. End Proc
  1727. Procedure GIVE_PLAYER_A_POSITION[PERSON]
  1728.    Shared POSITION()
  1729.    TEMP=Rnd(10)
  1730.    If TEMP>=0 and TEMP<=4
  1731.       POSITION(PERSON)=1
  1732.    End If 
  1733.    If TEMP>=5 and TEMP<=7
  1734.       POSITION(PERSON)=2
  1735.    End If 
  1736.    If TEMP>=8 : POSITION(PERSON)=3 : End If 
  1737. End Proc
  1738. Procedure GIVE_PLAYER_MORALE[PERSON,BOOST_A,BOOST_B,TYPE]
  1739.    Shared MORALE()
  1740.    If TYPE=1
  1741.       Add MORALE(PERSON),Rnd(BOOST_A)+BOOST_B
  1742.       If MORALE(PERSON)>100 : MORALE(PERSON)=100 : End If 
  1743.    End If 
  1744.    If TYPE=2
  1745.       MORALE(PERSON)=MORALE(PERSON)-(Rnd(BOOST_A)+(BOOST_B))
  1746.       If MORALE(PERSON)<0 : MORALE(PERSON)=0 : End If 
  1747.    End If 
  1748. End Proc
  1749. Procedure GIVE_PLAYER_EXPERIENCE[PERSON]
  1750.    Shared AGE(),KNOWLEDGE(),GAMES_CAREER(),GOALS_CAREER()
  1751.    KNOWLEDGE(PERSON)=GAMES_CAREER(PERSON)+GOALS_CAREER(PERSON)
  1752. End Proc
  1753. Procedure GIVE_PLAYER_CONTRACT[PERSON]
  1754.    Shared CONTRACT()
  1755.    CONTRACT(PERSON)=Rnd(2)+1
  1756. End Proc
  1757. Procedure GIVE_PLAYER_SKILL_TOTAL[PERSON]
  1758.    Shared STRENGTH(),SPEED(),DEXTERITY(),INSTINCT(),HARDNESS(),STAMINA()
  1759.    Shared SKILL_SHOT(),SKILL_PASS(),SKILL_TACKLE(),SKILL_STEAL()
  1760.    Shared SKILL_ART(),SKILL_TOTAL()
  1761.    TEMP_SKILL=0
  1762.    Add TEMP_SKILL,STRENGTH(PERSON) : Add TEMP_SKILL,SPEED(PERSON)
  1763.    Add TEMP_SKILL,DEXTERITY(PERSON) : Add TEMP_SKILL,INSTINCT(PERSON)
  1764.    Add TEMP_SKILL,HARDNESS(PERSON) : Add TEMP_SKILL,STAMINA(PERSON)
  1765.    Add TEMP_SKILL,SKILL_SHOT(PERSON) : Add TEMP_SKILL,SKILL_PASS(PERSON)
  1766.    Add TEMP_SKILL,SKILL_TACKLE(PERSON) : Add TEMP_SKILL,SKILL_STEAL(PERSON)
  1767.    Add TEMP_SKILL,SKILL_ART(PERSON)
  1768.    SKILL_TOTAL(PERSON)=TEMP_SKILL
  1769. End Proc
  1770. Procedure GIVE_PLAYER_WAGES[PERSON]
  1771.    Shared WAGE_REQUIRED(),WEEKLY_WAGE(),SKILL_TOTAL()
  1772.    WEEKLY_WAGE(PERSON)=SKILL_TOTAL(PERSON)/10
  1773.    WEEKLY_WAGE(PERSON)=WEEKLY_WAGE(PERSON)*10
  1774. End Proc
  1775. Procedure GIVE_PLAYER_REQUIRED_WAGE[PERSON]
  1776.    Shared WAGE_REQUIRED(),SKILL_TOTAL()
  1777.    WAGE_REQUIRED(PERSON)=SKILL_TOTAL(PERSON)/10
  1778. End Proc
  1779. Procedure GIVE_PLAYER_A_CLUB[TEAM,PERSON]
  1780.    Shared CLUB_TO_PAY()
  1781.    CLUB_TO_PAY(PERSON)=TEAM
  1782. End Proc
  1783. Procedure GIVE_PLAYER_SEASONS_WITH_CLUB[PERSON]
  1784.    Shared AGE(),SEASONS_WITH_CLUB()
  1785.    If AGE(PERSON)>21 : SEASONS_WITH_CLUB(PERSON)=Rnd(4) : End If 
  1786. End Proc
  1787. Procedure GIVE_PLAYER_GAMES[PERSON]
  1788.    Shared AGE(),GAMES_CAREER()
  1789.    GAMES_CAREER(PERSON)=(AGE(PERSON)-17)*Rnd(20)+10
  1790. End Proc
  1791. Procedure GIVE_PLAYER_GOALS[PERSON]
  1792.    Shared GOALS_CAREER(),GAMES_CAREER(),POSITION(),SKILL_SHOT()
  1793.    If POSITION(PERSON)=1
  1794.       GOALS_CAREER(PERSON)=0
  1795.    Else 
  1796.       GOALS_CAREER(PERSON)=(GAMES_CAREER(PERSON)*SKILL_SHOT(PERSON))/100
  1797.    End If 
  1798. End Proc
  1799. Procedure GIVE_PLAYER_STRENGTH[PERSON,BOOST_A,BOOST_B]
  1800.    Shared STRENGTH(),STRENGTH_MAX(),POSITION()
  1801.    Add STRENGTH(PERSON),Rnd(BOOST_A)+(BOOST_A)
  1802.    If STRENGTH(PERSON)>STRENGTH_MAX(PERSON)
  1803.       STRENGTH(PERSON)=STRENGTH_MAX(PERSON)
  1804.    End If 
  1805.    TEMP_ATTRIBUTE=STRENGTH(PERSON)
  1806. End Proc[TEMP_ATTRIBUTE]
  1807. Procedure GIVE_PLAYER_SPEED[PERSON,BOOST_A,BOOST_B]
  1808.    Shared SPEED(),SPEED_MAX(),POSITION()
  1809.    If POSITION(PERSON)=2
  1810.       Add SPEED(PERSON),Rnd(BOOST_A)+BOOST_B
  1811.    Else 
  1812.       Add SPEED(PERSON),Rnd(BOOST_A)+(BOOST_A)
  1813.    End If 
  1814.    If SPEED(PERSON)>SPEED_MAX(PERSON)
  1815.       SPEED(PERSON)=SPEED_MAX(PERSON)
  1816.    End If 
  1817.    TEMP_ATTRIBUTE=SPEED(PERSON)
  1818. End Proc[TEMP_ATTRIBUTE]
  1819. Procedure GIVE_PLAYER_DEXTERITY[PERSON,BOOST_A,BOOST_B]
  1820.    Shared DEXTERITY(),DEXTERITY_MAX(),POSITION()
  1821.    If POSITION(PERSON)=2 or POSITION(PERSON)=3
  1822.       Add DEXTERITY(PERSON),Rnd(BOOST_A)+BOOST_B
  1823.    Else 
  1824.       Add DEXTERITY(PERSON),Rnd(BOOST_A)+(BOOST_A)
  1825.    End If 
  1826.    If DEXTERITY(PERSON)>DEXTERITY_MAX(PERSON)
  1827.       DEXTERITY(PERSON)=DEXTERITY_MAX(PERSON)
  1828.    End If 
  1829.    TEMP_ATTRIBUTE=DEXTERITY(PERSON)
  1830. End Proc[TEMP_ATTRIBUTE]
  1831. Procedure GIVE_PLAYER_INSTINCT[PERSON,BOOST_A,BOOST_B]
  1832.    Shared INSTINCT(),INSTINCT_MAX(),POSITION()
  1833.    If POSITION(PERSON)=1
  1834.       Add INSTINCT(PERSON),Rnd(BOOST_A)+BOOST_B
  1835.    Else 
  1836.       Add INSTINCT(PERSON),Rnd(BOOST_A)+(BOOST_A)
  1837.    End If 
  1838.    If INSTINCT(PERSON)>INSTINCT_MAX(PERSON)
  1839.       INSTINCT(PERSON)=INSTINCT_MAX(PERSON)
  1840.    End If 
  1841.    TEMP_ATTRIBUTE=INSTINCT(PERSON)
  1842. End Proc[TEMP_ATTRIBUTE]
  1843. Procedure GIVE_PLAYER_HARDNESS[PERSON,BOOST_A,BOOST_B]
  1844.    Shared HARDNESS(),HARDNESS_MAX(),POSITION()
  1845.    If POSITION(PERSON)=1 or POSITION(PERSON)=3
  1846.       Add HARDNESS(PERSON),Rnd(BOOST_A)+BOOST_B
  1847.    Else 
  1848.       Add HARDNESS(PERSON),Rnd(BOOST_A)+(BOOST_B)
  1849.    End If 
  1850.    If HARDNESS(PERSON)>HARDNESS_MAX(PERSON)
  1851.       HARDNESS(PERSON)=HARDNESS_MAX(PERSON)
  1852.    End If 
  1853.    TEMP_ATTRIBUTE=HARDNESS(PERSON)
  1854. End Proc[TEMP_ATTRIBUTE]
  1855. Procedure GIVE_PLAYER_STAMINA[PERSON,BOOST_A,BOOST_B]
  1856.    Shared STAMINA(),STAMINA_MAX()
  1857.    Add STAMINA(PERSON),Rnd(BOOST_A)+BOOST_B
  1858.    If STAMINA(PERSON)>STAMINA_MAX(PERSON)
  1859.       STAMINA(PERSON)=STAMINA_MAX(PERSON)
  1860.    End If 
  1861.    TEMP_ATTRIBUTE=STAMINA(PERSON)
  1862. End Proc[TEMP_ATTRIBUTE]
  1863. Procedure GIVE_PLAYER_MAXIMUM[THE_ATTRIBUTE]
  1864.    TEMP=Rnd(2)
  1865.    If TEMP=0 : TEMP_MAXIMUM=THE_ATTRIBUTE+Rnd(20)+50 : End If 
  1866.    If TEMP=1 : TEMP_MAXIMUM=THE_ATTRIBUTE+Rnd(20)+30 : End If 
  1867.    If TEMP=2 : TEMP_MAXIMUM=THE_ATTRIBUTE+Rnd(20)+10 : End If 
  1868.    If TEMP_MAXIMUM>100 : TEMP_MAXIMUM=100 : End If 
  1869. End Proc[TEMP_MAXIMUM]
  1870. Procedure GIVE_PLAYER_SHOOTING_SKILL[PERSON]
  1871.    Shared SKILL_SHOT(),POSITION(),INSTINCT(),SPEED(),STRENGTH()
  1872.    If POSITION(PERSON)=1 or POSITION(PERSON)=2
  1873.       SKILL_SHOT(PERSON)=(INSTINCT(PERSON)*0.38)+(SPEED(PERSON)*0.38)+(STRENGTH(PERSON)*0.1)
  1874.    End If 
  1875.    If POSITION(PERSON)=3
  1876.       SKILL_SHOT(PERSON)=(INSTINCT(PERSON)*0.45)+(SPEED(PERSON)*0.45)+(STRENGTH(PERSON)*0.1)
  1877.    End If 
  1878. End Proc
  1879. Procedure GIVE_PLAYER_PASSING_SKILL[PERSON]
  1880.    Shared SKILL_PASS(),POSITION(),INSTINCT(),DEXTERITY(),STRENGTH()
  1881.    SKILL_PASS(PERSON)=(INSTINCT(PERSON)*0.4)+(DEXTERITY(PERSON)*0.4)+(STRENGTH(PERSON)*0.2)
  1882. End Proc
  1883. Procedure GIVE_PLAYER_TACKLING_SKILL[PERSON]
  1884.    Shared SKILL_TACKLE(),POSITION(),STRENGTH(),HARDNESS(),DEXTERITY()
  1885.    If POSITION(PERSON)=1 or POSITION(PERSON)=2
  1886.       SKILL_TACKLE(PERSON)=(STRENGTH(PERSON)*0.4)+(HARDNESS(PERSON)*0.3)+(DEXTERITY(PERSON)*0.3)
  1887.    End If 
  1888.    If POSITION(PERSON)=3
  1889.       SKILL_TACKLE(PERSON)=(STRENGTH(PERSON)*0.29)+(HARDNESS(PERSON)*0.29)+(DEXTERITY(PERSON)*0.29)
  1890.    End If 
  1891. End Proc
  1892. Procedure GIVE_PLAYER_STEALING_SKILL[PERSON]
  1893.    Shared SKILL_STEAL(),INSTINCT(),DEXTERITY(),STRENGTH(),POSITION()
  1894.    If POSITION(PERSON)=1 or POSITION(PERSON)=2
  1895.       SKILL_STEAL(PERSON)=(DEXTERITY(PERSON)*0.35)+(INSTINCT(PERSON)*0.35)+(STRENGTH(PERSON)*0.3)
  1896.    End If 
  1897.    If POSITION(PERSON)=3
  1898.       SKILL_STEAL(PERSON)=(DEXTERITY(PERSON)*0.29)+(INSTINCT(PERSON)*0.29)+(STRENGTH(PERSON)*0.29)
  1899.    End If 
  1900. End Proc
  1901. Procedure GIVE_PLAYER_ARTISTRY_SKILL[PERSON]
  1902.    Shared SKILL_ART(),INSTINCT(),DEXTERITY(),SPEED(),STRENGTH()
  1903.    SKILL_ART(PERSON)=(DEXTERITY(PERSON)*0.4)+(INSTINCT(PERSON)*0.3)+(SPEED(PERSON)*0.2)+(STRENGTH(PERSON)*0.1)
  1904. End Proc
  1905. Procedure STORE_PLAYER_DATA
  1906.    Shared NAME$(),AGE(),POSITION(),MORALE()
  1907.    Shared KNOWLEDGE(),INJURY_LENGTH(),INJURIES(),TRANSFER(),PRICE()
  1908.    Shared CLUB_TO_PAY(),SKILL_TOTAL(),CONTRACT(),CONTRACT_ACCEPTED(),WEEKLY_WAGE()
  1909.    Shared WAGE_REQUIRED(),WAGE_OFFER(),SEASONS_WITH_CLUB()
  1910.    Shared GAMES_SEASON(),GAMES_CAREER(),GOALS_SEASON(),GOALS_CAREER()
  1911.    Shared TEAM_MAX,FILENAME$
  1912.    Shared STRENGTH(),SPEED(),DEXTERITY(),INSTINCT(),HARDNESS(),STAMINA()
  1913.    Shared STRENGTH_MAX(),SPEED_MAX(),DEXTERITY_MAX()
  1914.    Shared INSTINCT_MAX(),HARDNESS_MAX(),STAMINA_MAX()
  1915.    Shared SKILL_SHOT(),SKILL_PASS(),SKILL_TACKLE(),SKILL_STEAL(),SKILL_ART()
  1916.    STORE_FILENAME$=FILENAME$-".slamball"+".player_data"
  1917.    Open Out 1,STORE_FILENAME$
  1918.    For STORING_LOOP=1 To TEAM_MAX
  1919.       Print #1,NAME$(STORING_LOOP)
  1920.       Print #1,AGE(STORING_LOOP)
  1921.       Print #1,POSITION(STORING_LOOP)
  1922.       Print #1,MORALE(STORING_LOOP)
  1923.       Print #1,KNOWLEDGE(STORING_LOOP)
  1924.       Print #1,INJURY_LENGTH(STORING_LOOP)
  1925.       Print #1,INJURIES(STORING_LOOP)
  1926.       Print #1,TRANSFER(STORING_LOOP)
  1927.       Print #1,PRICE(STORING_LOOP)
  1928.       Print #1,CLUB_TO_PAY(STORING_LOOP)
  1929.       Print #1,SKILL_TOTAL(STORING_LOOP)
  1930.       Print #1,CONTRACT(STORING_LOOP)
  1931.       Print #1,CONTRACT_ACCEPTED(STORING_LOOP)
  1932.       Print #1,WEEKLY_WAGE(STORING_LOOP)
  1933.       Print #1,WAGE_REQUIRED(STORING_LOOP)
  1934.       Print #1,WAGE_OFFER(STORING_LOOP)
  1935.       Print #1,SEASONS_WITH_CLUB(STORING_LOOP)
  1936.       Print #1,GAMES_SEASON(STORING_LOOP)
  1937.       Print #1,GAMES_CAREER(STORING_LOOP)
  1938.       Print #1,GOALS_SEASON(STORING_LOOP)
  1939.       Print #1,GOALS_CAREER(STORING_LOOP)
  1940.       Print #1,STRENGTH(STORING_LOOP)
  1941.       Print #1,SPEED(STORING_LOOP)
  1942.       Print #1,DEXTERITY(STORING_LOOP)
  1943.       Print #1,INSTINCT(STORING_LOOP)
  1944.       Print #1,HARDNESS(STORING_LOOP)
  1945.       Print #1,STAMINA(STORING_LOOP)
  1946.       Print #1,STRENGTH_MAX(STORING_LOOP)
  1947.       Print #1,SPEED_MAX(STORING_LOOP)
  1948.       Print #1,DEXTERITY_MAX(STORING_LOOP)
  1949.       Print #1,INSTINCT_MAX(STORING_LOOP)
  1950.       Print #1,HARDNESS_MAX(STORING_LOOP)
  1951.       Print #1,STAMINA_MAX(STORING_LOOP)
  1952.       Print #1,SKILL_SHOT(STORING_LOOP)
  1953.       Print #1,SKILL_PASS(STORING_LOOP)
  1954.       Print #1,SKILL_TACKLE(STORING_LOOP)
  1955.       Print #1,SKILL_STEAL(STORING_LOOP)
  1956.       Print #1,SKILL_ART(STORING_LOOP)
  1957.    Next STORING_LOOP
  1958.    Close 1
  1959. End Proc
  1960. Procedure RETRIEVE_PLAYER_DATA
  1961.    Shared NAME$(),AGE(),POSITION(),MORALE()
  1962.    Shared KNOWLEDGE(),INJURY_LENGTH(),INJURIES(),TRANSFER(),PRICE()
  1963.    Shared CLUB_TO_PAY(),SKILL_TOTAL(),CONTRACT(),CONTRACT_ACCEPTED(),WEEKLY_WAGE()
  1964.    Shared WAGE_REQUIRED(),WAGE_OFFER(),SEASONS_WITH_CLUB()
  1965.    Shared GAMES_SEASON(),GAMES_CAREER(),GOALS_SEASON(),GOALS_CAREER()
  1966.    Shared TEAM_MAX,FILENAME$
  1967.    Shared STRENGTH(),SPEED(),DEXTERITY(),INSTINCT(),HARDNESS(),STAMINA()
  1968.    Shared STRENGTH_MAX(),SPEED_MAX(),DEXTERITY_MAX()
  1969.    Shared INSTINCT_MAX(),HARDNESS_MAX(),STAMINA_MAX()
  1970.    Shared SKILL_SHOT(),SKILL_PASS(),SKILL_TACKLE(),SKILL_STEAL(),SKILL_ART()
  1971.    RETRIEVE_FILENAME$=FILENAME$-".slamball"+".player_data"
  1972.    Open In 1,RETRIEVE_FILENAME$
  1973.    For RETRIEVING_LOOP=1 To TEAM_MAX
  1974.       Input #1,NAME$(RETRIEVING_LOOP)
  1975.       Input #1,AGE(RETRIEVING_LOOP)
  1976.       Input #1,POSITION(RETRIEVING_LOOP)
  1977.       Input #1,MORALE(RETRIEVING_LOOP)
  1978.       Input #1,KNOWLEDGE(RETRIEVING_LOOP)
  1979.       Input #1,INJURY_LENGTH(RETRIEVING_LOOP)
  1980.       Input #1,INJURIES(RETRIEVING_LOOP)
  1981.       Input #1,TRANSFER(RETRIEVING_LOOP)
  1982.       Input #1,PRICE(RETRIEVING_LOOP)
  1983.       Input #1,CLUB_TO_PAY(RETRIEVING_LOOP)
  1984.       Input #1,SKILL_TOTAL(RETRIEVING_LOOP)
  1985.       Input #1,CONTRACT(RETRIEVING_LOOP)
  1986.       Input #1,CONTRACT_ACCEPTED(STORING_LOOP)
  1987.       Input #1,WEEKLY_WAGE(RETRIEVING_LOOP)
  1988.       Input #1,WAGE_REQUIRED(RETRIEVING_LOOP)
  1989.       Input #1,WAGE_OFFER(RETRIEVING_LOOP)
  1990.       Input #1,SEASONS_WITH_CLUB(RETRIEVING_LOOP)
  1991.       Input #1,GAMES_SEASON(RETRIEVING_LOOP)
  1992.       Input #1,GAMES_CAREER(RETRIEVING_LOOP)
  1993.       Input #1,GOALS_SEASON(RETRIEVING_LOOP)
  1994.       Input #1,GOALS_CAREER(RETRIEVING_LOOP)
  1995.       Input #1,STRENGTH(RETRIEVING_LOOP)
  1996.       Input #1,SPEED(RETRIEVING_LOOP)
  1997.       Input #1,DEXTERITY(RETRIEVING_LOOP)
  1998.       Input #1,INSTINCT(RETRIEVING_LOOP)
  1999.       Input #1,HARDNESS(RETRIEVING_LOOP)
  2000.       Input #1,STAMINA(RETRIEVING_LOOP)
  2001.       Input #1,STRENGTH_MAX(RETRIEVING_LOOP)
  2002.       Input #1,SPEED_MAX(RETRIEVING_LOOP)
  2003.       Input #1,DEXTERITY_MAX(RETRIEVING_LOOP)
  2004.       Input #1,INSTINCT_MAX(RETRIEVING_LOOP)
  2005.       Input #1,HARDNESS_MAX(RETRIEVING_LOOP)
  2006.       Input #1,STAMINA_MAX(RETRIEVING_LOOP)
  2007.       Input #1,SKILL_SHOT(RETRIEVING_LOOP)
  2008.       Input #1,SKILL_PASS(RETRIEVING_LOOP)
  2009.       Input #1,SKILL_TACKLE(RETRIEVING_LOOP)
  2010.       Input #1,SKILL_STEAL(RETRIEVING_LOOP)
  2011.       Input #1,SKILL_ART(RETRIEVING_LOOP)
  2012.    Next RETRIEVING_LOOP
  2013.    Close 1
  2014. End Proc
  2015. '********************************************************************
  2016. '
  2017. '********************************************************************
  2018. '*                         MANAGERS PART                            *
  2019. '********************************************************************
  2020. Dim ALPHABET$(28),LETTERS_OF_NAME$(18)
  2021. Dim TEAM_CASH(NUMBER_OF_TEAMS),CLUB_RATING(NUMBER_OF_TEAMS),TEAM_FAME(NUMBER_OF_TEAMS)
  2022. Dim GATE_RECEIPTS(NUMBER_OF_TEAMS),WAGE_BILL(NUMBER_OF_TEAMS),SPONSOR(NUMBER_OF_TEAMS)
  2023. Dim PRIZE_MONEY(NUMBER_OF_TEAMS)
  2024. SEASON_END=31
  2025. TACTIC_USER_A=0 : TACTIC_USER_B=0
  2026. TACTIC_USER_C=0 : TACTIC_USER_D=0
  2027. Procedure INITIALISE_MANAGER_NAME
  2028.    Shared MANAGER_NAME$,MANAGER_AGE
  2029.    MANAGER_NAME$="Rock Janson"
  2030. End Proc
  2031. Procedure INITIALISE_MANAGER_VARIABLES
  2032.    Shared CLUB_RATING(),SPONSOR(),TEAM_FAME(),TEAM_CASH(),MANAGER_RATING
  2033.    Shared BOUGHT,CAREER_BOUGHT,SOLD,CAREER_SOLD,TRAINING_COST
  2034.    Shared CASH_FORWARD,MANAGER_TRANSFERS,MANAGER_AGE,CURRENT_TEAM
  2035.    BOUGHT=0 : CAREER_BOUGHT=0
  2036.    SOLD=0 : CAREER_SOLD=0
  2037.    TRAINING_COST=0 : MANAGER_RATING=50
  2038.    CASH_FORWARD=0 : MANAGER_TRANSFERS=0
  2039.    MANAGER_AGE=Rnd(7)+28
  2040.    For TEAM=1 To 8
  2041.       CLUB_RATING(TEAM)=40
  2042.       SPONSOR(TEAM)=15000
  2043.       TEAM_FAME(TEAM)=Rnd(10)+40
  2044.       TEAM_CASH(TEAM)=500000
  2045.    Next TEAM
  2046.    For TEAM=9 To 15
  2047.       CLUB_RATING(TEAM)=20
  2048.       SPONSOR(TEAM)=5000
  2049.       TEAM_FAME(TEAM)=Rnd(10)+10
  2050.       TEAM_CASH(TEAM)=100000
  2051.    Next TEAM
  2052.    CLUB_RATING(CURRENT_TEAM)=20 : SPONSOR(CURRENT_TEAM)=1000
  2053.    TEAM_FAME(CURRENT_TEAM)=Rnd(5)+5 : TEAM_CASH(CURRENT_TEAM)=20000
  2054. End Proc
  2055. Procedure INITIALISE_MANAGER_NAME_ARRAY
  2056.    Shared ALPHABET$()
  2057.    For X=1 To 28
  2058.       Read A$
  2059.       ALPHABET$(X)=A$
  2060.    Next X
  2061.    Data "A","B","C","D","E","F","G","H","I","J","K","L","M","N"
  2062.    Data "O","P","Q","R","S","T","U","V","W","X","Y","Z","."," "
  2063. End Proc
  2064. Procedure INITIALISE_LETTERS_OF_NAME
  2065.    Shared LETTERS_OF_NAME$()
  2066.    For X=1 To 18
  2067.       LETTERS_OF_NAME$(X)=""
  2068.    Next X
  2069. End Proc
  2070. Procedure CHECK_MANAGER_DETAILS
  2071.    Shared TEAM_CASH(),CLUB_RATING()
  2072.    Shared RESIGN_FLAG,MANAGER_HAS_RESIGNED,MANAGER_HAS_NOT_RESIGNED
  2073.    Shared CURRENT_WEEK,MANAGER_AGE,MANAGER_RATING,CURRENT_TEAM
  2074.    If RESIGN_FLAG=MANAGER_HAS_NOT_RESIGNED and CURRENT_WEEK=31
  2075.       THE_END_OF_THE_SEASON
  2076.    End If 
  2077.    If RESIGN_FLAG=MANAGER_HAS_RESIGNED
  2078.       DISPLAY_MANAGER_RESIGNED_MESSAGE
  2079.    End If 
  2080.    If MANAGER_AGE=70
  2081.       DISPLAY_MANAGER_TOO_OLD_MESSAGE
  2082.       RESIGN_FLAG=MANAGER_HAS_RESIGNED
  2083.    End If 
  2084.    If TEAM_CASH(CURRENT_TEAM)<0
  2085.       DISPLAY_NO_CASH_MESSAGE
  2086.       RESIGN_FLAG=MANAGER_HAS_RESIGNED
  2087.    End If 
  2088.    If MANAGER_RATING<CLUB_RATING(CURRENT_TEAM)
  2089.       DISPLAY_BAD_MANAGER_MESSAGE
  2090.       RESIGN_FLAG=MANAGER_HAS_RESIGNED
  2091.    End If 
  2092. End Proc
  2093. Procedure DISPLAY_A_MESSAGE[HEADING$,LINE_A$,LINE_B$,LINE_C$,LINE_D$,LINE_E$,THE_SCREEN]
  2094.    Screen THE_SCREEN : Cls 4 : MAKE_BOXES_FOR_MESSAGE
  2095.    Ink 7,3, : PLACE_TEXT_CENTRALLY[19,HEADING$,Screen Width] : Ink 1,3,
  2096.    Text 8,85,LINE_A$ : Text 8,105,LINE_B$
  2097.    Text 8,125,LINE_C$ : Text 8,145,LINE_D$ : Text 8,165,LINE_E$
  2098.    Screen To Front THE_SCREEN
  2099.    CHECK_FOR_MOUSE_CLICK
  2100. End Proc
  2101. Procedure DISPLAY_MANAGER_RESIGNED_MESSAGE
  2102.    DISPLAY_A_MESSAGE["Team Owners","We would like to thank you","very much indeed for your service","to the club.","We wish you well in your next","ventures.",2]
  2103. End Proc
  2104. Procedure DISPLAY_MANAGER_TOO_OLD_MESSAGE
  2105.    DISPLAY_A_MESSAGE["Team Owners","We would like to thank you","very much indeed for your service","to the club all these years.","You have now reached the mandatory","retirememt age of 70.",2]
  2106. End Proc
  2107. Procedure DISPLAY_NO_CASH_MESSAGE
  2108.    DISPLAY_A_MESSAGE["Team Owners","We have no money left!!","We are disgraced that you","show no financial sense and","therefore we have no hesitation","in giving you the sack!!",2]
  2109. End Proc
  2110. Procedure DISPLAY_BAD_MANAGER_MESSAGE
  2111.    DISPLAY_A_MESSAGE["Team Owners","We are totally shocked!!","We are disgraced with your","management ability.  You have","fallen below our standards.","Therefore, you are sacked!!",2]
  2112. End Proc
  2113. Procedure DISPLAY_CHAMPIONS_MESSAGE
  2114.    DISPLAY_A_MESSAGE["Team Owners","We are completely ecstatic!!","You have taken our club to the","pinnacle of our sport.","SlamBall Champions!!","We hope this great trend continues!!",2]
  2115. End Proc
  2116. Procedure DISPLAY_PROMOTION_MESSAGE
  2117.    DISPLAY_A_MESSAGE["Team Owners","We are very happy!!","You have shown good management skill","taking our club to the First Division.","This confirms our belief in you.","Now for the Championship!!",2]
  2118. End Proc
  2119. Procedure DISPLAY_RELEGATION_MESSAGE
  2120.    DISPLAY_A_MESSAGE["Team Owners","We are very unhappy with this!!","This relegation is a severe jolt","to our Championship aspirations.","We can only hope that you will get","it right before too long!!",2]
  2121. End Proc
  2122. Procedure DISPLAY_END_OF_SEASON_MESSAGE
  2123.    DISPLAY_A_MESSAGE["End Of Season","Please wait while the","next season is initialised.","","","",2]
  2124.    Ink 5,3, : PLACE_TEXT_CENTRALLY[243,"........Please Wait........",Screen Width]
  2125. End Proc
  2126. Procedure MAKE_BOXES_FOR_ENTERING_NAME
  2127.    Shared ALPHABET$(),FULL_BOX,EDGE_TOP,EDGE_BOTTOM
  2128.    Screen 0
  2129.    Reserve Zone 
  2130.    Reserve Zone 30
  2131.    Cls 4 : A=1 : B=14
  2132.    X1=20 : Y1=80 : X2=32 : Y2=92
  2133.    For Y=1 To 2
  2134.       For X=A To B
  2135.          MAKE_A_BOX[X1,Y1,X2,Y2,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  2136.          Set Zone X,X1,Y1 To X2,Y2
  2137.          Add X1,20 : Add X2,20
  2138.          Text X1-17,Y1+9,ALPHABET$(X)
  2139.       Next X
  2140.       X1=20 : Y1=100 : X2=32 : Y2=112
  2141.       A=A+14 : B=B+14
  2142.    Next Y
  2143.    MAKE_A_BOX[240,120,293,132,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  2144.    Text 243,129,"Delete"
  2145.    Set Zone 29,240,120 To 293,132
  2146.    MAKE_A_BOX[3,235,316,247,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  2147.    Ink 5,11, : Text 66,244,"Click here when finished"
  2148.    Set Zone 30,2,232 To 316,247
  2149.    MAKE_A_BOX[20,50,293,64,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  2150.    Screen To Front 0
  2151. End Proc
  2152. Procedure ENTER_A_NAME[MESSAGE$,LETTERS_MAX]
  2153.    Shared ALPHABET$(),LETTERS_OF_NAME$(),CURRENT_LETTER
  2154.    Shared FULL_BOX,EDGE_TOP,EDGE_BOTTOM
  2155.    CANCEL=0 : CURRENT_LETTER=1 : MANAGER_NAME$=""
  2156.    MAKE_A_BOX[3,10,316,22,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  2157.    Ink 7,3,
  2158.    PLACE_TEXT_CENTRALLY[19,MESSAGE$,Screen Width]
  2159.    Ink 3,3 : Text 24,60,"                  " : Ink 7,3,
  2160.    Repeat 
  2161.       For X=1 To 28
  2162.          CHECK_MOUSE=Mouse Click : CHECK_MOUSE_KEY=Mouse Key
  2163.          WHICH_ZONE=Mouse Zone
  2164.          If CHECK_MOUSE_KEY=1 and WHICH_ZONE=X and CURRENT_LETTER<=LETTERS_MAX
  2165.             LETTERS_OF_NAME$(CURRENT_LETTER)=Lower$(ALPHABET$(WHICH_ZONE))
  2166.             Inc CURRENT_LETTER : Wait 4
  2167.          End If 
  2168.          If CHECK_MOUSE_KEY=2 and WHICH_ZONE=X and CURRENT_LETTER<=LETTERS_MAX
  2169.             LETTERS_OF_NAME$(CURRENT_LETTER)=Upper$(ALPHABET$(WHICH_ZONE))
  2170.             Inc CURRENT_LETTER : Wait 4
  2171.          End If 
  2172.          If CHECK_MOUSE=1 and WHICH_ZONE=30 and CURRENT_LETTER>1
  2173.             CANCEL=1
  2174.          End If 
  2175.          If CHECK_MOUSE=1 and WHICH_ZONE=29 and CURRENT_LETTER>1
  2176.             Dec CURRENT_LETTER
  2177.             LETTERS_OF_NAME$(CURRENT_LETTER)=" "
  2178.          End If 
  2179.       Next X
  2180.       X_POS=24
  2181.       For X=1 To 18
  2182.          Text X_POS,60,LETTERS_OF_NAME$(X)
  2183.          Add X_POS,10
  2184.       Next X
  2185.    Until CANCEL=1
  2186.    For X=1 To CURRENT_LETTER-1
  2187.       TEMP_NAME$=TEMP_NAME$+LETTERS_OF_NAME$(X)
  2188.    Next X
  2189. End Proc[TEMP_NAME$]
  2190. Procedure GIVE_MANAGER_AN_AGE
  2191.    Shared MANAGER_AGE
  2192.    MANAGER_AGE=Rnd(5)+28
  2193. End Proc
  2194. Procedure CALCULATE_WAGE_BILLS
  2195.    Shared WEEKLY_WAGE(),WAGE_BILL(),CLUB_TO_PAY(),TEAM_MAX,NUMBER_OF_TEAMS
  2196.    For TEAM=1 To NUMBER_OF_TEAMS
  2197.       WAGE_BILL(TEAM)=0
  2198.    Next TEAM
  2199.    For PERSON=1 To TEAM_MAX
  2200.        Add WAGE_BILL(CLUB_TO_PAY(PERSON)),WEEKLY_WAGE(PERSON)
  2201.    Next PERSON
  2202. End Proc
  2203. Procedure CALCULATE_THE_CROWD[THE_HOME_TEAM,THE_AWAY_TEAM]
  2204.    Shared TEAM_FAME()
  2205.    CROWD=(TEAM_FAME(THE_HOME_TEAM)*1000)*0.7+(TEAM_FAME(THE_AWAY_TEAM)*1000)*0.3
  2206. End Proc[CROWD]
  2207. Procedure CALCULATE_GATE_RECEIPTS[THE_HOME_TEAM,THE_AWAY_TEAM]
  2208.    Shared TEAM_FAME(),TEAM_CASH(),GATE_RECEIPTS()
  2209.    CALCULATE_THE_CROWD[THE_HOME_TEAM,THE_AWAY_TEAM]
  2210.    CROWD=Param
  2211.    Add GATE_RECEIPTS(THE_HOME_TEAM),CROWD
  2212.    Add GATE_RECEIPTS(THE_AWAY_TEAM),CROWD
  2213. End Proc[CROWD]
  2214. Procedure RESET_GATE_RECEIPTS
  2215.    Shared GATE_RECEIPTS(),NUMBER_OF_TEAMS
  2216.    For TEAM=1 To NUMBER_OF_TEAMS
  2217.       GATE_RECEIPTS(TEAM)=0
  2218.    Next TEAM
  2219. End Proc
  2220. Procedure CHANGE_MANAGERS_RATING[BOOST_A,BOOST_B,TYPE]
  2221.    Shared MANAGER_RATING
  2222.    If TYPE=1
  2223.       Add MANAGER_RATING,Rnd(BOOST_A)+BOOST_B
  2224.       If MANAGER_RATING>100 : MANAGER_RATING=100 : End If 
  2225.    End If 
  2226.    If TYPE=2
  2227.       MANAGER_RATING=MANAGER_RATING-BOOST_B
  2228.       If MANAGER_RATING<1 : MANAGER_RATING=1 : End If 
  2229.    End If 
  2230. End Proc
  2231. Procedure DISPLAY_MANAGER_SCREEN
  2232.    Shared MANAGER_DISPLAY_SCREEN
  2233.    Unpack MANAGER_DISPLAY_SCREEN To 1 : Ink 1,11,
  2234. End Proc
  2235. Procedure DISPLAY_MANAGER_DATA[TEAM]
  2236.    Shared TEAMNAME$(),MANAGER_NAME$,MANAGER_AGE,GATE_RECEIPTS(),SPONSOR()
  2237.    Shared PRIZE_MONEY(),SOLD,CAREER_SOLD,BOUGHT,CAREER_BOUGHT
  2238.    Shared WAGE_BILL(),MANAGER_RATING,TRAINING_COST,CASH_FORWARD,TEAM_CASH()
  2239.    DISPLAY_MANAGER_SCREEN
  2240.    Text 70,14,TEAMNAME$(TEAM)
  2241.    Text 50,40,MANAGER_NAME$
  2242.    Text 264,40,Str$(MANAGER_AGE)-" "
  2243.    Text 180,62,Str$(CASH_FORWARD)-" "
  2244.    Text 100,73,Str$(GATE_RECEIPTS(TEAM))-" "
  2245.    Text 100,84,Str$(SPONSOR(TEAM))-" "
  2246.    Text 100,95,Str$(PRIZE_MONEY(TEAM))-" "
  2247.    Text 100,106,Str$(SOLD)-" "
  2248.    Text 180,117,Str$(CASH_FORWARD+(GATE_RECEIPTS(TEAM))+(SPONSOR(TEAM))+(PRIZE_MONEY(TEAM))+SOLD)-" "
  2249.    Text 100,128,Str$(WAGE_BILL(TEAM))-" "
  2250.    Text 100,139,Str$(BOUGHT)-" "
  2251.    Text 100,150,Str$(TRAINING_COST)-" "
  2252.    Text 180,161,Str$(TEAM_CASH(TEAM))-" "
  2253.    Text 100,182,Str$(CAREER_SOLD)-" "
  2254.    Text 100,193,Str$(CAREER_BOUGHT)-" "
  2255.    Text 100,204,Str$(CAREER_SOLD-CAREER_BOUGHT)-" "
  2256.    Text 100,215,Str$(MANAGER_RATING)-" "
  2257.    Repeat : Until Mouse Click
  2258.    GRAPHIC_SCREEN_FADE
  2259. End Proc
  2260. Procedure ALTER_PLAYERS_INJURIES
  2261.    Shared INJURY_LENGTH(),INJURIES(),CLUB_TO_PAY(),TEAM_MAX,NUMBER_OF_TEAMS
  2262.    For PERSON=1 To TEAM_MAX
  2263.       If CLUB_TO_PAY(PERSON)<>0 and INJURY_LENGTH(PERSON)>0
  2264.          Dec INJURY_LENGTH(PERSON)
  2265.          Inc INJURIES(PERSON)
  2266.       End If 
  2267.    Next PERSON
  2268. End Proc
  2269. Procedure GIVE_TEAMS_GATE_MONEY
  2270.    Shared TEAM_CASH(),GATE_RECEIPTS(),NUMBER_OF_TEAMS
  2271.    For TEAM=1 To NUMBER_OF_TEAMS
  2272.       Add TEAM_CASH(TEAM),GATE_RECEIPTS(TEAM)
  2273.    Next TEAM
  2274. End Proc
  2275. Procedure RESET_END_OF_WEEK_VARIABLES
  2276.    Shared TEAM_CASH(),WAGE_BILL(),SPONSOR()
  2277.    Shared BOUGHT,SOLD,TRAINING_COST,CURRENT_TRAINING,NUMBER_OF_TEAMS
  2278.    BOUGHT=0 : SOLD=0 : TRAINING_COST=0 : CURRENT_TRAINING=0
  2279.    For TEAM=1 To NUMBER_OF_TEAMS
  2280.       TEAM_CASH(TEAM)=TEAM_CASH(TEAM)-WAGE_BILL(TEAM)
  2281.       Add TEAM_CASH(TEAM),SPONSOR(TEAM)
  2282.    Next TEAM
  2283. End Proc
  2284. Procedure THE_END_OF_THE_WEEK
  2285.    ALTER_PLAYERS_INJURIES
  2286.    GIVE_TEAMS_GATE_MONEY
  2287.    RESET_END_OF_WEEK_VARIABLES
  2288. End Proc
  2289. Procedure PROMOTE_AND_RELEGATE
  2290.    Shared LEAGUE_POSITION(),TEAMNAME$(),TEAM_CASH(),PRIZE_MONEY()
  2291.    Shared CURRENT_TEAM,PROMOTE_FLAG
  2292.    CHAMPIONS=LEAGUE_POSITION(1) : RELEGATE=LEAGUE_POSITION(8) : PROMOTE=LEAGUE_POSITION(9)
  2293.    Add TEAM_CASH(CHAMPIONS),150000 : Add PRIZE_MONEY(CHAMPIONS),150000
  2294.    Add TEAM_CASH(PROMOTE),75000 : Add PRIZE_MONEY(PROMOTE),75000
  2295.    If CHAMPIONS=CURRENT_TEAM : DISPLAY_CHAMPIONS_MESSAGE : End If 
  2296.    If PROMOTE=CURRENT_TEAM : DISPLAY_PROMOTION_MESSAGE : End If 
  2297.    If RELEGATE=CURRENT_TEAM : DISPLAY_RELEGATION_MESSAGE : End If 
  2298.    DISPLAY_A_MESSAGE["Promotion And Relegation",TEAMNAME$(CHAMPIONS)+" are champions.",TEAMNAME$(RELEGATE)+" will be relegated","to Division 2.",TEAMNAME$(PROMOTE)+" will be promoted","to Division 1.",1]
  2299.    PROMOTE_FLAG=1
  2300.    GRAPHIC_SCREEN_FADE
  2301. End Proc
  2302. Procedure CHANGE_THE_TWO_TEAMS_VARIABLES
  2303.    Shared SPONSOR(),LEAGUE_POSITION(),TEAM_FIXTURES()
  2304.    Shared TEAM_CASH(),CLUB_RATING(),NUMBER_OF_TEAMS
  2305.    PROMOTE=LEAGUE_POSITION(9) : RELEGATE=LEAGUE_POSITION(8)
  2306.    Add SPONSOR(RELEGATE),-1000 : ALTER_TEAM_FAME[RELEGATE,5,2]
  2307.    Add SPONSOR(PROMOTE),1000 : ALTER_TEAM_FAME[PROMOTE,5,1]
  2308.    Swap LEAGUE_POSITION(9),LEAGUE_POSITION(8)
  2309.    For TEAM=1 To NUMBER_OF_TEAMS
  2310.       If TEAM_FIXTURES(TEAM)=RELEGATE
  2311.          TEAM_A=TEAM
  2312.       End If 
  2313.       If TEAM_FIXTURES(TEAM)=PROMOTE
  2314.          TEAM_B=TEAM
  2315.       End If 
  2316.    Next TEAM
  2317.    Swap TEAM_FIXTURES(TEAM_A),TEAM_FIXTURES(TEAM_B)
  2318. End Proc
  2319. Procedure CHANGE_ALL_TEAMS_CLUB_RATINGS
  2320.    Shared CLUB_RATING(),LEAGUE_POSITION(),NUMBER_OF_DIVISIONS,TEAMS_IN_DIVISION
  2321.    TEAM_A=1 : TEAM_B=TEAMS_IN_DIVISION : BOOST=4
  2322.    For OUTER_LOOP=1 To NUMBER_OF_DIVISIONS
  2323.       For TEAM=TEAM_A To TEAM_B
  2324.          THE_TEAM=LEAGUE_POSITION(TEAM)
  2325.          ALTER_CLUB_RATING[THE_TEAM,BOOST,1]
  2326.          Dec BOOST
  2327.       Next TEAM
  2328.       Add TEAM_A,TEAMS_IN_DIVISION : Add TEAM_B,TEAMS_IN_DIVISION
  2329.       BOOST=4
  2330.    Next OUTER_LOOP
  2331. End Proc
  2332. Procedure ALTER_CLUB_RATING[TEAM,BOOST,TYPE]
  2333.    Shared CLUB_RATING()
  2334.    If TYPE=1
  2335.       Add CLUB_RATING(TEAM),BOOST
  2336.       If CLUB_RATING(TEAM)>50 : CLUB_RATING(TEAM)=50 : End If 
  2337.    End If 
  2338.    If TYPE=2
  2339.       CLUB_RATING(TEAM)=CLUB_RATING(TEAM)-BOOST
  2340.       If CLUB_RATING(TEAM)<10 : CLUB_RATING(TEAM)=10 : End If 
  2341.    End If 
  2342. End Proc
  2343. Procedure RESET_END_OF_SEASON_VARIABLES
  2344.    Shared GOALS_SEASON(),GAMES_SEASON(),SEASONS_WITH_CLUB()
  2345.    Shared INJURIES(),CONTRACT(),CONTRACT_ACCEPTED(),CLUB_TO_PAY()
  2346.    Shared AGE(),TEAM_CASH(),PRIZE_MONEY()
  2347.    Shared MANAGER_AGE,TEAM_MAX,NUMBER_OF_TEAMS,CURRENT_WEEK
  2348.    For PERSON=1 To TEAM_MAX
  2349.       If CLUB_TO_PAY(PERSON)<>0
  2350.          GOALS_SEASON(PERSON)=0 : GAMES_SEASON(PERSON)=0
  2351.          INJURIES(PERSON)=0 : CONTRACT_ACCEPTED(PERSON)=0
  2352.          Inc AGE(PERSON)
  2353.          Inc SEASONS_WITH_CLUB(PERSON) : Dec CONTRACT(PERSON)
  2354.       End If 
  2355.    Next PERSON
  2356.    For TEAM=1 To NUMBER_OF_TEAMS
  2357.       If TEAM_CASH(TEAM)>3000000
  2358.          TEAM_CASH(TEAM)=3000000
  2359.       End If 
  2360.       PRIZE_MONEY(TEAM)=0
  2361.    Next TEAM
  2362.    Inc MANAGER_AGE
  2363.    CURRENT_WEEK=1
  2364. End Proc
  2365. Procedure RETIRE_REDUNDANT_PLAYERS
  2366.    Shared CLUB_TO_PAY(),AGE(),CONTRACT(),TEAM_MAX
  2367.    For PERSON=1 To TEAM_MAX
  2368.       If CLUB_TO_PAY(PERSON)<>0 and(AGE(PERSON)=33 or CONTRACT(PERSON)=0)
  2369.          INITIALISE_PLAYER_ARRAYS[PERSON]
  2370.       End If 
  2371.    Next PERSON
  2372. End Proc
  2373. Procedure REBUILD_UNDERMANNED_TEAMS
  2374.    Shared CLUB_TO_PAY(),TEAM_MAX,NUMBER_OF_TEAMS,CURRENT_TEAM
  2375.    For TEAM=1 To NUMBER_OF_TEAMS
  2376.       PERSON_COUNT=0
  2377.       If TEAM<>CURRENT_TEAM
  2378.          For PERSON=1 To TEAM_MAX
  2379.             If CLUB_TO_PAY(PERSON)=TEAM
  2380.                Inc PERSON_COUNT
  2381.             End If 
  2382.          Next PERSON
  2383.          If PERSON_COUNT<8
  2384.             REBUILD_THE_TEAM[TEAM,8-PERSON_COUNT]
  2385.          End If 
  2386.       End If 
  2387.    Next TEAM
  2388. End Proc
  2389. Procedure REBUILD_THE_TEAM[TEAM,PERSON_COUNT]
  2390.    Shared CLUB_TO_PAY()
  2391.    COUNT=0
  2392.    PERSON=1
  2393.    Repeat 
  2394.       If CLUB_TO_PAY(PERSON)=0
  2395.          FIND_QUALITY_OF_PLAYER[TEAM]
  2396.          MAKE_NEW_PLAYER[TEAM,PERSON,Param]
  2397.          Inc COUNT
  2398.       End If 
  2399.       Inc PERSON
  2400.    Until COUNT=PERSON_COUNT
  2401. End Proc
  2402. Procedure CHECK_PLAYERS_MORALE
  2403.    Shared WEEKLY_WAGE(),WAGE_REQUIRED(),TEAM_MAX,NUMBER_OF_TEAMS
  2404.    For PERSON=1 To TEAM_MAX
  2405.       If WEEKLY_WAGE(PERSON)<WAGE_REQUIRED(PERSON)
  2406.          GIVE_PLAYER_MORALE[PERSON,WAGE_REQUIRED(PERSON)-WEEKLY_WAGE(PERSON),0,2]
  2407.       End If 
  2408.    Next PERSON
  2409. End Proc
  2410. Procedure OFFER_PLAYERS_NEW_CONTRACTS
  2411.    Shared CLUB_TO_PAY(),CONTRACT(),TEAM_MAX,CURRENT_TEAM
  2412.    CONTRACT_OFFER=0
  2413.    For PERSON=1 To TEAM_MAX
  2414.       If CLUB_TO_PAY(PERSON)<>0 and CLUB_TO_PAY(PERSON)<>CURRENT_TEAM and CONTRACT(PERSON)<2
  2415.          MAKE_A_CONTRACT_OFFER[PERSON] : CONTRACT_OFFER=Param
  2416.          OFFER_CONTRACT_TO_PLAYER[PERSON,CONTRACT_OFFER]
  2417.          If Param=1
  2418.             CONTRACT_VARIABLES_UPDATE[PERSON,CONTRACT_OFFER]
  2419.          End If 
  2420.       End If 
  2421.    Next PERSON
  2422. End Proc
  2423. Procedure CHANGE_TRANSFER_QUALITY
  2424.    Shared TRANSFER_QUALITY
  2425.    If TRANSFER_QUALITY<15
  2426.       Inc TRANSFER_QUALITY
  2427.    End If 
  2428. End Proc
  2429. Procedure THE_END_OF_THE_SEASON
  2430.    Shared CURRENT_TEAM
  2431.    DISPLAY_END_OF_SEASON_MESSAGE
  2432.    CHANGE_ALL_TEAMS_CLUB_RATINGS
  2433.    CHANGE_THE_TWO_TEAMS_VARIABLES
  2434.    RESET_END_OF_SEASON_VARIABLES
  2435.    OFFER_PLAYERS_NEW_CONTRACTS
  2436.    RETIRE_REDUNDANT_PLAYERS
  2437.    REBUILD_UNDERMANNED_TEAMS
  2438.    CHECK_PLAYERS_MORALE
  2439.    CALCULATE_WAGE_BILLS
  2440.    CHANGE_TRANSFER_QUALITY
  2441.    INITIALISE_NEW_SEASON_VARIABLES
  2442.    MAKE_ORIGINAL_TRANSFER_LIST[CURRENT_TEAM]
  2443.    GRAPHIC_SCREEN_FADE
  2444. End Proc
  2445. Procedure STORE_MANAGER_DATA
  2446.    Shared MANAGER_NAME$,MANAGER_AGE,CURRENT_TEAM,CURRENT_WEEK
  2447.    Shared SOLD,CAREER_SOLD,BOUGHT,CAREER_BOUGHT,MANAGER_RATING
  2448.    Shared TRAINING_COST,CASH_FORWARD,CURRENT_TRAINING
  2449.    Shared TACTIC_USER_A,TACTIC_USER_B,TACTIC_USER_C,TACTIC_USER_D
  2450.    Shared PROMOTE_FLAG,TRANSFER_QUALITY,FILENAME$
  2451.    STORE_FILENAME$=FILENAME$-".slamball"+".manager_data"
  2452.    Open Out 1,STORE_FILENAME$
  2453.    Print #1,MANAGER_NAME$
  2454.    Print #1,MANAGER_AGE
  2455.    Print #1,CURRENT_TEAM
  2456.    Print #1,CURRENT_WEEK
  2457.    Print #1,SOLD
  2458.    Print #1,CAREER_SOLD
  2459.    Print #1,BOUGHT
  2460.    Print #1,CAREER_BOUGHT
  2461.    Print #1,MANAGER_RATING
  2462.    Print #1,TRAINING_COST
  2463.    Print #1,CASH_FORWARD
  2464.    Print #1,CURRENT_TRAINING
  2465.    Print #1,PROMOTE_FLAG
  2466.    Print #1,TRANSFER_QUALITY
  2467.    Print #1,TACTIC_USER_A
  2468.    Print #1,TACTIC_USER_B
  2469.    Print #1,TACTIC_USER_C
  2470.    Print #1,TACTIC_USER_D
  2471.    Close 1
  2472. End Proc
  2473. Procedure RETRIEVE_MANAGER_DATA
  2474.    Shared MANAGER_NAME$,MANAGER_AGE,CURRENT_TEAM,CURRENT_WEEK
  2475.    Shared SOLD,CAREER_SOLD,BOUGHT,CAREER_BOUGHT,MANAGER_RATING
  2476.    Shared TRAINING_COST,CASH_FORWARD,CURRENT_TRAINING
  2477.    Shared TACTIC_USER_A,TACTIC_USER_B,TACTIC_USER_C,TACTIC_USER_D
  2478.    Shared PROMOTE_FLAG,TRANSFER_QUALITY,FILENAME$
  2479.    RETRIEVE_FILENAME$=FILENAME$-".slamball"+".manager_data"
  2480.    Open In 1,RETRIEVE_FILENAME$
  2481.    Input #1,MANAGER_NAME$
  2482.    Input #1,MANAGER_AGE
  2483.    Input #1,CURRENT_TEAM
  2484.    Input #1,CURRENT_WEEK
  2485.    Input #1,SOLD
  2486.    Input #1,CAREER_SOLD
  2487.    Input #1,BOUGHT
  2488.    Input #1,CAREER_BOUGHT
  2489.    Input #1,MANAGER_RATING
  2490.    Input #1,TRAINING_COST
  2491.    Input #1,CASH_FORWARD
  2492.    Input #1,CURRENT_TRAINING
  2493.    Input #1,PROMOTE_FLAG
  2494.    Input #1,TRANSFER_QUALITY
  2495.    Input #1,TACTIC_USER_A
  2496.    Input #1,TACTIC_USER_B
  2497.    Input #1,TACTIC_USER_C
  2498.    Input #1,TACTIC_USER_D
  2499.    Close 1
  2500. End Proc
  2501. '********************************************************************
  2502. '
  2503. '********************************************************************
  2504. '*                         TRAINING PART                            *
  2505. '********************************************************************
  2506. Dim TRAINING_MESSAGE$(5)
  2507. TRAINING_MAX=1 : CURRENT_TRAINING=0 : TRAINING_QUIT=0
  2508. Procedure INITIALISE_TRAINING_MESSAGE_ARRAY
  2509.    Shared TRAINING_MESSAGE$()
  2510.    For X=1 To 5
  2511.       Read A$
  2512.       TRAINING_MESSAGE$(X)=A$
  2513.    Next X
  2514.    Data " tried hard today."
  2515.    Data " gave a good effort."
  2516.    Data " gained some benefit."
  2517.    Data " looked sharp today."
  2518.    Data " worked well today."
  2519. End Proc
  2520. Procedure DISPLAY_TRAINING_SELECT_SCREEN
  2521.    Shared FULL_BOX,EDGE_TOP,EDGE_BOTTOM
  2522.    Cls 4 : Reserve Zone 9
  2523.    MAKE_A_BOX[2,4,318,24,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  2524.    Ink 7,3,
  2525.    PLACE_TEXT_CENTRALLY[17,"Training",320]
  2526.    X_POS=20 : Y_POS=85
  2527.    For X=1 To 3
  2528.       MAKE_A_BOX[X_POS,Y_POS,X_POS+80,Y_POS+40,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  2529.       Set Zone X,X_POS,Y_POS To X_POS+80,Y_POS+40
  2530.       Add X_POS,100
  2531.    Next X
  2532.    X_POS=20 : Y_POS=155
  2533.    For X=4 To 6
  2534.       MAKE_A_BOX[X_POS,Y_POS,X_POS+80,Y_POS+40,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  2535.       Set Zone X,X_POS,Y_POS To X_POS+80,Y_POS+40
  2536.       Add X_POS,100
  2537.    Next X
  2538.    MAKE_A_BOX[60,35,100,65,FULL_BOX,EDGE_TOP,EDGE_BOTTOM] : Set Zone 7,60,35 To 100,65
  2539.    MAKE_A_BOX[220,35,260,65,FULL_BOX,EDGE_TOP,EDGE_BOTTOM] : Set Zone 8,220,35 To 260,65
  2540.    MAKE_A_BOX[130,37,190,63,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  2541.    Ink 1,3, : Text 65,53,"More" : Text 225,53,"Less"
  2542.    MAKE_A_BOX[2,232,316,247,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  2543.    Set Zone 9,2,232 To 316,247
  2544.    Ink 5,3, : Text 66,243,"Click here when finished"
  2545.    Ink 1,3,
  2546.    Text 27,107,"STRENGTH" : Text 141,107,"SPEED" : Text 225,107,"DEXTERITY"
  2547.    Text 28,178,"INSTINCT" : Text 124,178,"TOUGHNESS" : Text 231,178,"STAMINA"
  2548. End Proc
  2549. Procedure FIND_WHICH_ATTRIBUTES_TO_TRAIN
  2550.    Shared TRAINING_QUIT,CURRENT_TEAM,TEAM_CASH()
  2551.    Screen 1
  2552.    DISPLAY_TRAINING_SELECT_SCREEN
  2553.    Screen To Front 1
  2554.    TRAINING_QUIT=0 : CASH=1000
  2555.    Repeat 
  2556.       Text 134,54,Str$(CASH)-" "+" "
  2557.       For X=1 To 6
  2558.          CHECK_MOUSE=Mouse Click : CHECK_MOUSE_KEY=Mouse Key
  2559.          WHICH_ZONE=Mouse Zone
  2560.          If CHECK_MOUSE_KEY=1 and WHICH_ZONE=X
  2561.             TRAIN_THE_PLAYERS[CURRENT_TEAM,CASH,X]
  2562.          End If 
  2563.          If CHECK_MOUSE=1 and WHICH_ZONE=7 and CASH<100000
  2564.             Add CASH,1000
  2565.          End If 
  2566.          If CHECK_MOUSE_KEY=2 and WHICH_ZONE=7 and CASH<100000
  2567.            Add CASH,1000 : Wait 1
  2568.          End If 
  2569.          If CHECK_MOUSE=1 and WHICH_ZONE=8 and CASH>1000
  2570.             Add CASH,-1000
  2571.          End If 
  2572.          If CHECK_MOUSE_KEY=2 and WHICH_ZONE=8 and CASH>1000
  2573.             Add CASH,-1000 : Wait 1
  2574.          End If 
  2575.          If CHECK_MOUSE=1 and WHICH_ZONE=9
  2576.             TRAINING_QUIT=1
  2577.          End If 
  2578.       Next X
  2579.    Until TRAINING_QUIT=1
  2580.    Reserve Zone 
  2581.    GRAPHIC_SCREEN_FADE
  2582. End Proc
  2583. Procedure TRAIN_OTHER_TEAMS_PLAYERS
  2584.    Shared TEAM_CASH(),CURRENT_TEAM
  2585.    CHOOSE_A_RANDOM_TEAM[CURRENT_TEAM]
  2586.    TEAM=Param
  2587.    If TEAM_CASH(TEAM)>50000
  2588.       TRAIN_THE_PLAYERS[TEAM,20000,Rnd(5)+1]
  2589.       TRAIN_THE_PLAYERS[TEAM,20000,Rnd(5)+1]
  2590.    End If 
  2591. End Proc
  2592. Procedure TRAIN_THE_PLAYERS[TEAM,CASH,TYPE]
  2593.    Shared TEAM_CASH(),CLUB_TO_PAY(),TRAINING_COST,CURRENT_TRAINING
  2594.    Shared TRAINING_QUIT,TEAM_MAX,CURRENT_TEAM
  2595.    Y_POS=37
  2596.    FIND_THE_BENEFIT_OF_TRAINING[CASH]
  2597.    BOOST_A=Param : BOOST_B=1
  2598.    If TEAM<>CURRENT_TEAM
  2599.       Add BOOST_A,8 : Add BOOST_B,4
  2600.    End If 
  2601.    If TEAM=CURRENT_TEAM
  2602.       Cls 4
  2603.       DISPLAY_MAIN_PLAYER_SELECT_SCREEN
  2604.       Ink 7,3, : Text 96,17,"Training Report"
  2605.    End If 
  2606.    For PERSON=1 To TEAM_MAX
  2607.       If CLUB_TO_PAY(PERSON)=TEAM
  2608.          If TYPE=1
  2609.             GIVE_PLAYER_STRENGTH[PERSON,BOOST_A,BOOST_B]
  2610.          End If 
  2611.          If TYPE=2
  2612.             GIVE_PLAYER_SPEED[PERSON,BOOST_A,BOOST_B]
  2613.          End If 
  2614.          If TYPE=3
  2615.             GIVE_PLAYER_DEXTERITY[PERSON,BOOST_A,BOOST_B]
  2616.          End If 
  2617.          If TYPE=4
  2618.             GIVE_PLAYER_INSTINCT[PERSON,BOOST_A,BOOST_B]
  2619.          End If 
  2620.          If TYPE=5
  2621.             GIVE_PLAYER_HARDNESS[PERSON,BOOST_A,BOOST_B]
  2622.          End If 
  2623.          If TYPE=6
  2624.             GIVE_PLAYER_STAMINA[PERSON,BOOST_A,BOOST_B]
  2625.          End If 
  2626.          RETRAIN_SKILLS[PERSON]
  2627.          GIVE_PLAYER_SKILL_TOTAL[PERSON]
  2628.          GIVE_PLAYER_REQUIRED_WAGE[PERSON]
  2629.          If TEAM=CURRENT_TEAM
  2630.             DISPLAY_TRAINING_MESSAGE[PERSON,Y_POS]
  2631.             Add Y_POS,13
  2632.          End If 
  2633.       End If 
  2634.    Next PERSON
  2635.    If TEAM=CURRENT_TEAM
  2636.       Inc CURRENT_TRAINING
  2637.       Add TRAINING_COST,CASH
  2638.       Reserve Zone 1 : Set Zone 1,2,232 To 316,247
  2639.       Repeat 
  2640.          CHECK_MOUSE=Mouse Click
  2641.          WHICH_ZONE=Mouse Zone
  2642.       Until CHECK_MOUSE=1 and WHICH_ZONE=1
  2643.       Reserve Zone 
  2644.       TRAINING_QUIT=1
  2645.    End If 
  2646.    TEAM_CASH(TEAM)=TEAM_CASH(TEAM)-CASH
  2647. End Proc
  2648. Procedure FIND_THE_BENEFIT_OF_TRAINING[CASH]
  2649.    BENEFIT=CASH/20000
  2650.    If BENEFIT<1
  2651.       BENEFIT=1
  2652.    End If 
  2653.    If BENEFIT>5
  2654.       BENEFIT=5
  2655.    End If 
  2656. End Proc[BENEFIT]
  2657. Procedure DISPLAY_TRAINING_MESSAGE[PERSON,Y_POS]
  2658.    Shared TRAINING_MESSAGE$(),NAME$()
  2659.    TEMP=Rnd(4)+1 : Ink 1,11,
  2660.    Text 8,Y_POS,NAME$(PERSON)+TRAINING_MESSAGE$(TEMP)
  2661. End Proc
  2662. Procedure RETRAIN_SKILLS[PERSON]
  2663.    GIVE_PLAYER_SHOOTING_SKILL[PERSON]
  2664.    GIVE_PLAYER_PASSING_SKILL[PERSON]
  2665.    GIVE_PLAYER_TACKLING_SKILL[PERSON]
  2666.    GIVE_PLAYER_STEALING_SKILL[PERSON]
  2667.    GIVE_PLAYER_ARTISTRY_SKILL[PERSON]
  2668. End Proc
  2669. '********************************************************************
  2670. '
  2671. '********************************************************************
  2672. '*                          TRANSFER PART                           *
  2673. '********************************************************************
  2674. TRANSFER_QUALITY=12 : TRANSFER_FLAG=0 : TEAM_TO_SELL=0 : TRANSFER_CANCEL=0
  2675. Procedure INITIALISE_TRANSFER_LIST
  2676.    Shared TRANSFER(),TEAM_MAX
  2677.    For PERSON=1 To TEAM_MAX
  2678.       TRANSFER(PERSON)=0
  2679.    Next PERSON
  2680. End Proc
  2681. Procedure CASH_TRANSACTION[SELLING_TEAM,BUYING_TEAM,SELLING_PRICE]
  2682.    Shared TEAM_CASH(),SOLD,CAREER_SOLD,BOUGHT,CAREER_BOUGHT,CURRENT_TEAM
  2683.    Add TEAM_CASH(SELLING_TEAM),SELLING_PRICE
  2684.    TEAM_CASH(BUYING_TEAM)=TEAM_CASH(BUYING_TEAM)-SELLING_PRICE
  2685.    If SELLING_TEAM=CURRENT_TEAM
  2686.       Add SOLD,SELLING_PRICE : Add CAREER_SOLD,SELLING_PRICE
  2687.    End If 
  2688.    If BUYING_TEAM=CURRENT_TEAM
  2689.       Add BOUGHT,SELLING_PRICE : Add CAREER_BOUGHT,SELLING_PRICE
  2690.    End If 
  2691. End Proc
  2692. Procedure TRANSFER_PLAYER[PERSON,BUYING_TEAM,SELLING_TEAM,SELLING_PRICE]
  2693.    Shared SEASONS_WITH_CLUB(),CLUB_TO_PAY()
  2694.    SEASONS_WITH_CLUB(PERSON)=0
  2695.    CLUB_TO_PAY(PERSON)=BUYING_TEAM
  2696.    TAKE_PLAYER_OFF_TRANSFER_LIST[PERSON]
  2697.    CASH_TRANSACTION[SELLING_TEAM,BUYING_TEAM,SELLING_PRICE]
  2698.    CALCULATE_WAGE_BILLS
  2699. End Proc
  2700. Procedure DISPLAY_TRANSFER_LIST
  2701.    Shared TRANSFER(),DISPLAY_POSITION(),CLUB_TO_PAY()
  2702.    Shared TEAM_MAX,CURRENT_TEAM,MANAGER_PLAYERS
  2703.    MANAGER_PLAYERS=0
  2704.    Screen 1
  2705.    DISPLAY_MAIN_PLAYER_SELECT_SCREEN
  2706.    INITIALISE_DISPLAY_POSITION
  2707.    Reserve Zone 21
  2708.    Ink 7,3, : MESSAGE$="Transfer List"
  2709.    PLACE_TEXT_CENTRALLY[13,MESSAGE$,320]
  2710.    FLAG_ZONE=1 : Y_POS=37
  2711.    For PERSON=1 To TEAM_MAX
  2712.       If CLUB_TO_PAY(PERSON)=CURRENT_TEAM
  2713.          Inc MANAGER_PLAYERS
  2714.       End If 
  2715.       If TRANSFER(PERSON)=1
  2716.          DISPLAY_POSITION(FLAG_ZONE)=PERSON
  2717.          DISPLAY_TRANSFER_PLAYER[PERSON,Y_POS]
  2718.          Set Zone FLAG_ZONE,6,Y_POS-5 To 310,Y_POS
  2719.          Inc FLAG_ZONE : Add Y_POS,10
  2720.       End If 
  2721.    Next PERSON
  2722.    Set Zone 21,2,232 To 316,247
  2723.    Screen To Front 1
  2724. End Proc[FLAG_ZONE]
  2725. Procedure DISPLAY_TRANSFER_PLAYER[PERSON,Y_POS]
  2726.    Shared NAME$(),AGE(),POSITION(),PRICE(),ACTUAL_POSITION$()
  2727.    Ink 1,11, : Text 6,Y_POS,NAME$(PERSON)
  2728.    Text 152,Y_POS,Str$(AGE(PERSON))-" "
  2729.    Text 171,Y_POS,ACTUAL_POSITION$(POSITION(PERSON))
  2730.    Text 240,Y_POS,"�"+Str$(PRICE(PERSON))-" "
  2731. End Proc
  2732. Procedure FIND_WHICH_TRANSFER_PLAYER_TO_DISPLAY[PERSON_TOTAL]
  2733.    Shared DISPLAY_POSITION(),CLUB_TO_PAY(),CURRENT_TEAM,TRANSFER_CANCEL
  2734.    TRANSFER_CANCEL=0
  2735.    Repeat 
  2736.       For X=1 To PERSON_TOTAL
  2737.          CHECK_MOUSE=Mouse Key
  2738.          WHICH_ZONE=Mouse Zone
  2739.          If CHECK_MOUSE=1 and WHICH_ZONE=X
  2740.             TEMP_PERSON=DISPLAY_POSITION(X)
  2741.             If CLUB_TO_PAY(TEMP_PERSON)<>CURRENT_TEAM
  2742.                DISPLAY_WHOLE_PLAYER_DATA[TEMP_PERSON,1]
  2743.                OFFER_PRICE_AND_CONTRACT[TEMP_PERSON]
  2744.             End If 
  2745.          End If 
  2746.       Next X
  2747.       If CHECK_MOUSE=1 and WHICH_ZONE=21
  2748.          TRANSFER_CANCEL=1
  2749.       End If 
  2750.    Until TRANSFER_CANCEL=1
  2751.    Reserve Zone 
  2752.    GRAPHIC_SCREEN_FADE
  2753.    CHECK_MOUSE=Mouse Click
  2754. End Proc
  2755. Procedure MAKE_A_PRICE_OFFER[PERSON]
  2756.    Shared PRICE(),SKILL_TOTAL()
  2757.    If SKILL_TOTAL(PERSON)>=780
  2758.       SELLING_PRICE=((SKILL_TOTAL(PERSON)*0.65)*1000)+(Rnd(99)+1)*1000
  2759.    Else 
  2760.       SELLING_PRICE=((SKILL_TOTAL(PERSON)*0.5)*1000)+(Rnd(99)+1)*1000
  2761.    End If 
  2762.    SELLING_PRICE=SELLING_PRICE/5000 : SELLING_PRICE=SELLING_PRICE*5000
  2763.    If SELLING_PRICE>PRICE(PERSON) : SELLING_PRICE=PRICE(PERSON) : End If 
  2764. End Proc[SELLING_PRICE]
  2765. Procedure MAKE_A_CONTRACT_OFFER[PERSON]
  2766.    Shared PRICE(),WAGE_OFFER(),WEEKLY_WAGE()
  2767.    CONTRACT_OFFER=Rnd(4)+1
  2768.    TEMP_WAGE=WEEKLY_WAGE(PERSON)-(Rnd(4)+1)*10
  2769.    TEMP=(Rnd(9)+1)*10 : Add TEMP_WAGE,TEMP
  2770.    If TEMP_WAGE<100 : TEMP_WAGE=100 : End If 
  2771.    WAGE_OFFER(PERSON)=TEMP_WAGE
  2772. End Proc[CONTRACT_OFFER]
  2773. Procedure OFFER_PRICE_AND_CONTRACT[PERSON]
  2774.    Shared PRICE(),TRANSFER(),WAGE_OFFER(),CONTRACT()
  2775.    Shared TEAM_CASH(),CONTRACT_QUIT,CURRENT_TEAM
  2776.    Shared TRANSFER_CANCEL,MANAGER_PLAYERS,NUMBER_OF_PLAYERS_MAXIMUM
  2777.    CONTRACT_QUIT=0 : SELLING_PRICE=0 : CONTRACT_OFFER=CONTRACT(PERSON)
  2778.    Repeat 
  2779.       Text 142,110,Str$(SELLING_PRICE)-" "+" "
  2780.       Text 279,146,Str$(CONTRACT_OFFER)-" "
  2781.       Text 263,190,Str$(WAGE_OFFER(PERSON))-" "+" "
  2782.       CHECK_MOUSE=Mouse Click : CHECK_MOUSE_KEY=Mouse Key
  2783.       WHICH_ZONE=Mouse Zone
  2784.       If CHECK_MOUSE=1 and WHICH_ZONE=1 and SELLING_PRICE<PRICE(PERSON)
  2785.          If SELLING_PRICE<=(TEAM_CASH(CURRENT_TEAM)-1000)
  2786.             Add SELLING_PRICE,1000
  2787.          End If 
  2788.       End If 
  2789.       If CHECK_MOUSE_KEY=2 and WHICH_ZONE=1 and SELLING_PRICE<PRICE(PERSON)
  2790.          If SELLING_PRICE<=(TEAM_CASH(CURRENT_TEAM)-1000)
  2791.             Add SELLING_PRICE,1000
  2792.          End If 
  2793.       End If 
  2794.       If CHECK_MOUSE=1 and WHICH_ZONE=2 and SELLING_PRICE>=2000
  2795.          Add SELLING_PRICE,-1000
  2796.       End If 
  2797.       If CHECK_MOUSE_KEY=2 and WHICH_ZONE=2 and SELLING_PRICE>=2000
  2798.          Add SELLING_PRICE,-1000
  2799.       End If 
  2800.       If CHECK_MOUSE=1 and WHICH_ZONE=5
  2801.          Add CONTRACT_OFFER,1
  2802.          If CONTRACT_OFFER>5 : CONTRACT_OFFER=1 : End If 
  2803.       End If 
  2804.       If CHECK_MOUSE=1 and WHICH_ZONE=6
  2805.          Add CONTRACT_OFFER,-1
  2806.          If CONTRACT_OFFER<1 : CONTRACT_OFFER=5 : End If 
  2807.       End If 
  2808.       If CHECK_MOUSE=1 and WHICH_ZONE=7 and WAGE_OFFER(PERSON)<=6990
  2809.          Add WAGE_OFFER(PERSON),10
  2810.       End If 
  2811.       If CHECK_MOUSE_KEY=2 and WHICH_ZONE=7 and WAGE_OFFER(PERSON)<=6990
  2812.          Add WAGE_OFFER(PERSON),10
  2813.       End If 
  2814.       If CHECK_MOUSE=1 and WHICH_ZONE=8 and WAGE_OFFER(PERSON)>=110
  2815.          Add WAGE_OFFER(PERSON),-10
  2816.       End If 
  2817.       If CHECK_MOUSE_KEY=2 and WHICH_ZONE=8 and WAGE_OFFER(PERSON)>=110
  2818.          Add WAGE_OFFER(PERSON),-10
  2819.       End If 
  2820.       If CHECK_MOUSE=1 and(WHICH_ZONE=3 or WHICH_ZONE=9) and MANAGER_PLAYERS<NUMBER_OF_PLAYERS_MAXIMUM
  2821.          OFFER_PRICE_TO_CLUB[PERSON,SELLING_PRICE]
  2822.          PRICE_REPLY=Param
  2823.          If PRICE_REPLY=1
  2824.             OFFER_CONTRACT_TO_PLAYER[PERSON,CONTRACT_OFFER]
  2825.             CONTRACT_REPLY=Param
  2826.             If CONTRACT_REPLY=1
  2827.                FIND_PLAYERS_TEAM[PERSON] : SELLING_TEAM=Param
  2828.                TRANSFER_ACCEPTED[PERSON,CONTRACT_OFFER,SELLING_PRICE]
  2829.                CONTRACT_VARIABLES_UPDATE[PERSON,CONTRACT_OFFER]
  2830.                TRANSFER_PLAYER[PERSON,CURRENT_TEAM,SELLING_TEAM,SELLING_PRICE]
  2831.             Else 
  2832.                NO_TRANSFER_PLAYER[PERSON]
  2833.             End If 
  2834.          Else 
  2835.             NO_TRANSFER_CLUB[PERSON]
  2836.          End If 
  2837.       End If 
  2838.       If CHECK_MOUSE=1 and WHICH_ZONE=10
  2839.          CONTRACT_QUIT=1
  2840.       End If 
  2841.    Until CONTRACT_QUIT=1
  2842.    Reserve Zone 
  2843.    DISPLAY_TRANSFER_LIST
  2844. End Proc
  2845. Procedure OFFER_PRICE_TO_CLUB[PERSON,SELLING_PRICE]
  2846.    Shared PRICE(),SKILL_TOTAL()
  2847.    ACCEPT_REJECT=0
  2848.    If SELLING_PRICE>=PRICE(PERSON)
  2849.       ACCEPT_REJECT=1
  2850.    End If 
  2851.    If SELLING_PRICE>=PRICE(PERSON)-(SKILL_TOTAL(PERSON)*100)
  2852.       ACCEPT_REJECT=1
  2853.    End If 
  2854. End Proc[ACCEPT_REJECT]
  2855. Procedure OFFER_PRICE_TO_USERS_TEAM[PERSON,BUYING_TEAM,SELLING_PRICE]
  2856.    Shared TEAMNAME$(),NAME$(),PRICE()
  2857.    Screen 1 : Cls 4
  2858.    MAKE_BOXES_FOR_MESSAGE
  2859.    Ink 7,3, : Text 110,19,"Transfer Bid"
  2860.    Ink 1,3, : Text 8,85,TEAMNAME$(BUYING_TEAM)+" offer you ï¿½"+Str$(SELLING_PRICE)-" "
  2861.    Text 8,105,"for "+NAME$(PERSON)+" who is on the"
  2862.    Text 8,125,"transfer list for ï¿½"+Str$(PRICE(PERSON))-" "+"."
  2863.    Text 8,145,"Left Mouse Button to accept."
  2864.    Text 8,165,"Right Mouse Button to reject."
  2865.    Screen To Front 1
  2866.    Wait 25
  2867.    CHECK_LEFT_RIGHT_CLICK
  2868.    ACCEPT_REJECT=Param
  2869. End Proc[ACCEPT_REJECT]
  2870. Procedure TRANSFER_ACCEPTED[PERSON,CONTRACT_LENGTH,SELLING_PRICE]
  2871.    Shared TEAMNAME$(),NAME$(),CLUB_TO_PAY(),CONTRACT_QUIT
  2872.    Screen 2 : Cls 4
  2873.    MAKE_BOXES_FOR_MESSAGE
  2874.    Ink 7,3, : Text 58,19,"Response to Transfer Offer"
  2875.    Ink 1,3, : Text 8,85,TEAMNAME$(CLUB_TO_PAY(PERSON))
  2876.    Text 8,105,"accept your cash offer and"
  2877.    Text 8,125,NAME$(PERSON)+" likes the terms."
  2878.    Text 8,145,NAME$(PERSON)+" joins your club"
  2879.    Text 8,165,"for ï¿½"+Str$(SELLING_PRICE)-" "
  2880.    Screen To Front 2
  2881.    Wait 25
  2882.    CHECK_FOR_MOUSE_CLICK
  2883.    CONTRACT_QUIT=1
  2884. End Proc
  2885. Procedure TRANSFER_ACCEPTED_USER_MESSAGE[PERSON,BUYING_TEAM,SELLING_PRICE]
  2886.    Shared TEAMNAME$(),NAME$()
  2887.    Screen 2 : Cls 4
  2888.    MAKE_BOXES_FOR_MESSAGE
  2889.    Ink 7,3, : Text 58,19,"Response to Transfer Offer"
  2890.    Ink 1,3, : Text 8,85,"You accepted the cash offer"
  2891.    Text 8,105,"for "+NAME$(PERSON)+" for ï¿½"+Str$(SELLING_PRICE)-" "+"."
  2892.    Text 8,125,NAME$(PERSON)+" felt the terms were"
  2893.    Text 8,145,"right for him."
  2894.    Text 8,165,NAME$(PERSON)+" joins "+TEAMNAME$(BUYING_TEAM)
  2895.    Screen To Front 2
  2896.    Wait 25
  2897.    CHECK_FOR_MOUSE_CLICK
  2898.    GRAPHIC_SCREEN_FADE
  2899. End Proc
  2900. Procedure TRANSFER_ACCEPTED_MESSAGE[PERSON,BUYING_TEAM,SELLING_TEAM,SELLING_PRICE]
  2901.    Shared TEAMNAME$(),NAME$(),PRICE()
  2902.    Screen 2 : Cls 4
  2903.    MAKE_BOXES_FOR_MESSAGE
  2904.    Ink 7,3, : Text 58,19,"Response to Transfer Offer"
  2905.    Ink 1,3, : Text 8,85,TEAMNAME$(SELLING_TEAM)+" sold"
  2906.    Text 8,105,NAME$(PERSON)+" for ï¿½"+Str$(SELLING_PRICE)-" "
  2907.    Text 8,125,"this week to "+TEAMNAME$(BUYING_TEAM)+"."
  2908.    Text 8,145,"He was available for ï¿½"+Str$(PRICE(PERSON))-" "
  2909.    Screen To Front 2
  2910.    Wait 25
  2911.    CHECK_FOR_MOUSE_CLICK
  2912.    GRAPHIC_SCREEN_FADE
  2913. End Proc
  2914. Procedure NO_TRANSFER_PLAYER[PERSON]
  2915.    Shared NAME$(),TEAMNAME$(),CLUB_TO_PAY(),CONTRACT_QUIT
  2916.    Screen 2 : Cls 4
  2917.    MAKE_BOXES_FOR_MESSAGE
  2918.    Ink 7,3, : Text 58,19,"Response to Transfer Offer"
  2919.    Ink 1,3, : Text 8,85,TEAMNAME$(CLUB_TO_PAY(PERSON))
  2920.    Text 8,105,"accepted your cash offer, but"
  2921.    Text 8,125,NAME$(PERSON)+" disliked your terms."
  2922.    Text 8,145,"Your bid was unsuccessful."
  2923.    Screen To Front 2
  2924.    CHECK_FOR_MOUSE_CLICK
  2925.    CONTRACT_QUIT=1
  2926. End Proc
  2927. Procedure NO_TRANSFER_CLUB[PERSON]
  2928.    Shared TEAMNAME$(),CLUB_TO_PAY(),CONTRACT_QUIT
  2929.    Screen 2 : Cls 4
  2930.    MAKE_BOXES_FOR_MESSAGE
  2931.    Ink 7,3, : Text 58,19,"Response to Transfer Offer"
  2932.    Ink 1,3, : Text 8,85,TEAMNAME$(CLUB_TO_PAY(PERSON))
  2933.    Text 8,105,"reject your cash offer."
  2934.    Text 8,145,"Your bid was unsuccessful."
  2935.    Screen To Front 2
  2936.    CHECK_FOR_MOUSE_CLICK
  2937.    CONTRACT_QUIT=1
  2938. End Proc
  2939. Procedure NO_TRANSFER_USER_CLUB[PERSON,SELLING_PRICE]
  2940.    Shared NAME$()
  2941.    Screen 2 : Cls 4
  2942.    MAKE_BOXES_FOR_MESSAGE
  2943.    Ink 7,3, : Text 58,19,"Response to Transfer Offer"
  2944.    Ink 1,3, : Text 8,85,"You rejected the cash offer"
  2945.    Text 8,105,"for "+NAME$(PERSON)+" for ï¿½"+Str$(SELLING_PRICE)-" "+"."
  2946.    Text 8,145,"The deal did not go through."
  2947.    Screen To Front 2
  2948.    CHECK_FOR_MOUSE_CLICK
  2949.    GRAPHIC_SCREEN_FADE
  2950. End Proc
  2951. Procedure NO_TRANSFER_USER_PLAYER[PERSON]
  2952.    Shared NAME$()
  2953.    Screen 2 : Cls 4
  2954.    MAKE_BOXES_FOR_MESSAGE
  2955.    Ink 7,3, : Text 58,19,"Response to Transfer Offer"
  2956.    Ink 1,3, : Text 8,85,"You accepted their cash offer."
  2957.    Text 8,105,NAME$(PERSON)+" felt that the terms"
  2958.    Text 8,125,"were not right for him."
  2959.    Text 8,145,"Therefore, he decided not to move."
  2960.    Screen To Front 2
  2961.    CHECK_FOR_MOUSE_CLICK
  2962.    GRAPHIC_SCREEN_FADE
  2963. End Proc
  2964. Procedure FIND_POSSIBLE_TRANSFER_BID
  2965.    Shared PRICE(),CLUB_RATING(),TEAM_CASH(),CLUB_TO_PAY()
  2966.    Shared CURRENT_TEAM,TRANSFER_FLAG,TEAM_TO_SELL,NUMBER_OF_PLAYERS_MAXIMUM
  2967.    COUNTER=0 : FOUND_PLAYER=0 : SELLING_PRICE=0 : TRANSFER_FLAG=0
  2968.    CHOOSE_A_RANDOM_TEAM[CURRENT_TEAM] : BUYING_TEAM=Param
  2969.    FIND_NUMBER_OF_PLAYERS_TEAM_HAS[BUYING_TEAM] : NUMBER_OF_PLAYERS=Param
  2970.    CHOOSE_A_RANDOM_TRANSFER_PLAYER[BUYING_TEAM] : PERSON=Param
  2971.    If PERSON<>0 and NUMBER_OF_PLAYERS<NUMBER_OF_PLAYERS_MAXIMUM
  2972.       SELLING_TEAM=CLUB_TO_PAY(PERSON)
  2973.       MAKE_A_PRICE_OFFER[PERSON] : SELLING_PRICE=Param
  2974.       MAKE_A_CONTRACT_OFFER[PERSON] : CONTRACT_OFFER=Param
  2975.       If SELLING_TEAM<>CURRENT_TEAM
  2976.          OFFER_PRICE_TO_CLUB[PERSON,SELLING_PRICE]
  2977.       Else 
  2978.          OFFER_PRICE_TO_USERS_TEAM[PERSON,BUYING_TEAM,SELLING_PRICE]
  2979.       End If 
  2980.       PRICE_REPLY=Param
  2981.       If PRICE_REPLY=1
  2982.          OFFER_CONTRACT_TO_PLAYER[PERSON,CONTRACT_OFFER]
  2983.          CONTRACT_REPLY=Param
  2984.          If CONTRACT_REPLY=1
  2985.             If SELLING_TEAM<>CURRENT_TEAM
  2986.                TRANSFER_ACCEPTED_MESSAGE[PERSON,BUYING_TEAM,SELLING_TEAM,SELLING_PRICE]
  2987.             Else 
  2988.                TRANSFER_ACCEPTED_USER_MESSAGE[PERSON,BUYING_TEAM,SELLING_PRICE]
  2989.             End If 
  2990.             CONTRACT_VARIABLES_UPDATE[PERSON,CONTRACT_OFFER]
  2991.             TRANSFER_PLAYER[PERSON,BUYING_TEAM,SELLING_TEAM,SELLING_PRICE]
  2992.          Else 
  2993.             If SELLING_TEAM=CURRENT_TEAM
  2994.                NO_TRANSFER_USER_PLAYER[PERSON]
  2995.             End If 
  2996.          End If 
  2997.       Else 
  2998.          If SELLING_TEAM=CURRENT_TEAM
  2999.             NO_TRANSFER_USER_CLUB[PERSON,SELLING_PRICE]
  3000.          End If 
  3001.       End If 
  3002.    End If 
  3003.    TRANSFER_FLAG=1
  3004. End Proc
  3005. Procedure FIND_PLAYERS_TEAM[PERSON]
  3006.    Shared CLUB_TO_PAY()
  3007.    TEMP_TEAM=CLUB_TO_PAY(PERSON)
  3008. End Proc[TEMP_TEAM]
  3009. Procedure CHECK_LEFT_RIGHT_CLICK
  3010.    ACCEPT_REJECT=0
  3011.    Repeat 
  3012.       CHECK_MOUSE=Mouse Click
  3013.       If CHECK_MOUSE=1 : ACCEPT_REJECT=1 : End If 
  3014.       If CHECK_MOUSE=2 : ACCEPT_REJECT=0 : End If 
  3015.    Until CHECK_MOUSE=1 or CHECK_MOUSE=2
  3016. End Proc[ACCEPT_REJECT]
  3017. Procedure CHOOSE_A_RANDOM_TEAM[TEAM]
  3018.    Shared NUMBER_OF_TEAMS
  3019.    Repeat 
  3020.       TEMP_TEAM=Rnd(NUMBER_OF_TEAMS-1)+1
  3021.    Until TEMP_TEAM<>TEAM
  3022. End Proc[TEMP_TEAM]
  3023. Procedure FIND_NUMBER_OF_PLAYERS_TEAM_HAS[TEAM]
  3024.    Shared CLUB_TO_PAY(),TEAM_MAX
  3025.    COUNT=0
  3026.    For PERSON=1 To TEAM_MAX
  3027.       If CLUB_TO_PAY(PERSON)=TEAM
  3028.          Inc COUNT
  3029.       End If 
  3030.    Next PERSON
  3031. End Proc[COUNT]
  3032. Procedure CHOOSE_A_RANDOM_TRANSFER_PLAYER[TEAM]
  3033.    Shared CLUB_TO_PAY(),TRANSFER(),CLUB_RATING(),SKILL_TOTAL()
  3034.    Shared PRICE(),AGE(),TEAM_CASH(),POSITION(),TEAM_MAX,CURRENT_WEEK
  3035.    PERSON=0 : COUNT=1 : SKILL=CLUB_RATING(TEAM)*13
  3036.    Repeat 
  3037.       If CLUB_TO_PAY(COUNT)<>TEAM and TRANSFER(COUNT)=1 and PRICE(COUNT)<TEAM_CASH(TEAM)
  3038.         If SKILL_TOTAL(COUNT)>=SKILL
  3039.            If AGE(COUNT)<32 or(AGE(COUNT)=32 and CURRENT_WEEK<22)
  3040.                SKILL=SKILL_TOTAL(COUNT)
  3041.                PERSON=COUNT
  3042.             End If 
  3043.          End If 
  3044.       End If 
  3045.       Inc COUNT
  3046.    Until COUNT=TEAM_MAX+1
  3047. End Proc[PERSON]
  3048. Procedure PLACE_PLAYER_ON_TRANSFER_LIST[PERSON]
  3049.    Shared TRANSFER()
  3050.    TRANSFER(PERSON)=1
  3051.    GIVE_PLAYER_MORALE[PERSON,5,5,2]
  3052. End Proc
  3053. Procedure TAKE_PLAYER_OFF_TRANSFER_LIST[PERSON]
  3054.    Shared TRANSFER()
  3055.    TRANSFER(PERSON)=0
  3056.    GIVE_PLAYER_MORALE[PERSON,5,5,1]
  3057. End Proc
  3058. Procedure FIND_IF_PLAYER_ELIGIBLE[TEAM,PERSON]
  3059.    Shared CLUB_RATING(),SKILL_TOTAL(),TRANSFER(),TRANSFER_QUALITY
  3060.    ELIGIBLE_PLAYER=0
  3061.    If SKILL_TOTAL(PERSON)<=CLUB_RATING(TEAM)*TRANSFER_QUALITY and TRANSFER(PERSON)=0
  3062.       ELIGIBLE_PLAYER=1
  3063.    End If 
  3064. End Proc[ELIGIBLE_PLAYER]
  3065. Procedure GIVE_PLAYER_A_PRICE[PERSON]
  3066.    Shared PRICE(),SKILL_TOTAL(),GAMES_CAREER(),GOALS_CAREER()
  3067.    PRICE(PERSON)=0
  3068.    If SKILL_TOTAL(PERSON)>=650 : TEMP_SKILL=SKILL_TOTAL(PERSON) : End If 
  3069.    If SKILL_TOTAL(PERSON)<650 : TEMP_SKILL=SKILL_TOTAL(PERSON)*0.75 : End If 
  3070.    Add PRICE(PERSON),TEMP_SKILL*1000
  3071.    PRICE(PERSON)=PRICE(PERSON)/5000 : PRICE(PERSON)=PRICE(PERSON)*5000
  3072. End Proc
  3073. Procedure MAKE_ORIGINAL_TRANSFER_LIST[TEAM]
  3074.    INITIALISE_TRANSFER_LIST
  3075.    TRANSFERS=Rnd(8)+2
  3076.    For PERSON=1 To TRANSFERS
  3077.       MAKE_A_NEW_TRANSFER_PLAYER[TEAM]
  3078.    Next PERSON
  3079. End Proc
  3080. Procedure MAKE_A_NEW_TRANSFER_PLAYER[TEAM]
  3081.    Shared CLUB_TO_PAY(),TEAM_MAX,NUMBER_OF_TEAMS,CURRENT_TEAM
  3082.    PERSON=1
  3083.    TRANSFER_LIST=0
  3084.    Repeat 
  3085.       If CLUB_TO_PAY(PERSON)<>0 and CLUB_TO_PAY(PERSON)<>CURRENT_TEAM
  3086.             TEMP_TEAM=CLUB_TO_PAY(PERSON)
  3087.             FIND_IF_PLAYER_ELIGIBLE[TEMP_TEAM,PERSON] : ELIGIBLE=Param
  3088.       End If 
  3089.       If ELIGIBLE=1
  3090.          GIVE_PLAYER_A_PRICE[PERSON]
  3091.          PLACE_PLAYER_ON_TRANSFER_LIST[PERSON]
  3092.          TRANSFER_LIST=1
  3093.       End If 
  3094.       Inc PERSON
  3095.    Until PERSON=TEAM_MAX+1 or TRANSFER_LIST=1
  3096. End Proc
  3097. '********************************************************************
  3098. '
  3099. '********************************************************************
  3100. '*                       MATCH COMMENTARY PART                      *
  3101. '********************************************************************
  3102. NUMBER_IN_TEAM=6
  3103. Dim USER_TEAM(NUMBER_IN_TEAM),SQUAD_ARRAY(NUMBER_IN_TEAM*2)
  3104. Dim GOAL_SCORED$(9),GOAL_SAVED$(9),PASS_MADE$(9),PERSON_RUNS$(9)
  3105. Dim INJURY_MADE$(9),INJURY_MISSED$(9)
  3106. TACTIC_RUNNING_HOME=0 : TACTIC_PASSING_HOME=0
  3107. TACTIC_TACKLING_HOME=0 : TACTIC_STEALING_HOME=0
  3108. TACTIC_RUNNING_AWAY=0 : TACTIC_PASSING_AWAY=0
  3109. TACTIC_TACKLING_AWAY=0 : TACTIC_STEALING_AWAY=0
  3110. SUCCESS=0 : TEAM_WITH_BALL=0 : TEAM_HAS_SHOT=2
  3111. SUCCESS_SHOT=50 : SUCCESS_PASS=10
  3112. Procedure RETRIEVE_MATCH_MESSAGES
  3113.    Shared GOAL_SCORED$(),GOAL_SAVED$(),PASS_MADE$()
  3114.    Shared PERSON_RUNS$(),INJURY_MADE$(),INJURY_MISSED$()
  3115.    Open In 1,"SlamBall.Match_Messages"
  3116.    For X=0 To 9
  3117.       Line Input #1,GOAL_SCORED$(X)
  3118.       Line Input #1,GOAL_SAVED$(X)
  3119.       Line Input #1,PASS_MADE$(X)
  3120.       Line Input #1,PERSON_RUNS$(X)
  3121.       Line Input #1,INJURY_MADE$(X)
  3122.       Line Input #1,INJURY_MISSED$(X)
  3123.    Next X
  3124.    Close 1
  3125. End Proc
  3126. Procedure INITIALISE_USER_TEAM
  3127.    Shared USER_TEAM(),NUMBER_IN_TEAM
  3128.    For PERSON=1 To NUMBER_IN_TEAM
  3129.       USER_TEAM(PERSON)=0
  3130.    Next PERSON
  3131. End Proc
  3132. Procedure INITIALISE_MATCH_SQUAD_ARRAYS[THE_HOME_TEAM,THE_AWAY_TEAM]
  3133.    Shared SQUAD_ARRAY(),USER_TEAM(),INJURY_LENGTH()
  3134.    Shared CLUB_TO_PAY(),CURRENT_TEAM,NUMBER_IN_TEAM
  3135.    For PERSON=1 To(NUMBER_IN_TEAM*2)
  3136.       SQUAD_ARRAY(PERSON)=0
  3137.    Next PERSON
  3138.    For PERSON=1 To NUMBER_IN_TEAM
  3139.       If THE_HOME_TEAM=CURRENT_TEAM and INJURY_LENGTH(USER_TEAM(PERSON))=0
  3140.          If CLUB_TO_PAY(USER_TEAM(PERSON))=CURRENT_TEAM
  3141.             SQUAD_ARRAY(PERSON)=USER_TEAM(PERSON)
  3142.          End If 
  3143.       End If 
  3144.       If THE_AWAY_TEAM=CURRENT_TEAM and INJURY_LENGTH(USER_TEAM(PERSON))=0
  3145.          If CLUB_TO_PAY(USER_TEAM(PERSON))=CURRENT_TEAM
  3146.             SQUAD_ARRAY(PERSON+NUMBER_IN_TEAM)=USER_TEAM(PERSON)
  3147.          End If 
  3148.       End If 
  3149.    Next PERSON
  3150. End Proc
  3151. Procedure ALTER_TEAM_FAME[TEAM,BOOST,TYPE]
  3152.    Shared TEAM_FAME()
  3153.    If TYPE=1
  3154.       Add TEAM_FAME(TEAM),BOOST
  3155.       If TEAM_FAME(TEAM)>50 : TEAM_FAME(TEAM)=50 : End If 
  3156.    End If 
  3157.    If TYPE=2
  3158.       TEAM_FAME(TEAM)=TEAM_FAME(TEAM)-BOOST
  3159.       If TEAM_FAME(TEAM)<1 : TEAM_FAME(TEAM)=1 : End If 
  3160.    End If 
  3161. End Proc
  3162. Procedure MAKE_MATCH_BOX
  3163.    Shared FULL_BOX,EDGE_TOP,EDGE_BOTTOM
  3164.    MAKE_A_BOX[4,2,636,256,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  3165. End Proc
  3166. Procedure MAKE_BOX_FOR_FIXTURE_SCREEN
  3167.    Shared FULL_BOX,EDGE_TOP,EDGE_BOTTOM
  3168.    MAKE_A_BOX[4,2,316,256,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  3169. End Proc
  3170. Procedure DISPLAY_MAIN_SQUAD_SELECT_SCREEN
  3171.    Shared FULL_BOX,EDGE_TOP,EDGE_BOTTOM
  3172.    Cls 4
  3173.    MAKE_A_BOX[2,4,316,24,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  3174.    MAKE_A_BOX[2,29,316,139,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  3175.    MAKE_A_BOX[2,149,316,159,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  3176.    Ink 7,3, : Text 66,157,"Click here when finished"
  3177. End Proc
  3178. Procedure DISPLAY_MAIN_SQUAD_BUTTONS
  3179.    Shared FULL_BOX,EDGE_TOP,EDGE_BOTTOM
  3180.    MAKE_A_BOX[338,170,498,180,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  3181.    MAKE_A_BOX[338,230,498,240,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  3182.    Set Zone 11,338,170 To 498,180 : Set Zone 16,338,230 To 498,240
  3183.    MAKE_A_BOX[240,190,400,200,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  3184.    MAKE_A_BOX[440,190,600,200,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  3185.    Set Zone 12,240,190 To 400,200 : Set Zone 13,440,190 To 600,200
  3186.    MAKE_A_BOX[240,210,400,220,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  3187.    MAKE_A_BOX[440,210,600,220,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  3188.    Set Zone 14,240,210 To 400,220 : Set Zone 15,440,210 To 600,220
  3189.    MAKE_A_BOX[355,40,415,55,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  3190.    MAKE_A_BOX[515,40,575,55,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  3191.    Ink 7,4, : Text 357,35,"Running" : Text 517,35,"Passing"
  3192.    MAKE_A_BOX[355,100,415,115,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  3193.    MAKE_A_BOX[515,100,575,115,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  3194.    Ink 7,4 : Text 354,125,"Tackling" : Text 514,125,"Stealing"
  3195.    MAKE_A_BOX[435,42,495,53,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  3196.    MAKE_A_BOX[435,102,495,113,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  3197.    Set Zone 17,435,42 To 495,53 : Set Zone 18,435,102 To 495,113
  3198.    MAKE_A_BOX[96,170,228,180,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  3199.    Text 440,50,"Change" : Text 440,110,"Change"
  3200. End Proc
  3201. Procedure DISPLAY_SQUAD[TEAM]
  3202.    Shared POSITION(),DISPLAY_POSITION(),INJURY_LENGTH(),CLUB_TO_PAY(),TEAM_MAX
  3203.    Screen 3
  3204.    DISPLAY_MAIN_SQUAD_SELECT_SCREEN
  3205.    INITIALISE_DISPLAY_POSITION
  3206.    Text 112,13,"Your Squad"
  3207.    Reserve Zone 19 : FLAG_ZONE=1 : Y_POS=37
  3208.    DISPLAY_MAIN_SQUAD_BUTTONS
  3209.    For OUTER_LOOP=1 To 3
  3210.       For PERSON=1 To TEAM_MAX
  3211.          If CLUB_TO_PAY(PERSON)=TEAM and POSITION(PERSON)=OUTER_LOOP
  3212.             DISPLAY_POSITION(FLAG_ZONE)=PERSON
  3213.             If INJURY_LENGTH(PERSON)>0
  3214.                Ink 0,11,
  3215.             Else 
  3216.                Ink 1,11,
  3217.             End If 
  3218.             DISPLAY_PLAYER[PERSON,Y_POS]
  3219.             Set Zone FLAG_ZONE,6,Y_POS-5 To 310,Y_POS
  3220.             Inc FLAG_ZONE : Add Y_POS,10
  3221.          End If 
  3222.       Next PERSON
  3223.    Next OUTER_LOOP
  3224.    Set Zone 19,2,149 To 316,159
  3225.    Screen To Front 3
  3226. End Proc[FLAG_ZONE]
  3227. Procedure DISPLAY_THE_SQUAD[TACTIC_1,TACTIC_2,TACTIC_3,TACTIC_4,BOOST]
  3228.    Shared NAME$(),SQUAD_ARRAY(),CLUB_TO_PAY(),CURRENT_TEAM
  3229.    Text 375,51,Str$(TACTIC_1)-" "+" " : Text 535,51,Str$(TACTIC_2)-" "+" "
  3230.    Text 375,111,Str$(TACTIC_3)-" "+" " : Text 535,111,Str$(TACTIC_4)-" "+" "
  3231.    Text 342,178,NAME$(SQUAD_ARRAY(1+BOOST)) : Text 342,238,NAME$(SQUAD_ARRAY(6+BOOST))
  3232.    Text 244,198,NAME$(SQUAD_ARRAY(2+BOOST)) : Text 444,198,NAME$(SQUAD_ARRAY(3+BOOST))
  3233.    Text 244,218,NAME$(SQUAD_ARRAY(4+BOOST)) : Text 444,218,NAME$(SQUAD_ARRAY(5+BOOST))
  3234. End Proc
  3235. Procedure FIND_WHICH_PLAYER_TO_PICK[TEAM,WHICH_TEAM,PERSON_TOTAL]
  3236.    Shared DISPLAY_POSITION(),INJURY_LENGTH(),CLUB_TO_PAY()
  3237.    Shared TACTIC_USER_A,TACTIC_USER_B,TACTIC_USER_C,TACTIC_USER_D
  3238.    Shared TEAM_MAX,NUMBER_IN_TEAM,CURRENT_TEAM
  3239.    CANCEL=0 : CURRENT_SHIRT=1
  3240.    TACTIC_1=TACTIC_USER_A : TACTIC_2=TACTIC_USER_B
  3241.    TACTIC_3=TACTIC_USER_C : TACTIC_4=TACTIC_USER_D
  3242.    Repeat 
  3243.       Ink 7,3, : Text 102,178,"Current Shirt "+Str$(CURRENT_SHIRT)-" "+" " : Ink 1,11,
  3244.       If WHICH_TEAM=1
  3245.          DISPLAY_THE_SQUAD[TACTIC_1,TACTIC_2,TACTIC_3,TACTIC_4,0]
  3246.       End If 
  3247.       If WHICH_TEAM=2
  3248.          DISPLAY_THE_SQUAD[TACTIC_1,TACTIC_2,TACTIC_3,TACTIC_4,NUMBER_IN_TEAM]
  3249.       End If 
  3250.       For MAN=1 To PERSON_TOTAL
  3251.          CHECK_MOUSE=Mouse Key
  3252.          WHICH_ZONE=Mouse Zone
  3253.          If CHECK_MOUSE=1 and WHICH_ZONE=MAN
  3254.             PERSON=DISPLAY_POSITION(WHICH_ZONE)
  3255.             If INJURY_LENGTH(PERSON)=0 and CLUB_TO_PAY(PERSON)=CURRENT_TEAM
  3256.                If WHICH_TEAM=1
  3257.                   GIVE_PLAYER_A_SHIRT[PERSON,CURRENT_SHIRT,TEAM,1,NUMBER_IN_TEAM]
  3258.                End If 
  3259.                If WHICH_TEAM=2
  3260.                   GIVE_PLAYER_A_SHIRT[PERSON,CURRENT_SHIRT+NUMBER_IN_TEAM,TEAM,NUMBER_IN_TEAM+1,NUMBER_IN_TEAM*2]
  3261.                End If 
  3262.             End If 
  3263.          End If 
  3264.       Next MAN
  3265.       For SHIRT_BOX=11 To 16
  3266.          CHECK_MOUSE=Mouse Key
  3267.          WHICH_ZONE=Mouse Zone
  3268.          If CHECK_MOUSE=1 and WHICH_ZONE=SHIRT_BOX
  3269.             CURRENT_SHIRT=WHICH_ZONE-10
  3270.          End If 
  3271.       Next SHIRT_BOX
  3272.       CHECK_MOUSE=Mouse Key
  3273.       WHICH_ZONE=Mouse Zone
  3274.       If CHECK_MOUSE=1 and WHICH_ZONE=17 and TACTIC_1<80
  3275.          Add TACTIC_1,1
  3276.          Add TACTIC_2,-1
  3277.       End If 
  3278.       If CHECK_MOUSE=2 and WHICH_ZONE=17 and TACTIC_2<80
  3279.          Add TACTIC_1,-1
  3280.          Add TACTIC_2,1
  3281.       End If 
  3282.       If CHECK_MOUSE=1 and WHICH_ZONE=18 and TACTIC_3<80
  3283.          Add TACTIC_3,1
  3284.          Add TACTIC_4,-1
  3285.       End If 
  3286.       If CHECK_MOUSE=2 and WHICH_ZONE=18 and TACTIC_4<80
  3287.          Add TACTIC_3,-1
  3288.          Add TACTIC_4,1
  3289.       End If 
  3290.       If CHECK_MOUSE=1 and WHICH_ZONE=19
  3291.          CANCEL=1
  3292.       End If 
  3293.    Until CANCEL=1
  3294.    CONVERT_TACTICS[WHICH_TEAM,TACTIC_1,TACTIC_2,TACTIC_3,TACTIC_4]
  3295.    TACTIC_USER_A=TACTIC_1 : TACTIC_USER_B=TACTIC_2
  3296.    TACTIC_USER_C=TACTIC_3 : TACTIC_USER_D=TACTIC_4
  3297. End Proc
  3298. Procedure CONVERT_TACTICS[WHICH_TEAM,TACTIC_1,TACTIC_2,TACTIC_3,TACTIC_4]
  3299.    Shared TACTIC_RUNNING_HOME,TACTIC_PASSING_HOME,TACTIC_TACKLING_HOME,TACTIC_STEALING_HOME
  3300.    Shared TACTIC_RUNNING_AWAY,TACTIC_PASSING_AWAY,TACTIC_TACKLING_AWAY,TACTIC_STEALING_AWAY
  3301.    If WHICH_TEAM=1
  3302.       TACTIC_RUNNING_HOME=TACTIC_1 : TACTIC_PASSING_HOME=TACTIC_2
  3303.       TACTIC_TACKLING_HOME=TACTIC_3 : TACTIC_TACKLING_HOME=TACTIC_4
  3304.    End If 
  3305.    If WHICH_TEAM=2
  3306.       TACTIC_RUNNING_AWAY=TACTIC_1 : TACTIC_PASSING_AWAY=TACTIC_2
  3307.       TACTIC_TACKLING_AWAY=TACTIC_3 : TACTIC_TACKLING_AWAY=TACTIC_4
  3308.    End If 
  3309. End Proc
  3310. Procedure TRANSFER_TEAM_TO_USER_TEAM[BOUND_A,BOUND_B]
  3311.    Shared SQUAD_ARRAY(),USER_TEAM()
  3312.    COUNT=1
  3313.    For PERSON=BOUND_A To BOUND_B
  3314.       USER_TEAM(COUNT)=SQUAD_ARRAY(PERSON)
  3315.       Inc COUNT
  3316.    Next PERSON
  3317. End Proc
  3318. Procedure GIVE_PLAYER_A_SHIRT[PERSON,SHIRT,TEAM,BOUND_A,BOUND_B]
  3319.    Shared SQUAD_ARRAY(),CLUB_TO_PAY(),CURRENT_TEAM
  3320.    If CLUB_TO_PAY(PERSON)<>0
  3321.       IS_PLAYER_PICKED[PERSON,BOUND_A,BOUND_B,1]
  3322.       SQUAD_ARRAY(SHIRT)=PERSON
  3323.       If TEAM=CURRENT_TEAM
  3324.          CLEAR_OLD_PLAYER_NAME[SHIRT]
  3325.       End If 
  3326.    End If 
  3327. End Proc
  3328. Procedure IS_PLAYER_PICKED[PERSON,BOUND_A,BOUND_B,TYPE]
  3329.    Shared SQUAD_ARRAY()
  3330.    TEMP_PICKED=0
  3331.    For SQUAD=BOUND_A To BOUND_B
  3332.       If PERSON=SQUAD_ARRAY(SQUAD)
  3333.          If TYPE=1
  3334.             SQUAD_ARRAY(SQUAD)=0
  3335.          End If 
  3336.          If TYPE=2
  3337.             TEMP_PICKED=1
  3338.          End If 
  3339.       End If 
  3340.    Next SQUAD
  3341. End Proc[TEMP_PICKED]
  3342. Procedure CLEAR_OLD_PLAYER_NAME[SHIRT]
  3343.    If SHIRT=1 or SHIRT=7
  3344.       Text 342,178,"                  "
  3345.    End If 
  3346.    If SHIRT=6 or SHIRT=12
  3347.       Text 342,238,"                  "
  3348.    End If 
  3349.    If SHIRT=2 or SHIRT=8
  3350.       Text 244,198,"                  "
  3351.    End If 
  3352.    If SHIRT=3 or SHIRT=9
  3353.       Text 444,198,"                  "
  3354.    End If 
  3355.    If SHIRT=4 or SHIRT=10
  3356.       Text 244,218,"                  "
  3357.    End If 
  3358.    If SHIRT=5 or SHIRT=11
  3359.       Text 444,218,"                  "
  3360.    End If 
  3361. End Proc
  3362. Procedure PICK_COMPUTER_TEAM[THE_HOME_TEAM,THE_AWAY_TEAM]
  3363.    Shared INJURY_LENGTH(),CLUB_TO_PAY(),SKILL_SHOT()
  3364.    Shared TEAM_MAX,NUMBER_IN_TEAM,CURRENT_TEAM
  3365.    PERSON_HOME=1 : PERSON_AWAY=NUMBER_IN_TEAM+1 : TEMP_SKILL=70
  3366.    For SKILL_LOOP=1 To 3
  3367.       For PERSON=1 To TEAM_MAX
  3368.          If CLUB_TO_PAY(PERSON)=THE_HOME_TEAM and INJURY_LENGTH(PERSON)=0 and SKILL_SHOT(PERSON)>=TEMP_SKILL and PERSON_HOME<=NUMBER_IN_TEAM and THE_HOME_TEAM<>CURRENT_TEAM
  3369.             IS_PLAYER_PICKED[PERSON,1,NUMBER_IN_TEAM,2]
  3370.             If Param=0
  3371.                GIVE_PLAYER_A_SHIRT[PERSON,PERSON_HOME,THE_HOME_TEAM,1,NUMBER_IN_TEAM]
  3372.                Inc PERSON_HOME
  3373.             End If 
  3374.          End If 
  3375.          If CLUB_TO_PAY(PERSON)=THE_AWAY_TEAM and INJURY_LENGTH(PERSON)=0 and SKILL_SHOT(PERSON)>=TEMP_SKILL and PERSON_AWAY<=NUMBER_IN_TEAM*2 and THE_AWAY_TEAM<>CURRENT_TEAM
  3376.             IS_PLAYER_PICKED[PERSON,NUMBER_IN_TEAM+1,NUMBER_IN_TEAM*2,2]
  3377.             If Param=0
  3378.                GIVE_PLAYER_A_SHIRT[PERSON,PERSON_AWAY,THE_AWAY_TEAM,NUMBER_IN_TEAM+1,NUMBER_IN_TEAM*2]
  3379.                Inc PERSON_AWAY
  3380.             End If 
  3381.          End If 
  3382.       Next PERSON
  3383.       Add TEMP_SKILL,-30
  3384.    Next SKILL_LOOP
  3385. End Proc
  3386. Procedure GENERATE_COMPUTER_TACTICS[WHICH_TEAM]
  3387.    TACTIC_1=Rnd(60)+20
  3388.    TACTIC_2=100-TACTIC_1
  3389.    TACTIC_3=Rnd(60)+20
  3390.    TACTIC_4=100-TACTIC_3
  3391.    If WHICH_TEAM=1
  3392.       CONVERT_TACTICS[WHICH_TEAM,TACTIC_1,TACTIC_2,TACTIC_3,TACTIC_4]
  3393.    End If 
  3394.    If WHICH_TEAM=2
  3395.       CONVERT_TACTICS[WHICH_TEAM,TACTIC_1,TACTIC_2,TACTIC_3,TACTIC_4]
  3396.    End If 
  3397. End Proc
  3398. Procedure SQUAD_VARIABLES_UPDATE
  3399.    Shared KNOWLEDGE(),GAMES_CAREER(),GAMES_SEASON(),MORALE(),SQUAD_ARRAY(),NUMBER_IN_TEAM
  3400.    BOUND_A=1 : BOUND_B=5
  3401.    For OUTER_LOOP=1 To 2
  3402.       For PERSON=BOUND_A To BOUND_B
  3403.          Add GAMES_CAREER(SQUAD_ARRAY(PERSON)),1
  3404.          Add GAMES_SEASON(SQUAD_ARRAY(PERSON)),1
  3405.          Add KNOWLEDGE(SQUAD_ARRAY(PERSON)),1
  3406.          TEMP_PERSON=SQUAD_ARRAY(PERSON)
  3407.          GIVE_PLAYER_MORALE[TEMP_PERSON,1,2,1]
  3408.       Next PERSON
  3409.       Add BOUND_A,NUMBER_IN_TEAM : Add BOUND_B,NUMBER_IN_TEAM
  3410.    Next OUTER_LOOP
  3411. End Proc
  3412. Procedure FIND_WHICH_ACTION_HAPPENS[THE_HOME_TEAM,THE_AWAY_TEAM,WATCH_THE_GAME,Y_POS,TYPE]
  3413.    Shared TACTIC_RUNNING_HOME,TACTIC_PASSING_HOME,TACTIC_TACKLING_HOME,TACTIC_STEALING_HOME
  3414.    Shared TACTIC_RUNNING_AWAY,TACTIC_PASSING_AWAY,TACTIC_TACKLING_AWAY,TACTIC_STEALING_AWAY
  3415.    Shared SUCCESS,TEAM_WITH_BALL,TEAM_HAS_SHOT,NUMBER_IN_TEAM
  3416.    If TEAM_WITH_BALL=THE_HOME_TEAM
  3417.       TEAM_ATTACK=THE_HOME_TEAM : TEAM_DEFEND=THE_AWAY_TEAM
  3418.       PERSON_ATTACK=0 : PERSON_DEFEND=NUMBER_IN_TEAM : WHICH_TEAM=1 : SCORE=1 : MISS=0
  3419.       TACTIC_ATTACK_A=TACTIC_RUNNING_HOME : TACTIC_ATTACK_B=TACTIC_PASSING_HOME
  3420.       TACTIC_DEFEND_A=TACTIC_TACKLING_AWAY : TACTIC_DEFEND_B=TACTIC_STEALING_AWAY
  3421.    End If 
  3422.    If TEAM_WITH_BALL=THE_AWAY_TEAM
  3423.       TEAM_ATTACK=THE_AWAY_TEAM : TEAM_DEFEND=THE_HOME_TEAM
  3424.       PERSON_ATTACK=NUMBER_IN_TEAM : PERSON_DEFEND=0 : WHICH_TEAM=2 : SCORE=0 : MISS=1
  3425.       TACTIC_ATTACK_A=TACTIC_RUNNING_AWAY : TACTIC_ATTACK_B=TACTIC_PASSING_AWAY
  3426.       TACTIC_DEFEND_A=TACTIC_TACKLING_HOME : TACTIC_DEFEND_B=TACTIC_STEALING_HOME
  3427.    End If 
  3428.    If SUCCESS=TEAM_HAS_SHOT
  3429.       FIND_TACTIC[TACTIC_DEFEND_A,TACTIC_DEFEND_B] : TACTIC_DEFEND=Param
  3430.       TEAM_SHOOTS[WHICH_TEAM,TEAM_ATTACK,WATCH_THE_GAME,Y_POS,TYPE,PERSON_ATTACK,PERSON_DEFEND,TACTIC_DEFEND,SCORE,MISS]
  3431.       RESULT=0
  3432.    End If 
  3433.    If SUCCESS<TEAM_HAS_SHOT
  3434.       FIND_TACTIC[TACTIC_ATTACK_A,TACTIC_ATTACK_B] : TACTIC_ATTACK=Param
  3435.       FIND_TACTIC[TACTIC_DEFEND_A,TACTIC_DEFEND_B] : TACTIC_DEFEND=Param
  3436.       If TACTIC_ATTACK=1
  3437.          TEAM_RUNS[WHICH_TEAM,WATCH_THE_GAME,Y_POS,PERSON_ATTACK,PERSON_DEFEND,SCORE,MISS,TACTIC_DEFEND]
  3438.          RESULT=Param
  3439.       End If 
  3440.       If TACTIC_ATTACK=2
  3441.          TEAM_PASSES[WHICH_TEAM,WATCH_THE_GAME,Y_POS,PERSON_ATTACK,PERSON_DEFEND,SCORE,MISS,TACTIC_DEFEND]
  3442.          RESULT=Param
  3443.       End If 
  3444.    End If 
  3445.    If RESULT=1
  3446.       Inc SUCCESS
  3447.    End If 
  3448.    If RESULT=0
  3449.       Swap TEAM_ATTACK,TEAM_DEFEND
  3450.       TEAM_WITH_BALL=TEAM_ATTACK
  3451.       SUCCESS=0
  3452.    End If 
  3453. End Proc
  3454. Procedure FIND_TACTIC[TACTIC_A,TACTIC_B]
  3455.    TACTIC=Rnd(100)
  3456.    If TACTIC<TACTIC_A
  3457.       RESULT=1
  3458.    Else 
  3459.       RESULT=2
  3460.    End If 
  3461. End Proc[RESULT]
  3462. Procedure FIND_WHICH_PLAYER_SHOOTS[BOOST]
  3463.    Shared SQUAD_ARRAY()
  3464.    TEMP=Rnd(10)
  3465.    If TEMP<=4 : PERSON=SQUAD_ARRAY(1+BOOST) : End If 
  3466.    If TEMP>=5 and TEMP<=6 : PERSON=SQUAD_ARRAY(2+BOOST) : End If 
  3467.    If TEMP>=7 and TEMP<=8 : PERSON=SQUAD_ARRAY(3+BOOST) : End If 
  3468.    If TEMP=9 : PERSON=SQUAD_ARRAY(4+BOOST) : End If 
  3469.    If TEMP=10 : PERSON=SQUAD_ARRAY(5+BOOST) : End If 
  3470. End Proc[PERSON]
  3471. Procedure FIND_WHICH_PLAYER_TACKLES[BOOST]
  3472.    Shared SQUAD_ARRAY()
  3473.    TEMP=Rnd(10)
  3474.    If TEMP=0 : PERSON=SQUAD_ARRAY(1+BOOST) : End If 
  3475.    If TEMP>=1 and TEMP<=2 : PERSON=SQUAD_ARRAY(2+BOOST) : End If 
  3476.    If TEMP>=3 and TEMP<=4 : PERSON=SQUAD_ARRAY(3+BOOST) : End If 
  3477.    If TEMP>=5 and TEMP<=7 : PERSON=SQUAD_ARRAY(4+BOOST) : End If 
  3478.    If TEMP>=8 and TEMP<=10 : PERSON=SQUAD_ARRAY(5+BOOST) : End If 
  3479. End Proc[PERSON]
  3480. Procedure TEAM_SHOOTS[WHICH_TEAM,TEAM_ATTACK,WATCH_THE_GAME,Y_POS,TYPE,PERSON_ATTACK,PERSON_DEFEND,TACTIC_DEFEND,SCORE,MISS]
  3481.    Shared LEAGUE_GOALS(),KNOWLEDGE(),NAME$(),GOAL_SCORED$(),GOAL_SAVED$()
  3482.    FIND_WHICH_PLAYER_SHOOTS[PERSON_ATTACK] : PERSON_SHOOTING=Param
  3483.    FIND_WHICH_PLAYER_TACKLES[PERSON_DEFEND] : DEFENDER=Param
  3484.    FIND_RESULT_OF_SHOT[PERSON_SHOOTING,DEFENDER,TACTIC_DEFEND] : RESULT=Param
  3485.    If RESULT=1
  3486.       If TYPE=1 : Inc LEAGUE_GOALS(TEAM_ATTACK) : End If 
  3487.       If TYPE=2 : A_CUP_GOAL[TEAM_ATTACK,WHICH_TEAM] : End If 
  3488.       GIVE_PLAYER_A_GOAL[PERSON_SHOOTING]
  3489.       If WATCH_THE_GAME=1
  3490.          Ink SCORE,11,
  3491.          Text 12,Y_POS,NAME$(PERSON_SHOOTING)+GOAL_SCORED$(Rnd(9))
  3492.       End If 
  3493.    Else 
  3494.       Inc KNOWLEDGE(DEFENDER)
  3495.       GIVE_PLAYER_MORALE[PERSON_SHOOTING,1,0,2]
  3496.       If WATCH_THE_GAME=1
  3497.          Ink MISS,11,
  3498.          Text 12,Y_POS,NAME$(DEFENDER)+GOAL_SAVED$(Rnd(9))
  3499.       End If 
  3500.    End If 
  3501. End Proc
  3502. Procedure FIND_RESULT_OF_SHOT[PERSON_ATTACK,PERSON_DEFEND,TACTIC]
  3503.    Shared SKILL_SHOT(),SKILL_ART(),SKILL_TACKLE(),SKILL_STEAL()
  3504.    Shared STRENGTH(),KNOWLEDGE(),MORALE(),SUCCESS_SHOT
  3505.    RESULT=0 : SKILL_ATTACK=0 : SKILL_DEFEND=0
  3506.    Add SKILL_ATTACK,Rnd(KNOWLEDGE(PERSON_ATTACK))/10 : Add SKILL_ATTACK,Rnd(MORALE(PERSON_ATTACK))
  3507.    Add SKILL_ATTACK,Rnd(SKILL_SHOT(PERSON_ATTACK)) : Add SKILL_ATTACK,Rnd(SKILL_ART(PERSON_ATTACK))
  3508.    Add SKILL_DEFEND,Rnd(KNOWLEDGE(PERSON_DEFEND))/10 : Add SKILL_DEFEND,Rnd(MORALE(PERSON_DEFEND))
  3509.    Add SKILL_DEFEND,Rnd(STRENGTH(PERSON_DEFEND))
  3510.    If TACTIC=1
  3511.       Add SKILL_DEFEND,Rnd(SKILL_TACKLE(PERSON_DEFEND))
  3512.    Else 
  3513.       Add SKILL_DEFEND,Rnd(SKILL_STEAL(PERSON_DEFEND))
  3514.    End If 
  3515.    If(SKILL_ATTACK-SKILL_DEFEND)>=SUCCESS_SHOT
  3516.       RESULT=1
  3517.    End If 
  3518. End Proc[RESULT]
  3519. Procedure A_CUP_GOAL[TEAM_SHOOTING,WHICH_TEAM]
  3520.    Shared GOALS_HOME(),GOALS_AWAY()
  3521.    If WHICH_TEAM=1 : Inc GOALS_HOME(TEAM_SHOOTING) : End If 
  3522.    If WHICH_TEAM=2 : Inc GOALS_AWAY(TEAM_SHOOTING) : End If 
  3523. End Proc
  3524. Procedure GIVE_PLAYER_A_GOAL[PERSON]
  3525.    Shared GOALS_CAREER(),GOALS_SEASON(),KNOWLEDGE()
  3526.    Inc GOALS_CAREER(PERSON)
  3527.    Inc GOALS_SEASON(PERSON)
  3528.    Inc KNOWLEDGE(PERSON)
  3529.    GIVE_PLAYER_MORALE[PERSON,1,3,1]
  3530. End Proc
  3531. Procedure TEAM_PASSES[WHICH_TEAM,WATCH_THE_GAME,Y_POS,PERSON_ATTACK,PERSON_DEFEND,SCORE,MISS,TACTIC_DEFEND]
  3532.    Shared NAME$(),PASS_MADE$(),KNOWLEDGE()
  3533.    FIND_WHICH_PLAYER_TACKLES[PERSON_ATTACK] : PASSER=Param
  3534.    Repeat 
  3535.       FIND_WHICH_PLAYER_TACKLES[PERSON_ATTACK] : RECEIVER=Param
  3536.    Until(PASSER<>RECEIVER) or(PASSER=0 or RECEIVER=0)
  3537.    FIND_WHICH_PLAYER_TACKLES[PERSON_DEFEND] : TACKLER=Param
  3538.    FIND_RESULT_OF_PASS[PASSER,TACKLER,TACTIC_DEFEND] : RESULT=Param
  3539.    If RESULT=1 and WATCH_THE_GAME=1
  3540.       Inc KNOWLEDGE(PASSER)
  3541.       Ink SCORE,3, : Text 12,Y_POS,NAME$(PASSER)+PASS_MADE$(Rnd(9))+NAME$(RECEIVER)
  3542.    End If 
  3543.    If RESULT=0
  3544.       PERFORM_TACKLE[WHICH_TEAM,TACKLER,PASSER,PERSON_ATTACK,WATCH_THE_GAME,Y_POS,MISS]
  3545.    End If 
  3546. End Proc[RESULT]
  3547. Procedure FIND_RESULT_OF_PASS[PERSON_ATTACK,PERSON_DEFEND,TACTIC]
  3548.    Shared SKILL_PASS(),SKILL_ART(),SKILL_TACKLE(),SKILL_STEAL()
  3549.    Shared STRENGTH(),KNOWLEDGE(),MORALE(),SUCCESS_PASS
  3550.    RESULT=0 : SKILL_ATTACK=0 : SKILL_DEFEND=0
  3551.    Add SKILL_ATTACK,Rnd(KNOWLEDGE(PERSON_ATTACK))/10 : Add SKILL_ATTACK,Rnd(MORALE(PERSON_ATTACK))
  3552.    Add SKILL_ATTACK,Rnd(SKILL_PASS(PERSON_ATTACK)) : Add SKILL_ATTACK,Rnd(SKILL_ART(PERSON_ATTACK))
  3553.    Add SKILL_DEFEND,Rnd(KNOWLEDGE(PERSON_DEFEND))/10 : Add SKILL_DEFEND,Rnd(MORALE(PERSON_DEFEND))
  3554.    Add SKILL_DEFEND,Rnd(STRENGTH(PERSON_DEFEND))
  3555.    If TACTIC=1
  3556.       Add SKILL_DEFEND,Rnd(SKILL_TACKLE(PERSON_DEFEND))
  3557.    Else 
  3558.       Add SKILL_DEFEND,Rnd(SKILL_STEAL(PERSON_DEFEND))
  3559.    End If 
  3560.    If(SKILL_ATTACK-SKILL_DEFEND)>=SUCCESS_PASS
  3561.       RESULT=1
  3562.    End If 
  3563. End Proc[RESULT]
  3564. Procedure TEAM_RUNS[WHICH_TEAM,WATCH_THE_GAME,Y_POS,PERSON_ATTACK,PERSON_DEFEND,SCORE,MISS,TACTIC_DEFEND]
  3565.    Shared NAME$(),PERSON_RUNS$(),KNOWLEDGE()
  3566.    FIND_WHICH_PLAYER_SHOOTS[PERSON_ATTACK] : PERSON_RUNS=Param
  3567.    FIND_WHICH_PLAYER_TACKLES[PERSON_DEFEND] : TACKLER=Param
  3568.    FIND_RESULT_OF_RUN[PERSON_RUNS,TACKLER,TACTIC_DEFEND] : RESULT=Param
  3569.    If RESULT=1 and WATCH_THE_GAME=1
  3570.       Inc KNOWLEDGE(PERSON_RUNS)
  3571.       Ink SCORE,3, : Text 12,Y_POS,NAME$(PERSON_RUNS)+PERSON_RUNS$(Rnd(9))
  3572.    End If 
  3573.    If RESULT=0
  3574.       PERFORM_TACKLE[WHICH_TEAM,TACKLER,PERSON_RUNS,PERSON_ATTACK,WATCH_THE_GAME,Y_POS,MISS]
  3575.    End If 
  3576. End Proc[RESULT]
  3577. Procedure FIND_RESULT_OF_RUN[PERSON_ATTACK,PERSON_DEFEND,TACTIC]
  3578.    Shared SPEED(),SKILL_ART(),SKILL_TACKLE(),SKILL_STEAL()
  3579.    Shared STRENGTH(),KNOWLEDGE(),MORALE(),SUCCESS_PASS
  3580.    RESULT=0 : SKILL_ATTACK=0 : SKILL_DEFEND=0
  3581.    Add SKILL_ATTACK,Rnd(KNOWLEDGE(PERSON_ATTACK))/10 : Add SKILL_ATTACK,Rnd(MORALE(PERSON_ATTACK))
  3582.    Add SKILL_ATTACK,Rnd(SPEED(PERSON_ATTACK)) : Add SKILL_ATTACK,Rnd(SKILL_ART(PERSON_ATTACK))
  3583.    Add SKILL_DEFEND,Rnd(KNOWLEDGE(PERSON_DEFEND))/10 : Add SKILL_DEFEND,Rnd(MORALE(PERSON_DEFEND))
  3584.    Add SKILL_DEFEND,Rnd(STRENGTH(PERSON_DEFEND))
  3585.    If TACTIC=1
  3586.       Add SKILL_DEFEND,Rnd(SKILL_TACKLE(PERSON_DEFEND))
  3587.    Else 
  3588.       Add SKILL_DEFEND,Rnd(SKILL_STEAL(PERSON_DEFEND))
  3589.    End If 
  3590.    If(SKILL_ATTACK-SKILL_DEFEND)>=SUCCESS_PASS
  3591.       RESULT=1
  3592.    End If 
  3593. End Proc[RESULT]
  3594. Procedure PERFORM_TACKLE[WHICH_TEAM,TACKLER,DEFENDER,PERSON_DEFEND,WATCH_THE_GAME,Y_POS,INJURY]
  3595.    Shared KNOWLEDGE(),NAME$(),INJURY_MADE$(),INJURY_MISSED$()
  3596.    FIND_PLAYERS_SHIRT[DEFENDER] : SUB=Param
  3597.    Inc KNOWLEDGE(TACKLER)
  3598.    FIND_IF_PLAYER_IS_INJURED[TACKLER,DEFENDER] : INJURED=Param
  3599.    If INJURED=1
  3600.       GIVE_PLAYER_AN_INJURY[DEFENDER]
  3601.       BRING_ON_SUBSTITUTE[SUB,WHICH_TEAM]
  3602.       If WATCH_THE_GAME=1
  3603.          Ink INJURY,3,
  3604.          Text 12,Y_POS,NAME$(TACKLER)+INJURY_MADE$(Rnd(9))+NAME$(DEFENDER)
  3605.       End If 
  3606.    Else 
  3607.       If WATCH_THE_GAME=1
  3608.          Ink INJURY,3,
  3609.          Text 12,Y_POS,NAME$(TACKLER)+INJURY_MISSED$(Rnd(9))+NAME$(DEFENDER)
  3610.       End If 
  3611.    End If 
  3612. End Proc
  3613. Procedure FIND_PLAYERS_SHIRT[DEFENDER]
  3614.    Shared SQUAD_ARRAY(),NUMBER_IN_TEAM
  3615.    SHIRT=0
  3616.    For SQUAD=1 To NUMBER_IN_TEAM*2
  3617.       If DEFENDER=SQUAD_ARRAY(SQUAD)
  3618.          SHIRT=SQUAD
  3619.       End If 
  3620.    Next SQUAD
  3621. End Proc[SHIRT]
  3622. Procedure FIND_IF_PLAYER_IS_INJURED[TACKLER,PERSON]
  3623.    Shared STRENGTH(),STAMINA()
  3624.    INJURED=0
  3625.    INJURY=Rnd(STRENGTH(TACKLER))
  3626.    POSSIBLE_INJURY=Rnd(STAMINA(PERSON))
  3627.    If(INJURY-POSSIBLE_INJURY)>45
  3628.       INJURED=1
  3629.    End If 
  3630. End Proc[INJURED]
  3631. Procedure GIVE_PLAYER_AN_INJURY[PERSON]
  3632.    Shared INJURY_LENGTH()
  3633.    INJURY=Rnd(14)+1
  3634.    If INJURY<=5
  3635.       INJURY_LENGTH(PERSON)=Rnd(3)+2
  3636.       GIVE_PLAYER_MORALE[PERSON,3,3,2]
  3637.    End If 
  3638.    If INJURY>=6 and INJURY<=9
  3639.       INJURY_LENGTH(PERSON)=Rnd(5)+3
  3640.       GIVE_PLAYER_MORALE[PERSON,5,5,2]
  3641.    End If 
  3642.    If INJURY>=10 and INJURY<=12
  3643.       INJURY_LENGTH(PERSON)=Rnd(7)+4
  3644.       GIVE_PLAYER_MORALE[PERSON,7,7,2]
  3645.    End If 
  3646.    If INJURY>=13 and INJURY<=14
  3647.       INJURY_LENGTH(PERSON)=Rnd(9)+5
  3648.       GIVE_PLAYER_MORALE[PERSON,9,9,2]
  3649.    End If 
  3650.    If INJURY=15
  3651.       INJURY_LENGTH(PERSON)=Rnd(30)+15
  3652.       GIVE_PLAYER_MORALE[PERSON,20,20,2]
  3653.    End If 
  3654. End Proc
  3655. Procedure BRING_ON_SUBSTITUTE[SUBSTITUTE,WHICH_TEAM]
  3656.    Shared KNOWLEDGE(),GAMES_SEASON(),GAMES_CAREER(),SQUAD_ARRAY(),NUMBER_IN_TEAM
  3657.    PERSON=SQUAD_ARRAY(NUMBER_IN_TEAM*WHICH_TEAM)
  3658.    SQUAD_ARRAY(SUBSTITUTE)=PERSON
  3659.    SQUAD_ARRAY(NUMBER_IN_TEAM*WHICH_TEAM)=0
  3660.    Inc GAMES_CAREER(PERSON)
  3661.    Inc GAMES_SEASON(PERSON)
  3662.    Inc KNOWLEDGE(PERSON)
  3663. End Proc
  3664. Procedure GENERATE_LEAGUE_RESULTS
  3665.    Shared GAME_A(),GAME_B(),GAME_C(),GAME_D()
  3666.    Shared CURRENT_WEEK,NUMBER_OF_TEAMS
  3667.    For GENERATE_RESULTS_LOOP=1 To 2
  3668.       If GENERATE_RESULTS_LOOP=1
  3669.          WORK_OUT_LEAGUE_FIXTURES[CURRENT_WEEK,0]
  3670.       End If 
  3671.       If GENERATE_RESULTS_LOOP=2
  3672.          WORK_OUT_LEAGUE_FIXTURES[CURRENT_WEEK,NUMBER_OF_TEAMS/2]
  3673.       End If 
  3674.       THE_HOME_TEAM=GAME_A(1,0) : THE_AWAY_TEAM=GAME_A(1,1)
  3675.       SEE_IF_USER_WATCHES_MATCH[THE_HOME_TEAM,THE_AWAY_TEAM,1]
  3676.       GENERATE_RESULT[THE_HOME_TEAM,THE_AWAY_TEAM,Param,1]
  3677.       THE_HOME_TEAM=GAME_B(1,0) : THE_AWAY_TEAM=GAME_B(1,1)
  3678.       SEE_IF_USER_WATCHES_MATCH[THE_HOME_TEAM,THE_AWAY_TEAM,1]
  3679.       GENERATE_RESULT[THE_HOME_TEAM,THE_AWAY_TEAM,Param,1]
  3680.       THE_HOME_TEAM=GAME_C(1,0) : THE_AWAY_TEAM=GAME_C(1,1)
  3681.       SEE_IF_USER_WATCHES_MATCH[THE_HOME_TEAM,THE_AWAY_TEAM,1]
  3682.       GENERATE_RESULT[THE_HOME_TEAM,THE_AWAY_TEAM,Param,1]
  3683.       THE_HOME_TEAM=GAME_D(1,0) : THE_AWAY_TEAM=GAME_D(1,1)
  3684.       SEE_IF_USER_WATCHES_MATCH[THE_HOME_TEAM,THE_AWAY_TEAM,1]
  3685.       GENERATE_RESULT[THE_HOME_TEAM,THE_AWAY_TEAM,Param,1]
  3686.    Next GENERATE_RESULTS_LOOP
  3687. End Proc
  3688. Procedure SEE_IF_USER_WATCHES_MATCH[THE_HOME_TEAM,THE_AWAY_TEAM,TYPE]
  3689.    Shared TEAMNAME$(),STADIUM$(),CURRENT_WEEK
  3690.    Shared FULL_BOX,EDGE_TOP,EDGE_BOTTOM
  3691.    Screen 2 : Cls 4 : MAKE_BOX_FOR_FIXTURE_SCREEN : Ink 7,3,
  3692.    PLACE_TEXT_CENTRALLY[14,"W e e k  "+Str$(CURRENT_WEEK),Screen Width]
  3693.    MAKE_A_BOX[10,24,310,36,0,0,0]
  3694.    MAKE_A_BOX[11,25,309,35,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  3695.    If TYPE=1 : MESSAGE$="League  Match" : End If 
  3696.    If TYPE=16 : MESSAGE$="First  Round  Cup  Match" : End If 
  3697.    If TYPE=8 : MESSAGE$="Quarter  Final  Cup  Match" : End If 
  3698.    If TYPE=4 : MESSAGE$="Semi  Final  Cup  Match" : End If 
  3699.    If TYPE=2 : MESSAGE$="Cup  Final" : End If 
  3700.    Ink 7,3, : PLACE_TEXT_CENTRALLY[33,MESSAGE$,Screen Width]
  3701.    MAKE_A_BOX[97,51,221,63,0,0,0] : MAKE_A_BOX[98,52,220,62,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  3702.    Ink 1,3, : PLACE_TEXT_CENTRALLY[60,TEAMNAME$(THE_HOME_TEAM),Screen Width]
  3703.    MAKE_A_BOX[149,76,170,88,0,0,0] : MAKE_A_BOX[150,77,169,87,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  3704.    Ink 1,3, : PLACE_TEXT_CENTRALLY[85,"V",Screen Width]
  3705.    MAKE_A_BOX[97,100,221,112,0,0,0] : MAKE_A_BOX[98,101,220,111,FULL_BOX,EDGE_TOP,EDGE_BOTTOM]
  3706.    Ink 1,3, : PLACE_TEXT_CENTRALLY[109,TEAMNAME$(THE_AWAY_TEAM),Screen Width]
  3707.    PLACE_TEXT_CENTRALLY[134,"at "+STADIUM$(THE_HOME_TEAM),Screen Width]
  3708.    Ink 7,3, : PLACE_TEXT_CENTRALLY[170,"Watch the commentary?",Screen Width]
  3709.    Screen To Front 2
  3710.    CHECK_LEFT_RIGHT_CLICK
  3711.    WATCH_THE_GAME=Param
  3712. End Proc[WATCH_THE_GAME]
  3713. Procedure FIND_WHICH_TEAMS_PLAY[THE_HOME_TEAM,THE_AWAY_TEAM]
  3714.    Shared CURRENT_TEAM,NUMBER_IN_TEAM
  3715.    INITIALISE_MATCH_SQUAD_ARRAYS[THE_HOME_TEAM,THE_AWAY_TEAM]
  3716.    If THE_HOME_TEAM=CURRENT_TEAM
  3717.       DISPLAY_SQUAD[THE_HOME_TEAM]
  3718.       FIND_WHICH_PLAYER_TO_PICK[THE_HOME_TEAM,1,Param]
  3719.       TRANSFER_TEAM_TO_USER_TEAM[1,NUMBER_IN_TEAM]
  3720.       PICK_COMPUTER_TEAM[THE_HOME_TEAM,THE_AWAY_TEAM]
  3721.       GENERATE_COMPUTER_TACTICS[2]
  3722.    End If 
  3723.    If THE_AWAY_TEAM=CURRENT_TEAM
  3724.       DISPLAY_SQUAD[THE_AWAY_TEAM]
  3725.       FIND_WHICH_PLAYER_TO_PICK[THE_AWAY_TEAM,2,Param]
  3726.       TRANSFER_TEAM_TO_USER_TEAM[NUMBER_IN_TEAM+1,NUMBER_IN_TEAM*2]
  3727.       PICK_COMPUTER_TEAM[THE_HOME_TEAM,THE_AWAY_TEAM]
  3728.       GENERATE_COMPUTER_TACTICS[1]
  3729.    End If 
  3730.    If(THE_HOME_TEAM<>CURRENT_TEAM) and(THE_AWAY_TEAM<>CURRENT_TEAM)
  3731.       PICK_COMPUTER_TEAM[THE_HOME_TEAM,THE_AWAY_TEAM]
  3732.       GENERATE_COMPUTER_TACTICS[1]
  3733.    End If 
  3734.    SQUAD_VARIABLES_UPDATE
  3735. End Proc
  3736. Procedure GENERATE_RESULT[THE_HOME_TEAM,THE_AWAY_TEAM,WATCH_THE_GAME,TYPE]
  3737.    Shared TEAMNAME$(),LEAGUE_GOALS(),GOALS_HOME(),GOALS_AWAY()
  3738.    Shared SUCCESS,TEAM_WITH_BALL
  3739.    SUCCESS=0 : TEAM_WITH_BALL=THE_HOME_TEAM
  3740.    FIND_WHICH_TEAMS_PLAY[THE_HOME_TEAM,THE_AWAY_TEAM]
  3741.    Screen 3
  3742.    Cls 4 : MAKE_MATCH_BOX
  3743.    CALCULATE_GATE_RECEIPTS[THE_HOME_TEAM,THE_AWAY_TEAM] : THE_CROWD=Param
  3744.    Ink 5,3,
  3745.    PLACE_TEXT_CENTRALLY[20,"Attendance: "+Str$(THE_CROWD)-" ",Screen Width]
  3746.    Y_POS=30 : Screen To Front 3
  3747.    For X=1 To 21
  3748.       FIND_WHICH_ACTION_HAPPENS[THE_HOME_TEAM,THE_AWAY_TEAM,WATCH_THE_GAME,Y_POS,TYPE]
  3749.       If TYPE=1
  3750.          Ink 1,3, : Text 154,10,TEAMNAME$(THE_HOME_TEAM)+" "+Str$(LEAGUE_GOALS(THE_HOME_TEAM))-" "
  3751.          Ink 0,3, : Text 350,10,Str$(LEAGUE_GOALS(THE_AWAY_TEAM))-" "+" "+TEAMNAME$(THE_AWAY_TEAM)
  3752.       End If 
  3753.       If TYPE=2
  3754.          Ink 1,3, : Text 154,10,TEAMNAME$(THE_HOME_TEAM)+" "+Str$(GOALS_HOME(THE_HOME_TEAM)+GOALS_AWAY(THE_HOME_TEAM))-" "
  3755.          Ink 0,3, : Text 350,10,Str$(GOALS_AWAY(THE_AWAY_TEAM)+GOALS_HOME(THE_AWAY_TEAM))-" "+" "+TEAMNAME$(THE_AWAY_TEAM)
  3756.       End If 
  3757.       Add Y_POS,10
  3758.       If WATCH_THE_GAME=1 : Wait Rnd(25)+Rnd(24)+10 : End If 
  3759.    Next X
  3760.    If TYPE=1
  3761.       WORK_OUT_THE_RESULTS[THE_HOME_TEAM,THE_AWAY_TEAM]
  3762.    End If 
  3763.    If WATCH_THE_GAME=1 : Y_POS=248 : End If 
  3764.    If WATCH_THE_GAME=0 : Y_POS=35 : End If 
  3765.    Ink 7,3, : PLACE_TEXT_CENTRALLY[Y_POS,"F u l l    T i m e",Screen Width]
  3766.    CHECK_FOR_MOUSE_CLICK
  3767. End Proc
  3768. Procedure GENERATE_LEG_TWO_RESULTS[THE_HOME_TEAM,THE_AWAY_TEAM,WATCH_THE_GAME,TYPE]
  3769.    Shared TEAMNAME$(),GOALS_HOME(),GOALS_AWAY()
  3770.    Shared SUCCESS,TEAM_WITH_BALL
  3771.    SUCCESS=0 : TEAM_WITH_BALL=THE_HOME_TEAM : TIME_OF_MATCH=21
  3772.    FIND_WHICH_TEAMS_PLAY[THE_HOME_TEAM,THE_AWAY_TEAM]
  3773.    CALCULATE_GATE_RECEIPTS[THE_HOME_TEAM,THE_AWAY_TEAM] : THE_CROWD=Param
  3774.    Screen 3
  3775.    Repeat 
  3776.       Cls 4 : MAKE_MATCH_BOX
  3777.       Y_POS=30 : Screen To Front 3
  3778.       Ink 5,3,
  3779.       PLACE_TEXT_CENTRALLY[20,"Attendance: "+Str$(THE_CROWD)-" ",Screen Width]
  3780.       For X=1 To TIME_OF_MATCH
  3781.          FIND_WHICH_ACTION_HAPPENS[THE_HOME_TEAM,THE_AWAY_TEAM,WATCH_THE_GAME,Y_POS,TYPE]
  3782.          Ink 1,3, : Text 154,10,TEAMNAME$(THE_HOME_TEAM)+" "+Str$(GOALS_HOME(THE_HOME_TEAM)+GOALS_AWAY(THE_HOME_TEAM))-" "
  3783.          Ink 0,3, : Text 350,10,Str$(GOALS_AWAY(THE_AWAY_TEAM)+GOALS_HOME(THE_AWAY_TEAM))-" "+" "+TEAMNAME$(THE_AWAY_TEAM)
  3784.          Add Y_POS,10
  3785.          If WATCH_THE_GAME=1 : Wait Rnd(25)+Rnd(24)+10 : End If 
  3786.       Next X
  3787.       If GOALS_HOME(THE_HOME_TEAM)+GOALS_AWAY(THE_HOME_TEAM)=GOALS_HOME(THE_AWAY_TEAM)+GOALS_AWAY(THE_AWAY_TEAM)
  3788.          If WATCH_THE_GAME=1
  3789.             Ink 7,3, : PLACE_TEXT_CENTRALLY[248,"Match drawn, extra time to be played.",Screen Width]
  3790.          Else 
  3791.             Ink 7,3, : PLACE_TEXT_CENTRALLY[35,"Match drawn, extra time to be played.",Screen Width]
  3792.          End If 
  3793.          CHECK_FOR_MOUSE_CLICK
  3794.       End If 
  3795.       TIME_OF_MATCH=Rnd(11)+10
  3796.    Until(GOALS_HOME(THE_HOME_TEAM)+GOALS_AWAY(THE_HOME_TEAM))<>(GOALS_HOME(THE_AWAY_TEAM)+GOALS_AWAY(THE_AWAY_TEAM))
  3797.    If WATCH_THE_GAME=1 : Y_POS=248 : End If 
  3798.    If WATCH_THE_GAME=0 : Y_POS=35 : End If 
  3799.    Ink 7,3, : PLACE_TEXT_CENTRALLY[Y_POS,"F u l l    T i m e",Screen Width]
  3800.    CHECK_FOR_MOUSE_CLICK
  3801. End Proc
  3802. Procedure STORE_USER_TEAM_DATA
  3803.    Shared USER_TEAM(),NUMBER_IN_TEAM,FILENAME$
  3804.    STORE_FILENAME$=FILENAME$-".slamball"+".userteam_data"
  3805.    Open Out 1,STORE_FILENAME$
  3806.    For PERSON=1 To NUMBER_IN_TEAM
  3807.       Print #1,USER_TEAM(PERSON)
  3808.    Next PERSON
  3809.    Close 1
  3810. End Proc
  3811. Procedure RETRIEVE_USER_TEAM_DATA
  3812.    Shared USER_TEAM(),NUMBER_IN_TEAM,FILENAME$
  3813.    RETRIEVE_FILENAME$=FILENAME$-".slamball"+".userteam_data"
  3814.    Open In 1,RETRIEVE_FILENAME$
  3815.    For PERSON=1 To NUMBER_IN_TEAM
  3816.       Input #1,USER_TEAM(PERSON)
  3817.    Next PERSON
  3818.    Close 1
  3819. End Proc
  3820. '********************************************************************
  3821. RETRIEVE_INITIAL_STORED_DATA
  3822. INITIALISE_VARIABLES_WHEN_GAME_LOADS
  3823. Do 
  3824.    INITIALISE_MAIN_MENU_SCREEN
  3825.    QUIT_MENU=0
  3826.    Repeat 
  3827.       MAIN_MENU_SELECTION
  3828.    Until QUIT_MENU=1
  3829.    INITIALISE_NEW_GAME
  3830.    Repeat 
  3831.       PROMOTE_FLAG=0
  3832.       Repeat 
  3833.          MAIN_GAME_MENU_SELECTION
  3834.          If CURRENT_WEEK=29 and PROMOTE_FLAG=0
  3835.             PROMOTE_AND_RELEGATE
  3836.          End If 
  3837.       Until CURRENT_WEEK=SEASON_END or RESIGN_FLAG=MANAGER_HAS_RESIGNED or TEAM_CASH(CURRENT_TEAM)<0 or MANAGER_RATING<CLUB_RATING(CURRENT_TEAM) or MANAGER_AGE=70
  3838.       CHECK_MANAGER_DETAILS
  3839.    Until RESIGN_FLAG=MANAGER_HAS_RESIGNED
  3840. Loop