Deltarune (Chapter 2) script viewer

← back to main script listing

gml_Object_obj_tm_quizzler_old_Step_1

(view raw script w/o annotations or w/e)
1
if (init == 0 || restart)
2
{
3
    if (init == 0)
4
    {
5
        animator.creator = creator;
6
        animator.quizmode = 1;
7
    }
8
    if (dojo && difficulty >= 4)
9
    {
10
        turnspeed = 40 - ((difficulty - 4) * 5);
11
        turns = difficulty - 2;
12
    }
13
    else if (difficulty == 5)
14
    {
15
        turnspeed = 30;
16
        turns = 5;
17
    }
18
    else if (difficulty == 4)
19
    {
20
        turnspeed = 40;
21
        turns = 4;
22
    }
23
    init = 1;
24
    restart = false;
25
    for (i = 0; i < turns; i++)
26
    {
27
        if (i > 0 && !canrepeat)
28
        {
29
            var nextletter = irandom(2);
30
            if (nextletter == lastletter)
31
                nextletter = 3;
32
            letters[i] = nextletter;
33
            lastletter = nextletter;
34
        }
35
        else
36
        {
37
            letters[i] = irandom(3);
38
        }
39
    }
40
}
41
timer--;
42
if (state == -1)
43
{
44
    if (timer <= 0)
45
    {
46
        timer = 0;
47
        state = 0;
48
    }
49
}
50
if (state == 0)
51
{
52
    if (currentturn == turns)
53
    {
54
        animator.targetx = obj_growtangle.x + 100;
55
        animator.targety = obj_growtangle.y;
56
        state = 1;
57
        animator.quizloop = true;
58
        currentturn = 0;
59
        timer = turnspeed + 10;
60
    }
61
    else if (timer <= 0)
62
    {
63
        var targetDirection;
64
        if (turns > 1)
65
        {
66
            var bottomangle = 140;
67
            var topangle = 220;
68
            if (turns == 2)
69
            {
70
                bottomangle = 170;
71
                topangle = 190;
72
            }
73
            else if (turns == 3)
74
            {
75
                bottomangle = 155;
76
                topangle = 205;
77
            }
78
            targetDirection = lerp(bottomangle, topangle, currentturn / (turns - 1));
79
        }
80
        else
81
        {
82
            targetDirection = 180;
83
        }
84
        var offset = 36;
85
        var xx = x + 80 + lengthdir_x(offset, targetDirection);
86
        var yy = y + 40 + lengthdir_y(offset, targetDirection);
87
        var _letter;
88
        for (i = 0; i < 2; i++)
89
        {
90
            temp = instance_create(xx, yy, obj_tm_quizletter);
91
            temp.sprite_index = spr_tm_letters;
92
            temp.image_speed = 0;
93
            _letter = letters[currentturn];
94
            temp.image_index = _letter;
95
            temp.direction = targetDirection;
96
            temp.speed = 10;
97
            temp.friction = 1;
98
            timer = turnspeed - 20;
99
            if (i == 1)
100
            {
101
                temp.outline = 1;
102
                temp.depth++;
103
            }
104
            temp.alarm[0] = (20 * (turns - currentturn)) - ((turns - 1 - currentturn) * 2);
105
        }
106
        currentturn++;
107
        snd_play(voiceclips[_letter]);
108
    }
109
}
110
else if (state == 1)
111
{
112
    if (animator.state == 0 && timer < 20)
113
        animator.state = 1;
114
    if (timer <= 0)
115
    {
116
        var xx = obj_growtangle.x + 1;
117
        var yy = obj_growtangle.y;
118
        var zaptime = (difficulty >= 4) ? clamp(turnspeed - 20, 10, 20) : 20;
119
        for (i = 0; i < 4; i++)
120
        {
121
            if (i == letters[currentturn])
122
                continue;
123
            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_tm_quizzap);
124
            d.alarm[0] = zaptime;
125
            d.letter = i;
126
        }
127
        currentturn++;
128
        animator.state = 2;
129
        timer = turnspeed;
130
        if (currentturn == turns)
131
        {
132
            alarm[1]
 = 20;
gml_Object_obj_tm_quizzler_old_Alarm_1.gml

animator.state = 3; if (dojo) { animator.quizloop = true; restart = true; state = 0; timer = 0; if (difficulty == 0) { state = -1; timer = 10; } currentturn = 0; if (difficulty < 7) rounds++; if (rounds == 2) { rounds = 0; difficulty++; } } else { instance_destroy(); }
133
            state = 2;
134
            timer = 20;
135
        }
136
        else
137
        {
138
            alarm[0]
 = 20;
gml_Object_obj_tm_quizzler_old_Alarm_0.gml

animator.state = 1;
139
        }
140
    }
141
}