Deltarune (Chapter 2) script viewer

← back to main script listing

gml_Object_obj_dbulletcontroller_Step_0

(view raw script w/o annotations or w/e)
1
if (init == 0)
2
{
3
    sameattack = 
scr_monsterattacknamecount
scr_monsterattacknamecount

function
scr_monsterattacknamecount(arg0)
{ __sameattack = 0; for (_sameattacki = 0; _sameattacki < 3; _sameattacki++) { if (global.monsterattackname[_sameattacki] == arg0 && global.monster[_sameattacki] == 1) __sameattack++; } return __sameattack; }
(global.monsterattackname[creator]);
4
    if (sameattack > 1)
5
    {
6
        if (creator == 2)
7
            sameattacker = sameattack - 1;
8
        else if (creator == 1)
9
            sameattacker = (sameattack == 3) ? creator : (global.monsterattackname[0] == global.monsterattackname[1]);
10
    }
11
    if (instance_exists(obj_growtangle))
12
    {
13
        miny = obj_growtangle.y - (obj_growtangle.sprite_height / 2);
14
        maxy = obj_growtangle.y + (obj_growtangle.sprite_height / 2);
15
        minx = obj_growtangle.x - (obj_growtangle.sprite_width / 2);
16
        maxx = obj_growtangle.x + (obj_growtangle.sprite_width / 2);
17
    }
18
    init = 1;
19
}
20
btimer += 1;
21
if (type == 0)
22
{
23
    if (btimer >= (timermax * ratio))
24
    {
25
        btimer = 0;
26
        dir = 30 + random(120);
27
        radius = 140 + random(80);
28
        var xx = lengthdir_x(radius, dir);
29
        var yy = lengthdir_y(radius, dir);
30
        bm = instance_create(obj_heart.x + 8 + xx, obj_heart.y + 8 + yy, obj_dbullet_maker);
31
        bm.grazepoints = grazepoints;
32
        if (bm.y < (__view_get(e__VW.YView, 0) + 40))
33
            bm.y = __view_get(e__VW.YView, 0) + 40;
34
        bm.damage = damage;
35
        bm.target = target;
36
    }
37
}
38
if (type == 1)
39
{
40
    if (btimer >= (9 * ratio))
41
    {
42
        btimer = 0;
43
        radius = 140 + random(40);
44
        var yy = radius * side;
45
        var xx = -100 + random(200);
46
        num = choose(0, 1, 2, 3);
47
        if (num == 3)
48
            xx = -10 + random(20);
49
        d = instance_create(obj_heart.x + 8 + xx, obj_heart.y + 8 + yy, obj_dbullet_vert);
50
        d.damage = damage;
51
        d.target = target;
52
    }
53
}
54
else if (type == 2)
55
{
56
    if (btimer >= (10 * ratio))
57
    {
58
        btimer = 0;
59
        radius = 120 + random(80);
60
        bm = instance_create(x, y, obj_yarnmaker);
61
        
scr_bullet_inherit
scr_bullet_inherit

function
scr_bullet_inherit(arg0)
{ if (i_ex(arg0)) { if (damage != -1) arg0.damage = damage; if (grazepoints != -1) arg0.grazepoints = grazepoints; if (timepoints != -1) arg0.timepoints = timepoints; if (inv != -1) arg0.inv = inv; if (target != -1) arg0.target = target; if (grazed != -1) arg0.grazed = 0; if (grazetimer != -1) arg0.grazetimer = 0; arg0.element = element; } }
(bm);
62
        var childgravity = 0.5;
63
        var launchspeed = 
scr_remapvalue
scr_remapvalue

function
scr_remapvalue(arg0, arg1, arg2, arg3, arg4)
{ if (arg1 == arg0) return arg3; var __invLerp = (arg2 - arg0) / (arg1 - arg0); return lerp(arg3, arg4, __invLerp); } function remap(arg0, arg1, arg2, arg3, arg4) { var __invLerp =
scr_inverselerp(arg1, arg2, arg0);
return lerp(arg3, arg4, __invLerp); } function remap_clamped(arg0, arg1, arg2, arg3, arg4) { var __remapped_value = remap(arg0, arg1, arg2, arg3, arg4); return clamp(__remapped_value, arg3, arg4); }
(40, 200, y - cameray(), 8, 16);
64
        if ((made % 3) == 2)
65
            bm.direction = 180 - 
scr_getlaunchdirection
scr_getlaunchdirection

function
scr_getlaunchdirection(arg0, arg1, arg2, arg3)
{ if ((sqr(arg0) / arg2) <= arg1) return 45; var __resultangle = radtodeg(arcsin((arg1 * arg2) / sqr(arg0))) / 2; if (arg3 >= 1) return 90 - __resultangle; else if (arg3 <= -1) return __resultangle; else return choose(__resultangle, 90 - __resultangle); }
(launchspeed, (x - obj_heart.x) + 4, childgravity, 1);
66
        else
67
            bm.direction = 180 - 
scr_getlaunchdirection
scr_getlaunchdirection

function
scr_getlaunchdirection(arg0, arg1, arg2, arg3)
{ if ((sqr(arg0) / arg2) <= arg1) return 45; var __resultangle = radtodeg(arcsin((arg1 * arg2) / sqr(arg0))) / 2; if (arg3 >= 1) return 90 - __resultangle; else if (arg3 <= -1) return __resultangle; else return choose(__resultangle, 90 - __resultangle); }
(launchspeed, random(250) + (x - maxx), childgravity, 1);
68
        bm.damage = damage;
69
        bm.target = target;
70
        bm.childgravity = 0.6;
71
        bm.childspeed = launchspeed;
72
        bm.grazepoints = 7;
73
        bm.image_angle = direction;
74
        made++;
75
    }
76
}
77
else if (type == 3)
78
{
79
    if (init == 1)
80
    {
81
        init = 2;
82
        special = instance_create(x, y, obj_tasque_meowing);
83
        special.loop = 0;
84
        special.image_speed = 0;
85
        special.creator = creator;
86
        special.depth = global.monsterinstance[creator].depth;
87
        global.monsterinstance[creator].visible = 0;
88
        if (sameattacker >= 1)
89
            btimer = random_range(6, 18) * ratio * (1 + difficulty);
90
    }
91
    if (btimer >= (((difficulty >= 2) ? 40 : 24) * ratio * (1 + difficulty)))
92
    {
93
        btimer = 0;
94
        d = instance_create(x + 28, y + 34, obj_chainbullet);
95
        d.childBullet = 456;
96
        snd_play_x(snd_electric_meow, 0.8, random_range(0.8, 1.2));
97
        d.element = 6;
98
        d.damage = damage;
99
        d.grazepoints = 1.4;
100
        d.direction = point_direction(x + 28, y + 34, obj_heart.x + 8, obj_heart.y + 8);
101
        d.childSpeed = (difficulty == 1) ? 4 : 7;
102
        d.firingSpeed = 2;
103
        d.target = target;
104
        d.sprite_index = spr_meow;
105
        special.image_speed = 0.5;
106
        special.image_index = 0;
107
    }
108
}
109
else if (type == 4 && (sameattack < 3 || creator < 2))
110
{
111
    if (btimer > 7)
112
    {
113
        btimer = 0;
114
        var xx = x - (made * 30);
115
        var yy = maxy;
116
        d = instance_create(xx, yy, obj_chainbullet);
117
        d.damage = damage;
118
        d.grazepoints = 4;
119
        d.direction = 90;
120
        d.childSpeed = 7;
121
        d.childgravity = 0.25;
122
        d.firingSpeed = 2;
123
        d.target = target;
124
        d.sprite_index = spr_diamondbullet_vert;
125
        made++;
126
    }
127
}
128
else if (type == 5)
129
{
130
    if (init == 1)
131
    {
132
        btimer = 12 * ratio;
133
        made = sameattacker;
134
        init = 2;
135
        if (obj_swatchling_battle_controller.yellow_count > 0)
136
        {
137
            var _birdcount = obj_swatchling_battle_controller.bird_count;
138
            obj_swatchling_battle_controller.bird_color[_birdcount] = (special == 1) ? c_orange : c_red;
139
            obj_swatchling_battle_controller.red_target[_birdcount] = target;
140
            obj_swatchling_battle_controller.red_damage[_birdcount] = damage;
141
            obj_swatchling_battle_controller.bird_count++;
142
            init = 3;
143
        }
144
        else
145
        {
146
            btimer -= (sameattacker * 4 * ratio);
147
        }
148
    }
149
    if (btimer >= (12 * ratio) && init <= 2)
150
    {
151
        var xx = choose(minx - 35, maxx + 35) + random_range(-15, 15);
152
        var yy = random_range(miny - 20, maxy + 20);
153
        d = 
scr_bullet_create
scr_bullet_create

function
scr_bullet_create(arg0, arg1, arg2)
{ var __newbullet = instance_create(arg0, arg1, arg2); __newbullet.damage = damage; __newbullet.target = target; if (variable_instance_exists(self, "element")) __newbullet.element = element; return __newbullet; }
(xx, yy, obj_swatchling_bird);
154
        d.image_blend = (special == 1) ? c_orange : c_red;
155
        d.grazepoints = 4;
156
        d.depth -= 11;
157
        btimer = 0;
158
    }
159
}
160
else if (type == 6)
161
{
162
    if (init == 1)
163
    {
164
        ratio = 1;
165
        if (
scr_monsterpop
scr_monsterpop

function
scr_monsterpop()
{ return global.monster[0] + global.monster[1] + global.monster[2]; }
() == 2)
166
        {
167
            if (sameattack == 2)
168
                ratio = 1.2;
169
            else
170
                ratio = 1;
171
        }
172
        if (
scr_monsterpop
scr_monsterpop

function
scr_monsterpop()
{ return global.monster[0] + global.monster[1] + global.monster[2]; }
() == 3)
173
        {
174
            if (sameattack == 3)
175
                ratio = 1.5;
176
            else if (sameattack == 2)
177
                ratio = 1.7;
178
            else
179
                ratio = 1.2;
180
        }
181
        init = 2;
182
        candyindex = irandom(6);
183
        if (sameattacker > 0)
184
            btimer = 30 * ratio * (1 - (sameattacker / sameattack));
185
    }
186
    if (btimer > (30 * ratio))
187
    {
188
        var _sbw = 447;
189
        side = _sbw.platter_side;
190
        _sbw.platter_side *= -1;
191
        btimer = 0;
192
        var _bounce = _sbw.blue_count > 0;
193
        var _birds = _sbw.red_count;
194
        var yy = miny - 30;
195
        var xx = obj_growtangle.x + (((obj_growtangle.sprite_width / 2) + 10) * side);
196
        d = instance_create(xx, yy, obj_swatchling_platter);
197
        d.speed = (sameattack || _combo == 3) ? 3 : 4;
198
        d.direction = 270;
199
        side *= -1;
200
        d.grazepoints = 4;
201
        if (special)
202
            d.hasCandy = irandom(6) == 6;
203
        else if (made == candyindex)
204
            d.hasCandy = 1;
205
        d.birds = _birds;
206
        d.timer = -1 - _sbw.platter_offset;
207
        _sbw.platter_offset = (_sbw.platter_offset + 5) % 30;
208
        d.damage = damage;
209
        d.target = target;
210
        d.startColor = special ? c_green : c_yellow;
211
        d.platterPlate.image_blend = image_blend == d.startColor;
212
        d.platterLid.image_blend = image_blend == d.startColor;
213
        made++;
214
    }
215
}
216
else if (type == 7)
217
{
218
    if (special == 0)
219
    {
220
        special = 1;
221
        d = instance_create(x + 82, y + 68, obj_swatchling_cannonball);
222
        d.creator = creator;
223
        d.damage = damage;
224
        d.target = target;
225
        d.grazepoints = 4;
226
        d.childgraze = 4;
227
        global.monsterinstance[creator].visible = 0;
228
        if (sameattack > 1)
229
            d.trackplayer = -1;
230
        if (sameattack > 2)
231
            d.spawnbullets = 0;
232
    }
233
}
234
else if (type == 8)
235
{
236
    if (init == 1 && difficulty == 1)
237
    {
238
        special = 1;
239
        init = 2;
240
        global.turntimer = 200;
241
    }
242
    if (btimer > (((difficulty == 0) ? 45 : 45) * ratio))
243
    {
244
        pattern = irandom(1);
245
        startDelay = -10;
246
        if (difficulty == 0)
247
        {
248
            var xx = maxx + 30;
249
            var yy = 0;
250
            yshift = (obj_growtangle.sprite_height / 3) - 14;
251
            if (irandom(1) == 0)
252
            {
253
                yy = miny + 22;
254
            }
255
            else
256
            {
257
                yy = maxy - 22;
258
                yshift = -yshift;
259
            }
260
            for (var i = 0; i < 4; i++)
261
            {
262
                d = 
scr_bullet_create
scr_bullet_create

function
scr_bullet_create(arg0, arg1, arg2)
{ var __newbullet = instance_create(arg0, arg1, arg2); __newbullet.damage = damage; __newbullet.target = target; if (variable_instance_exists(self, "element")) __newbullet.element = element; return __newbullet; }
(xx, yy, obj_berdlyb_tornado);
263
                yy += yshift;
264
                d.maxSpeed = 6;
265
                d.timer = startDelay;
266
                d.grazepoints = 5;
267
                d.direction = 180;
268
                d.image_alpha = 0;
269
                if (pattern && (i % 2) == 1)
270
                    startDelay += 10;
271
                else
272
                    startDelay -= 10;
273
                d.image_alpha = 0 - (i * 0.1);
274
                d.flipTimer = i - 4;
275
            }
276
        }
277
        else if (difficulty == 1)
278
        {
279
            var startDir = irandom(360);
280
            var spawnDir = 45;
281
            var xx = maxx + 30;
282
            var yy = 0;
283
            yshift = (obj_growtangle.sprite_height / 3) - 14;
284
            if (irandom(1) == 0)
285
            {
286
                yy = miny + 22;
287
            }
288
            else
289
            {
290
                yy = maxy - 22;
291
                yshift = -yshift;
292
            }
293
            var _spindir = choose(-1, 1);
294
            for (var i = 0; i < 8; i++)
295
            {
296
                pattern = 1;
297
                xx = obj_growtangle.x + lengthdir_x(240, startDir);
298
                yy = obj_growtangle.y + lengthdir_y(240, startDir);
299
                d = 
scr_bullet_create
scr_bullet_create

function
scr_bullet_create(arg0, arg1, arg2)
{ var __newbullet = instance_create(arg0, arg1, arg2); __newbullet.damage = damage; __newbullet.target = target; if (variable_instance_exists(self, "element")) __newbullet.element = element; return __newbullet; }
(xx, yy, obj_berdlyb_tornado);
300
                d.direction = startDir + 180;
301
                d.maxSpeed = 6;
302
                d.grazepoints = 5;
303
                d.timer = startDelay;
304
                d.maxdistance = 240;
305
                d.image_alpha = 0;
306
                d.spindir = _spindir;
307
                if (pattern)
308
                {
309
                    if ((i % 2) == 1)
310
                        startDelay += 15;
311
                    else
312
                        startDelay -= 15;
313
                }
314
                else
315
                {
316
                    startDelay -= 5;
317
                }
318
                if (special == 1)
319
                    d.firstwave = true;
320
                else if (special == 2)
321
                    startDelay += 12.831853071795862;
322
                d.image_alpha = 0 - (i * 0.1);
323
                d.flipTimer = i - 4;
324
                d.middespawn = 1;
325
                startDir += spawnDir;
326
            }
327
            side = 1 - side;
328
        }
329
        if (special == 1)
330
        {
331
            special = 0;
332
        }
333
        else if (special == 2)
334
        {
335
            special = 0;
336
            btimer = 0;
337
        }
338
        else
339
        {
340
            btimer = (pattern && difficulty == 0) ? 10 : 0;
341
        }
342
    }
343
}
344
else if (type == 9)
345
{
346
    if (init == 1)
347
    {
348
        berdly = instance_create(x - 18, y - 114, obj_berdlyb_spearblaster);
349
        global.monsterinstance[creator].visible = 0;
350
        berdly.creator = creator;
351
        init = 2;
352
        special = choose(0, 1);
353
    }
354
    if (btimer > (((difficulty >= 1) ? 50 : 30) * ratio) && made < 6)
355
    {
356
        d = instance_create(x + 24, y + 30, obj_berdlyb_spearblast);
357
        d.grazepoints = 2;
358
        d.childgraze = 1;
359
        btimer = 10;
360
        d.timepoints = 0.5;
361
        d.damage = damage;
362
        d.target = target;
363
        d.pathLifetime = 2;
364
        if (difficulty == 2 || (made % 2) == special)
365
            d.aim_at_player = true;
366
        d.special = difficulty;
367
        made++;
368
    }
369
}
370
else if (type == 10)
371
{
372
    if (init == 1)
373
    {
374
        if (difficulty == 0)
375
            difficulty = choose(-1, 0);
376
        init = 2;
377
        maxmake = (difficulty == 1) ? 3 : 2;
378
    }
379
    if (btimer >= (50 * ratio) && made < maxmake)
380
    {
381
        d = instance_create(x + 46, y + 40, obj_berdlyb_chirashistorm);
382
        d.target = target;
383
        d.damage = damage;
384
        d.difficulty = difficulty;
385
        d.grazepoints = 4;
386
        if (made > 0 && 
scr_monsterpop
scr_monsterpop

function
scr_monsterpop()
{ return global.monster[0] + global.monster[1] + global.monster[2]; }
() == 1)
387
            d.first_set = false;
388
        made++;
389
        btimer = 0;
390
        if (difficulty < 1)
391
            difficulty = -1 - difficulty;
392
    }
393
}
394
else if (type == 11)
395
{
396
    if (init == 1)
397
    {
398
        if (sameattacker == 1)
399
        {
400
            btimer = irandom(20 * ratio);
401
            made = irandom(1);
402
        }
403
        init = 2;
404
    }
405
    var _btimeSpeed = (sameattack == 1) ? 12 : 15;
406
    if (special)
407
        _btimeSpeed += 5;
408
    if (btimer >= (_btimeSpeed * ratio))
409
    {
410
        dir = random(360);
411
        radius = 140 + random(40);
412
        var xx = lengthdir_x(radius, dir) + obj_growtangle.x;
413
        var yy = lengthdir_y(radius, dir) + obj_growtangle.y;
414
        d = instance_create(xx, yy, obj_poppup_bird);
415
        d.speed = special ? 3 : 5;
416
        if (special)
417
        {
418
            d.slow = 0.6;
419
            d.image_speed = 0.6;
420
        }
421
        d.damage = damage;
422
        d.target = target;
423
        d.grazepoints = 4;
424
        btimer = 0;
425
        if (made == 1)
426
            d.targetplayer = special ? 2 : 1;
427
        made = 1 - made;
428
    }
429
}
430
else if (type == 12 && sameattacker == 0)
431
{
432
    if (init == 1)
433
    {
434
        instance_create(mouse_x, mouse_y, obj_poppup_mouse);
435
        d = instance_create(obj_heart.x, obj_heart.y, obj_hiddenheart);
436
        d.depth -= 20;
437
        init = 2;
438
    }
439
    var _btime = (sameattack == 2) ? 15 : 20;
440
    if (special)
441
        _btime += 5;
442
    if (btimer >= ((sameattack == 2) ? 15 : 20))
443
    {
444
        with (obj_poppup_ad)
445
            depth++;
446
        if (made >= ((sameattack == 2) ? 5 : 3))
447
        {
448
            var popup = instance_find(obj_poppup_ad, 0);
449
            if (popup != -4)
450
                popup.state = 2;
451
        }
452
        var xx = (obj_growtangle.x + (irandom(60) * 2)) - 60;
453
        var yy = (obj_growtangle.y + (irandom(60) * 2)) - 60;
454
        d = instance_create(xx, yy, obj_poppup_ad);
455
        d.depth -= 15;
456
        if (special)
457
        {
458
            d.slow = true;
459
            d.scalespeed = 0.75;
460
        }
461
        if (made < ((sameattack == 2) ? 5 : 3))
462
            made++;
463
        btimer = 0;
464
    }
465
}
466
else if (type == 13)
467
{
468
    if (made > 0)
469
        exit;
470
    if (sameattacker == 0)
471
    {
472
        side = irandom(2);
473
        monstercount = 
scr_monsterpop
scr_monsterpop

function
scr_monsterpop()
{ return global.monster[0] + global.monster[1] + global.monster[2]; }
();
474
        yoffset = 5;
475
        if (monstercount != sameattack)
476
            yoffset += 20;
477
        made = 1;
478
        sidedirection = (irandom(1) * 2) - 1;
479
        cars = 
scr_monsterattacknamecount
scr_monsterattacknamecount

function
scr_monsterattacknamecount(arg0)
{ __sameattack = 0; for (_sameattacki = 0; _sameattacki < 3; _sameattacki++) { if (global.monsterattackname[_sameattacki] == arg0 && global.monster[_sameattacki] == 1) __sameattack++; } return __sameattack; }
("CarChase") > 0 ||
scr_monsterattackidcount
scr_monsterattackidcount

function
scr_monsterattackidcount(arg0)
{
scr_monsterattacknamecount("ThisAttack" + string(arg0));
}
(16) > 0;
480
        for (var i = 0; i < ((monstercount == 1) ? 2 : 3); i++)
481
        {
482
            var xx = obj_growtangle.x;
483
            if (sameattack == 1)
484
                xx = xx + (70 * -sidedirection);
485
            d = instance_create(xx, miny - yoffset, obj_viro_invaderfleet);
486
            d.lborder = minx + 10;
487
            d.rborder = maxx - 10;
488
            d.fleetsize = sameattack;
489
            d.fleetspeed = monstercount;
490
            d.grazepoints = 5;
491
            d.caralert = cars;
492
            d.movedirection *= sidedirection;
493
            yoffset += ((monstercount == 1) ? 40 : 20);
494
            sidedirection *= -1;
495
            d.damage = damage;
496
            d.target = target;
497
            if (i == side)
498
                d.shottimer = (sameattack == monstercount) ? 15 : 5;
499
            if (sameattack == monstercount)
500
            {
501
                d.bigshot = true;
502
                d.grazepoints = 4;
503
            }
504
        }
505
    }
506
    else if (sameattacker == 1 && instance_exists(obj_viro_invaderfleet))
507
    {
508
        obj_viro_invaderfleet.targetB = target;
509
        made = 1;
510
    }
511
}
512
else if (type == 14)
513
{
514
    if (btimer >= ((ratio == 1) ? 6 : (10 * ratio)))
515
    {
516
        var xx = maxx + 40 + random(140);
517
        if (sameattacker == 1)
518
            xx = minx - 40 - random(140);
519
        var yy = miny + random(obj_growtangle.sprite_height);
520
        if (
scr_monsterpop
scr_monsterpop

function
scr_monsterpop()
{ return global.monster[0] + global.monster[1] + global.monster[2]; }
() == 1)
521
        {
522
            special--;
523
            if (special == 0)
524
                yy = obj_heart.y + 10;
525
            if (special <= 0)
526
                special = irandom(5) + 5;
527
        }
528
        d = instance_create(xx, yy, obj_viro_needle);
529
        btimer = 0;
530
        d.direction = (sameattacker == 0) ? 180 : 0;
531
        d.image_angle = direction;
532
        d.damage = damage;
533
        d.target = target;
534
        d.grazepoints = 5;
535
        d.speed = 1;
536
        if (
scr_monsterpop
scr_monsterpop

function
scr_monsterpop()
{ return global.monster[0] + global.monster[1] + global.monster[2]; }
() == 1)
537
            d.friction = -0.2;
538
        else
539
            d.friction = -0.15;
540
    }
541
}
542
else if (type == 15)
543
{
544
    if (init == 1)
545
    {
546
        if (
scr_monsterpop
scr_monsterpop

function
scr_monsterpop()
{ return global.monster[0] + global.monster[1] + global.monster[2]; }
() == sameattack ||
scr_monsterattacknamecount
scr_monsterattacknamecount

function
scr_monsterattacknamecount(arg0)
{ __sameattack = 0; for (_sameattacki = 0; _sameattacki < 3; _sameattacki++) { if (global.monsterattackname[_sameattacki] == arg0 && global.monster[_sameattacki] == 1) __sameattack++; } return __sameattack; }
("Viruses") == 1 ||
scr_monsterattackidcount
scr_monsterattackidcount

function
scr_monsterattackidcount(arg0)
{
scr_monsterattacknamecount("ThisAttack" + string(arg0));
}
(14) == 1)
547
            ratio *= 0.75;
548
        init = 2;
549
    }
550
    if (btimer >= (10 * ratio))
551
    {
552
        var xx = (sameattacker == 0) ? (minx - 40 - random(140)) : (maxx + 40 + random(140));
553
        var yy = miny + random(obj_growtangle.sprite_height);
554
        d = instance_create(xx, yy, obj_omawaroid_vaccine);
555
        d.grazepoints = 4;
556
        d.direction = (sameattacker == 0) ? 0 : 180;
557
        d.damage = damage;
558
        d.target = target;
559
        d.speed = (
scr_monsterpop
scr_monsterpop

function
scr_monsterpop()
{ return global.monster[0] + global.monster[1] + global.monster[2]; }
() == 1) ? 7 : 5;
560
        btimer = 0;
561
    }
562
}
563
else if (type == 16)
564
{
565
    if (init == 1)
566
    {
567
        if (!instance_exists(obj_omawaroid_street))
568
        {
569
            street = instance_create(obj_growtangle.x, obj_growtangle.y, obj_omawaroid_street);
570
            if (special != 0)
571
                street.hitcheck = special;
572
            street.boxLeft = minx;
573
            street.boxTop = miny;
574
            street.driveSpeed = 6;
575
            street.depth += 2;
576
            street.init = 2;
577
        }
578
        else
579
        {
580
            street = 419;
581
            if (special != 0)
582
                street.hitcheck = special;
583
            btimer = 0;
584
            init = 3;
585
        }
586
        carside = (irandom(1) * 2) - 1;
587
        lastside = 0;
588
        if (sameattack > 1)
589
        {
590
            side = (sameattacker * 2) - 1;
591
            if (sameattacker == 1)
592
                btimer = 20;
593
        }
594
        else
595
        {
596
            side = (irandom(1) * 2) - 1;
597
        }
598
        made = 1;
599
    }
600
    if (btimer >= (20 * sameattack))
601
    {
602
        d = instance_create(obj_growtangle.x + ((40 + random(20)) * side), miny - 30, obj_omawaroid_cactus);
603
        if (sameattack == 1)
604
            side *= -1;
605
        d.direction = 270;
606
        d.speed = 6;
607
        d.grazepoints = 4;
608
        d.damage = damage;
609
        d.target = target;
610
        d.destroyonhit = 0;
611
        made++;
612
        if (made == 2)
613
        {
614
            var lastTimeSpeed = (carside == 1) ? street.lastRightCarSpeed : street.lastLeftCarSpeed;
615
            var xoffset = (init < 3) ? 15 : (irandom(10) + 10);
616
            street.lastside = carside;
617
            if (street.anti_cheese == 2)
618
                carside = street.lastside;
619
            else
620
                carside = (irandom(1) * 2) - 1;
621
            lastTimeSpeed = (carside == 1) ? street.lastRightCarSpeed : street.lastLeftCarSpeed;
622
            if (street.lastside == carside && sameattack == 2 && lastTimeSpeed == 2)
623
                carside = -carside;
624
            if (street.lastside == carside)
625
            {
626
                if (carside == 1)
627
                    street.lastLeftCarSpeed = 99;
628
                else
629
                    street.lastRightCarSpeed = 99;
630
            }
631
            d = instance_create(obj_growtangle.x + (xoffset * carside), maxy + 26, obj_omawaroid_policecar);
632
            d.direction = 90;
633
            d.speed = irandom(2) + 2;
634
            if (street.anti_cheese == 1)
635
            {
636
                d.speed = (sameattack == 2) ? 3 : 2;
637
            }
638
            else if (sameattack == 2 || 
scr_monsterpop
scr_monsterpop

function
scr_monsterpop()
{ return global.monster[0] + global.monster[1] + global.monster[2]; }
() == 1)
639
            {
640
                var laneswitchSpeed = (sameattack == 2 && carside == street.lastside) ? 3 : 2;
641
                if ((lastTimeSpeed == laneswitchSpeed && carside == street.lastside) || street.anti_cheese == 2)
642
                    d.speed = 4;
643
            }
644
            if (street.anti_cheese == 1)
645
                street.anti_cheese = 2;
646
            else if (street.anti_cheese == 2)
647
                street.anti_cheese = -2;
648
            if (carside == 1)
649
                street.lastRightCarSpeed = d.speed;
650
            else
651
                street.lastLeftCarSpeed = d.speed;
652
            d.damage = damage;
653
            d.target = target;
654
            d.destroyonhit = 0;
655
            d.grazepoints = 4;
656
            made = 0;
657
            init = 3;
658
        }
659
        btimer = 0;
660
    }
661
}
662
else if (type == 17)
663
{
664
    if (init == 1)
665
    {
666
        if (
scr_monsterpop
scr_monsterpop

function
scr_monsterpop()
{ return global.monster[0] + global.monster[1] + global.monster[2]; }
() == 1)
667
            ratio = 0.5;
668
        else if (sameattack == 1)
669
            ratio = 0.75;
670
        if (sameattacker <= 1)
671
        {
672
            d = instance_create(obj_growtangle.x + 1, obj_growtangle.y + 1, obj_maus_holes);
673
            d.damage = damage;
674
            d.grazepoints = 4;
675
            d.target = target;
676
        }
677
        init = 2;
678
    }
679
    else if (btimer >= (20 * ratio))
680
    {
681
        obj_maus_holes.mausqueue++;
682
        if (
scr_monsterpop
scr_monsterpop

function
scr_monsterpop()
{ return global.monster[0] + global.monster[1] + global.monster[2]; }
() == 1)
683
        {
684
            obj_maus_holes.bigmaus++;
685
            obj_maus_holes.alarm[0] = 21;
686
        }
687
        btimer = 0;
688
    }
689
}
690
else if (type == 18)
691
{
692
}
693
else if (type == 19)
694
{
695
    if (init == 1)
696
    {
697
        if (instance_exists(obj_mauswheel_enemy))
698
        {
699
            if (obj_mauswheel_enemy.firstturn == 1)
700
                global.turntimer = 120;
701
            else
702
                global.turntimer = 250;
703
            obj_mauswheel_enemy.firstturn = 0;
704
        }
705
        d = instance_create(x, y, obj_maus_cursor_follow);
706
        d.damage = damage;
707
        d.target = target;
708
        d.grazepoints = 4;
709
        d = instance_create(x, y, obj_player_trail);
710
        d.depth = obj_heart.depth + 1;
711
        init = 2;
712
        d.damage = damage;
713
        d.target = target;
714
    }
715
    if (btimer == 140 && instance_exists(obj_mauswheel_enemy) && obj_mauswheel_enemy.cursor_count > 1)
716
    {
717
        d = instance_create(obj_mauswheel_enemy.x + 62, obj_mauswheel_enemy.y + 70, obj_maushwheel_lightning_orb);
718
        d.damage = damage;
719
        d.target = target;
720
        d.grazepoints = 4;
721
    }
722
    if (btimer == 200 && instance_exists(obj_mauswheel_enemy) && obj_mauswheel_enemy.cursor_count > 1)
723
    {
724
        d = instance_create(obj_mauswheel_enemy.x + 62, obj_mauswheel_enemy.y + 70, obj_maushwheel_lightning_orb);
725
        d.damage = damage;
726
        d.target = target;
727
        d.grazepoints = 4;
728
    }
729
    if (btimer == 270 && instance_exists(obj_mauswheel_enemy) && obj_mauswheel_enemy.cursor_count > 1)
730
    {
731
        d = instance_create(obj_mauswheel_enemy.x + 62, obj_mauswheel_enemy.y + 70, obj_maushwheel_lightning_orb);
732
        d.damage = damage;
733
        d.target = target;
734
        d.grazepoints = 4;
735
    }
736
}
737
else if (type == 20)
738
{
739
    if (init == 1)
740
    {
741
        d = instance_create(x - 22, y - 6, obj_tm_whip_attack);
742
        d.depth = global.monsterinstance[creator].depth;
743
        global.monsterinstance[creator].visible = 0;
744
        d.creator = creator;
745
        d.damage = damage;
746
        d.target = target;
747
        d.element = 6;
748
        d.grazepoints = 4;
749
        d.difficulty = 
scr_monsterpop
scr_monsterpop

function
scr_monsterpop()
{ return global.monster[0] + global.monster[1] + global.monster[2]; }
() == 1;
750
        d.animSpeed = 1;
751
        init = 2;
752
    }
753
}
754
else if (type == 21)
755
{
756
    if (init == 1)
757
        init = 2;
758
}
759
else if (type == 22)
760
{
761
    if (init == 1)
762
    {
763
        btimer = 115;
764
        init = 2;
765
        side = irandom(3);
766
    }
767
    if (btimer >= 120)
768
    {
769
        var distance = (obj_growtangle.sprite_height / 2) + 30;
770
        var offset = -40;
771
        var xx = obj_growtangle.x;
772
        var yy = obj_growtangle.y;
773
        if (side >= 2)
774
            distance *= -1;
775
        if (side == 0 || side == 2)
776
        {
777
            xx -= distance;
778
            yy += offset;
779
        }
780
        else
781
        {
782
            yy += distance;
783
            xx += offset;
784
        }
785
        for (var i = 0; i < 2; i++)
786
        {
787
            d = instance_create(xx, yy, obj_musicalfight_speakers);
788
            d.direction = side * 90;
789
            d.damage = damage;
790
            d.target = target;
791
            d.grazepoints = 4;
792
            if (side == 0 || side == 2)
793
                yy += 80;
794
            else
795
                xx += 80;
796
        }
797
        btimer = 0;
798
        side = (side + 1) % 4;
799
    }
800
}
801
else if (type >= 23 && type <= 25)
802
{
803
    if (init == 1)
804
    {
805
        global.monsterinstance[creator].visible = 0;
806
        d = instance_create(x, y, obj_spamton_attack_mode);
807
        d.creator = creator;
808
        d.attack = type - 23;
809
        d.depth++;
810
        init = 2;
811
        btimer = -10;
812
        if (type == 25)
813
            instance_create(obj_growtangle.x, obj_growtangle.y, obj_spamton_warped_box);
814
        if (type == 23)
815
        {
816
            d.bullettype = 590;
817
            d.firingspeed = 10;
818
        }
819
        else if (type == 24)
820
        {
821
            d.bullettype = 591;
822
            d.firingspeed = 28;
823
            btimer = 10;
824
        }
825
        d.damage = damage;
826
        d.target = target;
827
        d.grazepoints = 4;
828
    }
829
    else if (type == 25 && btimer >= 8 && global.turntimer > 50)
830
    {
831
        var xx = minx - random(30) - 20;
832
        var yy = (obj_growtangle.y - random(200)) + 100;
833
        d = instance_create(xx, yy, obj_spamton_dollar);
834
        d.damage = damage;
835
        d.target = target;
836
        d.grazepoints = 4;
837
        d.speed = 0.1;
838
        btimer = 0;
839
    }
840
}
841
else if (type == 26 && init == 1)
842
{
843
    var _thrash = obj_rouxls_enemy.thrash;
844
    obj_rouxls_enemy.head_difficulty = 1;
845
    var headattack = _thrash.part[1];
846
    obj_rouxls_enemy.headattack = 1;
847
    if (headattack != 3)
848
        obj_rouxls_enemy.thrashmode = 1;
849
    switch (headattack)
850
    {
851
        case 0:
852
            d = instance_create(0, 0, obj_thrash_laserattack);
853
            d.grazepoints = 8;
854
            d.thrash = _thrash;
855
            d.damage = damage;
856
            break;
857
        case 1:
858
            d = instance_create(0, 0, obj_thrash_swordattack);
859
            d.grazepoints = 8;
860
            d.thrash = _thrash;
861
            d.damage = damage;
862
            break;
863
        case 2:
864
            d = instance_create(0, 0, obj_thrash_flameattack);
865
            d.grazepoints = 8;
866
            d.thrash = _thrash;
867
            d.damage = damage;
868
            break;
869
        case 3:
870
            d = instance_create(0, 0, obj_thrash_duck_attack);
871
            d.grazepoints = 24;
872
            d.thrash = _thrash;
873
            d.damage = 1;
874
            break;
875
    }
876
    d.difficulty = difficulty;
877
    d.target = target;
878
    init = 2;
879
}
880
else if (type == 27)
881
{
882
    x = obj_rouxls_enemy.x;
883
    y = obj_rouxls_enemy.y;
884
    var _thrash = obj_rouxls_enemy.thrash;
885
    var legattack = _thrash.part[2];
886
    var thrashcon = obj_rouxls_enemy.thrashcon;
887
    obj_rouxls_enemy.headattack = 0;
888
    if (init == 1)
889
    {
890
        obj_rouxls_enemy.wheel_difficulty = 1;
891
        obj_rouxls_enemy.thrashmode = 1;
892
        init = 2;
893
        d = instance_create(x, y, obj_thrash_bodyhitbox);
894
        d.thrash = _thrash;
895
        d.grazepoints = 15;
896
        d.damage = damage;
897
        d.target = target;
898
        if (_thrash.part[0] == 3)
899
        {
900
            d.damage = 1;
901
            if (_thrash.part[1] == 3)
902
                d.duckmode = 1;
903
        }
904
    }
905
    if (thrashcon <= 2)
906
        btimer = 10;
907
    switch (legattack)
908
    {
909
        case 0:
910
            obj_rouxls_enemy.advancespeed = 7;
911
            obj_rouxls_enemy.returnspeed = 7;
912
            if ((thrashcon == 3 || thrashcon == 5) && _thrash.stomp != 0)
913
            {
914
                for (var i = 0; i < 1; i++)
915
                {
916
                    if (i == 0)
917
                    {
918
                        d = instance_create(x + 30, gt_maxy() - 36, obj_animation);
919
                        d.sprite_index = spr_thrash_bash;
920
                        d.image_xscale = choose(3, -3);
921
                        d.image_yscale = 3;
922
                    }
923
                    d = instance_create(x + 30, y + 190, obj_thrash_stomp_bullet);
924
                    d.direction = point_direction(d.x, d.y, obj_growtangle.x, obj_growtangle.y - 600) + random_range(-30, 30);
925
                    d.spin = sign(d.direction - 90) * random_range(1, 10);
926
                    d.speed = random_range(8, 10);
927
                    d.sprite_index = spr_thrash_star;
928
                    d.gravity = 0.25;
929
                    d.depth = obj_rouxls_enemy.depth - 1;
930
                    d.grazepoints = 8;
931
                    d.imageonly = 1;
932
                    d.damage = damage;
933
                    d.target = target;
934
                }
935
                _thrash.stomp = 0;
936
            }
937
            break;
938
        case 1:
939
            obj_rouxls_enemy.advancespeed = 12;
940
            obj_rouxls_enemy.returnspeed = 5;
941
            if (thrashcon == 4 && btimer >= 12 && obj_rouxls_enemy.thrashtimer <= 90)
942
            {
943
                d = instance_create(x + 30, y + 190, obj_thrash_wheel_bullet);
944
                d.direction = random_range(40, 88);
945
                d.speed = 
scr_remapvalue
scr_remapvalue

function
scr_remapvalue(arg0, arg1, arg2, arg3, arg4)
{ if (arg1 == arg0) return arg3; var __invLerp = (arg2 - arg0) / (arg1 - arg0); return lerp(arg3, arg4, __invLerp); } function remap(arg0, arg1, arg2, arg3, arg4) { var __invLerp =
scr_inverselerp(arg1, arg2, arg0);
return lerp(arg3, arg4, __invLerp); } function remap_clamped(arg0, arg1, arg2, arg3, arg4) { var __remapped_value = remap(arg0, arg1, arg2, arg3, arg4); return clamp(__remapped_value, arg3, arg4); }
(40, 85, d.direction, 4, 8) + random(3);
946
                d.bounce = 1;
947
                d.sprite_index = spr_thrash_wheel;
948
                d.image_yscale = 1.5;
949
                d.image_xscale = 1.5;
950
                d.gravity = 0.25;
951
                d.depth = obj_rouxls_enemy.depth - 1;
952
                d.grazepoints = 10;
953
                d.damage = damage;
954
                d.target = target;
955
                btimer = 0;
956
            }
957
            break;
958
        case 2:
959
            obj_rouxls_enemy.advancespeed = 4;
960
            obj_rouxls_enemy.returnspeed = 8;
961
            if (thrashcon == 3 && btimer >= 11)
962
            {
963
                d = instance_create(x + 13 + (8 * made), y + 197, obj_thrash_missiles);
964
                d.direction = 90;
965
                d.speed = 2;
966
                d.gravity = -0.2;
967
                d.depth = _thrash.depth - 1;
968
                d.grazepoints = 8;
969
                d.damage = damage;
970
                d.target = target;
971
                btimer = 0;
972
                made++;
973
            }
974
            break;
975
        case 3:
976
            obj_rouxls_enemy.advancespeed = 7;
977
            obj_rouxls_enemy.returnspeed = 7;
978
            break;
979
    }
980
}
981
else if (type == 28)
982
{
983
    if (btimer >= max(10, 15 - (made / 2)))
984
    {
985
        var xoffset;
986
        if (init == 1)
987
        {
988
            obj_rouxls_enemy.saberanim = 1;
989
            xoffset = irandom(3);
990
            btimer = 10;
991
            special = -1;
992
            init = 2;
993
            exit;
994
        }
995
        else
996
        {
997
            xoffset = irandom(2);
998
        }
999
        if (xoffset == special)
1000
            xoffset = 3;
1001
        var leftx = obj_growtangle.x - 53;
1002
        d = instance_create(leftx + (xoffset * 36), cameray() - 20, obj_rouxls_fallingblock);
1003
        d.gravity = 0.25;
1004
        d.vspeed = 3.5;
1005
        d.damage = damage;
1006
        d.grazepoints = 8;
1007
        d.target = target;
1008
        special = xoffset;
1009
        btimer = 0;
1010
        made++;
1011
    }
1012
}
1013
else if (type == 29)
1014
{
1015
    if (init == 1)
1016
    {
1017
        special = irandom(2);
1018
        init = 2;
1019
    }
1020
    var xx = x;
1021
    var yy = y;
1022
    d = instance_create(xx, yy, obj_thrash_laserbullet);
1023
    d.direction = 0;
1024
    d.damage = damage;
1025
    d.target = target;
1026
    d.grazepoints = 4;
1027
    d.attackdirection = special;
1028
    special = (special + irandom(1)) % 3;
1029
}
1030
else if (type == 30)
1031
{
1032
    if (btimer >= (20 * ratio))
1033
    {
1034
        var xx = __view_get(e__VW.XView, 0) - 20;
1035
        if (side == 1)
1036
            xx = __view_get(e__VW.XView, 0) + 660;
1037
        var yy = miny + random(maxy - miny);
1038
        bul = instance_create(xx, yy, obj_clubsbullet);
1039
        bul.speed = 12;
1040
        bul.damage = damage;
1041
        bul.target = target;
1042
        bul.grazepoints = 4;
1043
        if (side == 1)
1044
        {
1045
            bul.direction = 180;
1046
            bul.image_angle = 180;
1047
        }
1048
        btimer = 0;
1049
    }
1050
}
1051
else if (type == 31)
1052
{
1053
    if (btimer >= (30 * ratio))
1054
    {
1055
        btimer = 0;
1056
        if (side == -1)
1057
            dir = 225;
1058
        if (side == 1)
1059
            dir = 315;
1060
        radius = 400;
1061
        var xx = lengthdir_x(radius, dir);
1062
        var yy = lengthdir_y(radius, dir);
1063
        d = instance_create(obj_heart.x + 8 + xx, obj_heart.y + 8 + yy, obj_clubsbullet_dark);
1064
        d.damage = damage;
1065
        d.target = target;
1066
        d.grazepoints = 4;
1067
        d.direction = dir + 180;
1068
        d.speed = 20;
1069
        d.friction = 1;
1070
        with (d)
1071
            image_angle = direction;
1072
        if (side == 1)
1073
            side = -1;
1074
        else
1075
            side = 1;
1076
    }
1077
}
1078
else if (type == 32)
1079
{
1080
    if (init == 1)
1081
    {
1082
        dd = 0;
1083
        dd2 = 0;
1084
        phase = 0;
1085
        strikes = 0;
1086
        if (special == 1)
1087
            global.turntimer = 5400;
1088
        var xx = obj_growtangle.x;
1089
        var yy = obj_growtangle.y;
1090
        d = instance_create(xx + 1, yy, obj_bulletparent);
1091
        d.sprite_index = spr_tm_grid;
1092
        d.image_angle = 45;
1093
        d.image_blend = c_gray;
1094
        d.element = 6;
1095
        d.depth = obj_growtangle.depth - 1;
1096
        for (var i = 0; i < 4; i++)
1097
        {
1098
            xx = obj_growtangle.x;
1099
            yy = obj_growtangle.y;
1100
            if (i == 0 || i == 3)
1101
                yy += ((i == 0) ? -50 : 50);
1102
            else
1103
                xx += ((i == 1) ? -50 : 50);
1104
            d = instance_create(xx, yy, obj_bulletparent);
1105
            d.sprite_index = spr_tm_letters;
1106
            d.image_speed = 0;
1107
            d.image_index = i;
1108
            d.element = 6;
1109
            d.image_blend = c_gray;
1110
            d.depth = obj_growtangle.depth - 1;
1111
        }
1112
        obj_growtangle.target_angle = 45;
1113
        obj_growtangle.image_angle = 45;
1114
        d = 
scr_bullet_create
scr_bullet_create

function
scr_bullet_create(arg0, arg1, arg2)
{ var __newbullet = instance_create(arg0, arg1, arg2); __newbullet.damage = damage; __newbullet.target = target; if (variable_instance_exists(self, "element")) __newbullet.element = element; return __newbullet; }
(x - 22, y - 6, obj_tm_quizzler);
1115
        made++;
1116
        d.depth = global.monsterinstance[creator].depth;
1117
        d.controller = self;
1118
        d.element = 6;
1119
        d.dojo = special < -2;
1120
        d.creator = creator;
1121
        global.monsterinstance[creator].lastQuizLetter = -1;
1122
        d.difficulty = difficulty;
1123
        init = 2;
1124
        global.turntimer += 120;
1125
        btimer = 0;
1126
    }
1127
    var attacktimer = 90;
1128
    if (difficulty > 0)
1129
        attacktimer = (difficulty == 3) ? 40 : 60;
1130
    var quizReady = !instance_exists(obj_tm_quizzler);
1131
    if ((made == 4 || special < -2) && quizReady && btimer >= 0)
1132
    {
1133
        if (special == 1)
1134
        {
1135
            special = -2;
1136
            btimer = -20;
1137
        }
1138
        else if (special == -2)
1139
        {
1140
            special = -1;
1141
            difficulty++;
1142
            dd = 
scr_dark_marker_animated
scr_dark_marker_animated

function
scr_dark_marker_animated()
{ var x_pos = argument[0]; var y_pos = argument[1]; var sprite = argument[2]; var anim_speed = (argument_count > 3) ? argument[3] : 0.2; thismarker = instance_create(x_pos, y_pos, obj_marker); with (thismarker) { sprite_index = sprite; image_speed = anim_speed; image_xscale = 2; image_yscale = 2;
scr_depth();
} return thismarker; }
(x + 80, y + 4, spr_tm_pleased_effect, 1);
1143
            dd2 = 
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 + 74, y + 66, spr_cutscene_26_tasquemanager);
1144
            var _maru = instance_create(x + (phase * 40), y + 175, obj_bulletparent);
1145
            _maru.sprite_index = spr_tm_maru;
1146
            _maru.image_xscale = 2;
1147
            _maru.image_yscale = 2;
1148
            _maru = instance_create(obj_growtangle.x, obj_growtangle.y, obj_tm_quiz_result);
1149
            _maru.sprite_index = spr_tm_maru_big;
1150
            _maru.image_xscale = 3;
1151
            _maru.image_yscale = 3;
1152
            _maru.depth = obj_heart.depth - 15;
1153
            _maru.max_time = 45;
1154
            dd.depth = dd2.depth - 1;
1155
            with (obj_tasque_manager_enemy)
1156
                visible = 0;
1157
            snd_play(snd_coin);
1158
            btimer = -45;
1159
            phase++;
1160
        }
1161
        else if (special == -1)
1162
        {
1163
            if (i_ex(dd))
1164
                instance_destroy(dd);
1165
            if (i_ex(dd2))
1166
                instance_destroy(dd2);
1167
            made = 0;
1168
            with (obj_tasque_manager_enemy)
1169
                visible = 1;
1170
            if (strikes == 3)
1171
            {
1172
                global.flag[36 dojo_failure] = 1;
1173
                global.flag[39 dojo_abort?] = 1;
1174
                global.turntimer = 10;
1175
                btimer = -40;
1176
                obj_tasque_manager_enemy.hspeed = 10;
1177
                exit;
1178
            }
1179
            if (phase == 3)
1180
            {
1181
                special = -5;
1182
                global.flag[39 dojo_abort?] = 1;
1183
                global.turntimer = 10;
1184
                btimer = -40;
1185
                obj_tasque_manager_enemy.hspeed = 10;
1186
            }
1187
            else
1188
            {
1189
                special = 1;
1190
                btimer = attacktimer - 10;
1191
            }
1192
        }
1193
        else if (special == -4 && global.encounterno == 89)
1194
        {
1195
            special = -3;
1196
            btimer = -20;
1197
        }
1198
        else if (special == -3)
1199
        {
1200
            special = -1;
1201
            made = 4;
1202
            dd2 = 
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, y, spr_tm_hurt);
1203
            with (obj_tasque_manager_enemy)
1204
                visible = 0;
1205
            snd_play(snd_error);
1206
            if (global.encounterno == 89)
1207
            {
1208
                var _batsu = instance_create(x + (strikes * 40), y + 215, obj_bulletparent);
1209
                _batsu.sprite_index = spr_tm_batsu;
1210
                _batsu.image_xscale = 2;
1211
                _batsu.image_yscale = 2;
1212
                _batsu.element = 6;
1213
                strikes++;
1214
                btimer = -45;
1215
                _batsu = instance_create(obj_growtangle.x, obj_growtangle.y, obj_tm_quiz_result);
1216
                _batsu.sprite_index = spr_tm_batsu_big;
1217
                _batsu.image_xscale = 3;
1218
                _batsu.image_yscale = 3;
1219
                _batsu.depth = obj_heart.depth - 15;
1220
                _batsu.max_time = 45;
1221
            }
1222
        }
