Skip to content

Commit d3fd7d6

Browse files
garyshengArie
andcommitted
Merge PR #20: Add TF2 Engineer sound pack
Adds Team Fortress 2 Engineer sound pack by @Arie with 51 sound files across all 7 categories. Includes website carousel entry and demo audio. Resolves VERSION conflict (1.2.1 vs 1.3.1 → 1.3.2) and install.sh PACKS list conflict. Adds README table entry for tf2_engineer. Co-Authored-By: Arie <git@ariekanarie.nl>
2 parents 0a3c897 + 15d82b3 commit d3fd7d6

78 files changed

Lines changed: 424 additions & 42 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 14 additions & 1 deletion

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.2.1
1+
1.3.2

install.sh

Lines changed: 71 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,24 @@
44
# Re-running updates core files; sounds are version-controlled in the repo
55
set -euo pipefail
66

7-
INSTALL_DIR="$HOME/.claude/hooks/peon-ping"
8-
SETTINGS="$HOME/.claude/settings.json"
7+
LOCAL_MODE=false
8+
for arg in "$@"; do
9+
case "$arg" in
10+
--local) LOCAL_MODE=true ;;
11+
esac
12+
done
13+
14+
if [ "$LOCAL_MODE" = true ]; then
15+
BASE_DIR="$PWD/.claude"
16+
else
17+
BASE_DIR="$HOME/.claude"
18+
fi
19+
INSTALL_DIR="$BASE_DIR/hooks/peon-ping"
20+
SETTINGS="$BASE_DIR/settings.json"
921
REPO_BASE="https://raw.githubusercontent.com/tonyyont/peon-ping/main"
1022

1123
# All available sound packs (add new packs here)
12-
PACKS="peon peon_fr peon_pl peasant peasant_fr ra2_soviet_engineer sc_battlecruiser sc_kerrigan tf2_engineer"
24+
PACKS="acolyte_ru peon peon_fr peon_pl peon_ru peasant peasant_fr peasant_ru ra2_soviet_engineer sc_battlecruiser sc_kerrigan tf2_engineer"
1325

