Advertisement
Deji

Black Market Brainfuckery

Mar 5th, 2014
294
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. :Abuse
  2. HEX
  3. 0A00 01 @InitProc
  4. END
  5. {
  6.    VAR_1  - Last Time Sync'd (Weed)
  7.    VAR_2  - fWavyness
  8.    VAR_3  - Green-ness
  9.    VAR_4  - Blurryness
  10.    VAR_5  - Last Drug Drop
  11.    VAR_6  - Puke Particle
  12.    VAR_7  - OD Stage
  13. }
  14.  
  15. IF NOT IS_PLAYER_PLAYING player1
  16. THEN
  17.    CALL @ClearAllDrugLevels 0
  18.    GOTO @Abuse_End
  19. END
  20.  
  21. WRITE_MEMORY 0x8CBA6C 4 0.5 FALSE       // revert audio speed to default in case we're not messing with it...
  22.  
  23. GET_GAME_TIMER TEMP_1
  24. 0062: TEMP_1 -= gTimeOverdosed
  25.  
  26. IF 0039:   gHasOverdosed == 0
  27. THEN
  28.    0087: TEMP_1 = gSaveStatDrugExperience
  29.    TEMP_1 /= 5.0
  30.    0093: TEMP_2 = int_to_float gDrugLevelInSystem
  31.    0063: TEMP_2 -= TEMP_1
  32.    IF TEMP_2 < 25.0
  33.    THEN
  34.        IF TEMP_2 > 0
  35.        THEN
  36.            0006: gHasOverdosed = 1
  37.            VAR_7 = 0
  38.            GET_GAME_TIMER gTimeOverdosed
  39.            SHUT_CHAR_UP scplayer TRUE
  40.            DAMAGE_CHAR scplayer 10 FALSE
  41.            REQUEST_ANIMATION "FOOD"
  42.            IF NOT HAS_ANIMATION_LOADED "BLACKMARKET"
  43.            THEN REQUEST_ANIMATION "BLACKMARKET"
  44.            END
  45.            000A: gNumAnimReferences += 1
  46.        END
  47.    ELSE
  48.        0006: gHasOverdosed = 1
  49.        VAR_7 = -1                          // K/O
  50.        GET_GAME_TIMER gTimeOverdosed
  51.    END
  52. ELSE
  53.    IF VAR_7 == -1
  54.    THEN
  55.        DO_FADE FADE_OUT 3000
  56.        VAR_7 = -2
  57.    ELSE
  58.        IF VAR_7 == -2
  59.        THEN
  60.            IF NOT GET_FADING_STATUS
  61.            THEN
  62.                SET_CHAR_HEALTH scplayer 0
  63.                0006: gHasOverdosed = 0
  64.                VAR_7 = 0
  65.                GET_GAME_TIMER gTimeOverdosed
  66.            END
  67.        END
  68.    END
  69.    IF VAR_7 == 0
  70.    THEN
  71.        IF TEMP_1 >= 20000
  72.        THEN
  73.            IF AND
  74.                HAS_ANIMATION_LOADED "FOOD"
  75.                HAS_ANIMATION_LOADED "BLACKMARKET"
  76.            THEN
  77.                GET_GAME_TIMER gTimeOverdosed
  78.                DIM_SCREEN ON -1
  79.                
  80.                IF IS_CHAR_ON_FOOT scplayer
  81.                THEN
  82.                    GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer 0.355 -0.116 -0.048 STORE_TO TEMP_2 TEMP_3 TEMP_4  
  83.                    CREATE_PARTICLE "PUKE" TEMP_2 TEMP_3 TEMP_4  1 VAR_6
  84.                    TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer "EAT_VOMIT_P" "FOOD" 1004.0 0 0 0 0 -1
  85.                    VAR_7 = 1
  86.                ELSE
  87.                    VAR_7 = 3
  88.                    FOR TEMP_2 = MIN_DRUG TO MAX_DRUG
  89.                        CALL @DecDrugLevel 2 TEMP_2 5
  90.                    END
  91.                    0006: gHasOverdosed = 0
  92.                END
  93.            END
  94.        END
  95.    ELSE
  96.        IF TEMP_1 >= 2000
  97.        THEN
  98.            IF IS_CHAR_PLAYING_ANIM scplayer "EAT_VOMIT_P"
  99.            THEN
  100.                GET_CHAR_ANIM_CURRENT_TIME scplayer "EAT_VOMIT_P" TEMP_2
  101.            ELSE
  102.                TEMP_2 = 1.0
  103.            END
  104.            IF VAR_7 == 1
  105.            THEN
  106.                IF TEMP_2 >= 0.463
  107.                THEN
  108.                    SAY_AMBIENT_SPEECH scplayer 353 TEMP_3
  109.                    VAR_7 = 2
  110.                END
  111.            ELSE
  112.                IF VAR_7 == 2
  113.                THEN
  114.                    IF TEMP_2 >= 0.52
  115.                    THEN
  116.                        VAR_7 = 3
  117.                        FOR TEMP_2 = MIN_DRUG TO MAX_DRUG
  118.                            CALL @DecDrugLevel 2 TEMP_2 5
  119.                        END
  120.                        MARK_PARTICLE_AS_NO_LONGER_NEEDED VAR_6
  121.                        GET_GAME_TIMER gTimeOverdosed
  122.                    END
  123.                ELSE
  124.                    IF VAR_7 == 3
  125.                    THEN
  126.                        GET_GAME_TIMER TEMP_1
  127.                        0062: TEMP_1 -= gTimeOverdosed
  128.                    END
  129.                    IF VAR_7 == 4
  130.                    THEN
  131.                        REMOVE_ANIMATION "FOOD"
  132.                        IF 8019:   NOT gNumAnimReferences > 0
  133.                        THEN
  134.                            REMOVE_ANIMATION "BLACKMARKET"
  135.                        END
  136.                        CALL @Abuse_SetGameSpeed 1 1.0
  137.                        DIM_SCREEN OFF -1
  138.                        SHUT_CHAR_UP scplayer FALSE
  139.                        0006: gHasOverdosed = 0
  140.                    END
  141.                END
  142.            END
  143.        END
  144.    END
  145.    
  146.    IF AND
  147.        VAR_7 >= 1
  148.        NOT VAR_7 == 4
  149.    THEN
  150.        0093: TEMP_2 = int_to_float TEMP_1
  151.        TEMP_2 /= 3000.0
  152.        TEMP_2 *= 0.5
  153.        IF TEMP_2 > 0.5
  154.        THEN TEMP_2 = 0.5
  155.        END
  156.        
  157.        IF VAR_7 == 3
  158.        THEN
  159.            TEMP_3 = 0.5
  160.            005B: TEMP_3 += TEMP_2
  161.        ELSE
  162.            TEMP_3 = 1.0
  163.            0063: TEMP_3 -= TEMP_2
  164.        END
  165.        
  166.        CALL @Abuse_SetGameSpeed 1 TEMP_3
  167.        
  168.        TEMP_3 = 255.0
  169.        006B: TEMP_3 *= TEMP_2
  170.        0092: TEMP_3 = float_to_int TEMP_3
  171.        
  172.        IF VAR_7 == 3
  173.        THEN
  174.            0A8F: TEMP_3 = 128 - TEMP_3
  175.        END
  176.        
  177.        IF TEMP_3 <= 0
  178.        THEN
  179.            DIM_SCREEN ON 0
  180.        ELSE
  181.            IF TEMP_3 >= 127
  182.            THEN
  183.                DIM_SCREEN ON 127
  184.            ELSE
  185.                DIM_SCREEN ON TEMP_3
  186.            END
  187.        END
  188.        
  189.        IF VAR_7 == 3
  190.        THEN
  191.            IF TEMP_2 >= 0.5
  192.            THEN
  193.                VAR_7 = 4
  194.            END
  195.        END
  196.    END
  197. END
  198.  
  199. IF 0021:   gSmokeBlown > 0.0
  200. THEN
  201.    GET_CHAR_COORDINATES scplayer TEMP_1 TEMP_2 TEMP_3
  202.    GET_DISTANCE_BETWEEN_COORDS_3D TEMP_1 TEMP_2 TEMP_3 AND gSmokeBlownX gSmokeBlownY gSmokeBlownZ STORE_TO TEMP_4
  203.    IF TEMP_4 > 20.0
  204.    THEN
  205.        0007: gSmokeBlown = 0
  206.    ELSE
  207.        GET_CHAR_SPEED scplayer TEMP_1
  208.        GET_ACTIVE_INTERIOR TEMP_2
  209.        IF TEMP_2 == 0
  210.        THEN
  211.            TEMP_1 /= 400.0
  212.            0063: gSmokeBlown -= TEMP_1
  213.            007F: gSmokeBlown -= frame_delta_time * 0.0008
  214.        ELSE
  215.            TEMP_1 /= 1600.0
  216.            0063: gSmokeBlown -= TEMP_1
  217.            007F: gSmokeBlown -= frame_delta_time * 0.0002
  218.        END
  219.        
  220.        GET_GAME_TIMER TEMP_1
  221.        0062: TEMP_1 -= gLastSmokeEmission
  222.        IF TEMP_1 > 250
  223.        THEN
  224.            IF TEMP_2 == 0
  225.            THEN
  226.                TEMP_7 = 0.005
  227.            ELSE
  228.                TEMP_7 = 0.01
  229.            END
  230.            006B: TEMP_7 *= gSmokeBlown
  231.            IF TEMP_7 > 1.0
  232.            THEN
  233.                TEMP_7 = 1.0
  234.            END
  235.            IF TEMP_2 == 0
  236.            THEN
  237.                FOR TEMP_3 = 0 TO 8
  238.                    GENERATE_RANDOM_FLOAT_IN_RANGE -6.0 6.0 TEMP_1
  239.                    GENERATE_RANDOM_FLOAT_IN_RANGE -6.0 6.0 TEMP_2
  240.                    GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer TEMP_1 TEMP_2 -0.5 TEMP_4 TEMP_5 TEMP_6
  241.                    READ_MEMORY 0xC813E0 4 FALSE TEMP_8     // windvelX
  242.                    READ_MEMORY 0xC813E4 4 FALSE TEMP_9     // windvelY
  243.                    CREATE_SMOKE TEMP_4 TEMP_5 TEMP_6 VELOCITY TEMP_8 TEMP_9 0.15 RGBA 2.0 2.0 2.0 TEMP_7 SIZE 0.5 LAST_FACTOR 2.0
  244.                END
  245.            ELSE
  246.                FOR TEMP_3 = 0 TO 8
  247.                    GENERATE_RANDOM_FLOAT_IN_RANGE -6.0 6.0 TEMP_1
  248.                    GENERATE_RANDOM_FLOAT_IN_RANGE -6.0 6.0 TEMP_2
  249.                    GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer TEMP_1 TEMP_2 -0.5 TEMP_4 TEMP_5 TEMP_6
  250.                    CREATE_SMOKE TEMP_4 TEMP_5 TEMP_6 VELOCITY 0 0 0.15 RGBA 2.0 2.0 2.0 TEMP_7 SIZE 0.5 LAST_FACTOR 2.0
  251.                END
  252.            END
  253.            GET_GAME_TIMER gLastSmokeEmission
  254.        END
  255.    END
  256. ELSE
  257.    IF 0023:   0 > gSmokeBlown
  258.    THEN 0007: gSmokeBlown = 0
  259.    END
  260. END
  261.  
  262. VAR_2 = 0
  263. VAR_3 = 0
  264. VAR_4 = 0
  265. TEMP_4 = 0.0
  266.  
  267. IF 803B:   NOT gWeedLevel == gWeedLevelInSystem
  268. THEN
  269.    GET_GAME_TIMER TEMP_6
  270.    0062: TEMP_6 -= VAR_1
  271.    IF TEMP_6 > 2000
  272.    THEN
  273.        IF 001D:   gWeedLevel > gWeedLevelInSystem
  274.        THEN
  275.            CALL @IncDrugLevelInSystem 2 WEED 1
  276.        ELSE
  277.            CALL @DecDrugLevelInSystem 2 WEED 1
  278.        END
  279.        
  280.        GET_GAME_TIMER VAR_1
  281.    END
  282. ELSE
  283.    GET_GAME_TIMER VAR_1
  284. END
  285.  
  286. GET_GAME_TIMER TEMP_1
  287. 0A8F: TEMP_2 = TEMP_1 - VAR_5
  288. IF TEMP_2 > 20000
  289. THEN
  290.    IF 0019:   gWeedLevel > 0
  291.    THEN
  292.        0A8F: TEMP_2 = TEMP_1 - gWeedTimeLastTook
  293.        IF TEMP_2 > 10000
  294.        THEN
  295.            CALL @DecDrugLevel 1 WEED
  296.        END
  297.    END
  298.    
  299.    GET_GAME_TIMER VAR_5
  300. END
  301.  
  302. IF 0019:   gWeedLevelInSystem > 0
  303. THEN
  304.    008F: gWeedEffectLevel = int_to_float gWeedLevelInSystem
  305.    0017: gWeedEffectLevel /= 16.0
  306.    
  307.    TEMP_1 = 127.0
  308.    006B: TEMP_1 *= gWeedEffectLevel
  309.    0092: TEMP_1 = float_to_int TEMP_1
  310.    005A: VAR_4 += TEMP_1
  311.    
  312.    TEMP_1 = 1.5
  313.    006B: TEMP_1 *= gWeedEffectLevel
  314.    005B: VAR_2 += TEMP_1
  315.    
  316.    IF 0021:   gWeedEffectLevel > 0.75
  317.    THEN
  318.        0087: TEMP_2 = gWeedEffectLevel
  319.        TEMP_2 -= 0.75
  320.        TEMP_1 = 100.0
  321.        006B: TEMP_1 *= TEMP_2
  322.        0092: TEMP_1 = float_to_int TEMP_1
  323.        005A: VAR_3 += TEMP_1
  324.    END
  325. ELSE
  326.    0006: gWeedLevelInSystem = 0
  327.    0007: gWeedEffectLevel = 0.0
  328. END
  329.  
  330. {IF //VAR_1 > 15000
  331.    VAR_1 > 1000 // (debug)
  332. THEN
  333.    SET_PLAYER_MOOD player1 PLAYER_MOOD_CALM 999999
  334.    GET_GAME_TIMER TEMP_5
  335.    0A8F: TEMP_6 = TEMP_5 - VAR_1
  336. END}
  337.  
  338. IF VAR_3 > 150
  339. THEN
  340.    VAR_3 = 150
  341. END
  342.  
  343. IF VAR_4 > 140
  344. THEN
  345.    VAR_4 = 140
  346. END
  347.  
  348. IF VAR_2 > 1.0
  349. THEN
  350.    VAR_2 = 1.0
  351. END
  352.  
  353. //PRINT_FORMATTED "%g %d" 1 gWeedEffectLevel gWeedLevelInSystem
  354.  
  355. IF VAR_3 > 0
  356. THEN
  357.    0A8F: TEMP_1 = 255 - VAR_3
  358.    0A8F: TEMP_2 = 255 - VAR_3
  359.    //0A8E: TEMP_3 = 255 + VAR_3
  360.    TEMP_3 = 255
  361.    CALL @Abuse_SetBlurRGB 3 TEMP_1 TEMP_3 TEMP_2
  362.    CALL @Abuse_SetBlurIntensity 1 VAR_4
  363. ELSE
  364.    CALL @Abuse_ResetBlur 0
  365. END
  366.  
  367. IF VAR_2 > 0.0
  368. THEN
  369.    GET_CHAR_SPEED scplayer TEMP_1
  370.    READ_MEMORY 0xC73C58 4 FALSE TEMP_2
  371.    
  372.    IF TEMP_1 >= 40.0
  373.    THEN
  374.        TEMP_1 = 1.0
  375.    ELSE
  376.        IF TEMP_1 <= 0.05
  377.        THEN
  378.            TEMP_1 = 0.05
  379.        ELSE
  380.            TEMP_1 /= 40.0
  381.        END
  382.    END
  383.    
  384.    TEMP_1 *= 0.25
  385.    0087: TEMP_3 = TEMP_1
  386.    0063: TEMP_3 -= TEMP_2
  387.    ABSF_L TEMP_3
  388.    
  389.    IF TEMP_3 > 0.00025
  390.    THEN
  391.        TEMP_3 *= 0.0125
  392.        IF 001D:   TEMP_1 > TEMP_2
  393.        THEN
  394.            007B: TEMP_2 += frame_delta_time * TEMP_3
  395.        ELSE
  396.            0081: TEMP_2 -= frame_delta_time * TEMP_3
  397.        END
  398.        IF IS_CHAR_SHOOTING scplayer
  399.        THEN
  400.            TEMP_2 *= 1.7   // jolt
  401.        END
  402.        IF TEMP_2 > 1.5
  403.        THEN
  404.            TEMP_2 = 1.5
  405.        END
  406.    ELSE
  407.        0087: TEMP_2 = TEMP_1
  408.    END
  409.    
  410.    006B: TEMP_2 *= VAR_2
  411.    WRITE_MEMORY 0xC73C58 4 TEMP_2 FALSE        // wavy motion
  412. END
  413.  
  414. GENERATE_RANDOM_FLOAT_IN_RANGE 0.7 0.72 TEMP_1
  415.  
  416. :Abuse_End
  417. GOSUB @EndProc
  418. RET 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement