Deltarune (Chapter 2) 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
7
init = function()
8
{
9
    init_trophies();
10
};
11
12
init_trophies = function()
13
{
14
    event_show_debug_message("*** init_trophies");
15
    if (!variable_global_exists("trophy_data"))
16
        global.trophy_data = [];
17
    if (!variable_global_exists("trophies"))
18
        global.trophies = [];
19
    for (var i = 0; i < 30; i++)
20
        global.trophy_data[array_length(global.trophy_data)] = get_trophy_by_id(i);
21
    if (os_type == os_ps4 || os_type == os_ps5)
22
    {
23
        psn_load_modules();
24
        psn_init_np_libs("", "", "");
25
    }
26
    if (
scr_debug
scr_debug

function
scr_debug()
{ return 0; }
() && !global.is_console)
27
        
scr_debug_load_trophies
scr_debug_load_trophies

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

function
scr_debug()
{ return 0; }
() && !global.is_console)
139
        
scr_debug_save_trophies
scr_debug_save_trophies

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

function
scr_debug()
{ return 0; }
() && !global.is_console)
179
        
scr_debug_save_trophies
scr_debug_save_trophies

function
scr_debug_save_trophies()
{ }
();
180
};
181
182
reset_all_trophies = function()
183
{
184
    for (var i = 0; i < array_length(global.trophies); i++)
185
    {
186
        var _trophy = get_trophy_by_id(global.trophies[i]);
187
        var _flags = _trophy.flags;
188
        if (array_length(_flags) > 0)
189
        {
190
            for (var j = 0; j < array_length(_flags); j++)
191
            {
192
                var __flag = _flags[j];
193
                global.flag[__flag] = 0;
194
                event_show_debug_message("*** reset trophy flag: " + string(__flag));
195
            }
196
        }
197
    }
198
    global.trophies = [];
199
    trophies_queue = [];
200
    event_show_debug_message("*** reset all trophies");
201
    if (
scr_debug
scr_debug

function
scr_debug()
{ return 0; }
() && !global.is_console)
202
        
scr_debug_save_trophies
scr_debug_save_trophies

function
scr_debug_save_trophies()
{ }
();
203
};
204
205
trigger_event = function(arg0, arg1, arg2 = "n/a")
206
{
207
    switch (arg0)
208
    {
209
        case UnknownEnum.Value_0:
210
            if (trophies_enabled)
211
                validate_trophy(arg1, arg2);
212
            break;
213
        case UnknownEnum.Value_1:
214
            if (event_cooldown > 0)
215
                break;
216
            event_cooldown = 10;
217
            trigger_event(UnknownEnum.Value_0, UnknownEnum.Value_6, UnknownEnum.Value_934);
218
            break;
219
        case UnknownEnum.Value_2:
220
            post_activity(arg1);
221
            break;
222
        default:
223
            break;
224
    }
225
};
226
227
validate_trophy = function(arg0, arg1)
228
{
229
    var subtype = arg1;
230
    event_show_debug_message("*** validating trophy: ~1 | " + string(arg1), arg0);
231
    if (arg0 == UnknownEnum.Value_13)
232
    {
233
        if (!is_trophy_unlocked(UnknownEnum.Value_6))
234
            queue_trophy(UnknownEnum.Value_6);
235
    }
236
    if (is_trophy_unlocked(arg0))
237
        exit;
238
    if (subtype != "n/a")
239
    {
240
        global.flag[subtype] += 1;
241
        event_show_debug_message("*** increase trophy event flag: " + string(subtype) + " | " + string(global.flag[subtype]));
242
    }
243
    if (!can_unlock_trophy(arg0))
244
        exit;
245
    queue_trophy(arg0);
246
    if (
scr_debug
scr_debug

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