1426
# --- Platform detection ---
1527
detect_platform() {
@@ -68,8 +80,12 @@ elif [ "$PLATFORM" = "wsl" ]; then
6880
fi
6981
fi
7082

71-
if [ ! -d "$HOME/.claude" ]; then
72-
echo "Error: ~/.claude/ not found. Is Claude Code installed?"
83+
if [ ! -d "$BASE_DIR" ]; then
84+
if [ "$LOCAL_MODE" = true ]; then
85+
echo "Error: .claude/ not found in current directory. Is this a Claude Code project?"
86+
else
87+
echo "Error: ~/.claude/ not found. Is Claude Code installed?"
88+
fi
7389
exit 1
7490
fi
7591

@@ -133,35 +149,50 @@ fi
133149
chmod +x "$INSTALL_DIR/peon.sh"
134150

135151
# --- Install skill (slash command) ---
136-
SKILL_DIR="$HOME/.claude/skills/peon-ping-toggle"
152+
SKILL_DIR="$BASE_DIR/skills/peon-ping-toggle"
137153
mkdir -p "$SKILL_DIR"
154+
if [ "$LOCAL_MODE" = true ]; then
155+
SKILL_HOOK_CMD="bash .claude/hooks/peon-ping/peon.sh"
156+
else
157+
SKILL_HOOK_CMD="bash ~/.claude/hooks/peon-ping/peon.sh"
158+
fi
138159
if [ -n "$SCRIPT_DIR" ] && [ -d "$SCRIPT_DIR/skills/peon-ping-toggle" ]; then
139160
cp "$SCRIPT_DIR/skills/peon-ping-toggle/SKILL.md" "$SKILL_DIR/"
161+
if [ "$LOCAL_MODE" = true ]; then
162+
sed -i.bak 's|bash ~/.claude/hooks/peon-ping/peon.sh|'"$SKILL_HOOK_CMD"'|g' "$SKILL_DIR/SKILL.md"
163+
rm -f "$SKILL_DIR/SKILL.md.bak"
164+
fi
140165
elif [ -z "$SCRIPT_DIR" ]; then
141166
curl -fsSL "$REPO_BASE/skills/peon-ping-toggle/SKILL.md" -o "$SKILL_DIR/SKILL.md"
167+
if [ "$LOCAL_MODE" = true ]; then
168+
sed -i.bak 's|bash ~/.claude/hooks/peon-ping/peon.sh|'"$SKILL_HOOK_CMD"'|g' "$SKILL_DIR/SKILL.md"
169+
rm -f "$SKILL_DIR/SKILL.md.bak"
170+
fi
142171
else
143172
echo "Warning: skills/peon-ping-toggle not found in local clone, skipping skill install"
144173
fi
145174

146-
# --- Add shell alias ---
147-
ALIAS_LINE='alias peon="bash ~/.claude/hooks/peon-ping/peon.sh"'
148-
for rcfile in "$HOME/.zshrc" "$HOME/.bashrc"; do
149-
if [ -f "$rcfile" ] && ! grep -qF 'alias peon=' "$rcfile"; then
150-
echo "" >> "$rcfile"
151-
echo "# peon-ping quick controls" >> "$rcfile"
152-
echo "$ALIAS_LINE" >> "$rcfile"
153-
echo "Added peon alias to $(basename "$rcfile")"
154-
fi
155-
done
175+
# --- Add shell alias (global install only) ---
176+
if [ "$LOCAL_MODE" = false ]; then
177+
ALIAS_LINE='alias peon="bash ~/.claude/hooks/peon-ping/peon.sh"'
178+
for rcfile in "$HOME/.zshrc" "$HOME/.bashrc"; do
179+
if [ -f "$rcfile" ] && ! grep -qF 'alias peon=' "$rcfile"; then
180+
echo "" >> "$rcfile"
181+
echo "# peon-ping quick controls" >> "$rcfile"
182+
echo "$ALIAS_LINE" >> "$rcfile"
183+
echo "Added peon alias to $(basename "$rcfile")"
184+
fi
185+
done
156186

157-
# --- Add tab completion ---
158-
COMPLETION_LINE='[ -f ~/.claude/hooks/peon-ping/completions.bash ] && source ~/.claude/hooks/peon-ping/completions.bash'
159-
for rcfile in "$HOME/.zshrc" "$HOME/.bashrc"; do
160-
if [ -f "$rcfile" ] && ! grep -qF 'peon-ping/completions.bash' "$rcfile"; then
161-
echo "$COMPLETION_LINE" >> "$rcfile"
162-
echo "Added tab completion to $(basename "$rcfile")"
163-
fi
164-
done
187+
# --- Add tab completion ---
188+
COMPLETION_LINE='[ -f ~/.claude/hooks/peon-ping/completions.bash ] && source ~/.claude/hooks/peon-ping/completions.bash'
189+
for rcfile in "$HOME/.zshrc" "$HOME/.bashrc"; do
190+
if [ -f "$rcfile" ] && ! grep -qF 'peon-ping/completions.bash' "$rcfile"; then
191+
echo "$COMPLETION_LINE" >> "$rcfile"
192+
echo "Added tab completion to $(basename "$rcfile")"
193+
fi
194+
done
195+
fi
165196

166197
# --- Verify sounds are installed ---
167198
echo ""
@@ -175,8 +206,8 @@ for pack in $PACKS; do
175206
fi
176207
done
177208

178-
# --- Backup existing notify.sh (fresh install only) ---
179-
if [ "$UPDATING" = false ]; then
209+
# --- Backup existing notify.sh (global fresh install only) ---
210+
if [ "$LOCAL_MODE" = false ] && [ "$UPDATING" = false ]; then
180211
NOTIFY_SH="$HOME/.claude/hooks/notify.sh"
181212
if [ -f "$NOTIFY_SH" ]; then
182213
cp "$NOTIFY_SH" "$NOTIFY_SH.backup"
@@ -189,11 +220,17 @@ fi
189220
echo ""
190221
echo "Updating Claude Code hooks in settings.json..."
191222

223+
if [ "$LOCAL_MODE" = true ]; then
224+
HOOK_CMD=".claude/hooks/peon-ping/peon.sh"
225+
else
226+
HOOK_CMD="$HOME/.claude/hooks/peon-ping/peon.sh"
227+
fi
228+
192229
python3 -c "
193230
import json, os, sys
194231
195-
settings_path = os.path.expanduser('~/.claude/settings.json')
196-
hook_cmd = os.path.expanduser('~/.claude/hooks/peon-ping/peon.sh')
232+
settings_path = '$SETTINGS'
233+
hook_cmd = '$HOOK_CMD'
197234
198235
# Load existing settings
199236
if os.path.exists(settings_path):
@@ -249,9 +286,9 @@ fi
249286
echo ""
250287
echo "Testing sound..."
251288
ACTIVE_PACK=$(python3 -c "
252-
import json, os
289+
import json
253290
try:
254-
c = json.load(open(os.path.expanduser('~/.claude/hooks/peon-ping/config.json')))
291+
c = json.load(open('$INSTALL_DIR/config.json'))
255292
print(c.get('active_pack', 'peon'))
256293
except:
257294
print('peon')
@@ -298,7 +335,9 @@ fi
298335
echo ""
299336
echo "Quick controls:"
300337
echo " /peon-ping-toggle — toggle sounds in Claude Code"
301-
echo " peon --toggle — toggle sounds from any terminal"
302-
echo " peon --status — check if sounds are paused"
338+
if [ "$LOCAL_MODE" = false ]; then
339+
echo " peon --toggle — toggle sounds from any terminal"
340+
echo " peon --status — check if sounds are paused"
341+
fi
303342
echo ""
304343
echo "Ready to work!"

packs/acolyte_ru/manifest.json

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
{
2+
"name": "acolyte_ru",
3+
"display_name": "Undead Acolyte (Russian)",
4+
"categories": {
5+
"greeting": {
6+
"sounds": [
7+
{ "file": "AcolyteReady1.wav", "line": "Дела не ждут." },
8+
{ "file": "AcolyteWhat1.wav", "line": "Моя жизнь за Нер'зула!" },
9+
{ "file": "AcolyteWhat3.wav", "line": "Что прикажешь, хозяин?" }
10+
]
11+
},
12+
"acknowledge": {
13+
"sounds": [
14+
{ "file": "AcolyteYes1.wav", "line": "Исполню с радостью." },
15+
{ "file": "AcolyteYes2.wav", "line": "Да, повелитель." },
16+
{ "file": "AcolyteYes3.wav", "line": "Да свершится предначертанное." },
17+
{ "file": "AcolyteYes4.wav", "line": "Ваша воля исполнится ." },
18+
{ "file": "AcolyteYesAttack1.wav", "line": "Да воцарится смерть.!" },
19+
{ "file": "AcolyteYesAttack2.wav", "line": "Бойтесь тьмы!" },
20+
{ "file": "AcolyteYesAttack3.wav", "line": "Смерть всем живым!" }
21+
]
22+
},
23+
"complete": {
24+
"sounds": [
25+
{ "file": "AcolyteBuildingComplete1.wav", "line": "Постройка завершена." },
26+
{ "file": "NecromancerResearchComplete1.wav", "line": "Исследование завершено." },
27+
{ "file": "AcolyteReady1.wav", "line": "Дела не ждут." },
28+
{ "file": "AcolyteYes1.wav", "line": "Раз ты так хочешь." },
29+
{ "file": "AcolyteYes2.wav", "line": "Да, хозяин." },
30+
{ "file": "AcolyteWhat5.wav", "line": "Я лишь слуга тьмы." },
31+
{ "file": "AcolyteWhat4.wav", "line": "Где прольётся моя кровь?" }
32+
]
33+
},
34+
"error": {
35+
"sounds": [
36+
{ "file": "AcolyteDeath1.wav", "line": "Угх." },
37+
{ "file": "AcolytePissed4.wav", "line": "Чернее чёрного..." }
38+
]
39+
},
40+
"permission": {
41+
"sounds": [
42+
{ "file": "AcolyteWhat1.wav", "line": "Жизнь за Нер'зула!" },
43+
{ "file": "AcolyteWhat2.wav", "line": "Я жажду служить." },
44+
{ "file": "AcolyteWhat3.wav", "line": "Чего желает мой повелитель?" },
45+
{ "file": "AcolyteWhat4.wav", "line": "Где прольётся моя кровь?" },
46+
{ "file": "AcolyteWhat5.wav", "line": "Склоняюсь перед вашей волей." }
47+
]
48+
},
49+
"resource_limit": {
50+
"sounds": [
51+
{ "file": "NecromancerNoFood1.wav", "line": "Нужно построить зиккурат!" },
52+
{ "file": "NecromancerNoGold1.wav", "line": "Нужно больше золота!" }
53+
]
54+
},
55+
"annoyed": {
56+
"sounds": [
57+
{ "file": "AcolytePissed1.wav", "line": "Настал час тьмы." },
58+
{ "file": "AcolytePissed2.wav", "line": "Смерть очистит этот мир." },
59+
{ "file": "AcolytePissed3.wav", "line": "Я вижу великую тьму...Тьфу, опять капюшон сполз на глаза." },
60+
{ "file": "AcolytePissed7.wav", "line": "Откройте страницу 2-4-6." },
61+
{ "file": "AcolytePissed8.wav", "line": "Ступив на путь тьмы вы обретете власть над собственной судьбой...страховку и оплаченный отпуск" }
62+
]
63+
}
64+
}
65+
}
79.4 KB
Binary file not shown.
69 KB
Binary file not shown.
109 KB
Binary file not shown.
135 KB
Binary file not shown.
265 KB
Binary file not shown.
321 KB
Binary file not shown.

0 commit comments

Comments
 (0)