-
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathconfig.ini
More file actions
568 lines (535 loc) · 31.1 KB
/
config.ini
File metadata and controls
568 lines (535 loc) · 31.1 KB
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
; Bullet configurations
[Bullet]
CriticalHitChance = 0.0125 ; Likelihood of a bullet to be a critical hit
CriticalHitFactor = 3 ; Factor applied to the bullet damage if it is a critical hit
DamageProgressAmplifier = 2 ; Amplifier of the bullet damage on progress (level advancement)
Height = 10.0 ; Height of the bullet in pixels
InitialDamage = 89 ; Initial damage of the bullet
ModifierProgressStep = 37 ; Progress step (level advancement) required to increase bullet damage modifier
Speed = 7.0 ; Speed of the bullet in pixels per frame
SpeedDecayDuration = 1500ms ; Duration of the bullet speed decay after it has been repeled
Weight = 75.0 ; Weight of the bullet (required to make the bullet accountable for gravity)
Width = 4.0 ; Width of the bullet in pixels
; Game and game control configuration
[Control]
AnimationDuration = 200ms ; Duration of the animations
AudioEnabled = false ; Whether audio is enabled
BackgroundAnimationEnabled = true ; Whether background animation is enabled
CollisionDetectionVersion = "SPACE_INVADERS_COLLISION_DETECTION_VERSION:3" ; Collision detection version to use
CriticalFramesPerSecondRate = 30.0 ; Number of frames per second used as threshold to lower the resource computation of the game.
Debug = "SPACE_INVADERS_DEBUG:false" ; Debug level
DesiredFramesPerSecondRate = 60.0 ; Desired number of frames per second
DrawEnemyHitpointBars = "SPACE_INVADERS_DRAW_ENEMY_HITPOINT_BARS:true" ; Whether enemy hit points are drawn
DrawObjectLabels = "SPACE_INVADERS_DRAW_OBJECT_LABELS:true" ; Whether object labels are drawn
DrawSpaceshipDiscoveryProgressBar = "SPACE_INVADERS_DRAW_SPACESHIP_DISCOVERY_PROGRESS_BAR:true" ; Whether spaceship discovery progress is drawn
DrawSpaceshipExperienceBar = "SPACE_INVADERS_DRAW_SPACESHIP_EXPERIENCE_BAR:true" ; Whether spaceship experience is drawn
DrawSpaceshipShield = "SPACE_INVADERS_DRAW_SPACESHIP_SHIELD:true" ; Whether spaceship shield is drawn
GodMode = "SPACE_INVADERS_GOD_MODE:false" ; Whether the player is invincible
PlanetChoice = "SPACE_INVADERS_PLANET_CHOICE:-1" ; Force a specific planet to be drawn, -1 for random, values out of range are ignored
RepelEnemies = "SPACE_INVADERS_REPEL_ENEMIES:true" ; Whether enemies are repelled when the spaceship is boosted
SuspensionFrames = 10 ; Number of frames to suspend the game when the FPS rate is below the critical rate
; Enemy configurations
[Enemy]
AccelerationProgress = 0.2 ; Amount of acceleration an enemy receives on progress
Count = 10 ; Number of enemies on the canvas
CountProgressStep = 65 ; Progress step required to increase the number of enemies
BerserkLikeliness = 0.015 ; Likelihood of an enemy to become a berserker
BerserkLikelinessProgress = 0.025 ; Amount of berserk likelihood an enemy receives on progress
DefaultPenalty = 3 ; Default penalty of the spaceship when it collides with an enemy
DefenseProgress = 81 ; Amount of defense an enemy receives on progress
Height = 40.0 ; Height of the enemy in pixels
HitpointProgress = 324 ; Amount of hit points an enemy receives on progress
InitialDefense = 27 ; Initial defense of the enemy
InitialHitpoints = 108 ; Initial hit points of the enemy
InitialSpeed = 1.2 ; Initial speed of the enemy in pixels per frame
MaximumCount = 16 ; Maximum number of enemies on the canvas
MaximumSpeed = 5.0 ; Maximum speed of the enemy in pixels per frame
Regenerate = true ; Whether enemies regenerate after being destroyed
SpecialtyLikeliness = 0.12 ; Likelihood of an enemy to become a tank or a freezer
Width = 40.0 ; Width of the enemy in pixels
YetAgainAmplifier = 3.0 ; Amplifier of the enemy boosts if it is the same enemy type as the previous one
; Annihilator specific configurations
[Enemy.Annihilator]
DefenseBoost = 1_285 ; Amount of defense an enemy receives as annihilator
HitpointsBoost = 5_140 ; Amount of hit points an enemy receives as annihilator
Penalty = 27 ; Penalty of the spaceship when it collides with an annihilator
SizeFactorBoost = 1.3 ; Modifier of size an enemy receives as annihilator
SpeedModifier = 0.5 ; Modifier of speed an enemy receives as annihilator
; Behemoth specific configurations
[Enemy.Behemoth]
DefenseBoost = 1_700 ; Increased defense to reflect a tougher enemy than Dreadnought
HitpointsBoost = 6_800 ; Increased hit points to match the higher ranking
Penalty = 144 ; Adjusted penalty for a more significant impact
SizeFactorBoost = 1.35 ; Slightly larger than Juggernaut, still mobile enough
SpeedModifier = 0.7 ; Slow but not the slowest
; Berserker specific configurations
[Enemy.Berserker]
DefenseBoost = 805 ; Amount of defense an enemy receives as berserker
HitpointsBoost = 3_220 ; Amount of hit points an enemy receives as berserker
Penalty = 18 ; Penalty of the spaceship when it collides with a berserker
SizeFactorBoost = 1.1 ; Modifier of size an enemy receives as berserker
SpeedModifier = 1.2 ; Modifier of speed an enemy receives as berserker
; Bulwark specific configurations
[Enemy.Bulwark]
DefenseBoost = 2_040 ; Significant defense to emphasize its role as a tank
HitpointsBoost = 8_160 ; High hit points to make it very tough to kill
Penalty = 189 ; High penalty to match its rank
SizeFactorBoost = 1.4 ; Larger size due to its defensive nature
SpeedModifier = 0.5 ; Slow, but not immobile
; Cloaked specific configurations
[Enemy.Cloaked]
Penalty = 9 ; Penalty of the spaceship when it collides with a cloaked enemy
SpeedModifier = 1.7 ; Fast due to its stealthy nature
; Colossus specific configurations
[Enemy.Colossus]
DefenseBoost = 2_295 ; Higher defense than Behemoth to reflect increased difficulty
HitpointsBoost = 9_180 ; Higher hit points to match the progression
Penalty = 162 ; Penalty reflecting its dangerous presence
SizeFactorBoost = 1.45 ; Even larger than Behemoth
SpeedModifier = 0.5 ; Slow due to its massive size
; Dreadnought specific configurations
[Enemy.Dreadnought]
DefenseBoost = 1_700 ; Enhanced defense compared to Juggernaut
HitpointsBoost = 6_800 ; Increased hit points to match progression
Penalty = 81 ; Moderate penalty for balance
SizeFactorBoost = 1.35 ; Large but not as large as Colossus
SpeedModifier = 0.6 ; Balanced speed to give some mobility
; Freezer specific configurations
[Enemy.Freezer]
Penalty = 5 ; Penalty of the spaceship when it collides with a freezer
; Juggernaut specific configurations
[Enemy.Juggernaut]
DefenseBoost = 1_530 ; Slightly lower defense than Dreadnought to reflect rank
HitpointsBoost = 6_120 ; Hit points aligned with its progression in difficulty
Penalty = 54 ; Moderate penalty for balance
SizeFactorBoost = 1.3 ; Slightly larger to signify its toughness
SpeedModifier = 0.7 ; Slightly faster than Dreadnought
; Leviathan specific configurations
[Enemy.Leviathan]
DefenseBoost = 2_295 ; Same defense as Colossus due to similar rank
HitpointsBoost = 9_180 ; High hit points to reflect its rank
Penalty = 198 ; High penalty to signify its danger
SizeFactorBoost = 1.45 ; Size matched with Colossus
SpeedModifier = 0.5 ; Slow due to size and power
; Overlord specific configurations
[Enemy.Overlord]
DefenseBoost = 4_590 ; Maximum defense as it is the top-tier enemy
HitpointsBoost = 18_360 ; Maximum hit points for the final challenge
Penalty = 216 ; Highest penalty to match its final boss status
SizeFactorBoost = 1.5 ; Largest size for ultimate threat level
SpeedModifier = 0.4 ; Slowest to balance its immense power
; Message box configuration
[MessageBox]
ChannelBufferSize = 100 ; Size of the message box channel buffer
ChannelLogThrottling = 250ms ; Throttling duration of the message box channel log
; Messages
[MessageBox.Messages]
AllPlanetsDiscovered = """
<div class="timestamp-paragraph">
<p class="timestamp">{{ timestamp }}</p>
<p class="indented-inline">You discovered {{ color "green" .PlanetName | bold }}!</p>
</div>
<p class="indented">All planets have been discovered! You have been promoted to the rank of {{ color "green" "Admiral" | bold }}!
Now, our cannons can destroy even stubborn enemies!</p>
"""
EnemyDestroyed = """
<div class="timestamp-paragraph">
<p class="timestamp">{{ timestamp }}</p>
<p class="indented-inline">{{ color "red" .EnemyName }} ({{ color "red" .EnemyType }}) has been destroyed!</p>
</div>
"""
EnemyHit = """
<div class="timestamp-paragraph">
<p class="timestamp">{{ timestamp }}</p>
<p class="indented-inline">You dealt {{ printf "%d" .Damage | color "red" }} of damage to
{{ color "red" .EnemyName }} ({{ color "red" .EnemyType }}).</p>
</div>
"""
ExplainInterface = """
<div class="timestamp-paragraph">
<p class="timestamp">{{ timestamp }}</p>
<p class="indented-inline">Commandant, I beg your pardon, but I need your attention! This is the interface of our universe.</p>
</div>
<p class="indented">The view is divided into two sections: the <b>navigator’s window</b> and the <b>message box</b>.</p>
<p class="indented">The navigator’s window is where the action happens.
The message box is where you receive important messages from me, your advisor.</p>
<p class="indented">You can interact with the interface
{{ if isTouchDevice -}}
using touch gestures.
<b>Swipe left or right</b> to move and <b>tap</b> to shoot,
<b>tap with two fingers</b>
{{- else -}}
using the keyboard or the mouse.
Press any key or click anywhere in the navigator’s window to start.
Use the <b>ARROW KEYS</b> to move and <b>SPACE</b> to shoot, or use your <b>primary mouse button</b>.
Press <b>PAUSE</b> or click your <b>secondary/auxiliary mouse button</b>
{{- end -}} to take a break.</p>
{{- if config.Control.DrawSpaceshipShield.Get -}}
<p class="indented">Slightly above our spaceship, you can see a {{ color "red" "damage bar" }}.
The damage bar indicates the damage our spaceship can take before decreasing its level.
The damage bar will recover every {{ print config.Spaceship.ShieldChargeDuration }}.</p>
{{- end -}}
{{- if config.Control.DrawSpaceshipExperienceBar.Get -}}
<p class="indented">Besides that, above our spaceship, you can see an {{ color "yellow" "experience bar" }}.
The experience bar indicates the progress of our spaceship to the next level.</p>
{{- end -}}
{{- if config.Control.DrawSpaceshipDiscoveryProgressBar.Get -}}
<p class="indented">There is yet a status bar close to our spaceship.
The {{ color "blue" "discovery progress bar" }} indicates your progress of discovering planets.</p>
{{- end -}}
<p class="indented">Every moment, there is a new celestial body visible in the navigator’s view.
Its presence might have an impact on whole galaxy!
Pay attention to my warnings, please!
To discover a planet, you need to navigate our spaceship above it.
Upon a successful discovery, you will be notified!</p>
{{- if config.Control.DrawEnemyHitpointBars.Get -}}
<p class="indented">Finally, below the enemies, you can see their {{ color "red" "hit point bars" }}.
The hit point bars indicate the remaining hit points of the enemies.</p>
{{- end -}}
<p class="indented">The enemies visible in the navigator’s view will try to {{ color "red" "crash" }} into our spaceship to inflict damage,
or {{ color "blue" "freeze" }} its movements.
When our spaceship gets frozen, it can’t move or shoot for {{ config.Spaceship.FreezeDuration | color "blue" | italic }}.
However, there are some enemies who secretly support our mission and will grant us a {{ color "gold" "boost" }} for
{{ config.Spaceship.BoostDuration | color "gold" | italic }}.</p>
<p class="indented">Last but not least, there are enemies who will try take control of our spaceship.
Our crew will fight back and regain control of the spaceship within {{ config.Spaceship.HijackDuration | color "red" | italic }}.</p>
<p class="indented">That’s it! {{ bold (color "green" "Good luck") }}, Commandant!</p>
<p class="indented">{{ if isTouchDevice -}}
Tap anywhere
{{- else -}}
Press any key or click anywhere
{{- end }} on the game canvas to start the game!</p>
"""
GamePaused = """
<div class="timestamp-paragraph">
<p class="timestamp">{{ timestamp }}</p>
<p class="indented-inline">Break time,
{{ if isTouchDevice -}}
<b>tap and drag</b> our spaceship to resume
{{- else -}}
either press an <b>ARROW KEY</b>, <b>SPACE</b> or <b>PAUSE</b>,
or <b>click and drag</b> our spaceship to resume
{{- end -}}.</p>
</div>
"""
GameStarted = """
<div class="timestamp-paragraph">
<p class="timestamp">{{ timestamp }}</p><p class="indented-inline">Game started! Good luck!</p>
</div>
"""
GameOver = """
<div class="timestamp-paragraph">
<p class="timestamp">{{ timestamp }}</p>
<p class="indented-inline">{{ bold (color "red" "MISSION OVER") }}!</p>
</div>
<p class="indented">{{ default .Reason "You were killed (R.I.P.)." | print }}</p>
<p class="indented">You managed to score up to level {{ printf "%d" .HighScore | bold | color "green" }}!</p>
{{ if .DiscoveredPlanets -}}
<p class="indented">During your adventure, you discovered following planets:</p>
<div class="indented"><ul>
{{ range .DiscoveredPlanets -}}
<li>{{ bold . }}</li>
{{- end }}
</ul></div>
{{- end }}
<p class="indented">You scored {{ printf "%s%d" (char "hash") .Rank | bold | color "green" }} among others who challenged the universe.</p>
{{ if le (int .Rank) 10 -}}
<p class="indented">Your name, Commandant, will be remembered forever in the Hall Of Glory!</p>
{{- end }}
<p class="indented">Hall Of Glory:</p>
<div class="indented">
<table>
<tr>
<th style="text-align: right{{ char "semicolon" }}">Rank</th>
<th style="text-align: left{{ char "semicolon" }}">Commandant</th>
<th style="text-align: right{{ char "semicolon" }}">Score</th>
</tr>
{{ range $i, $score := .TopScores -}}
<tr>
<td style="text-align: right{{ char "semicolon" }}">{{ printf "%s%d" (char "hash") (inc $i) }}</td>
<td>{{ print $score.Name }}</td>
<td style="text-align: right{{ char "semicolon" }}">{{ printf "%d" $score.Score }}</td>
</tr>
{{- end }}
</table>
</div>
"""
Greeting = """
<div class="timestamp-paragraph">
<p class="timestamp">{{ timestamp }}</p>
<p class="indented-inline">Welcome {{ bold .Commandant }} to <b>Space Invaders On Assembly Line</b>!
Our universe seeks your protection, Commandant!
Destroy enemies and discover planets in the Solar System.
Beat the high score and become the {{ color "green" "Admiral" | bold }} of the universe!</p>
</div>
<p class="indented">Please, take a moment to read the {{ color "green" "instructions" | bold }} below.</p>
"""
HowToRestart = """
<div class="timestamp-paragraph">
<p class="timestamp">{{ timestamp }}</p>
<p class="indented-inline">{{ if isTouchDevice -}}
Tap anywhere on the navigator’s window
{{- else -}}
Press any key or click anywhere on the navigator’s window
{{- end }} to start again.</p>
</div>
"""
PerformanceDropped = """
<div class="timestamp-paragraph">
<p class="timestamp">{{ timestamp }}</p>
<p class="indented-inline">Low FPS rate has been detected: {{ printf "%.2f" .FPS | color "red" }}!
Pausing the mission to save resources.</p>
</div>
"""
PerformanceImproved = """<p class="indented">FPS rate has improved: {{ printf "%.2f" .FPS | color "green" }}! Resuming the mission.</p>"""
PlanetDiscovered = """
<div class="timestamp-paragraph">
<p class="timestamp">{{ timestamp }}</p>
<p class="indented-inline">You discovered {{ color "green" .PlanetName | bold }}!</p>
</div>
<p class="indented">Remaining planets: {{ printf "%d" .RemainingPlanets | bold | color "green" }} from
{{ printf "%d" .TotalPlanets | bold | color "red" }}.</p>
"""
PlanetImpactsSystem = """
<div class="timestamp-paragraph">
<p class="timestamp">{{ timestamp }}</p>
<p class="indented-inline">Commandant! {{ color "red" .PlanetName | bold }} appeared!</p>
</div>
{{ default .Description "" | print }}
"""
Prompt = """{{ greet }}, Captain! Pardon me, but may I know your name?"""
ScoreBoardUpdated = """
<div class="timestamp-paragraph">
<p class="timestamp">{{ timestamp }}</p>
<p class="indented-inline">Score board updated!</p>
</div>"""
SpaceshipBoosted = """
<div class="timestamp-paragraph">
<p class="timestamp">{{ timestamp }}</p>
<p class="indented-inline">You are {{ color "gold" "boosted" | italic }} for
{{ config.Spaceship.BoostDuration | color "gold" | italic }},
our spaceship has been {{ color "green" "reinforced" | bold }} against collisions and has {{ color "green" "improved" | bold }}
its cannons!</p>
</div>
"""
SpaceshipDowngradedByEnemy = """
<div class="timestamp-paragraph">
<p class="timestamp">{{ timestamp }}</p>
<p class="indented-inline">You were hit, our spaceship has been {{ color "red" "downgraded" | bold }} to level
{{ printf "%d" .SpaceshipLevel | bold | color "red" }}!</p>
</div>
"""
SpaceshipFrozen = """
<div class="timestamp-paragraph">
<p class="timestamp">{{ timestamp }}</p>
<p class="indented-inline">You were {{ "frozen" | italic | color "blue" }} and {{ color "red" "downgraded" | bold }} to level
{{ printf "%d" .SpaceshipLevel | bold | color "red" }}, you can’t move or shoot for
{{ config.Spaceship.FreezeDuration | color "blue" | italic }}!</p>
</div>
"""
SpaceshipHijacked = """
<div class="timestamp-paragraph">
<p class="timestamp">{{ timestamp }}</p>
<p class="indented-inline">Commandant! Our spaceship has been hijacked {{ color "red" "hijacked" | bold }} by
{{ color "red" .EnemyName }} ({{ color "red" .EnemyType }})!</p>
</div>
<p class="indented">We are {{ color "red" "out of control" | bold }}!</p>
<p class="indented">We will eradicate the enemy and regain control of our spaceship within next
{{ config.Spaceship.HijackDuration | color "red" | italic }}!</p>
"""
SpaceshipStillFrozen = """
<div class="timestamp-paragraph">
<p class="timestamp">{{ timestamp }}</p>
<p class="indented-inline">You are still {{ color "blue" "frozen" | italic }}, you can’t move or shoot for
{{ color "blue" .FreezeDuration | italic }}!</p>
</div>
"""
SpaceshipUpgradedByEnemyKill = """
<div class="timestamp-paragraph">
<p class="timestamp">{{ timestamp }}</p>
<p class="indented-inline">You killed {{ color "red" .EnemyName }} ({{ color "red" .EnemyType }}),
our spaceship has been {{ color "green" "upgraded" | bold }} to level
{{ printf "%d" .SpaceshipLevel | bold | color "green" }}!</p>
</div>
"""
SpaceshipUpgradedByTank = """
<div class="timestamp-paragraph">
<p class="timestamp">{{ timestamp }}</p>
<p class="indented-inline">Our supporter {{ color "gold" .EnemyName }} ({{ color "gold" .EnemyType }})
upgraded our spaceship to level
{{ printf "%d" .SpaceshipLevel | bold | color "green" }}!</p>
</div>
"""
WaitForScoreBoardUpdate = """
<div class="timestamp-paragraph">
<p class="timestamp">{{ timestamp }}</p>
<p class="indented-inline">Please, wait for the score board to update.</p>
</div>
"""
; Planet configurations
[Planet]
DiscoveryCooldown = 2500ms ; Cooldown of the planet discovery
DiscoveryProbability = 0.025 ; Probability of a planet to be discovered
MaximumRadius = 100.0 ; Maximum radius of the planet in pixels
MinimumRadius = 30.0 ; Minimum radius of the planet in pixels
SpeedRatio = 0.4 ; Speed ratio of the planet in relation to the spaceship
; Planet impact shared configuration
[Planet.Impact]
DefaultGravityStrength = 1.0e-4 ; Strength of the planet gravity
; Planet impact configurations
[Planet.Impact.Mercury]
BerserkLikelinessAmplifier = 2.0 ; Amplifier of the berserk likelihood of the enemy when the planet is Mercury
Description = """
<p class="indented">Mercury is the smallest planet in the solar system, and the closest to the sun.</p>
<p class="indented">It is named after the Roman messenger god, Mercury, the fastest god in Roman mythology.</p>
<p class="indented">It {{ bold "increases" }} the likelihood of an enemy to become a {{ color "red" "berserker" }} by
the factor of {{ config.Planet.Impact.Mercury.BerserkLikelinessAmplifier | printf "%g" | color "red" | bold }}.</p>
"""
[Planet.Impact.Venus]
Description = """
<p class="indented">Venus is the second planet from the sun.</p>
<p class="indented">It is named after the Roman goddess of love and beauty.</p>
<p class="indented">It {{ "increases" | bold }} the likelihood of an enemy to become our {{ color "gold" "supporter" }} by
the factor of {{ config.Planet.Impact.Venus.TankLikelinessAmplifier | printf "%g" | color "green" | bold }} and {{ bold "reduces" }}
the speed of our spaceship by the factor of {{ config.Planet.Impact.Venus.SpaceshipDeceleration | printf "%g" | color "blue" | bold }}.</p>
"""
SpaceshipDeceleration = 0.4 ; Deceleration of the spaceship when the planet is Venus
TankLikelinessAmplifier = 2.0 ; Amplifier of the tank likelihood of the enemy when the planet is Venus
[Planet.Impact.Earth]
Description = """
<p class="indented">Earth is the third planet from the sun and our home turf, Commandant!</p>
<p class="indented">It is the only planet known to have an atmosphere containing free oxygen, oceans of liquid water on its surface, and life.</p>
<p class="indented">It {{ "increases" | bold }} the likelihood of an enemy to become our {{ color "gold" "supporter" }} by
the factor of {{ config.Planet.Impact.Earth.TankLikelinessAmplifier | printf "%g" | color "green" | bold }} and {{ bold "reduces" }}
the speed of our spaceship by {{ config.Planet.Impact.Earth.SpaceshipDeceleration | printf "%g" | color "blue" | bold }}.</p>
"""
SpaceshipDeceleration = 0.2 ; Deceleration of the spaceship when the planet is Earth
TankLikelinessAmplifier = 4.0 ; Amplifier of the tank likelihood of the enemy when the planet is Earth
[Planet.Impact.Mars]
BerserkLikelinessAmplifier = 4.0 ; Amplifier of the berserk likelihood of the enemy when the planet is Mars
Description = """
<p class="indented">Mars is the fourth planet from the sun and the second smallest planet in the solar system.</p>
<p class="indented">It is named after the Roman god of war.</p>
<p class="indented">It {{ bold "increases" }} the likelihood of an enemy to become a {{ color "red" "berserker" }} by
the factor of {{ config.Planet.Impact.Mars.BerserkLikelinessAmplifier | printf "%g" | color "red" | bold }}.</p>
"""
[Planet.Impact.Jupiter]
Description = """
<p class="indented">Jupiter is the fifth planet from the sun and the largest in the solar system.</p>
<p class="indented">It is named after the Roman king of the gods.</p>
<p class="indented">It {{ bold "increases" }} the enemy’s defense by
the factor of {{ config.Planet.Impact.Jupiter.EnemyDefenseAmplifier | printf "%d" | color "red" | bold }} and hit points by
the factor of {{ config.Planet.Impact.Jupiter.EnemyHitpointsAmplifier | printf "%d" | color "red" | bold }}.</p>
"""
EnemyDefenseAmplifier = 2 ; Amplifier of the enemy defense when the planet is Jupiter
EnemyHitpointsAmplifier = 2 ; Amplifier of the enemy hit points when the planet is Jupiter
[Planet.Impact.Saturn]
Description = """
<p class="indented">Saturn is the sixth planet from the sun and the second-largest in the solar system, after Jupiter.</p>
<p class="indented">It is named after the Roman god of agriculture.</p>
<p class="indented">It {{ bold "increases" }} the enemy’s defense by
the factor of {{ config.Planet.Impact.Saturn.EnemyDefenseAmplifier | printf "%d" | color "red" | bold }} and hit points by
the factor of {{ config.Planet.Impact.Saturn.EnemyHitpointsAmplifier | printf "%d" | color "red" | bold }}.</p>
"""
EnemyDefenseAmplifier = 4 ; Amplifier of the enemy hit points when the planet is Saturn
EnemyHitpointsAmplifier = 4 ; Amplifier of the enemy hit points when the planet is Saturn
[Planet.Impact.Uranus]
Description = """
<p class="indented">Uranus is the seventh planet from the sun.</p>
<p class="indented">It is named after the ancient Greek deity of the sky Uranus, the father of Cronus and grandfather of Zeus.</p>
<p class="indented">It {{ bold "increases" }} the likelihood of an enemy to become a {{ color "blue" "freezer" }} or
{{ color "gray" "cloaked" }} by the factor of
{{ config.Planet.Impact.Uranus.SpecialFoeLikelinessAmplifier | printf "%g" | color "blue" | bold }}.</p>
"""
SpecialFoeLikelinessAmplifier = 2.0 ; Amplifier of the freezer likelihood of the enemy when the planet is Uranus
[Planet.Impact.Neptune]
Description = """
<p class="indented">Neptune is the eighth and farthest known planet from the sun in the solar system.</p>
<p class="indented">It is named after the Roman god of the sea.</p>
<p class="indented">It {{ bold "increases" }} the likelihood of an enemy to become a {{ color "blue" "freezer" }}
or {{ color "gray" "cloaked" }} by the factor of
{{ config.Planet.Impact.Neptune.SpecialFoeLikelinessAmplifier | printf "%g" | color "blue" | bold }}.</p>
"""
SpecialFoeLikelinessAmplifier = 4.0 ; Amplifier of the freezer likelihood of the enemy when the planet is Neptune
[Planet.Impact.Pluto]
BerserkLikelinessAmplifier = 8.0 ; Amplifier of the berserk likelihood of the enemy when the planet is Pluto
Description = """
<p class="indented">Pluto is a dwarf planet in the Kuiper belt, a ring of bodies beyond Neptune.</p>
<p class="indented">It is named after the Roman god of the underworld.</p>
<p class="indented">It {{ bold "increases" }} the likelihood of an enemy to become a {{ color "red" "berserker" }}
or {{ color "gray" "cloaked" }} by the factor of
{{ config.Planet.Impact.Pluto.BerserkLikelinessAmplifier | printf "%g" | color "red" | bold }}
and a {{ color "blue" "freezer" }} by the factor of
{{ config.Planet.Impact.Pluto.SpecialFoeLikelinessAmplifier | printf "%g" | color "blue" | bold }}.</p>
"""
SpecialFoeLikelinessAmplifier = 8.0 ; Amplifier of the freezer likelihood of the enemy when the planet is Pluto
[Planet.Impact.Sun]
Description = """
<p class="indented">The Sun is the star at the center of the solar system.</p>
<p class="indented">It is a nearly perfect sphere of hot plasma, with internal convective motion that generates a magnetic field via a dynamo process.
In its core, the Sun fuses about 620 million metric tons of hydrogen each second.</p>
<p class="indented">It makes {{ color "blue" "freezers" }} vulnerable to our bullets and {{ color "yellow" "unfreezes" }} our spaceship
if it happens to be close enough. {{ color "blue" "Freezers" }} within its range become {{ color "yellow" "disarmed" }}.</p>
"""
GravityStrength = 5.0e-4 ; Gravity strength of the planet when the planet is the Sun
[Planet.Impact.BlackHole]
Description = """
<p class="indented">A black hole is a region of spacetime where gravity is so strong that nothing—no particles or even electromagnetic radiation
such as light—can escape from it.
The theory of general relativity predicts that a sufficiently compact mass can deform spacetime to form a black hole.
Its gravity is so strong that it pulls everything into it, including light.</p>
<p class="indented">Black Hole makes it difficult to navigate and shoot.
We ought better not get trapped!
Be careful, Commandant!</p>
<p class="indented">In the case, we get sucked into the hole, the spaceship boost will be {{ color "red" "disabled" }} immediately!</p>
<p class="indented">If we stay too long in the vicinity of the black hole, the spaceship will be {{ color "red" "lost" }}
in the void of time and space.</p>
"""
GravityStrength = 5.0e-3 ; Gravity strength of the planet when the planet is a black hole
ObjectSizeDecayDuration = 5000ms ; Duration of the object size decay after it has been pulled into the black hole
SpaceshipDestroyedReason = """
The spaceship has been sucked into the void of never-ending vortex of time and space.
Eventually, our spaceship has been {{ color "red" "destroyed" | bold }} by the gravitational pull of the black hole.
"""
[Planet.Impact.Supernova]
Description = """
<p class="indented">A supernova is a powerful and luminous stellar explosion.</p>
<p class="indented">This transient astronomical event occurs during the last evolutionary stages of a massive star,
or when a white dwarf is triggered into runaway nuclear fusion.
The sudden appearance of a bright new star in the sky is a rare event, but it can be seen from Earth.</p>
<p class="indented">Supernova makes {{ color "blue" "freezers" }} and {{ color "gray" "cloaked" }} enemies vulnerable
to our bullets and {{ color "yellow" "unfreezes" }} our spaceship immediately.</p>
<p class="indented">The supernova’s magnetic field distorts the space and time around it, making it difficult to navigate and shoot.
It repels everything, including our bullets.
Be careful, Commandant!</p>
"""
GravityStrength = -2.0e-3 ; Gravity strength of the planet when the planet is a supernova (negative value to repel)
; Spaceship configurations
[Spaceship]
Acceleration = 0.15 ; Acceleration of the spaceship in pixels per frame
AdmiralDamageAmplifier = 2 ; Damage modifier of the spaceship when the player is an admiral
BoostDuration = 2500ms ; Duration of a special spaceship state
BoostScaleSizeFactor = 1.5 ; Scale size factor of the spaceship when it is boosted
CannonProgress = 37 ; Amount of spaceship progress to unlock a new cannon
Cooldown = 85ms ; Cooldown of the spaceship
DamageDuration = 1000ms ; Duration of the spaceship damage
ExperienceScaler = 36.0 ; Experience scaler of the spaceship used to calculate the required experience to level up
FreezeDuration = 4500ms ; Duration of the spaceship freeze
Height = 40.0 ; Height of the spaceship in pixels
HijackDuration = 9000ms ; Duration of the spaceship hijack
MaximumCannons = 8 ; Maximum number of cannons the spaceship can have
MaximumLabelLength = 20 ; Maximum length of the spaceship label
MaximumSpeed = 10.0 ; Maximum speed of the spaceship in pixels per frame
ShieldChargeDuration = 2500ms ; Duration of the spaceship shield to charge by 1
Width = 40.0 ; Width of the spaceship in pixels
; Star configurations
[Star]
Brightness = 0.3 ; Brightness of the star
Count = 50 ; Number of stars on the canvas
MinimumInnerRadius = 1.0 ; Minimum inner radius of the star in pixels
MinimumRadius = 2.0 ; Minimum radius of the star in pixels
MinimumSpikes = 5 ; Minimum number of spikes of the star
MaximumInnerRadius = 5.0 ; Maximum inner radius of the star in pixels
MaximumRadius = 15.0 ; Maximum radius of the star in pixels
MaximumSpikes = 10 ; Maximum number of spikes of the star
SpeedRatio = 0.5 ; Speed ratio of the star in relation to the spaceship