1 |
if (live_call()) |
2 |
return global.live_result; |
3 |
if (overlay_alpha > 0) |
4 |
overlay_alpha -= 0.1; |
5 |
if (spawn_vines == true) |
6 |
{ |
7 |
gui_fade_out = false; |
8 |
var _play_sound = true; |
9 |
attack_offset--; |
10 |
if (attack_offset <= 0) |
11 |
{ |
12 |
attack_offset = attack_offset_max + attack_delay; |
13 |
audio_play_sound(snd_undertale_appear, 1, 0); |
14 |
var xdist = irandom_range(20, 60); |
15 |
var xx; |
16 |
do |
17 |
{ |
18 |
xx = obj_pl.x + (xdist * sign(obj_pl.x - obj_pl.xprevious)); |
19 |
xdist -= 10; |
20 |
} |
21 |
until (place_free(xx, obj_pl.y + 15) || x_dist <= 0); |
22 |
var ydist = irandom_range(20, 60); |
23 |
var yy; |
24 |
do |
25 |
{ |
26 |
yy = obj_pl.y + 15 + (ydist * sign(obj_pl.y - obj_pl.yprevious)); |
27 |
ydist -= 10; |
28 |
} |
29 |
until (place_free(yy, obj_pl.x) || y_dist <= 0); |
30 |
xx = floor(xx / 20) * 20; |
31 |
yy = floor(yy / 20) * 20; |
32 |
var grid_size = 5; |
33 |
var grid_squared = grid_size * grid_size; |
34 |
var start_point_x = xx - (grid_size * 20 * 0.5); |
35 |
var start_point_y = yy - (grid_size * 20 * 0.5); |
36 |
show_debug_message(start_point_x); |
37 |
var excluded_count = irandom_range(floor(grid_squared * 0.35), floor(grid_squared * 0.75)); |
38 |
exclude_list = ds_list_create(); |
39 |
for (var a = 0; a < excluded_count; a++) |
40 |
{ |
41 |
var new_number; |
42 |
do |
43 |
new_number = irandom_range(0, grid_size * grid_size); |
44 |
until (ds_list_find_index(exclude_list, new_number) == -1); |
45 |
ds_list_add(exclude_list, new_number); |
46 |
} |
47 |
var current_spawn = 0; |
48 |
var can_play_sound = true; |
49 |
for (var j = 0; j < grid_size; j++) |
50 |
{ |
51 |
for (var i = 0; i < grid_size; i++) |
52 |
{ |
53 |
var new_x = start_point_x + (i * 20); |
54 |
var new_y = start_point_y + (j * 20); |
55 |
if (ds_list_find_index(exclude_list, current_spawn) == -1 && !instance_position(new_x, new_y, obj_wall)) |
56 |
{ |
57 |
var new_vine = instance_create_depth(new_x, new_y, 0, obj_flowey_battle_ow_vine_warning); |
58 |
new_vine.play_sound = can_play_sound; |
59 |
new_vine.alarm[0] = attack_delay; |
60 |
can_play_sound = false; |
61 |
} |
62 |
current_spawn += 1; |
63 |
} |
64 |
} |
65 |
ds_list_clear(exclude_list); |
66 |
ds_list_destroy(exclude_list); |
67 |
} |
68 |
with (obj_pl) |
69 |
{ |
70 |
var col_vine = instance_place(x, y, obj_flowey_battle_ow_vine); |
71 |
if (col_vine != -4 && col_vine.image_alpha >= 0.5 && other.player_vulnerable) |
72 |
{ |
73 |
other.player_hurt = true; |
74 |
other.player_vulnerable = false; |
75 |
} |
76 |
if (instance_exists(obj_flowey_battle_ow_determination)) |
77 |
{ |
78 |
if (point_distance(x, y, obj_flowey_battle_ow_determination.x, obj_flowey_battle_ow_determination.y) < 120) |
79 |
other.spawn_vines = false; |
80 |
} |
81 |
} |
82 |
} |
83 |
else |
84 |
{ |
85 |
gui_fade_out = true; |
86 |
} |
87 |
var damage = (global.enemy_attack_stat - global.player_armor_defense - global.player_armor_modifier_defense - global.player_defense) + 10; |
88 |
if (player_hurt == true) |
89 |
{ |
90 |
player_hurt = false; |
91 |
player_alpha = 0.5; |
92 |
audio_play_sound(snd_hurt, 20, false); |
93 |
scr_screenshakescr_screenshakefunction scr_screenshake(arg0, arg1)
{
if (instance_exists(obj_screenshake_player))
exit;
with (instance_create(__view_get(e__VW.Object, 0).x, __view_get(e__VW.Object, 0).y, obj_screenshake_player))
{
alarm[0]
intensity = arg1;
}
}
enum e__VW
{
XView,
YView,
WView,
HView,
Angle,
HBorder,
VBorder,
HSpeed,
VSpeed,
Object,
Visible,
XPort,
YPort,
WPort,
HPort,
Camera,
SurfaceID
} (12, 6); |
94 |
global.current_hp_self -= damage; |
95 |
alarm[0] = global.invulnerability_self; |
96 |
alarm[1] = 5; |
97 |
} |
98 |
if (other.player_vulnerable == true) |
99 |
{ |
100 |
player_alpha = 1; |
101 |
alarm[1] = -1; |
102 |
} |
103 |
if (global.current_hp_self < 0) |
104 |
global.current_hp_self = 0; |
105 |
if (global.current_hp_self == 0) |
106 |
{ |
107 |
global.heart_battle_fighting_x = (obj_pl.x - camera_get_view_x(view_camera[0])) * 2; |
108 |
global.heart_battle_fighting_y = (obj_pl.y - camera_get_view_y(view_camera[0])) * 2; |
109 |
with (obj_battle_generator) |
110 |
audio_extend = false; |
111 |
audio_stop_all(); |
112 |
room_goto(rm_death_screen Death screen); |
113 |
global.cutscene = true; |
114 |
obj_pl.image_alpha = 0; |
115 |
} |
116 |
depth = obj_pl.depth - 1; |
117 |
if (instance_exists(obj_player_npc)) |
118 |
obj_player_npc.image_alpha = 0; |
119 |
if (gui_fade_out == true) |
120 |
{ |
121 |
if (gui_alpha > 0) |
122 |
gui_alpha -= 0.1; |
123 |
} |
124 |
else if (gui_alpha < 1) |
125 |
{ |
126 |
gui_alpha += 0.1; |
127 |
} |