File: level_controller_neverending.cfg

package info (click to toggle)
frogatto-data 1.3.1%2Bdfsg-4
  • links: PTS, VCS
  • area: non-free
  • in suites: forky, sid, trixie
  • size: 254,428 kB
  • sloc: xml: 584; python: 396; perl: 249; sh: 126; ruby: 69; makefile: 21
file content (101 lines) | stat: -rw-r--r-- 3,919 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101

#onetime level controllers are like the regular type, except with respawns=no set.  Meaning that their script only happens once per playthrough.
{
id: "level_controller_neverending",
next_animation: "'normal'",
always_active: true,
respawns: false,
hidden_in_game: true,
zorder: 50,
vars: {
	segments: [],
	left_edge: 0,
	right_edge: 0,
	cosmic_shift_threshhold: 16384,
	cosmic_shift_amount: 15360,
	scroll_xpos: 0,
	scroll_speed_incr: 0,
	scroll_speed: 0,
	scroll_speed_cap: 0,
	scroll_amount: 0,
	last_xpos: 0,
},
on_process: "[if(level.player.x >= (vars.last_xpos + 80),
	[add(level.player.score, (level.player.x - vars.last_xpos)/10),
	set(vars.last_xpos, level.player.x)]),
		     if(level.player.midpoint_x > vars.cosmic_shift_threshhold, [cosmic_shift(-vars.cosmic_shift_amount, 0),
	              add(vars.scroll_xpos, -vars.cosmic_shift_amount),
	              add(vars.last_xpos, -vars.cosmic_shift_amount),
				  add(vars.left_edge, -vars.cosmic_shift_amount), add(vars.right_edge, -vars.cosmic_shift_amount)],
	            [

				#if the level has gone beyond auto-scrolling, make
				 the auto-scrolling catch up#
				if(level.dimensions[0] > vars.scroll_xpos + vars.scroll_amount/10,
				   [set(vars.scroll_xpos, level.dimensions[0]),
				    set(vars.scroll_amount, 0)],
				add(vars.scroll_amount, vars.scroll_speed)),

	            set(level.dimensions, [max(level.dimensions[0], level.player.midpoint_x-400, vars.scroll_xpos + vars.scroll_amount/10), level.dimensions[1], level.dimensions[2], level.dimensions[3]]),
				if(level.player.midpoint_x < level.dimensions[0], set(level.player.midpoint_x, level.dimensions[0])),
				if(level.player.midpoint_x + 40 < level.dimensions[0], add(level.player.hitpoints, -1)),
	            if(level.player.midpoint_x > vars.right_edge - 800,
				   if(new_segment = null,
				    fire_event('recycle_segment'),
	               [
	               add(vars.segments, [new_segment]),
				   add_level_module(new_segment, vars.right_edge, level.dimensions[1]),
				   add(vars.right_edge, level.segment_width),
				   add(level.player.difficulty, 1),
				   if(vars.scroll_speed_incr and (vars.scroll_speed < vars.scroll_speed_cap) and ((level.player.difficulty%vars.scroll_speed_incr) = 0), add(vars.scroll_speed, 1))
				   ])
				   where new_segment = choose(filter(query(level, 'segments_after_' + vars.segments.last), 'n', query(level, 'segment_difficulty_start_' + n) <= level.player.difficulty and (not (n in vars.segments))))
				   ),
				 if(level.player.midpoint_x > vars.left_edge + 800 + level.segment_width,
				   fire_event('recycle_segment'))
	            ])]",
on_recycle_segment: "[remove_level_module(vars.segments[0]),
				    add(vars.left_edge, level.segment_width),
					set(vars.segments, filter(vars.segments, 'n', n != vars.segments[0]))]",
on_create: "if(level.in_editor, die(),
	            [
	            		 set(vars.last_xpos, level.player.x),
				 set(level.player.vars.unlocked_items, ['heart_object', 'target', 'target', 'target', 'target', ]),
				 set(vars.scroll_xpos, level.dimensions[0]),
				set(level.dimensions, [level.dimensions[0], level.dimensions[1], level.dimensions[0] + 10000000, level.dimensions[3]]),
	            add_level_module(str(first_segment), level.dimensions[0], level.dimensions[1]),
				add(vars.segments, [first_segment]),
	            set(vars.left_edge, level.dimensions[0]), set(vars.right_edge, level.dimensions[0] + level.segment_width)]
				
				 where first_segment = (level.player.x - level.dimensions[0])/level.segment_width
				)",
editor_info: {
	category: "controllers",
	var: [
		{
			name: "scroll_speed",
			value: 0,
		},
		{
			name: "scroll_speed_incr",
			value: 0,
		},
		{
			name: "scroll_speed_cap",
			value: 0,
		},
	],
},
animation: {
	id: "normal",
	image: "effects/particles.png",
	x: 179,
	y: 135,
	w: 28,
	h: 28,

	#collide="0,0,28,28"
	frames: 1,
	duration: 1000000,
},
}