Hacked Effects - shawna-p/mysterious-messenger GitHub Wiki

Notice

These pages are out of date! The most recent version of the documentation can be found here: https://mysterious-messenger.readthedocs.io/en/stable/

This page is retained so that it can still be linked to.

Hacked Effects

In your route, you may want to cause the program to appear as though it has been hacked. There are a few features to help you achieve this look. First, there is a variable called hacked_effect that, if set to True, will cause the chatroom timeline to have additional "broken" backgrounds, and will also show a glitchy screen tear effect every 10 seconds or so. You can set this variable to True at any point during your route; simply including the line

$ hacked_effect = True

in an after_ label, for example, will activate it. Similarly, $ hacked_effect = False will get rid of these effects.

While you are testing a route, there is also an option to toggle the hacked_effect on/off in the Developer settings from the chat hub screen.

Note: Many players may find the hacked effects distracting or irritating, so they should be used sparingly. There are also options in the Settings screen to turn off these effects, so know that not every player will be able to see or appreciate these effects.

The tear screen

There is a special screen called the tear screen which will cause the screen to be split into several smaller pieces that are offset a little from their original position. It's used to create the hacked effect in the chatroom timeline screen, but can also be shown in the middle of any ordinary chatroom/phone call/VN Mode/etc. You can call it like so:

call tear_screen(number=10, offtimeMult=0.4, ontimeMult=0.4,
    offsetMin=-10, offsetMax=30, w_timer=0.18, p=0.5)

where 10 is the number of pieces to tear; 0.4 is the value for both offtimeMult and ontimeMult respectively -- this controls how much the pieces bounce back and forth; -10 is the minimum offset for the pieces (this can be negative, positive, or zero); 30 is the maximum offset for the pieces (can also be negative, positive, or zero; offset just means how far the pieces will move away from their origin point, in pixels); and 0.5 is how long the program should display the tear screen for before hiding.

You can also briefly show an image on-screen before showing the tear screen in order to have that image "torn" as well. For this, you can use the special screen display_img:

show screen display_img([ ['vn_party', 200, 400] ])
pause 0.0001
call tear_screen(40, 0.4, 0.2, -100, 100, 0.3, 0.3)
hide screen display_img

The display_img screen will show an image in the specified position. It takes a lists of lists as its sole parameter. Each item in the list should be a list of three items: the image to display (which can be the name of a previously declared image, as above, a string with a path to the file name, or a Transform with the image, among other things), then the xpos, and then the ypos. So, in this case, the program displays the image 'vn_party' at an xpos of 200 and a ypos of 400.

The short pause after showing the display_img screen gives the program enough time to register the images before it takes a screenshot for the tear screen. Call the tear screen as normal. Be sure to hide the display_img screen at the end.

The hack_rectangle screen

The hack_rectangle screen will also help create a "hacked" effect. It will show several random rectangles on the screen, and works well when paired with the tear screen. For example:

call hack_rectangle_screen(t=0.2, p=0.01)
call tear_screen(number=10, offtimeMult=0.4, ontimeMult=0.2,
    offsetMin=-10, offsetMax=30, w_timer=0.18, p=0.18)

This will show the hack_rectangle screen for 0.2 seconds (t=0.2), and after pausing for 0.01 seconds (p=0.01) to give the program time to register the images on-screen, it shows the tear screen for 0.18 seconds.

Static white squares

The program also has a screen called white_squares which randomly shows a sequence of white "static" squares on top of the screen. It is used for the chatroom select screen when hacked_effect is True. To call it, use

call white_square_screen(t=0.16, p=0.17)

where t=0.16 is how long to show the screen for (0.16 seconds) and p=0.17 tells the program how long to pause for before continuing (0.17 seconds).

Inverting the screen colours

Finally, there is also a screen called invert which will take a screenshot of the currently displayed screen and invert the colours:

call invert_screen(t=0.19, p=0.2)

where t=0.19 is how long to show the screen for (0.19 seconds) and p=0.2 is how long the program should pause for before continuing (0.2 seconds). This works well with screens that were previously mentioned. For example:

call hack_rectangle_screen(t=0.2, p=0.01)
call invert_screen(t=0.19, p=0.01)
call tear_screen(number=10, offtimeMult=0.4, ontimeMult=0.2,
            offsetMin=-10, offsetMax=30, w_timer=0.18, p=0.01)
call white_square_screen(t=0.16, p=0.17)