Deltarune (Chapter 5) script viewer

← back to main script listing

gml_Object_obj_shadowman_tommygun_Step_0

related scripts: Create_0Destroy_0Draw_0Step_0

(view raw script w/o annotations or w/e)
1
if (i_ex(obj_growtangle))
2
{
3
    timer++;
4
    if (timer < 14)
5
        x = lerp(x, 
scr_get_box
scr_get_box

function
scr_get_box(arg0)
{ switch (arg0) { case 0: return obj_growtangle.x + (obj_growtangle.sprite_width * 0.5); break; case 1: return obj_growtangle.y - (obj_growtangle.sprite_height * 0.5); break; case 2: return obj_growtangle.x - (obj_growtangle.sprite_width * 0.5); break; case 3: return obj_growtangle.y + (obj_growtangle.sprite_height * 0.5); break; case 4: return obj_growtangle.x; break; case 5: return obj_growtangle.y; break; return false; } }
(0) + 122, 0.16);
6
    if (timer == 14)
7
    {
8
        sprite_index = spr_shadowman_idle_fox;
9
        image_speed = 1;
10
    }
11
}
12
if (global.turntimer < 13)
13
{
14
    if (global.turntimer < 1)
15
    {
16
        instance_destroy();
17
        exit;
18
    }
19
    x = lerp(x, creatorid.x, (12 - global.turntimer) / 12);
20
    y = lerp(y, creatorid.y, (12 - global.turntimer) / 12);
21
}
22
if (paused || timer < 14 || (global.turntimer < 29 && bullet_counter == 0))
23
    exit;
24
if (bullet_timer > 0)
25
{
26
    bullet_timer--;
27
}
28
else
29
{
30
    snd_stop(snd_gunshot_b);
31
    snd = audio_play_sound(snd_gunshot_b, 0, 0);
32
    snd_pitch(snd_gunshot_b, 0.95 + (random(10) / 100));
33
    snd_volume(snd_gunshot_b, 0.7, 0);
34
    sprite_index = spr_shadowman_firing;
35
    shootsfx = 6;
36
    firefx = 2;
37
    gunshake = 6;
38
    var rep = 1;
39
    if (type == 1)
40
        rep = 5;
41
    var bullet_speed = 4 + random(3);
42
    repeat (rep)
43
    {
44
        var ang = (point_direction(x + 6 + lengthdir_x(gunshake, gun_angle), y + 63 + lengthdir_y(gunshake, gun_angle), obj_growtangle.x, obj_growtangle.y) - 30) + irandom(60);
45
        if (type == 1)
46
            ang = 120 + irandom(90);
47
        count++;
48
        if (count == 5 && instance_number(obj_dbulletcontroller) != 3)
49
        {
50
            count = -10;
51
            ang = (point_direction(x + 6 + lengthdir_x(gunshake, gun_angle), y + 63 + lengthdir_y(gunshake, gun_angle), obj_heart.x + 10, obj_heart.y + 10) + 6) - irandom(12);
52
        }
53
        netskie_count++;
54
        if (netskie_count == 2 || netskie_count == 5 || netskie_count == 8 || netskie_count == 11 || netskie_count == 14 || netskie_count == 17 || netskie_count == 20)
55
            ang = 158 + random(31);
56
        gun_angle = ang;
57
        depth = -9999;
58
        var tommybullet = 
scr_fire_bullet
scr_fire_bullet

function
scr_fire_bullet(arg0, arg1, arg2, arg3, arg4, arg5 = -4, arg6 = 0, arg7 = false, arg8 = 87135)
{ var bullet; if (arg8 != 87135) bullet = instance_create_depth(arg0, arg1, arg8, arg2); else bullet = instance_create(arg0, arg1, arg2); with (bullet) { direction = arg3; speed = arg4; if (arg5 != -4) sprite_index = arg5; updateimageangle = arg6; if (arg6) image_angle = arg3; if (arg7) { with (other)
scr_bullet_inherit(other.id);
} } return bullet; } function scr_fire_bullet_colorize(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7 = 0) { var bullet = instance_create(arg0, arg1, arg2); with (bullet) { direction = arg3; speed = arg4; sprite_index = arg5; image_blend = arg6; updateimageangle = arg7; if (arg7) image_angle = arg3; } return bullet; }
(x + 6 + lengthdir_x(60, gun_angle), y + 64 + lengthdir_y(60, gun_angle), obj_tommygun_bullet, 180, bullet_speed, spr_tommygun_bullet);
59
        tommybullet.direction = ang;
60
        tommybullet.damage = 55;
61
        tommybullet.grazepoints = 9;
62
        tommybullet.target = target;
63
        tommybullet.image_angle = tommybullet.direction;
64
        tommybullet.depth = depth + 1;
65
        if (netskie_count == 2 || netskie_count == 5 || netskie_count == 8 || netskie_count == 11 || netskie_count == 14 || netskie_count == 17 || netskie_count == 20)
66
        {
67
            tommybullet.netskie = true;
68
            tommybullet.sprite_index = spr_tommygun_bullet_netskie;
69
        }
70
        else
71
        {
72
            with (tommybullet)
73
                
scr_script_delayed
scr_script_delayed

function
scr_script_delayed()
{ var __scriptdelay = instance_create(0, 0, obj_script_delayed); __scriptdelay.script = argument[0]; __scriptdelay.alarm[0] = argument[1]; __scriptdelay.target = id; for (var __i = 0; __i < (argument_count - 2); __i++) __scriptdelay.script_arg[__i] = argument[__i + 2]; __scriptdelay.arg_count = argument_count - 2; return __scriptdelay; } function scr_script_delayed_until() { var __scriptdelay = instance_create(0, 0, obj_script_delayed_function); __scriptdelay.script = argument[0]; __scriptdelay.condition = argument[1]; __scriptdelay.target = id; for (var __i = 0; __i < (argument_count - 2); __i++) __scriptdelay.script_arg[__i] = argument[__i + 2]; __scriptdelay.arg_count = argument_count - 2; return __scriptdelay; } function delay_function(arg0, arg1) { return
scr_script_delayed(arg0, arg1);
}
(scr_lerpvar_instance, abs(x -
scr_get_box
scr_get_box

function
scr_get_box(arg0)
{ switch (arg0) { case 0: return obj_growtangle.x + (obj_growtangle.sprite_width * 0.5); break; case 1: return obj_growtangle.y - (obj_growtangle.sprite_height * 0.5); break; case 2: return obj_growtangle.x - (obj_growtangle.sprite_width * 0.5); break; case 3: return obj_growtangle.y + (obj_growtangle.sprite_height * 0.5); break; case 4: return obj_growtangle.x; break; case 5: return obj_growtangle.y; break; return false; } }
(2)) / abs(hspeed), id, "image_alpha", 1, 0, 10);
74
        }
75
        depth = -9999;
76
    }
77
    bullet_timer = 4;
78
    bullet_counter++;
79
    if (bullet_counter == 12)
80
    {
81
        sprite_index = spr_shadowman_reload;
82
        image_speed = 0.13333333333333333;
83
        bullet_counter = 0;
84
        bullet_timer += (10 + (irandom(1) * 5) + (4 * sameattack));
85
        gun_angle = 180;
86
    }
87
}