|
1
|
timerb++;
|
|
2
|
if (timerb == 3)
|
|
3
|
{
|
|
4
|
snd_play_x(snd_knight_drawpower, 1, 1.3);
|
|
5
|
snd_play_x(snd_knight_drawpower, 1, 1.3);
|
|
6
|
snd_play_x(snd_knight_drawpower, 1, 1.3);
|
|
7
|
}
|
|
8
|
if (timerb == 120)
|
|
9
|
{
|
|
10
|
var a = 2;
|
|
11
|
var b = 0.7;
|
|
12
|
snd_play_x(snd_knight_star_explosion_close, a, b);
|
|
13
|
snd_play_x(snd_knight_star_explosion_close, a, b);
|
|
14
|
snd_play_x(snd_knight_star_explosion_close, a, b);
|
|
15
|
}
|
|
16
|
if (con == 4)
|
|
17
|
{
|
|
18
|
x = lerp(x, obj_knight_enemy.x, 0.15);
|
|
19
|
y = lerp(y, obj_knight_enemy.y, 0.15);
|
|
20
|
if (tween == 0)
|
|
21
|
{
|
|
22
|
con = 5;
|
|
23
|
if (i_ex(obj_knight_enemy))
|
|
24
|
{
|
|
25
|
obj_knight_enemy.visible = true;
|
|
26
|
obj_knight_enemy.aetimer = aetimer;
|
|
27
|
}
|
|
28
|
}
|
|
29
|
}
|
|
30
|
else if (tween < 1)
|
|
31
|
{
|
|
32
|
tween = scr_movetowardsscr_movetowards
function scr_movetowards(arg0, arg1, arg2)
{
if (arg0 == arg1)
return arg0;
else if (arg0 > arg1)
return max(arg0 - arg2, arg1);
else
return min(arg0 + arg2, arg1);
}
function scr_obj_movetowards_obj(arg0, arg1, arg2 = 0, arg3 = 0)
{
scr_obj_movetowards_point(arg0.x + arg2, arg0.y + arg3, arg1);
}
function scr_obj_movetowards_point(arg0, arg1, arg2)
{
var _distance = point_distance(x, y, arg0, arg1);
if (arg2 >= _distance)
{
x = arg0;
y = arg1;
}
else
{
var _direction = point_direction(x, y, arg0, arg1);
x += lengthdir_x(arg2, _direction);
y += lengthdir_y(arg2, _direction);
}
} (tween, 1, 0.05);
|
|
33
|
var _ease = scr_ease_outscr_ease_out
function scr_ease_out(arg0, arg1)
{
if (arg1 < -3 || arg1 > 7)
return arg0;
switch (arg1)
{
case -3:
return ease_out_bounce(arg0, 0, 1, 1);
case -2:
return ease_out_elastic(arg0, 0, 1, 1);
case -1:
return ease_out_back(arg0, 0, 1, 1);
case 0:
return arg0;
case 1:
return sin(arg0 * 1.5707963267948966);
case 2:
return -arg0 * (arg0 - 2);
case 6:
return -power(2, -10 * arg0) + 1;
case 7:
arg0--;
return sqrt(1 - (arg0 * arg0));
default:
arg0--;
if (arg1 == 4)
{
return -1 * (power(arg0, arg1) - 1);
break;
}
return power(arg0, arg1) + 1;
}
} (tween, 4);
|
|
34
|
x = lerp(xstart, obj_growtangle.x + 115, _ease);
|
|
35
|
y = lerp(ystart, obj_growtangle.y - 56, _ease);
|
|
36
|
}
|
|
37
|
if (con < 2)
|
|
38
|
{
|
|
39
|
exit;
|
|
40
|
}
|
|
41
|
else if (global.turntimer <= endtimer)
|
|
42
|
{
|
|
43
|
if (angle_lerp == 1)
|
|
44
|
{
|
|
45
|
var _count = 0;
|
|
46
|
with (obj_knight_pointing_star)
|
|
47
|
{
|
|
48
|
other.starlist[_count] = self;
|
|
49
|
con = 1;
|
|
50
|
_count++;
|
|
51
|
}
|
|
52
|
for (i = 0; i < _count; i++)
|
|
53
|
{
|
|
54
|
with (starlist[i])
|
|
55
|
{
|
|
56
|
timer = -other.i;
|
|
57
|
if ((other.i % 2) == 1)
|
|
58
|
playSound = false;
|
|
59
|
}
|
|
60
|
}
|
|
61
|
knockback = 10;
|
|
62
|
}
|
|
63
|
if (angle_lerp == 0 && con < 3)
|
|
64
|
{
|
|
65
|
timer = 10;
|
|
66
|
con = 3;
|
|
67
|
yoff = 120 + irandom_range(-60, 60);
|
|
68
|
}
|
|
69
|
angle_lerp = scr_movetowardsscr_movetowards
function scr_movetowards(arg0, arg1, arg2)
{
if (arg0 == arg1)
return arg0;
else if (arg0 > arg1)
return max(arg0 - arg2, arg1);
else
return min(arg0 + arg2, arg1);
}
function scr_obj_movetowards_obj(arg0, arg1, arg2 = 0, arg3 = 0)
{
scr_obj_movetowards_point(arg0.x + arg2, arg0.y + arg3, arg1);
}
function scr_obj_movetowards_point(arg0, arg1, arg2)
{
var _distance = point_distance(x, y, arg0, arg1);
if (arg2 >= _distance)
{
x = arg0;
y = arg1;
}
else
{
var _direction = point_direction(x, y, arg0, arg1);
x += lengthdir_x(arg2, _direction);
y += lengthdir_y(arg2, _direction);
}
} (angle_lerp, 0, 0.1);
|
|
70
|
angle = lerp(0, target_angle, scr_ease_inscr_ease_in
function scr_ease_in(arg0, arg1)
{
if (arg1 < -3 || arg1 > 7)
return arg0;
switch (arg1)
{
case -3:
return ease_in_bounce(arg0, 0, 1, 1);
case -2:
return ease_in_elastic(arg0, 0, 1, 1);
case -1:
var _s = 1.70158;
return arg0 * arg0 * (((_s + 1) * arg0) - _s);
case 0:
return arg0;
case 1:
return -cos(arg0 * 1.5707963267948966) + 1;
case 6:
return power(2, 10 * (arg0 - 1));
case 7:
return -(sqrt(1 - sqr(arg0)) - 1);
default:
return power(arg0, arg1);
}
} (angle_lerp, 6));
|
|
71
|
}
|
|
72
|
else if (angle < target_angle)
|
|
73
|
{
|
|
74
|
angle_lerp = scr_movetowardsscr_movetowards
function scr_movetowards(arg0, arg1, arg2)
{
if (arg0 == arg1)
return arg0;
else if (arg0 > arg1)
return max(arg0 - arg2, arg1);
else
return min(arg0 + arg2, arg1);
}
function scr_obj_movetowards_obj(arg0, arg1, arg2 = 0, arg3 = 0)
{
scr_obj_movetowards_point(arg0.x + arg2, arg0.y + arg3, arg1);
}
function scr_obj_movetowards_point(arg0, arg1, arg2)
{
var _distance = point_distance(x, y, arg0, arg1);
if (arg2 >= _distance)
{
x = arg0;
y = arg1;
}
else
{
var _direction = point_direction(x, y, arg0, arg1);
x += lengthdir_x(arg2, _direction);
y += lengthdir_y(arg2, _direction);
}
} (angle_lerp, 1, 0.025);
|
|
75
|
angle = lerp(0, target_angle, scr_ease_outscr_ease_out
function scr_ease_out(arg0, arg1)
{
if (arg1 < -3 || arg1 > 7)
return arg0;
switch (arg1)
{
case -3:
return ease_out_bounce(arg0, 0, 1, 1);
case -2:
return ease_out_elastic(arg0, 0, 1, 1);
case -1:
return ease_out_back(arg0, 0, 1, 1);
case 0:
return arg0;
case 1:
return sin(arg0 * 1.5707963267948966);
case 2:
return -arg0 * (arg0 - 2);
case 6:
return -power(2, -10 * arg0) + 1;
case 7:
arg0--;
return sqrt(1 - (arg0 * arg0));
default:
arg0--;
if (arg1 == 4)
{
return -1 * (power(arg0, arg1) - 1);
break;
}
return power(arg0, arg1) + 1;
}
} (angle_lerp, 6));
|
|
76
|
}
|
|
77
|
else
|
|
78
|
{
|
|
79
|
x += 0.25;
|
|
80
|
}
|
|
81
|
if (knockback != 0)
|
|
82
|
{
|
|
83
|
var _knockback = scr_ease_inscr_ease_in
function scr_ease_in(arg0, arg1)
{
if (arg1 < -3 || arg1 > 7)
return arg0;
switch (arg1)
{
case -3:
return ease_in_bounce(arg0, 0, 1, 1);
case -2:
return ease_in_elastic(arg0, 0, 1, 1);
case -1:
var _s = 1.70158;
return arg0 * arg0 * (((_s + 1) * arg0) - _s);
case 0:
return arg0;
case 1:
return -cos(arg0 * 1.5707963267948966) + 1;
case 6:
return power(2, 10 * (arg0 - 1));
case 7:
return -(sqrt(1 - sqr(arg0)) - 1);
default:
return power(arg0, arg1);
}
} (knockback / 10, 5) * 10;
|
|
84
|
gt_x -= _knockback;
|
|
85
|
knockback = scr_movetowardsscr_movetowards
function scr_movetowards(arg0, arg1, arg2)
{
if (arg0 == arg1)
return arg0;
else if (arg0 > arg1)
return max(arg0 - arg2, arg1);
else
return min(arg0 + arg2, arg1);
}
function scr_obj_movetowards_obj(arg0, arg1, arg2 = 0, arg3 = 0)
{
scr_obj_movetowards_point(arg0.x + arg2, arg0.y + arg3, arg1);
}
function scr_obj_movetowards_point(arg0, arg1, arg2)
{
var _distance = point_distance(x, y, arg0, arg1);
if (arg2 >= _distance)
{
x = arg0;
y = arg1;
}
else
{
var _direction = point_direction(x, y, arg0, arg1);
x += lengthdir_x(arg2, _direction);
y += lengthdir_y(arg2, _direction);
}
} (knockback, 0, 0.5);
|
|
86
|
fake_gt.xoffset = random_range(-1, 1) * (_knockback / 10);
|
|
87
|
fake_gt.yoffset = random_range(-1, 1) * (_knockback / 10);
|
|
88
|
}
|
|
89
|
else
|
|
90
|
{
|
|
91
|
gt_x -= (angle / target_angle / 2);
|
|
92
|
fake_gt.xoffset = random_range(-1, 1) * (angle / target_angle);
|
|
93
|
fake_gt.yoffset = random_range(-1, 1) * (angle / target_angle);
|
|
94
|
}
|
|
95
|
obj_growtangle.x = round(gt_x);
|
|
96
|
obj_heart.x = min(obj_heart.x, gt_maxx() - 22);
|