////////////////////////////////////////////////////////////////////////////////////////// // // // SCRIPT NAME : flyUnderBridges.sch // // AUTHOR : Ben Rollinson/Adam Westwood // // // ////////////////////////////////////////////////////////////////////////////////////////// USING "rage_builtins.sch" USING "globals.sch" CONST_INT SP_LA_RIVER_01 0 CONST_INT SP_LA_RIVER_02 1 CONST_INT SP_LA_RIVER_03 2 CONST_INT SP_LA_RIVER_04 3 CONST_INT SP_LA_RIVER_05 4 CONST_INT SP_LA_RIVER_06 5 CONST_INT SP_LA_RIVER_07 6 CONST_INT SP_LA_RIVER_08 7 CONST_INT SP_LA_RIVER_09 8 CONST_INT SP_LA_RIVER_10 9 CONST_INT SP_LA_RIVER_11 10 CONST_INT SP_LA_RIVER_12 11 CONST_INT SP_LA_RIVER_13 12 CONST_INT SP_LA_RIVER_14 13 CONST_INT SP_LA_RIVER_15 14 CONST_INT SP_LA_RIVER_16 15 CONST_INT SP_HIGHWAY_CS3 16 CONST_INT SP_DOUBLEARCH_CS3 17 CONST_INT SP_RAILARCH_CS1 18 CONST_INT SP_RAILLOW_CS4 19 CONST_INT SP_ROADLOW_CS4 20 CONST_INT SP_RAILLOW_CS2 21 CONST_INT SP_RAILLOW_CS3 22 CONST_INT SP_MADISON_CS3 23 CONST_INT SP_ROADLOW_CS6 24 CONST_INT SP_RAILLOW_CH3 25 CONST_INT SP_SEAARCH_CH3 26 CONST_INT SP_RAILHIGH_CH3 27 CONST_INT SP_RAILFREE_CH3 28 CONST_INT SP_ROADSUSP_PO1 29 CONST_INT SP_RAILLOW_CH1 30 CONST_INT SP_RAILLOW_PO1 31 CONST_INT SP_ROADLOW_PO1 32 CONST_INT SP_KNIFE_SM01 33 CONST_INT SP_KNIFE_2 34 CONST_INT SP_KNIFE_3 35 CONST_INT SP_KNIFE_4 36 CONST_INT SP_DOMES_PO1 37 CONST_INT SP_RAILROAD_CS2 38 CONST_INT SP_HELI_UNDER 39 CONST_INT SP_HELI_OVER 40 CONST_INT SP_CANAL_TRACK 41 CONST_INT SP_SPAGH_LOW 42 CONST_INT SP_CHINOZ_BRIDGE 43 CONST_INT SP_SC1_ARCH_BRIDGE 44 CONST_INT SP_LOW_CAST_IRON 45 CONST_INT SP_CS_FREEWAY 46 CONST_INT SP_CH1_RIVER 47 CONST_INT SP_CH3_OVERPASS 48 CONST_INT SP_CH3_RAILBRIDGE 49 CONST_INT SP_KNIFE_5 50 CONST_INT SP_KNIFE_6 51 CONST_INT SP_KNIFE_7 52 CONST_INT SP_KNIFE_8 53 CONST_INT SP_KNIFE_9 54 CONST_INT SP_KNIFE_10 55 CONST_INT SP_KNIFE_11 56 CONST_INT SP_KNIFE_12 57 CONST_INT SP_KNIFE_13 58 CONST_INT SP_KNIFE_14 59 CONST_INT SP_KNIFE_15 60 CONST_INT SP_BRIDGE_47 61 CONST_INT SP_BRIDGE_48 62 CONST_INT SP_BRIDGE_49 63 CONST_INT SP_BRIDGE_50 64 CONST_INT SP_EXTRA_SUSP_1 65 CONST_INT SP_EXTRA_SUSP_2 66 CONST_INT SP_FREEWAY_1 67 CONST_INT SP_FREEWAY_2 68 CONST_INT SP_FREEWAY_3 69 CONST_INT SP_NUMBER_OF_BRIDGES 50 CONST_INT SP_NUMBER_OF_KNIVES 15 CONST_INT SP_NUMBER_OF_CHALLENGES 70 // Includes 2 extras for the suspension bridge FUNC BOOL IS_INDEX_A_KNIFE_FLIGHT(INT iFlightIndex) SWITCH iFlightIndex CASE SP_KNIFE_SM01 CASE SP_KNIFE_2 CASE SP_KNIFE_3 CASE SP_KNIFE_4 CASE SP_KNIFE_5 CASE SP_KNIFE_6 CASE SP_KNIFE_7 CASE SP_KNIFE_8 CASE SP_KNIFE_9 CASE SP_KNIFE_10 CASE SP_KNIFE_11 CASE SP_KNIFE_12 CASE SP_KNIFE_13 CASE SP_KNIFE_14 CASE SP_KNIFE_15 RETURN TRUE BREAK ENDSWITCH RETURN FALSE ENDFUNC FUNC INT GET_NUMBER_OF_COMPLETED_UNDER_BRIDGES() INT completeCount, iTemp REPEAT 32 iTemp IF IS_BIT_SET(g_savedGlobals.sAmbient.iBridgesFlownUnderFlags, iTemp) IF NOT IS_INDEX_A_KNIFE_FLIGHT(iTemp) completeCount++ ENDIF ENDIF IF IS_BIT_SET(g_savedGlobals.sAmbient.iBridgesFlownUnderFlags2, iTemp) IF NOT IS_INDEX_A_KNIFE_FLIGHT(iTemp+32) completeCount++ ENDIF ENDIF IF IS_BIT_SET(g_savedGlobals.sAmbient.iBridgesFlownUnderFlags3, iTemp) IF NOT IS_INDEX_A_KNIFE_FLIGHT(iTemp+64) completeCount++ ENDIF ENDIF ENDREPEAT RETURN completeCount ENDFUNC FUNC INT GET_NUMBER_OF_COMPLETED_KNIFE_FLIGHTS() INT completeCount, iTemp REPEAT 32 iTemp IF IS_BIT_SET(g_savedGlobals.sAmbient.iBridgesFlownUnderFlags, iTemp) IF IS_INDEX_A_KNIFE_FLIGHT(iTemp) completeCount++ ENDIF ENDIF IF IS_BIT_SET(g_savedGlobals.sAmbient.iBridgesFlownUnderFlags2, iTemp) IF IS_INDEX_A_KNIFE_FLIGHT(iTemp+32) completeCount++ ENDIF ENDIF IF IS_BIT_SET(g_savedGlobals.sAmbient.iBridgesFlownUnderFlags3, iTemp) IF IS_INDEX_A_KNIFE_FLIGHT(iTemp+64) completeCount++ ENDIF ENDIF ENDREPEAT RETURN completeCount ENDFUNC