Deltarune (Chapter 3) script viewer

← back to main script listing

gml_Object_obj_susiezilla_singlescreen_shadowguy_Step_0

(view raw script w/o annotations or w/e)
1
depth = 10000 - y;
2
if (i_ex(obj_tenna_enemy))
3
    depth = 1000 - y;
4
with (obj_susiezilla_gamecontroller)
5
{
6
    var sourcedude = other.id;
7
    if (gameover)
8
    {
9
        other.speed = 0;
10
        other.image_speed = 0;
11
        with (obj_script_delayed)
12
        {
13
            if (target == sourcedude)
14
                instance_destroy();
15
        }
16
        with (obj_lerpvar)
17
        {
18
            if (target == sourcedude)
19
                instance_destroy();
20
        }
21
        other.gameover = true;
22
        exit;
23
    }
24
}
25
bobble++;
26
if (canhit == true && !i_ex(myhitbox))
27
{
28
    myhitbox = instance_create(x, y, obj_susiezilla_activehitbox);
29
    myhitbox.sprite_index = spr_whitepx;
30
    myhitbox_xoffset = -24;
31
    myhitbox_yoffset = -64;
32
    myhitbox.image_yscale = 48;
33
    myhitbox.image_xscale = 40;
34
    myhitbox.depth = depth - 20;
35
    myhitbox.image_blend = c_yellow;
36
    myhitbox.daddy = id;
37
    myhitbox.visible = false;
38
}
39
if (i_ex(myhitbox))
40
{
41
    if (!canhit || ropeheight != 0)
42
        safe_delete(myhitbox);
43
}
44
if (hitstop <= 0)
45
{
46
    fakevspeed += fakegravity;
47
    fakeheight += fakevspeed;
48
    if (i_ex(obj_tenna_zoom) && obj_tenna_zoom.minigameinsanity)
49
        fakeheight = maxheight;
50
    if (fakeheight >= maxheight)
51
    {
52
        fakevspeed = 0;
53
        fakeheight = maxheight;
54
        if (abs(hspeed) < 6)
55
            canhit = 0;
56
    }
57
    if (fakeheight < maxheight || state == states.dead)
58
        friction = 0;
59
    else
60
        friction = fric_var;
61
    if (state == states.advance)
62
    {
63
        state_timer++;
64
        if (state_timer == 1)
65
        {
66
            if (desy > (obj_susiezilla_statue.y + 35))
67
                desy = obj_susiezilla_statue.y + 35;
68
            if (facing == 1)
69
                desx = (obj_susiezilla_statue.x - 100) + irandom_range(-24, 24);
70
            else
71
                desx = obj_susiezilla_statue.x + 100 + irandom_range(-24, 24);
72
        }
73
        if (state_timer > 1)
74
        {
75
            var flyspeed = 0.125;
76
            with (obj_susiezilla_gamecontroller)
77
            {
78
                if (rush_modifier != -1)
79
                    flyspeed += rush_modifier;
80
            }
81
            if (i_ex(obj_tenna_zoom) && obj_tenna_zoom.minigameinsanity)
82
            {
83
                flyspeed = 0.3;
84
                scr_obj_movetowards_point(desx, desy, clamp(point_distance(x, y, desx, desy) * flyspeed, 0, 40));
85
            }
86
            else
87
            {
88
                scr_obj_movetowards_point(desx, desy, clamp(point_distance(x, y, desx, desy) * flyspeed, 0, 5));
89
            }
90
            if (point_distance(x, y, desx, desy) <= 1)
91
            {
92
                remfacing = facing;
93
                speed = 0;
94
                fakevspeed = 0;
95
                state = states.attack;
96
                state_timer = -4;
97
                with (obj_susiezilla_gamecontroller)
98
                {
99
                    if (rush_modifier >= 0)
100
                    {
101
                        other.state_timer = -12;
102
                        if (rush_modifier > 0.2)
103
                            other.state_timer = -10;
104
                        if (rush_modifier > 0.4)
105
                            other.state_timer = -8;
106
                        if (rush_modifier > 0.6)
107
                            other.state_timer = -6;
108
                        if (rush_modifier > 0.8)
109
                            other.state_timer = -4;
110
                    }
111
                }
112
                if (i_ex(obj_tenna_zoom) && obj_tenna_zoom.minigameinsanity)
113
                {
114
                    flash = 10;
115
                    snd_stop(snd_swing);
116
                    snd_play_pitch(snd_swing, 1.6);
117
                    state_timer = 6;
118
                }
119
            }
120
        }
121
    }
122
    if (state == states.attack)
123
    {
124
        facing = remfacing;
125
        flash--;
126
        state_timer++;
127
        var attackdelay = 10;
128
        if (state_timer == 1)
129
        {
130
            flash = 10;
131
            snd_stop(snd_swing);
132
            snd_play_pitch(snd_swing, 1.6);
133
        }
134
        if (state_timer == 11)
135
        {
136
            if (facing == 1)
137
                hspeed = -12;
138
            else
139
                hspeed = 12;
140
            fric_var = 1.55;
141
        }
142
        if (state_timer == 20)
143
        {
144
            flash = 0;
145
            kickactive = true;
146
            ds_list_clear(hit_list);
147
            sprite_index = s_spin;
148
            image_speed = 0.5;
149
            if (facing == 1)
150
                hspeed = 20;
151
            else
152
                hspeed = -20;
153
            fric_var = 0.35;
154
        }
155
        if (abs(x - obj_susiezilla_statue.x) <= 20 && kickactive)
156
        {
157
            kickactive = false;
158
            fric_var = 0.25;
159
            hspeed *= (-0.85 + random(0.2));
160
            vspeed = irandom_range(-2, 2);
161
            state = states.away;
162
            state_timer = 0;
163
        }
164
    }
165
    if (state == states.away)
166
    {
167
        state_timer++;
168
        if (state_timer > 0)
169
        {
170
            if (speed < 1)
171
            {
172
                fric_var = 0.85;
173
                desx = x;
174
                sprite_index = s_idle;
175
                image_speed = 0.25;
176
                state = states.advance;
177
                temp_counter = false;
178
                state_timer = irandom_range(-50, -20);
179
            }
180
        }
181
    }
182
    if (state == states.dead && state_timer == 0)
183
    {
184
        state_timer++;
185
        
scr_tenna_add_score
scr_tenna_add_score

function
scr_tenna_add_score(arg0)
{ if (i_ex(obj_tenna_enemy_bg)) { var _multiplier = 1; var _multi_minigame_adjustment = 1; if (obj_tenna_enemy.minigameactivated) { if (obj_tenna_enemy.minigamecount >= 6) _multi_minigame_adjustment = 0.65; _multiplier = (obj_tenna_enemy.pointsmultiplierthisturn + obj_tenna_enemy.pointsmultiplier) * _multi_minigame_adjustment; obj_tenna_enemy.pointsmultiplierthisturn -= 1; if (obj_tenna_enemy.pointsmultiplierthisturn < 1) obj_tenna_enemy.pointsmultiplierthisturn = 1; } if (!i_ex(obj_tenna_zoom)) obj_tenna_enemy_bg.addscore += round(arg0 * _multiplier); else if (i_ex(obj_tenna_minigame_ui)) obj_tenna_minigame_ui.myscore += round(arg0 * _multiplier); } }
(3);
186
        if (abs(hspeed) > 8)
187
        {
188
            snd_stop(snd_punchmed);
189
            snd_play_pitch(snd_punchmed, 0.65);
190
            for (var i = 0; i < 4; i++)
191
            {
192
                dust = 
scr_dark_marker
scr_dark_marker

function
scr_dark_marker(arg0, arg1, arg2)
{ thismarker = instance_create(arg0, arg1, obj_marker); with (thismarker) { sprite_index = arg2; image_speed = 0; image_xscale = 2; image_yscale = 2; } return thismarker; }
((x - 20) + (i * 10), y, spr_dust1);
193
                dust.depth = depth - 10;
194
                dust.vspeed = -4 - irandom(2) - (abs(hspeed) / 4);
195
                dust.gravity = 0.5;
196
                dust.image_speed = 0.5;
197
                dust.image_xscale = 2 + random_range(-0.2, 0);
198
                dust.image_xscale = dust.image_yscale;
199
                
scr_doom
scr_doom

function
scr_doom(arg0, arg1)
{ with (instance_create_depth(0, 0, 0, obj_doom)) { alarm[0] target = arg0; } }
(dust, 10);
200
                dust.hspeed = -4 + (i * 2) + (hspeed / 8);
201
                dust.friction = 0.85;
202
            }
203
        }
204
        else
205
        {
206
            snd_stop(snd_punchmed);
207
            snd_play_pitch(snd_punchmed, 0.8);
208
        }
209
    }
210
    if (kickactive)
211
    {
212
        var tempmask = obj_susiezilla_player.mask_index;
213
        obj_susiezilla_player.mask_index = spr_susiezilla_susie_hit_mask;
214
        var _hit = ds_list_create();
215
        collision_rectangle_list(x - 32, y + 14, x + 32, y - 22, obj_susiezilla_singlescreen_hittable, false, true, _hit, false);
216
        obj_susiezilla_player.mask_index = tempmask;
217
        for (a = 0; a < ds_list_size(_hit); a++)
218
        {
219
            if (ds_list_find_index(hit_list, ds_list_find_value(_hit, a).id) != -1)
220
                continue;
221
            ds_list_add(hit_list, ds_list_find_value(_hit, a).id);
222
            ds_list_find_value(_hit, a).take_hit(facing, damage, knockback);
223
            snd_stop(snd_punchmed);
224
            snd_play_pitch(snd_punchmed, 0.75);
225
        }
226
        ds_list_destroy(_hit);
227
    }
228
    var lx = 0;
229
    var rx = 1280;
230
    var ly = 0;
231
    with (obj_susiezilla_gamecontroller)
232
    {
233
        lx = xorig;
234
        rx = xorig + width;
235
        ly = yorig;
236
    }
237
    if (x <= (lx + 10))
238
    {
239
        x = lx + 10;
240
        hspeed = -hspeed / 2;
241
    }
242
    if (x >= (rx - 10))
243
    {
244
        x = rx - 10;
245
        hspeed = -hspeed / 2;
246
    }
247
    if (y <= (ly + 200))
248
    {
249
        y = ly + 200;
250
        vspeed = -vspeed / 2;
251
    }
252
    hitdir = direction;
253
    hitspeed = speed;
254
}
255
hitstop--;
256
if (hitstop == 0)
257
{
258
    canhit = 1;
259
    speed = memspeed;
260
    direction = memdir;
261
    fakegravity = 1;
262
    hitstop = -1;
263
}
264
if (hitstop > 0)
265
{
266
    kickactive = false;
267
    flash = 0;
268
}
269
if (abs(hspeed) > fastestspeed)
270
    fastestspeed = abs(hspeed);
271
myxcenter = x - 6;
272
myycenter = (y - 34) + fakeheight;