Petbot/help.html
megaproxy 47f160a295 Initial commit: Complete PetBot IRC Game
🎮 Features implemented:
- Pokemon-style pet collection and battles
- Multi-location exploration system
- Dynamic weather with background updates
- Achievement system with location unlocks
- Web dashboard for player stats
- Modular command system
- Async database with SQLite
- PM flood prevention
- Persistent player data

🌤️ Weather System:
- 6 weather types with spawn modifiers
- 30min-3hour dynamic durations
- Background task for automatic updates
- Location-specific weather patterns

🐛 Recent Bug Fixes:
- Database persistence on restart
- Player page SQLite row conversion
- Achievement count calculations
- Travel requirement messages
- Battle move color coding
- Locations page display

🔧 Generated with Claude Code
🤖 Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-13 23:57:39 +01:00

525 lines
No EOL
22 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PetBot IRC Commands Reference</title>
<style>
:root {
--bg-primary: #0f0f23;
--bg-secondary: #1e1e3f;
--bg-tertiary: #2a2a4a;
--text-primary: #cccccc;
--text-secondary: #999999;
--text-accent: #66ff66;
--border-color: #333366;
--hover-color: #3a3a5a;
--gradient-primary: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
--gradient-secondary: linear-gradient(135deg, #ff6b6b 0%, #feca57 100%);
--gradient-tertiary: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);
--shadow-dark: 0 4px 20px rgba(0,0,0,0.3);
--shadow-glow: 0 0 20px rgba(102, 255, 102, 0.2);
}
* {
box-sizing: border-box;
}
body {
font-family: 'Segoe UI', 'Roboto', 'Arial', sans-serif;
max-width: 1400px;
margin: 0 auto;
padding: 20px;
background: var(--bg-primary);
color: var(--text-primary);
line-height: 1.6;
background-image:
radial-gradient(circle at 20% 50%, rgba(120, 119, 198, 0.1) 0%, transparent 50%),
radial-gradient(circle at 80% 20%, rgba(255, 119, 198, 0.1) 0%, transparent 50%),
radial-gradient(circle at 40% 80%, rgba(120, 198, 119, 0.1) 0%, transparent 50%);
min-height: 100vh;
}
.header {
text-align: center;
background: var(--gradient-primary);
color: white;
padding: 40px;
border-radius: 20px;
margin-bottom: 40px;
box-shadow: var(--shadow-dark);
position: relative;
overflow: hidden;
}
.header::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23ffffff' fill-opacity='0.05'%3E%3Ccircle cx='30' cy='30' r='4'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
z-index: 0;
}
.header > * {
position: relative;
z-index: 1;
}
.header h1 {
margin: 0;
font-size: 3em;
font-weight: 700;
background: linear-gradient(45deg, #fff, #66ff66);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
text-shadow: 0 2px 10px rgba(0,0,0,0.3);
}
.header p {
margin: 15px 0 0 0;
opacity: 0.9;
font-size: 1.3em;
font-weight: 300;
}
.section {
background: var(--bg-secondary);
margin-bottom: 30px;
border-radius: 15px;
overflow: hidden;
box-shadow: var(--shadow-dark);
border: 1px solid var(--border-color);
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.section:hover {
transform: translateY(-5px);
box-shadow: var(--shadow-glow);
}
.section-header {
background: var(--gradient-tertiary);
color: white;
padding: 20px 25px;
font-size: 1.4em;
font-weight: 700;
text-shadow: 0 2px 4px rgba(0,0,0,0.3);
}
.command-grid {
padding: 25px;
display: grid;
gap: 20px;
}
.command {
border: 1px solid var(--border-color);
border-radius: 12px;
overflow: hidden;
transition: all 0.3s ease;
background: var(--bg-tertiary);
}
.command:hover {
transform: translateY(-3px);
box-shadow: 0 8px 25px rgba(102, 255, 102, 0.15);
border-color: var(--text-accent);
}
.command-name {
background: var(--bg-primary);
padding: 15px 20px;
font-family: 'Fira Code', 'Courier New', monospace;
font-weight: bold;
color: var(--text-accent);
border-bottom: 1px solid var(--border-color);
font-size: 1.2em;
text-shadow: 0 0 10px rgba(102, 255, 102, 0.3);
}
.command-desc {
padding: 20px;
line-height: 1.7;
color: var(--text-primary);
}
.command-example {
background: var(--bg-primary);
padding: 12px 20px;
font-family: 'Fira Code', 'Courier New', monospace;
color: var(--text-secondary);
border-top: 1px solid var(--border-color);
font-size: 0.95em;
}
.locations-list, .status-list {
background: var(--bg-tertiary);
padding: 20px;
border-radius: 12px;
margin: 20px 0;
border: 1px solid var(--border-color);
}
.locations-list h4, .status-list h4 {
margin: 0 0 15px 0;
color: var(--text-accent);
font-size: 1.1em;
font-weight: 600;
}
.locations-list ul, .status-list ul {
margin: 0;
padding-left: 25px;
}
.locations-list li, .status-list li {
margin: 8px 0;
color: var(--text-primary);
}
.locations-list strong, .status-list strong {
color: var(--text-accent);
}
.footer {
text-align: center;
margin-top: 50px;
padding: 30px;
background: var(--bg-secondary);
border-radius: 15px;
color: var(--text-secondary);
box-shadow: var(--shadow-dark);
border: 1px solid var(--border-color);
}
.tip {
background: var(--bg-tertiary);
border: 1px solid var(--text-accent);
padding: 20px;
border-radius: 12px;
margin: 20px 0;
box-shadow: 0 0 15px rgba(102, 255, 102, 0.1);
}
.tip strong {
color: var(--text-accent);
}
table {
width: 100%;
border-collapse: collapse;
margin: 20px 0;
background: var(--bg-tertiary);
border-radius: 8px;
overflow: hidden;
}
th, td {
padding: 15px;
text-align: left;
border-bottom: 1px solid var(--border-color);
}
th {
background: var(--bg-primary);
color: var(--text-accent);
font-weight: 600;
}
tr:hover {
background: var(--hover-color);
}
code {
background: var(--bg-primary);
color: var(--text-accent);
padding: 2px 6px;
border-radius: 4px;
font-family: 'Fira Code', 'Courier New', monospace;
font-size: 0.9em;
}
.new-badge {
background: var(--gradient-secondary);
color: white;
font-size: 0.7em;
padding: 3px 8px;
border-radius: 12px;
margin-left: 10px;
font-weight: bold;
text-transform: uppercase;
letter-spacing: 0.5px;
box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}
.pm-indicator {
background: rgba(102, 255, 102, 0.2);
color: var(--text-accent);
font-size: 0.8em;
padding: 2px 8px;
border-radius: 8px;
margin-left: 10px;
border: 1px solid var(--text-accent);
}
</style>
</head>
<body>
<div class="header">
<h1>🐾 PetBot Command Reference</h1>
<p>Complete guide to IRC pet collection and battle commands</p>
<p><em>Connect to irc.libera.chat #petz to play!</em></p>
</div>
<div class="section">
<div class="section-header">🎮 Getting Started</div>
<div class="command-grid">
<div class="command">
<div class="command-name">!start</div>
<div class="command-desc">Begin your pet journey! Creates your trainer account and gives you a starter pet in Starter Town.</div>
<div class="command-example">Example: !start</div>
</div>
<div class="command">
<div class="command-name">!help</div>
<div class="command-desc">Display a quick list of available commands in the IRC channel.</div>
<div class="command-example">Example: !help</div>
</div>
</div>
</div>
<div class="section">
<div class="section-header">🔍 Exploration & Travel</div>
<div class="command-grid">
<div class="command">
<div class="command-name">!explore</div>
<div class="command-desc">Explore your current location to find wild pets. Weather affects what types of pets you'll encounter!</div>
<div class="command-example">Example: !explore</div>
</div>
<div class="command">
<div class="command-name">!location (or !where)</div>
<div class="command-desc">See where you currently are, including the location description.</div>
<div class="command-example">Example: !location</div>
</div>
<div class="command">
<div class="command-name">!travel &lt;location&gt;</div>
<div class="command-desc">Travel to a different location. Some locations require achievements to unlock!</div>
<div class="command-example">Example: !travel Whispering Woods</div>
</div>
<div class="command">
<div class="command-name">!wild &lt;location&gt;</div>
<div class="command-desc">Check what types of pets can be found in a specific location.</div>
<div class="command-example">Example: !wild Electric Canyon</div>
</div>
</div>
<div class="locations-list">
<h4>Available Locations:</h4>
<ul>
<li><strong>Starter Town</strong> - Where all trainers begin (always accessible)</li>
<li><strong>Whispering Woods</strong> - Unlocked by catching 3 different Grass-type pets</li>
<li><strong>Electric Canyon</strong> - Unlocked by catching 2 different Electric-type pets</li>
<li><strong>Crystal Caves</strong> - Unlocked by catching 3 different Rock-type pets</li>
<li><strong>Frozen Tundra</strong> - Unlocked by catching 5 different Water/Ice-type pets</li>
<li><strong>Dragon's Peak</strong> - Unlocked by catching 15 pets total and having 3 Fire-type pets</li>
</ul>
</div>
</div>
<div class="section">
<div class="section-header">⚔️ Battle System</div>
<div class="command-grid">
<div class="command">
<div class="command-name">!battle</div>
<div class="command-desc">Start a battle with a wild pet you encountered during exploration. Strategic combat with type advantages!</div>
<div class="command-example">Example: !battle</div>
</div>
<div class="command">
<div class="command-name">!attack &lt;move&gt;</div>
<div class="command-desc">Use a specific move during battle. Each pet has different moves based on their type.</div>
<div class="command-example">Example: !attack Ember</div>
</div>
<div class="command">
<div class="command-name">!flee</div>
<div class="command-desc">Attempt to escape from battle. Success depends on your pet's speed vs the wild pet's speed.</div>
<div class="command-example">Example: !flee</div>
</div>
<div class="command">
<div class="command-name">!moves</div>
<div class="command-desc">View your active pet's available moves (up to 4 moves). Shows move type and power for battle planning.</div>
<div class="command-example">Example: !moves</div>
</div>
<div class="command">
<div class="command-name">!catch (or !capture)</div>
<div class="command-desc">Try to catch a pet during exploration OR during battle. During battle, weaker pets (lower HP) have significantly higher catch rates - up to 90% for nearly defeated pets! Both !catch and !capture work identically.</div>
<div class="command-example">Example: !catch or !capture</div>
</div>
</div>
<div class="tip">
<strong>Battle Strategy:</strong> Use type advantages! Water beats Fire, Fire beats Grass, Grass beats Water, Electric beats Water, Rock beats Fire and Electric. Weaken wild pets in battle to increase catch rate!
</div>
</div>
<div class="section">
<div class="section-header">🐾 Pet Management</div>
<div class="command-grid">
<div class="command">
<div class="command-name">!team</div>
<div class="command-desc">View all your pets with active pets marked by ⭐. Shows levels, HP, and storage status.</div>
<div class="command-example">Example: !team</div>
</div>
<div class="command">
<div class="command-name">!stats</div>
<div class="command-desc">View your player statistics including level, experience, and money.</div>
<div class="command-example">Example: !stats</div>
</div>
<div class="command">
<div class="command-name">!activate &lt;pet&gt; <span class="pm-indicator">PM ONLY</span></div>
<div class="command-desc">Activate a pet for battle by nickname or species name. Only inactive pets can be activated. This command only works in private messages to prevent channel spam.</div>
<div class="command-example">Example: /msg PetBot !activate Sparky<br>Example: /msg PetBot !activate Pikachu</div>
</div>
<div class="command">
<div class="command-name">!deactivate &lt;pet&gt; <span class="pm-indicator">PM ONLY</span></div>
<div class="command-desc">Deactivate an active pet, removing it from battle readiness. This command only works in private messages to prevent channel spam.</div>
<div class="command-example">Example: /msg PetBot !deactivate Sparky<br>Example: /msg PetBot !deactivate Pikachu</div>
</div>
<div class="command">
<div class="command-name">!swap &lt;pet1&gt; &lt;pet2&gt; <span class="pm-indicator">PM ONLY</span></div>
<div class="command-desc">Swap activation status between two pets. The first pet becomes inactive, the second becomes active. This command only works in private messages to prevent channel spam.</div>
<div class="command-example">Example: /msg PetBot !swap Sparky Flame<br>Example: /msg PetBot !swap Pikachu Charmander</div>
</div>
</div>
<div class="tip">
<strong>Pet Management Tips:</strong> You can only have a limited number of active pets at once. Use !team to see which pets are active (⭐). Pet management commands (!activate, !deactivate, !swap) must be sent as private messages to the bot to prevent channel spam. Use <code>/msg PetBot &lt;command&gt;</code> format.
</div>
</div>
<div class="section">
<div class="section-header">🏆 Achievements & Progress</div>
<div class="command-grid">
<div class="command">
<div class="command-name">!achievements</div>
<div class="command-desc">View your earned achievements and progress. Achievements unlock new locations!</div>
<div class="command-example">Example: !achievements</div>
</div>
</div>
<div class="locations-list">
<h4>Key Achievements:</h4>
<ul>
<li><strong>Pet Collector</strong> - Catch your first 5 pets</li>
<li><strong>Advanced Trainer</strong> - Catch 10 pets total</li>
<li><strong>Nature Explorer</strong> - Catch 3 different Grass-type pets (unlocks Whispering Woods)</li>
<li><strong>Spark Collector</strong> - Catch 2 different Electric-type pets (unlocks Electric Canyon)</li>
<li><strong>Rock Hound</strong> - Catch 3 different Rock-type pets (unlocks Crystal Caves)</li>
<li><strong>Ice Breaker</strong> - Catch 5 different Water/Ice-type pets (unlocks Frozen Tundra)</li>
<li><strong>Dragon Tamer</strong> - Catch 15 pets total + 3 Fire types (unlocks Dragon's Peak)</li>
</ul>
</div>
</div>
<div class="section">
<div class="section-header">🌤️ Weather System</div>
<div class="command-grid">
<div class="command">
<div class="command-name">!weather</div>
<div class="command-desc">Check the current weather in your location and its effects on pet spawns.</div>
<div class="command-example">Example: !weather</div>
</div>
</div>
<div class="status-list">
<h4>Weather Effects:</h4>
<ul>
<li><strong>Sunny</strong> - 1.5x Fire and Grass-type spawns</li>
<li><strong>Rainy</strong> - 2.0x Water-type spawns</li>
<li><strong>Thunderstorm</strong> - 2.0x Electric-type spawns</li>
<li><strong>Blizzard</strong> - 1.7x Ice and Water-type spawns</li>
<li><strong>Earthquake</strong> - 1.8x Rock-type spawns</li>
<li><strong>Calm</strong> - Normal spawn rates for all types</li>
</ul>
</div>
</div>
<div class="section">
<div class="section-header">📚 Game Mechanics</div>
<div class="command-grid">
<div style="grid-column: 1 / -1;">
<div class="tip">
<strong>How to Play:</strong>
<ol style="margin: 10px 0 0 20px; padding: 0;">
<li>Use <code>!start</code> to create your trainer and get a starter pet</li>
<li>Use <code>!explore</code> to find wild pets in your current location</li>
<li>Choose to <code>!battle</code> the wild pet (recommended) or <code>!catch</code> directly</li>
<li>In battle, use <code>!attack &lt;move&gt;</code> to weaken the wild pet</li>
<li>Use <code>!catch</code> (or <code>!capture</code>) during battle for much higher success rates on damaged pets</li>
<li>Battle-catch rates: 30% base + up to 50% bonus for low HP (90% max for nearly defeated pets)</li>
<li>Collect different types of pets to unlock achievements and new locations</li>
<li>Use <code>!travel</code> to explore new areas as you unlock them</li>
<li>Check <code>!weather</code> for optimal catching conditions</li>
</ol>
</div>
</div>
</div>
</div>
<div class="section">
<div class="section-header">🔧 Type Effectiveness Chart</div>
<div class="command-grid">
<div style="grid-column: 1 / -1;">
<table>
<thead>
<tr>
<th>Attacking Type</th>
<th>Strong Against (2x)</th>
<th>Weak Against (0.5x)</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Fire</strong></td>
<td>Grass, Ice</td>
<td>Water, Rock</td>
</tr>
<tr>
<td><strong>Water</strong></td>
<td>Fire, Rock</td>
<td>Electric, Grass</td>
</tr>
<tr>
<td><strong>Grass</strong></td>
<td>Water, Rock</td>
<td>Fire, Ice</td>
</tr>
<tr>
<td><strong>Electric</strong></td>
<td>Water</td>
<td>Rock</td>
</tr>
<tr>
<td><strong>Rock</strong></td>
<td>Fire, Electric</td>
<td>Water, Grass</td>
</tr>
<tr>
<td><strong>Normal</strong></td>
<td>None</td>
<td>Rock</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="footer">
<p><strong>PetBot v1.1</strong> - A complete IRC pet collection and battle game</p>
<p>Created for Libera Chat #petz | Last updated: July 13, 2025</p>
<p><em>Join the adventure and become the ultimate pet trainer!</em></p>
</div>
</body>
</html>