Deltarune (Chapter 5) script viewer

← back to main script listing

gml_Object_obj_bullet_super_nubert2_Step_0

(view raw script w/o annotations or w/e)
1
if (!nubert_done && !nubert_reverse)
2
{
3
    var _speed = nubert_speed;
4
    var _cannon = nubert_cannon;
5
    if (nubert_angle != nubert_angle_goal)
6
        _speed *= 0.5;
7
    ns[nr] = [nubert_x, nubert_y, nubert_angle, _speed];
8
    aaa[nr] = [nubert_x + lengthdir_x(16, nubert_angle - 90), nubert_y + lengthdir_y(16, nubert_angle - 90), nubert_x + lengthdir_x(16, nubert_angle + 90), nubert_y + lengthdir_y(16, nubert_angle + 90)];
9
    bbb[nr] = [nubert_x + lengthdir_x(18, nubert_angle - 90), nubert_y + lengthdir_y(18, nubert_angle - 90), nubert_x + lengthdir_x(18, nubert_angle + 90), nubert_y + lengthdir_y(18, nubert_angle + 90)];
10
    nubert_hurt[nr] = instance_create(ns[nr][0], ns[nr][1], obj_collidebullet);
11
    with (nubert_hurt[nr])
12
    {
13
        
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; }
();
14
        scr_bullet_inherit_from(id, 960);
15
        destroyonhit = false;
16
        mask_index = spr_nubert_segment_m;
17
        image_yscale = 1.25;
18
        image_xscale = other.ns[other.nr][3];
19
        image_angle = other.ns[other.nr][2];
20
        if (!other.nubert_hooped)
21
        {
22
            if (i_ex(obj_trashy_hoop))
23
            {
24
                var _box = [];
25
                with (obj_trashy_hoop)
26
                    _box = [x - (38 * image_xscale), y, x - (42 * image_xscale), y + 1];
27
                if (collision_rectangle(_box[0], _box[1], _box[2], _box[3], id, true, false))
28
                {
29
                    other.nubert_hooped = true;
30
                    
scr_mercyadd
scr_mercyadd

function
scr_mercyadd(arg0, arg1)
{ global.mercymod[arg0] += arg1; if (global.mercymod[arg0] < 0) global.mercymod[arg0] = 0; if (global.mercymod[arg0] >= 100) global.mercymod[arg0] = 100; var _playsound = 1; if (arg1 <= 0) _playsound = 0; with (obj_dmgwriter) { if (type == 5 && mercytimer < 8) _playsound = 0; } if (_playsound) { var _pitch = 0.8; if (arg1 < 99) _pitch = 1; if (arg1 <= 50) _pitch = 1.2; if (arg1 <= 25) _pitch = 1.4; snd_play_x(snd_mercyadd, 0.8, _pitch); } __mercydmgwriter = instance_create(global.monsterx[arg0], (global.monstery[arg0] + 20) - (global.hittarget[arg0] * 20), obj_dmgwriter); __mercydmgwriter.damage = arg1; __mercydmgwriter.type = 5; global.hittarget[arg0]++; return __mercydmgwriter; }
(obj_trashy_trio.myself, 5);
31
                    if (global.mercymod[obj_trashy_trio.myself] >= 100)
32
                    {
33
                        with (obj_trashy_trio)
34
                            do_postturn = true;
35
                        with (obj_battlecontroller)
36
                            noreturn = true;
37
                    }
38
                }
39
            }
40
        }
41
        image_yscale = 2;
42
        with (obj_bullet_trash_small)
43
        {
44
            if (place_meeting(x, y, other.id))
45
            {
46
                snd_play(snd_explosion_firework, 0.45, 1);
47
                with (instance_create_depth(x, y, depth, obj_marker))
48
                {
49
                    var _size = 2;
50
                    image_xscale = _size;
51
                    image_yscale = _size;
52
                    sprite_index = spr_cakesmoke;
53
                    direction = 90 + random_range(-10, 10);
54
                    speed = 1;
55
                    
scr_lerpvar
scr_lerpvar

function
scr_lerpvar()
{ var _id = self; if (!is_struct(self)) _id = id; if (argument_count < 6) ___lerpvar =
scr_lerpvar_instance(_id, argument[0], argument[1], argument[2], argument[3]);
else ___lerpvar =
scr_lerpvar_instance(_id, argument[0], argument[1], argument[2], argument[3], argument[4], argument[5]);
return ___lerpvar; } function scr_lerpcol() { if (argument_count < 6) ___lerpvar = scr_lerpcol_instance(id, argument[0], argument[1], argument[2], argument[3]); else ___lerpvar = scr_lerpcol_instance(id, argument[0], argument[1], argument[2], argument[3], argument[4], argument[5]); return ___lerpvar; }
("image_alpha", 1, 0, 12);
56
                    
scr_doom
scr_doom

function
scr_doom(arg0, arg1)
{ var _doom = instance_create_depth(0, 0, 0, obj_doom); with (_doom) { alarm[0] target = arg0; } return _doom; }
(id, 12);
57
                }
58
                var _rng = random(360);
59
                for (var a = 0; a < 5; a++)
60
                {
61
                    with (instance_create(x, y, obj_regularbullet))
62
                    {
63
                        scr_bullet_inherit_from(id, 960);
64
                        speed = 0.25;
65
                        direction = (a * 72) + _rng;
66
                        image_angle = direction;
67
                        sprite_index = spr_ponman_eyebullet;
68
                        image_speed = 0.5;
69
                        gravity_direction = direction;
70
                        gravity = 0.25;
71
                        image_yscale = 1;
72
                        image_xscale = 1.75;
73
                    }
74
                }
75
                instance_destroy();
76
            }
77
        }
78
    }