1223
    }
1224
    else if (quizReady && btimer > attacktimer && special >= 0 && made < 4)
1225
    {
1226
        if (special == 1)
1227
            made++;
1228
        d = 
scr_bullet_create
scr_bullet_create

function
scr_bullet_create(arg0, arg1, arg2)
{ var __newbullet = instance_create(arg0, arg1, arg2); __newbullet.damage = damage; __newbullet.target = target; if (variable_instance_exists(self, "element")) __newbullet.element = element; return __newbullet; }
(x - 22, y - 6, obj_tm_quizzler);
1229
        d.element = 6;
1230
        d.creator = creator;
1231
        d.controller = self;
1232
        d.difficulty = difficulty;
1233
        d.turnlength = 90;
1234
        btimer = 0;
1235
        if (special == 1)
1236
            d.dojo = true;
1237
    }
1238
}
1239
else if (type == 33)
1240
{
1241
    if (made == 0)
1242
    {
1243
        made = 1;
1244
        tail = instance_create(obj_clubsenemy.x + 144, obj_clubsenemy.y + 125, obj_clovertail_intro);
1245
        tail.damage = damage;
1246
        tail.target = target;
1247
    }
1248
}
1249
else if (type == 34)
1250
{
1251
    if (btimer >= (14 * (difficulty + 1)))
1252
    {
1253
        if (init == 1 || side == 1)
1254
        {
1255
            side = irandom(2);
1256
            init = 2;
1257
        }
1258
        else
1259
        {
1260
            side = (side + irandom(1)) % 3;
1261
        }
1262
        snd_play_x(snd_spearappear, 1, 1.2);
1263
        d = instance_create(x, y, obj_werewerewire_laserbullet);
1264
        d.grazepoints = 4;
1265
        d.damage = damage;
1266
        d.target = target;
1267
        d.attackdirection = side;
1268
        btimer = 0;
1269
    }
1270
}
1271
else if (type == 35)
1272
{
1273
    if (init == 1)
1274
    {
1275
        global.turntimer = 3600;
1276
        difficulty = 0;
1277
        var xx = obj_growtangle.x;
1278
        var yy = obj_growtangle.y;
1279
        d = instance_create(xx + 1, yy, obj_bulletparent);
1280
        d.sprite_index = spr_tm_grid;
1281
        d.image_angle = 45;
1282
        d.image_blend = c_gray;
1283
        d.depth = obj_growtangle.depth - 1;
1284
        for (var i = 0; i < 4; i++)
1285
        {
1286
            xx = obj_growtangle.x;
1287
            yy = obj_growtangle.y;
1288
            if (i == 0 || i == 3)
1289
                yy += ((i == 0) ? -50 : 50);
1290
            else
1291
                xx += ((i == 1) ? -50 : 50);
1292
            d = instance_create(xx, yy, obj_bulletparent);
1293
            d.sprite_index = spr_tm_letters;
1294
            d.image_speed = 0;
1295
            d.image_index = i;
1296
            d.image_blend = c_gray;
1297
            d.depth = obj_growtangle.depth - 1;
1298
        }
1299
        obj_growtangle.target_angle = 45;
1300
        obj_growtangle.image_angle = 45;
1301
        d = 
scr_bullet_create
scr_bullet_create

function
scr_bullet_create(arg0, arg1, arg2)
{ var __newbullet = instance_create(arg0, arg1, arg2); __newbullet.damage = damage; __newbullet.target = target; if (variable_instance_exists(self, "element")) __newbullet.element = element; return __newbullet; }
(x, y, obj_tm_quizzler);
1302
        d.depth = global.monsterinstance[creator].depth;
1303
        d.creator = creator;
1304
        d.difficulty = difficulty;
1305
        d.dojo = true;
1306
        init = 2;
1307
        global.turntimer += 120;
1308
        btimer = 0;
1309
    }
1310
}
1311
else if (type == 46)
1312
{
1313
    if (init == 1)
1314
    {
1315
        init = 2;
1316
        d = instance_create(obj_growtangle.x, miny - 130, obj_bqueen_missle_controller);
1317
        d.damage = damage;
1318
        d.target = target;
1319
    }
1320
}
1321
else if (type == 47)
1322
{
1323
    if (init == 1)
1324
    {
1325
        init = 2;
1326
        d = instance_create(obj_growtangle.x, miny - 130, obj_bqueen_breath_controller);
1327
        d.damage = damage;
1328
        d.target = target;
1329
    }
1330
}
1331
else if (type == 48)
1332
{
1333
    if (btimer >= 135 && !i_ex(obj_ch2_dojo_puzzlebullet_maker))
1334
    {
1335
        var xmod = 0;
1336
        if (roundcount == 1)
1337
            xmod = irandom(20) * choose(-1, 1);
1338
        if (roundcount == 2)
1339
            xmod = irandom(30) * choose(-1, 1);
1340
        if (roundcount == 3)
1341
            xmod = irandom(40) * choose(-1, 1);
1342
        if (roundcount == 4)
1343
            xmod = irandom(60) * choose(-1, 1);
1344
        if (roundcount > 4)
1345
            xmod = irandom(80) * choose(-1, 1);
1346
        bm = instance_create(320 + xmod, 40, obj_ch2_dojo_puzzlebullet_maker);
1347
        bm.grazepoints = grazepoints;
1348
        bm.damage = 1;
1349
        bm.target = target;
1350
        switch (roundcount)
1351
        {
1352
            case 0:
1353
                bm.times = 7;
1354
                bm.timetarg = 18;
1355
                bm.bulletspeed = 6;
1356
                break;
1357
            case 1:
1358
                bm.times = 7;
1359
                bm.timetarg = 15;
1360
                bm.bulletspeed = 6;
1361
                break;
1362
            case 2:
1363
                bm.times = 7;
1364
                bm.timetarg = 13;
1365
                bm.bulletspeed = 6;
1366
                break;
1367
            case 3:
1368
                bm.times = 7;
1369
                bm.timetarg = 11;
1370
                bm.bulletspeed = 6;
1371
                break;
1372
            default:
1373
                bm.times = 7;
1374
                bm.timetarg = 10;
1375
                bm.bulletspeed = 6;
1376
                break;
1377
        }
1378
        btimer = 0;
1379
        roundcount++;
1380
    }
1381
}
1382
else if (type == 49)
1383
{
1384
    if (made == 0)
1385
    {
1386
        made = 1;
1387
        with (obj_heart)
1388
            color = 1;
1389
        instance_create(camerax() + 424, cameray() + 100, obj_sneo_faceattack);
1390
        with (obj_battlesolid)
1391
            x = camerax() + 260;
1392
    }
1393
}
1394
else if (type == 50)
1395
{
1396
    if (btimer >= 45 && made == 0)
1397
    {
1398
        made = 1;
1399
        snd_play(snd_explosion_8bit);
1400
        var initangle = random(80);
1401
        var initspeed = 4;
1402
        bulcount = 9;
1403
        repeat (2)
1404
        {
1405
            for (var i = 0; i < bulcount; i++)
1406
            {
1407
                bullet = instance_create(x, y, obj_regularbullet);
1408
                bullet.sprite_index = spr_spamtonhead;
1409
                bullet.image_index = choose(0, 1, 2, 3);
1410
                bullet.image_speed = 0.25;
1411
                bullet.direction = initangle;
1412
                bullet.speed = 2 + initspeed;
1413
                bullet.depth -= made;
1414
                initangle += (360 / bulcount);
1415
                
scr_bullet_inherit
scr_bullet_inherit

function
scr_bullet_inherit(arg0)
{ if (i_ex(arg0)) { if (damage != -1) arg0.damage = damage; if (grazepoints != -1) arg0.grazepoints = grazepoints; if (timepoints != -1) arg0.timepoints = timepoints; if (inv != -1) arg0.inv = inv; if (target != -1) arg0.target = target; if (grazed != -1) arg0.grazed = 0; if (grazetimer != -1) arg0.grazetimer = 0; arg0.element = element; } }
(bullet);
1416
            }
1417
            initspeed += 4;
1418
            initangle = random(50);
1419
        }
1420
        with (creatorid)
1421
        {
1422
            global.monster[myself] = 0;
1423
            visible = 0;
1424
        }
1425
    }
1426
}
1427
else if (type == 51)
1428
{
1429
    if (btimer >= 1 && made == 0)
1430
    {
1431
        made = 1;
1432
        pip = instance_create(camerax() + 530, cameray() + 100, obj_sneo_weird_end_pipis);
1433
        pip.damage = damage;
1434
        pip.target = target;
1435
        pip = instance_create(camerax() + 448, cameray() + 168, obj_sneo_weird_end_pipis);
1436
        pip.damage = damage;
1437
        pip.target = target;
1438
        pip = instance_create(camerax() + 510, cameray() + 250, obj_sneo_weird_end_pipis);
1439
        pip.damage = damage;
1440
        pip.target = target;
1441
    }
1442
    if (btimer >= 45 && btimer < 46)
1443
    {
1444
        snd_play(snd_explosion_8bit);
1445
        with (obj_sneo_weird_end_pipis)
1446
            event_user(0);
1447
    }
1448
    if (btimer >= 100 && btimer < 110)
1449
    {
1450
        btimer = 120;
1451
        with (obj_spamton_neo_enemy)
1452
            
scr_move_to_rememberxy
scr_move_to_rememberxy

function
scr_move_to_rememberxy(arg0)
{
scr_move_to_point_over_time(___myrememberx, ___myremembery, arg0);
}
(4);
1453
        global.turntimer = 1;
1454
    }
1455
}
1456
1457
enum e__VW
1458
{
1459
    XView,
1460
    YView,
1461
    WView,
1462
    HView,
1463
    Angle,
1464
    HBorder,
1465
    VBorder,
1466
    HSpeed,
1467
    VSpeed,
1468
    Object,
1469
    Visible,
1470
    XPort,
1471
    YPort,
1472
    WPort,
1473
    HPort,
1474
    Camera,
1475
    SurfaceID
1476
}