helldivers-theme 1.2.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/_data/squad.yaml +31 -2
- data/_layouts/default.html +9 -5
- data/assets/js/profile-modal.js +3 -0
- data/assets/js/sfx.js +77 -0
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ef9bcafbe4a33ebd2c37dae783b384aac9544d37e8a860f5ad21454f19ad9628
|
|
4
|
+
data.tar.gz: fc9b4d7014ce7ba2ad1cae32201dd23a16050062b9f527f10f44b87b6e5b75ed
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 210ac1d24abe43601df9802ebc697c2a89ce29a720b6f1337232ecbd916102b331497dd19b56934702b4d25b167218b5bbaf56c2cb0ac19abc29950e11d1fbce
|
|
7
|
+
data.tar.gz: b48aa79fbb784e68a79e9e33cd1d96f72f483fc841ce39e578b3121da6c19e85385bc70bf8abd943ae112255b910bd8fa4b0d2b49172ac2a75e74f7f374b417c
|
data/_data/squad.yaml
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# _data/squad.yml
|
|
2
|
-
|
|
3
1
|
# --- GENERAL INFO ---
|
|
4
2
|
squad_name: "Dagger Squad"
|
|
5
3
|
motto: "\"Liberty never sleeps, and neither do we.\""
|
|
@@ -75,6 +73,37 @@ requirements:
|
|
|
75
73
|
value: "ANY (TRY HARD)"
|
|
76
74
|
status: "pending" # Shows yellow/orange
|
|
77
75
|
|
|
76
|
+
hubs:
|
|
77
|
+
- name: "PC Division"
|
|
78
|
+
platform: "STEAM / PSN"
|
|
79
|
+
logo: "pc-logo.png"
|
|
80
|
+
commander: "CMDR. VEX" # Specific leader for this hub
|
|
81
|
+
members: "150+ Active"
|
|
82
|
+
status: "OPERATIONAL"
|
|
83
|
+
description: "Primary command center for PC Helldivers. Specializing in high-precision orbital strikes and rapid deployment strategies."
|
|
84
|
+
discord_link: "https://discord.gg/your-pc-link"
|
|
85
|
+
color_theme: "#00f0ff" # Optional: Cyan for PC
|
|
86
|
+
|
|
87
|
+
- name: "PlayStation Command"
|
|
88
|
+
platform: "PS5 / PS4"
|
|
89
|
+
logo: "ps-logo.png"
|
|
90
|
+
commander: "LT. RAX"
|
|
91
|
+
members: "200+ Active"
|
|
92
|
+
status: "OPERATIONAL"
|
|
93
|
+
description: "The backbone of Super Earth's console forces. Experts in heavy armor, defensive holds, and extraction tactics."
|
|
94
|
+
discord_link: "https://discord.gg/your-ps-link"
|
|
95
|
+
color_theme: "#0055ff" # Optional: Blue for PS
|
|
96
|
+
|
|
97
|
+
- name: "Xbox Battalion"
|
|
98
|
+
platform: "SERIES X / ONE"
|
|
99
|
+
logo: "xbox-logo.png"
|
|
100
|
+
commander: "SGT. KORA"
|
|
101
|
+
members: "120+ Active"
|
|
102
|
+
status: "OPERATIONAL"
|
|
103
|
+
description: "Rising defenders of democracy on Xbox. Known for aggressive push strategies, camaraderie, and sheer firepower."
|
|
104
|
+
discord_link: "https://discord.gg/your-xbox-link"
|
|
105
|
+
color_theme: "#00ff00" # Optional: Green for Xbox
|
|
106
|
+
|
|
78
107
|
# --- SQUAD LEADERS ---
|
|
79
108
|
|
|
80
109
|
leaders:
|
data/_layouts/default.html
CHANGED
|
@@ -29,10 +29,11 @@
|
|
|
29
29
|
|
|
30
30
|
<nav class="main-nav">
|
|
31
31
|
<a href="{{ '/' | relative_url }}" class="nav-link {% if page.url == '/' %}active{% endif %}">HOME</a>
|
|
32
|
-
<a href="{{ '/about/' | relative_url }}" class="nav-link {% if page.url == '/about/' %}active{% endif %}">INTEL</a>
|
|
33
|
-
<a href="{{ '/join/' | relative_url }}" class="nav-link {% if page.url == '/join/' %}active{% endif %}">ENLIST</a>
|
|
34
|
-
<a href="{{ '/contact/' | relative_url }}" class="nav-link {% if page.url == '/contact/' %}active{% endif %}">COMMS</a>
|
|
35
|
-
<a href="{{ '/
|
|
32
|
+
<a href="{{ '/about/' | relative_url }}" class="nav-link {% if page.url == '/about/' %}active{% endif %}" onclick="if(typeof SFX!=='undefined')SFX.playClick()">INTEL</a>
|
|
33
|
+
<a href="{{ '/join/' | relative_url }}" class="nav-link {% if page.url == '/join/' %}active{% endif %}" onclick="if(typeof SFX!=='undefined')SFX.playClick()">ENLIST</a>
|
|
34
|
+
<a href="{{ '/contact/' | relative_url }}" class="nav-link {% if page.url == '/contact/' %}active{% endif %}" onclick="if(typeof SFX!=='undefined')SFX.playClick()">COMMS</a>
|
|
35
|
+
<a href="{{ '/hub/' | relative_url }}" class="nav-link {% if page.url == '/hub/' %}active{% endif %}" onclick="if(typeof SFX!=='undefined')SFX.playClick()">HUBS</a>
|
|
36
|
+
<a href="{{ '/watch/' | relative_url }}" class="nav-link {% if page.url == '/watch/' %}active{% endif %}" onclick="if(typeof SFX!=='undefined')SFX.playClick()">LIVE FEED<span class="live-dot"id="status-dot"></span>
|
|
36
37
|
</a>
|
|
37
38
|
|
|
38
39
|
</nav>
|
|
@@ -57,5 +58,8 @@
|
|
|
57
58
|
|
|
58
59
|
<!-- Leader Profiles Script -->
|
|
59
60
|
<script src="{{ '/assets/js/profile-modal.js' | relative_url }}"></script>
|
|
61
|
+
|
|
62
|
+
<!-- Sound Effects Generator -->
|
|
63
|
+
<script src="{{ '/assets/js/sfx.js' | relative_url }}"></script>
|
|
60
64
|
</body>
|
|
61
|
-
</html>
|
|
65
|
+
</html>
|
data/assets/js/profile-modal.js
CHANGED
|
@@ -73,6 +73,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
|
|
73
73
|
|
|
74
74
|
modal.style.opacity = '1';
|
|
75
75
|
modal.querySelector('.modal-terminal').style.transform = 'scale(1)';
|
|
76
|
+
if (typeof SFX !== 'undefined') SFX.playOpen();
|
|
76
77
|
|
|
77
78
|
// Prevent background scrolling
|
|
78
79
|
document.body.style.overflow = 'hidden';
|
|
@@ -87,6 +88,8 @@ document.addEventListener('DOMContentLoaded', () => {
|
|
|
87
88
|
// Fade out
|
|
88
89
|
modal.style.opacity = '0';
|
|
89
90
|
modal.querySelector('.modal-terminal').style.transform = 'scale(0.9)';
|
|
91
|
+
if (typeof SFX !== 'undefined') SFX.playClose();
|
|
92
|
+
|
|
90
93
|
|
|
91
94
|
// Wait for transition to finish before hiding display
|
|
92
95
|
setTimeout(() => {
|
data/assets/js/sfx.js
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// assets/js/sfx.js
|
|
2
|
+
|
|
3
|
+
const SFX = {
|
|
4
|
+
ctx: null,
|
|
5
|
+
|
|
6
|
+
// Initialize Audio Context (must be triggered by user interaction first)
|
|
7
|
+
init() {
|
|
8
|
+
if (!this.ctx) {
|
|
9
|
+
this.ctx = new (window.AudioContext || window.webkitAudioContext)();
|
|
10
|
+
}
|
|
11
|
+
if (this.ctx.state === 'suspended') {
|
|
12
|
+
this.ctx.resume();
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
|
|
16
|
+
// 1. Modal Open Sound (Soft Sci-Fi Hum/Power Up)
|
|
17
|
+
playOpen() {
|
|
18
|
+
this.init();
|
|
19
|
+
const osc = this.ctx.createOscillator();
|
|
20
|
+
const gain = this.ctx.createGain();
|
|
21
|
+
|
|
22
|
+
osc.type = 'sine';
|
|
23
|
+
osc.frequency.setValueAtTime(200, this.ctx.currentTime);
|
|
24
|
+
osc.frequency.exponentialRampToValueAtTime(600, this.ctx.currentTime + 0.3);
|
|
25
|
+
|
|
26
|
+
gain.gain.setValueAtTime(0.1, this.ctx.currentTime);
|
|
27
|
+
gain.gain.exponentialRampToValueAtTime(0.01, this.ctx.currentTime + 0.3);
|
|
28
|
+
|
|
29
|
+
osc.connect(gain);
|
|
30
|
+
gain.connect(this.ctx.destination);
|
|
31
|
+
|
|
32
|
+
osc.start();
|
|
33
|
+
osc.stop(this.ctx.currentTime + 0.3);
|
|
34
|
+
},
|
|
35
|
+
|
|
36
|
+
// 2. Modal Close Sound (Digital Power Down)
|
|
37
|
+
playClose() {
|
|
38
|
+
this.init();
|
|
39
|
+
const osc = this.ctx.createOscillator();
|
|
40
|
+
const gain = this.ctx.createGain();
|
|
41
|
+
|
|
42
|
+
osc.type = 'square';
|
|
43
|
+
osc.frequency.setValueAtTime(400, this.ctx.currentTime);
|
|
44
|
+
osc.frequency.exponentialRampToValueAtTime(100, this.ctx.currentTime + 0.2);
|
|
45
|
+
|
|
46
|
+
gain.gain.setValueAtTime(0.05, this.ctx.currentTime);
|
|
47
|
+
gain.gain.exponentialRampToValueAtTime(0.01, this.ctx.currentTime + 0.2);
|
|
48
|
+
|
|
49
|
+
osc.connect(gain);
|
|
50
|
+
gain.connect(this.ctx.destination);
|
|
51
|
+
|
|
52
|
+
osc.start();
|
|
53
|
+
osc.stop(this.ctx.currentTime + 0.2);
|
|
54
|
+
},
|
|
55
|
+
|
|
56
|
+
// 3. Button Click/Hover (Sharp Mechanical Click)
|
|
57
|
+
playClick() {
|
|
58
|
+
this.init();
|
|
59
|
+
const osc = this.ctx.createOscillator();
|
|
60
|
+
const gain = this.ctx.createGain();
|
|
61
|
+
|
|
62
|
+
osc.type = 'triangle';
|
|
63
|
+
osc.frequency.setValueAtTime(800, this.ctx.currentTime);
|
|
64
|
+
|
|
65
|
+
gain.gain.setValueAtTime(0.05, this.ctx.currentTime);
|
|
66
|
+
gain.gain.exponentialRampToValueAtTime(0.01, this.ctx.currentTime + 0.05);
|
|
67
|
+
|
|
68
|
+
osc.connect(gain);
|
|
69
|
+
gain.connect(this.ctx.destination);
|
|
70
|
+
|
|
71
|
+
osc.start();
|
|
72
|
+
osc.stop(this.ctx.currentTime + 0.05);
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
// Auto-initialize on first click anywhere on the page
|
|
77
|
+
document.addEventListener('click', () => SFX.init(), { once: true });
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: helldivers-theme
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- DAR
|
|
@@ -89,6 +89,7 @@ files:
|
|
|
89
89
|
- assets/js/main.js
|
|
90
90
|
- assets/js/particles.js
|
|
91
91
|
- assets/js/profile-modal.js
|
|
92
|
+
- assets/js/sfx.js
|
|
92
93
|
- assets/main.scss
|
|
93
94
|
- contact.md
|
|
94
95
|
- index.html
|