79
    if (nubert_angle_goal < 90)
80
    {
81
        if ((ns[nr][0] + lengthdir_x(ns[nr][3], ns[nr][2])) > (
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; } }
(4) + 75))
82
            nubert_angle_goal = (90 - ns[nr][2]) + 90;
83
    }
84
    if (nubert_angle_goal >= 90)
85
    {
86
        if ((ns[nr][0] + lengthdir_x(ns[nr][3], ns[nr][2])) < (
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; } }
(4) - 75))
87
            nubert_angle_goal = 90 - (ns[nr][2] - 90);
88
    }
89
    nubert_angle = 
scr_approach
scr_approach

function
scr_approach(arg0, arg1, arg2)
{ if (arg0 < arg1) { arg0 += arg2; if (arg0 > arg1) return arg1; } else { arg0 -= arg2; if (arg0 < arg1) return arg1; } return arg0; }
(nubert_angle, nubert_angle_goal, nubert_turn);
90
    if (nubert_angle > ns[nr][2])
91
    {
92
        nubert_x = ns[nr][0] + lengthdir_x(ns[nr][3], nubert_angle) + lengthdir_x(16, ns[nr][2] + 90) + lengthdir_x(16, nubert_angle - 90);
93
        nubert_y = ns[nr][1] + lengthdir_y(ns[nr][3], nubert_angle) + lengthdir_y(16, ns[nr][2] + 90) + lengthdir_y(16, nubert_angle - 90);
94
    }
95
    else if (nubert_angle < ns[nr][2])
96
    {
97
        nubert_x = ns[nr][0] + lengthdir_x(ns[nr][3], nubert_angle) + lengthdir_x(16, ns[nr][2] - 90) + lengthdir_x(16, nubert_angle + 90);
98
        nubert_y = ns[nr][1] + lengthdir_y(ns[nr][3], nubert_angle) + lengthdir_y(16, ns[nr][2] - 90) + lengthdir_y(16, nubert_angle + 90);
99
    }
100
    nubert_x = ns[nr][0] + lengthdir_x(ns[nr][3], nubert_angle);
101
    nubert_y = ns[nr][1] + lengthdir_y(ns[nr][3], nubert_angle);
102
    if (ns[nr][1] < (
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; } }
(5) - 155) || nubert_speed < 1.5)
103
    {
104
        nubert_done = true;
105
        alarm[0]
 = 4;
gml_Object_obj_bullet_super_nubert2_Alarm_0.gml

nubert_reverse = true;
106
        exit;
107
    }
108
    nr++;
109
}
110
if (nubert_reverse)
111
{
112
    if (i_ex(nubert_hurt[nr]))
113
        instance_destroy(nubert_hurt[nr]);
114
    nr--;
115
    if (nr == -1)
116
        instance_destroy();
117
}
118
snd_pitch(nubert_sound, 0.05 + (0.01 * nr));