Deltarune (Chapter 4) script viewer

← back to main script listing

gml_Object_obj_event_manager_Create_0

(view raw script w/o annotations or w/e)
1
pad_index = -1;
2
trophies_enabled = false;
3
trophies_queue = [];
4
event_cooldown = 0;
5
_debug = -4;
6
climb_timer = 0;
7
climb_timer_active = false;
8
9
init = function()
10
{
11
    init_trophies();
12
};
13
14
init_trophies = function()
15
{
16
    event_show_debug_message("*** init_trophies");
17
    if (!variable_global_exists("trophy_data"))
18
        global.trophy_data = [];
19
    if (!variable_global_exists("trophies"))
20
        global.trophies = [];
21
    for (var i = 0; i < 30; i++)
22
        global.trophy_data[array_length(global.trophy_data)] = get_trophy_by_id(i);
23
    if (os_type == os_ps4 || os_type == os_ps5)
24
    {
25
        psn_load_modules();
26
        psn_init_np_libs("", "", "");
27
    }
28
    if (
scr_debug
scr_debug

function
scr_debug()
{ if (global.debug == 1) return 1; }
() && !global.is_console)
29
        
scr_debug_load_trophies
scr_debug_load_trophies

function
scr_debug_load_trophies()
{ }
();
30
    if (
scr_debug
scr_debug

function
scr_debug()
{ if (global.debug == 1) return 1; }
() && !global.is_console)
31
        climb_timer_active = true;
32
};
33
34
load_trophies = function(arg0)
35
{
36
    if (pad_index == arg0)
37
        exit;
38
    pad_index = arg0;
39
    if (os_type == os_ps4 || os_type == os_ps5)
40
    {
41
        psn_init_trophy(pad_index);
42
        psn_get_trophy_unlock_state(pad_index);
43
    }
44
};
45
46
enable_trophies = function()
47
{
48
    trophies_enabled = true;
49
};
50
51
disable_trophies = function()
52
{
53
    trophies_enabled = false;
54
};
55
56
get_debug_obj = function()
57
{
58
    if (!instance_exists(_debug))
59
        _debug = instance_create(0, 0, obj_event_manager_debug);
60
    return _debug;
61
};
62
63
is_trophy_unlocked = function(arg0)
64
{
65
    var is_unlocked = false;
66
    for (var i = 0; i < array_length(global.trophies); i++)
67
    {
68
        if (global.trophies[i] != arg0)
69
            continue;
70
        event_show_debug_message("*** trophy ~1 is already unlocked", arg0);
71
        is_unlocked = true;
72
        break;
73
    }
74
    if (!is_unlocked)
75
    {
76
        for (var i = 0; i < array_length(trophies_queue); i++)
77
        {
78
            if (trophies_queue[i] != arg0)
79
                continue;
80
            event_show_debug_message("*** trophy ~1 is already queued", arg0);
81
            is_unlocked = true;
82
            break;
83
        }
84
    }
85
    return is_unlocked;
86
};
87
88
event_show_debug_message = function(arg0, arg1 = -1, arg2 = true)
89
{
90
    var _debug_message = arg0;
91
    var _debugger = get_debug_obj();
92
    with (_debugger)
93
        trophy_show_debug_message(_debug_message, arg1, arg2);
94
};
95
96
get_trophy_by_id = function(arg0)
97
{
98
    var _trophy = -4;
99
    for (var i = 0; i < array_length(global.trophy_data); i++)
100
    {
101
        if (global.trophy_data[i].index != arg0)
102
            continue;
103
        _trophy = global.trophy_data[i];
104
        break;
105
    }
106
    if (_trophy == -4)
107
        _trophy = new trophy(arg0);
108
    return _trophy;
109
};
110
111
can_unlock_trophy = function(arg0)
112
{
113
    var _trophy = get_trophy_by_id(arg0);
114
    var _threshold = _trophy.threshold;
115
    var _flags = _trophy.flags;
116
    var can_unlock = false;
117
    if (array_length(_flags) > 0)
118
    {
119
        for (var i = 0; i < array_length(_flags); i++)
120
        {
121
            var __flag = _flags[i];
122
            if (global.flag[__flag] >= _threshold)
123
            {
124
                can_unlock = true;
125
                break;
126
            }
127
        }
128
    }
129
    else
130
    {
131
        can_unlock = true;
132
    }
133
    return can_unlock;
134
};
135
136
unlock_trophy = function(arg0)
137
{
138
    global.trophies[array_length(global.trophies)] = arg0;
139
    if (os_type == os_ps4 || os_type == os_ps5)
140
        psn_unlock_trophy(pad_index, arg0);
141
    event_show_debug_message("*** trophy unlocked: ~1", arg0, false);
142
    if (
scr_debug
scr_debug

function
scr_debug()
{ if (global.debug == 1) return 1; }
() && !global.is_console)
143
        
scr_debug_save_trophies
scr_debug_save_trophies

function
scr_debug_save_trophies()
{ }
();
144
};
145
146
queue_trophy = function(arg0)
147
{
148
    array_push(trophies_queue, arg0);
149
    event_show_debug_message("*** queued trophy: ~1", arg0, false);
150
};
151
152
reset_trophy = function(arg0)
153
{
154
    var _trophy = get_trophy_by_id(arg0);
155
    var _flags = _trophy.flags;
156
    if (array_length(_flags) > 0)
157
    {
158
        for (var i = 0; i < array_length(_flags); i++)
159
        {
160
            var __flag = _flags[i];
161
            global.flag[__flag] = 0;
162
            event_show_debug_message("*** reset trophy flag: " + string(__flag));
163
        }
164
    }
165
    var _adjusted_list = [];
166
    for (var i = 0; i < array_length(global.trophies); i++)
167
    {
168
        if (global.trophies[i] == arg0)
169
            continue;
170
        _adjusted_list[array_length(_adjusted_list)] = global.trophies[i];
171
    }
172
    global.trophies = _adjusted_list;
173
    var _adjusted_queue = [];
174
    for (var i = 0; i < array_length(trophies_queue); i++)
175
    {
176
        if (trophies_queue[i] == arg0)
177
            continue;
178
        _adjusted_queue[array_length(_adjusted_queue)] = trophies_queue[i];
179
    }
180
    trophies_queue = _adjusted_queue;
181
    event_show_debug_message("*** reset trophy: ~1", arg0, false);
182
    if (
scr_debug
scr_debug

function
scr_debug()
{ if (global.debug == 1) return 1; }
() && !global.is_console)
183
    {
184
        if (arg0 == UnknownEnum.Value_24)
185
        {
186
            climb_timer_active = true;
187
            climb_timer = 0;
188
        }
189
        
scr_debug_save_trophies
scr_debug_save_trophies

function
scr_debug_save_trophies()
{ }
();
190
    }
191
};
192
193
reset_all_trophies = function()
194
{
195
    for (var i = 0; i < array_length(global.trophies); i++)
196
    {
197
        var _trophy = get_trophy_by_id(global.trophies[i]);
198
        var _flags = _trophy.flags;
199
        if (array_length(_flags) > 0)
200
        {
201
            for (var j = 0; j < array_length(_flags); j++)
202
            {
203
                var __flag = _flags[j];
204
                global.flag[__flag] = 0;
205
                event_show_debug_message("*** reset trophy flag: " + string(__flag));
206
            }
207
        }
208
    }
209
    global.trophies = [];
210
    trophies_queue = [];
211
    event_show_debug_message("*** reset all trophies");
212
    if (
scr_debug
scr_debug

function
scr_debug()
{ if (global.debug == 1) return 1; }
() && !global.is_console)
213
        
scr_debug_save_trophies
scr_debug_save_trophies

function
scr_debug_save_trophies()
{ }
();
214
};
215
216
trigger_event = function(arg0, arg1, arg2 = "n/a")
217
{
218
    switch (arg0)
219
    {
220
        case UnknownEnum.Value_0:
221
            if (trophies_enabled)
222
                validate_trophy(arg1, arg2);
223
            break;
224
        case UnknownEnum.Value_1:
225
            if (event_cooldown > 0)
226
                break;
227
            event_cooldown = 10;
228
            trigger_event(UnknownEnum.Value_0, UnknownEnum.Value_8, UnknownEnum.Value_937);
229
            break;
230
        case UnknownEnum.Value_2:
231
            post_activity(arg1);
232
            break;
233
        default:
234
            break;
235
    }
236
};
237
238
validate_trophy = function(arg0, arg1)
239
{
240
    var subtype = arg1;
241
    event_show_debug_message("*** validating trophy: ~1 | " + string(arg1), arg0);
242
    if (arg0 == UnknownEnum.Value_13)
243
    {
244
        if (!is_trophy_unlocked(UnknownEnum.Value_8))
245
            queue_trophy(UnknownEnum.Value_8);
246
    }
247
    if (is_trophy_unlocked(arg0))
248
        exit;
249
    if (subtype != "n/a")
250
    {
251
        global.flag[subtype] += 1;
252
        event_show_debug_message("*** increase trophy event flag: " + string(subtype) + " | " + string(global.flag[subtype]));
253
    }
254
    if (!can_unlock_trophy(arg0))
255
        exit;
256
    queue_trophy(arg0);
257
    if (
scr_debug
scr_debug

function
scr_debug()
{ if (global.debug == 1) return 1; }
() && !global.is_console)
258
    {
259
        if ((array_length(global.trophies) + array_length(trophies_queue)) >= 29)
260
            queue_trophy(UnknownEnum.Value_0);
261
    }
262
};
263
264
function trophy(arg0) constructor
265
{
266
    index = arg0;
267
    threshold = 0;
268
    flags = [];
269
    switch (arg0)
270
    {
271
        case UnknownEnum.Value_5:
272
            threshold = 4;
273
            flags = [UnknownEnum.Value_932, UnknownEnum.Value_933];
274
            break;
275
        case UnknownEnum.Value_6:
276
            threshold = 8;
277
            flags = [UnknownEnum.Value_934, UnknownEnum.Value_935];
278
            break;
279
        case UnknownEnum.Value_7:
280
            threshold = 14;
281
            flags = [UnknownEnum.Value_936];
282
            break;
283
        case UnknownEnum.Value_8:
284
            threshold = 22;
285
            flags = [UnknownEnum.Value_937, UnknownEnum.Value_938];
286
            break;
287
        case UnknownEnum.Value_23:
288
            threshold = 110;
289
            flags = [UnknownEnum.Value_939];
290
            break;
291
        default:
292
            break;
293
    }
294
}
295
296
get_consumer_trophy = function()
297
{
298
    switch (global.chapter)
299
    {
300
        case 1:
301
            return UnknownEnum.Value_9;
302
            break;
303
        case 2:
304
            return UnknownEnum.Value_10;
305
            break;
306
        case 3:
307
            return UnknownEnum.Value_11;
308
            break;
309
        case 4:
310
            return UnknownEnum.Value_12;
311
            break;
312
    }
313
};
314
315
get_climb_time = function()
316
{
317
    return climb_timer / 30;
318
};
319
320
has_pending_trophies = function()
321
{
322
    return array_length(trophies_queue) > 0;
323
};
324
325
resolve_trophies = function()
326
{
327
    if (!trophies_enabled)
328
        exit;
329
    climb_timer = 0;
330
    for (var i = 0; i < array_length(trophies_queue); i++)
331
    {
332
        var _index = trophies_queue[i];
333
        unlock_trophy(_index);
334
    }
335
    trophies_queue = [];
336
};
337
338
post_activity = function(arg0)
339
{
340
    if (os_type != os_ps5)
341
        exit;
342
    var activity_id = "activity_ch" + string(global.chapter) + "_end";
343
    var activity_type = "";
344
    switch (arg0)
345
    {
346
        case UnknownEnum.Value_0:
347
            activity_type = "activityStart";
348
            break;
349
        case UnknownEnum.Value_1:
350
            activity_type = "activityEnd";
351
            break;
352
        default:
353
            break;
354
    }
355
    var uds_map = ds_map_create();
356
    ds_map_add(uds_map, "activityId", activity_id);
357
    if (arg0 == UnknownEnum.Value_1)
358
        ds_map_add(uds_map, "outcome", "completed");
359
    psn_post_uds_event(pad_index, activity_type, uds_map);
360
    ds_map_destroy(uds_map);
361
};
362
363
enum UnknownEnum
364
{
365
    Value_0,
366
    Value_1,
367
    Value_2,
368
    Value_5 = 5,
369
    Value_6,
370
    Value_7,
371
    Value_8,
372
    Value_9,
373
    Value_10,
374
    Value_11,
375
    Value_12,
376
    Value_13,
377
    Value_23 = 23,
378
    Value_24,
379
    Value_932 = 932,
380
    Value_933,
381
    Value_934,
382
    Value_935,
383
    Value_936,
384
    Value_937,
385
    Value_938,
386
    Value_939
387
}