Deltarune (Chapter 2) script viewer

← back to main script listing

gml_Object_obj_attackpress_Create_0

(view raw script w/o annotations or w/e)
1
active = 0;
2
fastmode = 1;
3
if (fastmode == 1)
4
    active = 1;
5
goahead = 0;
6
linespeed = 2;
7
linex = -10;
8
spelluse = 0;
9
spelldelay[0] = 10;
10
spelldelay[1] = 10;
11
spelldelay[2] = 10;
12
maxdelay = 0;
13
maxdelaytimer = 0;
14
if (spelluse == 0)
15
{
16
    for (xyz = 0; xyz < 3; xyz += 1)
17
    {
18
        havechar[xyz] = 0;
19
        charitem[xyz] = 0;
20
        charspell[xyz] = 0;
21
        if (global.charaction[xyz] == 1)
22
            havechar[xyz] = 1;
23
        if (global.charaction[xyz] == 4 || global.charaction[xyz] == 2)
24
        {
25
            if (maxdelay == 0)
26
                maxdelay = 25;
27
            maxdelay += 15;
28
            if (xyz == 2 && spelluse == 1)
29
            {
30
                if (spelldelay[1] == 25)
31
                    spelldelay[2] = 45;
32
                else
33
                    spelldelay[2] = 25;
34
            }
35
            if (xyz == 1 && spelluse == 1)
36
                spelldelay[1] = 25;
37
            spelluse = 1;
38
            if (global.charaction[xyz] == 4)
39
                charitem[xyz] = 1;
40
            else
41
                charspell[xyz] = 1;
42
        }
43
    }
44
}
45
spelluse = 0;
46
fade = 0;
47
fadeamt = 0;
48
fakefade = 0;
49
bcolor = c_navy;
50
charcolor[0] = 16776960;
51
charcolor[1] = 16711935;
52
charcolor[2] = 65280;
53
target = 0;
54
global.hittarget[0] = global.chartarget[0];
55
global.hittarget[1] = global.chartarget[1];
56
global.hittarget[2] = global.chartarget[2];
57
boltcolor[0] = merge_color(c_aqua, c_white, 0.5);
58
boltcolor[1] = merge_color(c_fuchsia, c_white, 0.5);
59
boltcolor[2] = merge_color(c_lime, c_white, 0.5);
60
imagetimer = 0;
61
posttimer = 0;
62
timermax = 50;
63
if (havechar[0] == 0 && havechar[1] == 0 && havechar[2] == 0)
64
{
65
    timermax = 3;
66
    if (spelluse == 1 && fastmode == 1)
67
        timermax += maxdelay;
68
}
69
boltorder[0] = choose(0, 1, 2);
70
if (havechar[1] == 0 && havechar[2] == 0)
71
    boltorder[0] = 0;
72
if (boltorder[0] == 2)
73
    boltorder[1] = choose(0, 1);
74
if (boltorder[0] == 1)
75
    boltorder[1] = choose(0, 2);
76
if (boltorder[0] == 0)
77
    boltorder[1] = choose(1, 2);
78
if (boltorder[1] == 2 && boltorder[0] == 0)
79
    boltorder[2] = 1;
80
if (boltorder[1] == 0 && boltorder[0] == 2)
81
    boltorder[2] = 1;
82
if (boltorder[1] == 1 && boltorder[0] == 0)
83
    boltorder[2] = 2;
84
if (boltorder[1] == 0 && boltorder[0] == 1)
85
    boltorder[2] = 2;
86
if (boltorder[1] == 2 && boltorder[0] == 1)
87
    boltorder[2] = 0;
88
if (boltorder[1] == 1 && boltorder[0] == 2)
89
    boltorder[2] = 0;
90
if (havechar[1] == 1 && havechar[2] == 0)
91
{
92
    boltorder[0] = choose(0, 1);
93
    if (boltorder[0] == 1)
94
        boltorder[2] = 0;
95
    else
96
        boltorder[2] = 1;
97
}
98
boltgap = 20;
99
boltspeed = 8;
100
boltx = 0;
101
points[0] = 0;
102
points[1] = 0;
103
points[2] = 0;
104
pressbuffer[0] = 0;
105
pressbuffer[1] = 0;
106
pressbuffer[2] = 0;
107
pressbuffer[3] = 0;
108
charbolt[0] = 1;
109
charbolt[1] = 1;
110
charbolt[2] = 1;
111
for (i = 0; i < 3; i += 1)
112
{
113
    if (havechar[i] == 0)
114
        charbolt[i] = 0;
115
}
116
attacked[0] = 0;
117
attacked[1] = 0;
118
attacked[2] = 0;
119
bolttotal = charbolt[0] + charbolt[1] + charbolt[2];
120
boltxoff = 0;
121
my_method = 1;
122
boltnum = 1;
123
boltuse[0] = 0;
124
boltuse[1] = 0;
125
boltuse[2] = 0;
126
lastbolt = -1;
127
boltchar[0] = -1;
128
diff = 10;
129
if (global.flag[13 use_old_attack] == 0)
130
    diff += 2;
131
if (my_method == 1)
132
{
133
    for (i = 0; i < bolttotal; i += 1)
134
    {
135
        boltalive[i] = 1;
136
        c = choose(0, 1, 2);
137
        while (havechar[c] == 0)
138
            c = choose(0, 1, 2);
139
        while (boltuse[c] >= charbolt[c])
140
        {
141
            c = choose(0, 1, 2);
142
            while (havechar[c] == 0)
143
                c = choose(0, 1, 2);
144
        }
145
        boltchar[i] = c;
146
        boltuse[c] += 1;
147
    }
148
    for (i = 0; i < bolttotal; i += 1)
149
    {
150
        boltred[i] = 0;
151
        boltxoff += lastbolt;
152
        boltframe[i] = 30 + boltxoff;
153
        if (i < (bolttotal - 1))
154
        {
155
            if (lastbolt != 0 && boltchar[i] != boltchar[i + 1])
156
            {
157
                lastbolt = choose(0, diff, diff * 1.5);
158
                boltred[i] = 1;
159
            }
160
            else
161
            {
162
                lastbolt = choose(diff, diff * 1.5);
163
            }
164
        }
165
        else
166
        {
167
            lastbolt = choose(diff, diff * 1.5);
168
        }
169
    }
170
}
171
if (my_method == 2)
172
{
173
    for (c = 0; c < 3; c += 1)
174
    {
175
        if (havechar[c] == 1)
176
        {
177
            for (i = 0; i < boltnum; i += 1)
178
            {
179
                boltframe[i][c] = 30 + (boltorder[c] * boltgap) + (i * choose(5, 10, 15));
180
                if (i == 2)
181
                {
182
                    if (boltframe[i][2] == boltframe[i][0] && boltframe[i][2] == boltframe[i][1])
183
                        boltframe[i][2] += 10;
184
                }
185
            }
186
        }
187
    }
188
}
189
haveauto = 0;
190
autoed = 0;
191
if (global.charauto[2] == 1)
192
{
193
    if (global.char[0] == 2 || global.char[1] == 2 || global.char[2] == 2)
194
    {
195
        sus = 0;
196
        if (global.char[1] == 2)
197
            sus = 1;
198
        if (global.char[2] == 2)
199
            sus = 2;
200
        if (global.hp[2] >= 0 && global.charmove[sus] == 1)
201
        {
202
            haveauto = 1;
203
            if (timermax == 3)
204
                timermax = 50;
205
        }
206
    }
207
}