Deltarune (Chapter 4) script viewer

← back to main script listing

gml_Object_obj_gerson_hits_box_Step_0

(view raw script w/o annotations or w/e)
1
image_index += 0.5;
2
if (image_index == 4)
3
{
4
    snd_play_x(snd_stardrop, 1, 1 + (irandom(4) / 10));
5
    var a = 1;
6
    var b = 1;
7
    var yoffset = 20;
8
    repeat (2)
9
    {
10
        if (image_xscale == -2)
11
        {
12
            anim = instance_create(obj_growtangle.x + 75, obj_growtangle.y + yoffset, obj_gerson_growtangle_hit_fx);
13
            anim.dir = 1;
14
            anim.image_xscale = a * -1;
15
            anim.image_yscale = b;
16
        }
17
        else
18
        {
19
            anim = instance_create(obj_growtangle.x - 75, obj_growtangle.y + yoffset, obj_gerson_growtangle_hit_fx);
20
            anim.dir = -1;
21
            anim.image_xscale = a;
22
            anim.image_yscale = b;
23
        }
24
        anim.sprite_index = spr_gerson_box_hit_fx1;
25
        anim.image_speed = 1.5;
26
        yoffset = -20;
27
        b = -1;
28
    }
29
    if (image_xscale == -2)
30
    {
31
        obj_hammer_of_justice_enemy.hitbox_con = 1;
32
        var slowbullet1 = irandom(8);
33
        var slowbullet2 = slowbullet1 + 1;
34
        var slowbullet3 = slowbullet1 + 5;
35
        if (slowbullet3 > 8)
36
            slowbullet3 -= 10;
37
        var slowbullet4 = slowbullet3 + 1;
38
        var side_x = -80;
39
        var dir = 0;
40
        if (global.turntimer > 1 && i_ex(obj_growtangle))
41
        {
42
            for (i = 0; i < 7; i++)
43
            {
44
                bulletshot = instance_create(obj_growtangle.x + side_x, (obj_growtangle.y - 70) + (23 * i), obj_box_hit_bullet);
45
                with (bulletshot)
46
                    
scr_bullet_init
scr_bullet_init

function
scr_bullet_init()
{ grazed = 0; grazetimer = 0; destroyonhit = 1; target = 0; inv = 60; damage = 10; element = 0; grazepoints = 1; timepoints = 1; active = 1; updateimageangle = 0; }
();
47
                bulletshot.direction = dir;
48
                bulletshot.speed = 11.5;
49
                bulletshot.friction = 0.14;
50
                bulletshot.depth = depth - 1;
51
                bulletshot.timermax = 43;
52
                if (i == slowbullet1 || i == slowbullet2 || i == slowbullet3 || i == slowbullet4)
53
                {
54
                    bulletshot.speed = 7.3 + choose(1, 2);
55
                    bulletshot.friction = 0.08;
56
                }
57
            }
58
        }
59
    }
60
    else
61
    {
62
        obj_hammer_of_justice_enemy.hitbox_con = 2;
63
        var slowbullet1 = irandom(8);
64
        var slowbullet2 = slowbullet1 + 1;
65
        var slowbullet3 = slowbullet1 + 5;
66
        if (slowbullet3 > 8)
67
            slowbullet3 -= 10;
68
        var slowbullet4 = slowbullet3 + 1;
69
        var side_x = 80;
70
        var dir = 180;
71
        if (global.turntimer > 1 && i_ex(obj_growtangle))
72
        {
73
            for (i = 0; i < 7; i++)
74
            {
75
                bulletshot = instance_create(obj_growtangle.x + side_x, (obj_growtangle.y - 70) + (23 * i), obj_box_hit_bullet);
76
                with (bulletshot)
77
                    
scr_bullet_init
scr_bullet_init

function
scr_bullet_init()
{ grazed = 0; grazetimer = 0; destroyonhit = 1; target = 0; inv = 60; damage = 10; element = 0; grazepoints = 1; timepoints = 1; active = 1; updateimageangle = 0; }
();
78
                bulletshot.direction = dir;
79
                bulletshot.speed = 11.5;
80
                bulletshot.friction = 0.14;
81
                bulletshot.depth = depth - 1;
82
                bulletshot.timermax = 43;
83
                if (i == slowbullet1 || i == slowbullet2 || i == slowbullet3 || i == slowbullet4)
84
                {
85
                    bulletshot.speed = 7.3 + choose(1, 2);
86
                    bulletshot.friction = 0.08;
87
                }
88
            }
89
        }
90
    }
91
    snd_play(snd_impact);
92
}
93
if (image_index > 6.5)
94
{
95
    instance_destroy();
96
    if (image_xscale == -2)
97
        instance_create(x - 60, y + 40, obj_gerson_teleport);
98
    else
99
        instance_create(x + 60, y + 40, obj_gerson_teleport);
100
}