Compare commits
13 Commits
0dc5eb5e20
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 74bdfd5f69 | |||
| 06086f05b3 | |||
| e9d6947880 | |||
| 321cc42ba9 | |||
| eac35411b2 | |||
| 55814054ca | |||
| 1e272da943 | |||
| 007aa63528 | |||
| c8fba0594c | |||
| e9cfea1424 | |||
| a5c719c758 | |||
| 1207ed0ea0 | |||
| c7dd2a88d8 |
BIN
databases/wikelo_crafting.db
Normal file
BIN
databases/wikelo_crafting.db
Normal file
Binary file not shown.
@@ -18,5 +18,7 @@ tools:
|
|||||||
- Tool_ID_1
|
- Tool_ID_1
|
||||||
- Tool_ID_2
|
- Tool_ID_2
|
||||||
|
|
||||||
|
use_streaming: true # Allows to stream the answer to feel more interactive.
|
||||||
|
|
||||||
# optional system prompt (you can leave it empty to use the default one or the systemprompt given in open-webui for the specific model)
|
# optional system prompt (you can leave it empty to use the default one or the systemprompt given in open-webui for the specific model)
|
||||||
system_prompt: ""
|
system_prompt: ""
|
||||||
|
|||||||
@@ -1,8 +1,16 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
import asyncio
|
import asyncio
|
||||||
import discord
|
import discord
|
||||||
from discord.ext import commands
|
from discord.ext import commands
|
||||||
import aiohttp
|
import aiohttp
|
||||||
|
import logging
|
||||||
|
|
||||||
|
# ────────────────────────────────────────────────
|
||||||
|
# Setup logging
|
||||||
|
# ────────────────────────────────────────────────
|
||||||
|
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
||||||
|
|
||||||
# ────────────────────────────────────────────────
|
# ────────────────────────────────────────────────
|
||||||
def load_config(path: str):
|
def load_config(path: str):
|
||||||
@@ -21,6 +29,7 @@ MODEL_NAME = config["model_name"] # Model name to use, e.g., "gpt-3.5-tur
|
|||||||
KNOW_BASE = config["knowledge_base"] # Knowledge base to use, e.g., "knowledge_base_v1"
|
KNOW_BASE = config["knowledge_base"] # Knowledge base to use, e.g., "knowledge_base_v1"
|
||||||
|
|
||||||
TOOLS = config.get("tools", []) # list of tool-ids
|
TOOLS = config.get("tools", []) # list of tool-ids
|
||||||
|
USE_STREAMING = config.get("use_streaming", False) # Enable/disable streaming responses
|
||||||
|
|
||||||
SYSTEM_PROMPT = config.get("system_prompt", None) # Optional system prompt to prepend to user messages
|
SYSTEM_PROMPT = config.get("system_prompt", None) # Optional system prompt to prepend to user messages
|
||||||
ALLOW_DMS = config.get("allow_dms", False) # Allow DMs to the bot (default: False)
|
ALLOW_DMS = config.get("allow_dms", False) # Allow DMs to the bot (default: False)
|
||||||
@@ -49,7 +58,9 @@ async def _query_openwebui(user_text: str, channel_id: int, tools_list: list):
|
|||||||
# Attach tools if provided in the config file
|
# Attach tools if provided in the config file
|
||||||
if tools_list:
|
if tools_list:
|
||||||
payload["tool_ids"] = tools_list
|
payload["tool_ids"] = tools_list
|
||||||
print(f"🔧 Using tools: {payload['tool_ids']}")
|
logging.debug(f"🔧 Using tools: {payload['tool_ids']}")
|
||||||
|
|
||||||
|
logging.debug(f"Request payload to Open-WebUI: {payload}")
|
||||||
|
|
||||||
# The endpoint path for your instance appears to be /api/chat/completions
|
# The endpoint path for your instance appears to be /api/chat/completions
|
||||||
async with session.post(f"{OPENWEBUI_URL}/api/chat/completions",
|
async with session.post(f"{OPENWEBUI_URL}/api/chat/completions",
|
||||||
@@ -63,8 +74,94 @@ async def _query_openwebui(user_text: str, channel_id: int, tools_list: list):
|
|||||||
|
|
||||||
# If the response is OK, parse the JSON and return the content
|
# If the response is OK, parse the JSON and return the content
|
||||||
response_data = await resp.json()
|
response_data = await resp.json()
|
||||||
|
logging.debug(f"Unparsed response from Open-WebUI: {response_data}")
|
||||||
return response_data['choices'][0]['message']['content']
|
return response_data['choices'][0]['message']['content']
|
||||||
|
|
||||||
|
async def _query_openwebui_streaming(user_text: str, channel_id: int, tools_list: list, message_to_edit):
|
||||||
|
"""
|
||||||
|
Stream response from Open-WebUI and edit Discord message progressively.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
user_text (str): The user's message to send to the Open-WebUI.
|
||||||
|
channel_id (int): The Discord channel ID where the message was sent.
|
||||||
|
tools_list (list): List of tool IDs to use, if any.
|
||||||
|
message_to_edit: The Discord message object to edit with streaming content.
|
||||||
|
"""
|
||||||
|
async with aiohttp.ClientSession() as session:
|
||||||
|
payload = {
|
||||||
|
"model": MODEL_NAME,
|
||||||
|
"stream": True, # Enable streaming
|
||||||
|
"messages": [
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": user_text
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
if tools_list:
|
||||||
|
payload["tool_ids"] = tools_list
|
||||||
|
logging.debug(f"🔧 Using tools: {payload['tool_ids']}")
|
||||||
|
|
||||||
|
logging.debug(f"Request payload to Open-WebUI: {payload}")
|
||||||
|
|
||||||
|
async with session.post(f"{OPENWEBUI_URL}/api/chat/completions",
|
||||||
|
json=payload,
|
||||||
|
headers={"Authorization": f"Bearer {OPENWEBUI_API_KEY}"}) as resp:
|
||||||
|
|
||||||
|
if resp.status != 200:
|
||||||
|
data = await resp.text()
|
||||||
|
raise RuntimeError(f"Open-WebUI responded {resp.status}: {data}")
|
||||||
|
|
||||||
|
accumulated_content = ""
|
||||||
|
last_edit_time = 0
|
||||||
|
edit_interval = 1.0 # Edit every 1 second to avoid rate limits
|
||||||
|
|
||||||
|
async for line in resp.content:
|
||||||
|
line = line.decode('utf-8').strip()
|
||||||
|
|
||||||
|
if line.startswith('data: '):
|
||||||
|
data_str = line[6:] # Remove 'data: ' prefix
|
||||||
|
|
||||||
|
if data_str == '[DONE]':
|
||||||
|
break
|
||||||
|
|
||||||
|
try:
|
||||||
|
import json
|
||||||
|
chunk_data = json.loads(data_str)
|
||||||
|
|
||||||
|
if 'choices' in chunk_data and len(chunk_data['choices']) > 0:
|
||||||
|
delta = chunk_data['choices'][0].get('delta', {})
|
||||||
|
if 'content' in delta:
|
||||||
|
accumulated_content += delta['content']
|
||||||
|
|
||||||
|
# Edit message periodically to avoid rate limits
|
||||||
|
current_time = asyncio.get_event_loop().time()
|
||||||
|
if current_time - last_edit_time >= edit_interval:
|
||||||
|
try:
|
||||||
|
# Limit message length to Discord's 2000 character limit
|
||||||
|
content_to_show = accumulated_content[:1900]
|
||||||
|
if len(accumulated_content) > 1900:
|
||||||
|
content_to_show += "..."
|
||||||
|
|
||||||
|
await message_to_edit.edit(content=content_to_show)
|
||||||
|
last_edit_time = current_time
|
||||||
|
except discord.HTTPException:
|
||||||
|
# Handle rate limits gracefully
|
||||||
|
pass
|
||||||
|
|
||||||
|
except json.JSONDecodeError:
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Final edit with complete content
|
||||||
|
try:
|
||||||
|
final_content = accumulated_content[:2000] # Respect Discord's limit
|
||||||
|
await message_to_edit.edit(content=final_content)
|
||||||
|
except discord.HTTPException:
|
||||||
|
pass
|
||||||
|
|
||||||
|
return accumulated_content
|
||||||
|
|
||||||
# --------------------------------------------------------------------------- #
|
# --------------------------------------------------------------------------- #
|
||||||
# Discord bot logic – discord.py
|
# Discord bot logic – discord.py
|
||||||
# --------------------------------------------------------------------------- #
|
# --------------------------------------------------------------------------- #
|
||||||
@@ -78,12 +175,13 @@ bot = commands.Bot(command_prefix='!', intents=intents) # Command prefix is '!'
|
|||||||
|
|
||||||
@bot.event
|
@bot.event
|
||||||
async def on_ready():
|
async def on_ready():
|
||||||
print(f"✅ Logged in as {bot.user} (id={bot.user.id})")
|
logging.info(f"✅ Logged in as {bot.user} (id={bot.user.id})")
|
||||||
|
|
||||||
# Only a test for commands, I add later
|
# Only a test for commands, I add later
|
||||||
@bot.command(name="ping")
|
@bot.command(name="ping")
|
||||||
async def ping(ctx):
|
async def ping(ctx):
|
||||||
await ctx.send("🏓 Pong!")
|
await ctx.send("🏓 Pong!")
|
||||||
|
return
|
||||||
|
|
||||||
# --------------------------------------------------------------------------- #
|
# --------------------------------------------------------------------------- #
|
||||||
# Main logic – only respond to allowed channels / DM flag
|
# Main logic – only respond to allowed channels / DM flag
|
||||||
@@ -92,21 +190,33 @@ async def ping(ctx):
|
|||||||
@bot.event
|
@bot.event
|
||||||
async def on_message(message):
|
async def on_message(message):
|
||||||
# Ignore messages from bots (incl. the bot itself)
|
# Ignore messages from bots (incl. the bot itself)
|
||||||
if message.author.bot: return
|
if message.author.bot:
|
||||||
|
return
|
||||||
|
|
||||||
# Allow commands to be processed
|
# This is crucial: process commands first.
|
||||||
await bot.process_commands(message)
|
await bot.process_commands(message)
|
||||||
|
|
||||||
# Skip if we are in a DM and that is disabled
|
# Now, check if a command was actually invoked. If so, we don't want
|
||||||
if not ALLOW_DMS and isinstance(message.channel, discord.DMChannel): return
|
# to treat it as a prompt for the AI, so we stop here.
|
||||||
|
ctx = await bot.get_context(message)
|
||||||
|
if ctx.valid:
|
||||||
|
return
|
||||||
|
|
||||||
|
# Determine if the message is a DM
|
||||||
|
is_dm = isinstance(message.channel, discord.DMChannel)
|
||||||
|
|
||||||
|
# Skip if it's a DM and DMs are disabled
|
||||||
|
if is_dm and not ALLOW_DMS:
|
||||||
|
return
|
||||||
|
|
||||||
# --- debugging ---
|
# --- debugging ---
|
||||||
print(f"ℹ️ Message received in channel: {message.channel.id}")
|
logging.info(f"ℹ️ Message received in channel: {message.channel.id}")
|
||||||
print(f"📢 Whitelisted channels are: {WHITELIST_CHANNELS}")
|
logging.info(f"📢 Whitelisted channels are: {WHITELIST_CHANNELS}")
|
||||||
# -----------------------------
|
# -----------------------------
|
||||||
|
|
||||||
# Allow only the whitelist channels – empty list means “all channels”
|
# Allow only whitelisted channels (if not a DM)
|
||||||
if WHITELIST_CHANNELS and message.channel.id not in WHITELIST_CHANNELS:
|
# An empty whitelist means all guild channels are allowed.
|
||||||
|
if not is_dm and WHITELIST_CHANNELS and message.channel.id not in WHITELIST_CHANNELS:
|
||||||
return
|
return
|
||||||
|
|
||||||
# ----------------------------------------------------------------------- #
|
# ----------------------------------------------------------------------- #
|
||||||
@@ -124,13 +234,23 @@ async def on_message(message):
|
|||||||
# B. Query Open-WebUI and show typing indicator
|
# B. Query Open-WebUI and show typing indicator
|
||||||
# ----------------------------------------------------------------------- #
|
# ----------------------------------------------------------------------- #
|
||||||
try:
|
try:
|
||||||
async with message.channel.typing():
|
if USE_STREAMING:
|
||||||
# Query the Open-WebUI API while showing "Bot is typing..."
|
# Send initial "collecting information" message
|
||||||
reply = await _query_openwebui(prompt, message.channel.id, TOOLS)
|
initial_message = await message.reply("Bitte warte kurz, die Informationen werden gesammelt...")
|
||||||
# Send the reply
|
|
||||||
await message.reply(reply)
|
# Start streaming response and edit the message
|
||||||
|
await _query_openwebui_streaming(prompt, message.channel.id, TOOLS, initial_message)
|
||||||
|
else:
|
||||||
|
# Use the original non-streaming approach
|
||||||
|
async with message.channel.typing():
|
||||||
|
reply = await _query_openwebui(prompt, message.channel.id, TOOLS)
|
||||||
|
await message.reply(reply)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
await message.reply(f"⚠ Error contacting the Open-WebUI API: {e}")
|
# If we're in streaming mode and have an initial message, edit it with error
|
||||||
|
if USE_STREAMING and 'initial_message' in locals():
|
||||||
|
await initial_message.edit(content=f"⚠ Error contacting the Open-WebUI API: {e}")
|
||||||
|
else:
|
||||||
|
await message.reply(f"⚠ Error contacting the Open-WebUI API: {e}")
|
||||||
# No need to return here as the function ends after this block.
|
# No need to return here as the function ends after this block.
|
||||||
|
|
||||||
# --------------------------------------------------------------------------- #
|
# --------------------------------------------------------------------------- #
|
||||||
@@ -139,6 +259,7 @@ async def on_message(message):
|
|||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
try:
|
try:
|
||||||
asyncio.run(bot.run(DISCORD_TOKEN))
|
# DO NOT wrap bot.run in asyncio.run()
|
||||||
|
bot.run(DISCORD_TOKEN)
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
print("🤖 Shutting down…")
|
logging.info("🤖 Shutting down…")
|
||||||
|
|||||||
240
llm_rag_knowledge/Foxwell_enforcement_mission_guide.json
Normal file
240
llm_rag_knowledge/Foxwell_enforcement_mission_guide.json
Normal file
@@ -0,0 +1,240 @@
|
|||||||
|
{
|
||||||
|
"titel": "Der umfassende Leitfaden zu Foxwell Enforcement Missionen",
|
||||||
|
"beschreibung": "Willkommen, Auftragnehmer. Dieser Leitfaden wurde von der Alaska Star Citizen Organization (907th) erstellt und gibt einen vollständigen Überblick über den Aufstiegsweg bei Foxwell Enforcement – einem privaten Sicherheitsunternehmen mit Hauptsitz im Stanton-System. Durch die Befolgung dieses Dokuments kannst du effizient die Ränge erklimmen, deine Reputation steigern und die anspruchsvollsten sowie lukrativsten Verträge freischalten, darunter Begegnungen mit legendären Ace‑Piloten, Kampfeinsätze gegen Großschiffe und vieles mehr.",
|
||||||
|
"beginn": {
|
||||||
|
"bewertung": "Bevor du reguläre Aufträge annehmen kannst, musst du deinen Wert beweisen. Der erste Schritt besteht darin, die Mission \"Security Contractor Evaluation\" anzunehmen und abzuschließen. Diese einleitende Mission bestätigt deine grundlegenden Kampfqualifikationen für Sicherheitsaufgaben.",
|
||||||
|
"abschluss": {
|
||||||
|
"nachricht": "Nach dem Abschluss schaltest du die erste Stufe der Patrouillen‑ und Hinterhaltsmissionen frei."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"missionsprogressionPfad": {
|
||||||
|
"beschreibung": "Die Freischaltung höherer Foxwell-Missionen erfolgt anhand der Anzahl abgeschlossener Missionen, nicht direkt über das Reputationsniveau. Es gibt zwei unabhängige Raumkampfspuren: Patrouille und Hinterhalt. Jede Spur hat ihren eigenen Fortschrittspfad."
|
||||||
|
},
|
||||||
|
"patrouillenMissionsprogression": [
|
||||||
|
{
|
||||||
|
"missionName": "Security Contractor Evaluation",
|
||||||
|
"abgeschlosseneAufgabenFuerNächsteStufe": 1,
|
||||||
|
"tierOderFarben": "Zertifizierung",
|
||||||
|
"empfohleneSpielerzahl": 1,
|
||||||
|
"maxFeinde": "≤12",
|
||||||
|
"typ": "FPS-Kampf",
|
||||||
|
"aUEC_Payout": 20000,
|
||||||
|
"scripBonusMG": 0,
|
||||||
|
"potenzielleCargoBelohnungen": ["FPS‑Ausrüstung"],
|
||||||
|
"cargoWertSchätzung": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"missionName": "Routine Patrol",
|
||||||
|
"abgeschlosseneAufgabenFuerNächsteStufe": 5,
|
||||||
|
"tierOderFarben": "Gelb",
|
||||||
|
"empfohleneSpielerzahl": 1,
|
||||||
|
"maxFeinde": "4‑6",
|
||||||
|
"möglicheFeindeSchiffe": ["Aurora","Mustang","Buccaneer"],
|
||||||
|
"aUEC_Payout": 30000,
|
||||||
|
"scripBonusMG": 2,
|
||||||
|
"potenzielleCargoBelohnungen": ["Agrarprodukte","Abfall"],
|
||||||
|
"cargoWertSchätzung": "~5000‑15000"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"missionName": "Security Sweep",
|
||||||
|
"abgeschlosseneAufgabenFuerNächsteStufe": 5,
|
||||||
|
"tierOderFarben": "Gelb",
|
||||||
|
"empfohleneSpielerzahl": 1,
|
||||||
|
"maxFeinde": "6‑8",
|
||||||
|
"möglicheFeindeSchiffe": ["Gladius","Arrow","Buccaneer","Cutlass Black"],
|
||||||
|
"aUEC_Payout": 50000,
|
||||||
|
"scripBonusMG": 4,
|
||||||
|
"potenzielleCargoBelohnungen": ["Verarbeitete Lebensmittel","Distilliertes Getränk"],
|
||||||
|
"cargoWertSchätzung": "~15000‑40000"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"missionName": "Security Patrol",
|
||||||
|
"abgeschlosseneAufgabenFuerNächsteStufe": 5,
|
||||||
|
"tierOderFarben": "Orange",
|
||||||
|
"empfohleneSpielerzahl": "2‑3",
|
||||||
|
"maxFeinde": "10‑15",
|
||||||
|
"möglicheFeindeSchiffe": ["Cutlass Black","Freelancer","Super Hornet","Vanguard Warden"],
|
||||||
|
"aUEC_Payout": 74000,
|
||||||
|
"scripBonusMG": 8,
|
||||||
|
"potenzielleCargoBelohnungen": ["Distilliertes Getränk", "verschiedene Handelswaren"],
|
||||||
|
"cargoWertSchätzung": "~50000‑100000"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"missionName": "Potential Security Threat",
|
||||||
|
"abgeschlosseneAufgabenFuerNächsteStufe": 10,
|
||||||
|
"tierOderFarben": "Orange",
|
||||||
|
"empfohleneSpielerzahl": "2‑4",
|
||||||
|
"maxFeinde": "8‑10",
|
||||||
|
"möglicheFeindeSchiffe": ["leichte und mittlere Kampfschiffe"],
|
||||||
|
"aUEC_Payout": 135000,
|
||||||
|
"scripBonusMG": 14,
|
||||||
|
"potenzielleCargoBelohnungen": ["verschiedene Handelswaren"],
|
||||||
|
"cargoWertSchätzung": "~70000‑150000"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"missionName": "High-Risk Security Patrol",
|
||||||
|
"abgeschlosseneAufgabenFuerNächsteStufe": 10,
|
||||||
|
"tierOderFarben": "Rot",
|
||||||
|
"empfohleneSpielerzahl": "3‑5 (kleines Team)",
|
||||||
|
"maxFeinde": "10‑12",
|
||||||
|
"möglicheFeindeSchiffe": ["HammerHead","Constellation","Corsair","Retaliator", "schwere Kampfschiffe"],
|
||||||
|
"aUEC_Payout": 200000,
|
||||||
|
"scripBonusMG": 18,
|
||||||
|
"potenzielleCargoBelohnungen": ["SLAM","WiDoW","hochwertige Mineralien"],
|
||||||
|
"cargoWertSchätzung": "~150000‑300000+"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"missionName": "Secure Threatened Space",
|
||||||
|
"abgeschlosseneAufgabenFuerNächsteStufe": null,
|
||||||
|
"tierOderFarben": "Rot",
|
||||||
|
"empfohleneSpielerzahl": "4‑8 (großes Team)",
|
||||||
|
"maxFeinde": "10‑15",
|
||||||
|
"möglicheFeindeSchiffe": ["Hammerhead","Redeemer","Retaliator - Talon","Vanguard","Cutlass Black","Gladius","Scorpius","Hurricane","Buccaneer"],
|
||||||
|
"aUEC_Payout": 350000,
|
||||||
|
"scripBonusMG": 24,
|
||||||
|
"potenzielleCargoBelohnungen": ["Laranit","Agricium","SLAM"],
|
||||||
|
"cargoWertSchätzung": "~200000‑500000+"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"hinterhaltMissionsprogression": [
|
||||||
|
{
|
||||||
|
"missionName": "Security Contractor Evaluation",
|
||||||
|
"abgeschlosseneAufgabenFuerNächsteStufe": 1,
|
||||||
|
"tierOderFarben": "Zertifizierung",
|
||||||
|
"empfohleneSpielerzahl": 1,
|
||||||
|
"maxFeinde": "3‑4",
|
||||||
|
"typ": "Bunker-Mission",
|
||||||
|
"aUEC_Payout": 20000,
|
||||||
|
"scripBonusMG": 0,
|
||||||
|
"potenzielleCargoBelohnungen": null,
|
||||||
|
"cargoWertSchätzung": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"missionName": "Ambush an Amateur",
|
||||||
|
"abgeschlosseneAufgabenFuerNächsteStufe": 5,
|
||||||
|
"tierOderFarben": "Gelb",
|
||||||
|
"empfohleneSpielerzahl": 1,
|
||||||
|
"maxFeinde": "2‑4",
|
||||||
|
"möglicheFeindeSchiffe": ["leichte Kampfschiffe (Arrow, Gladius)"],
|
||||||
|
"aUEC_Payout": 20000,
|
||||||
|
"scripBonusMG": 1,
|
||||||
|
"potenzielleCargoBelohnungen": ["Abfall", "Grundwaren"],
|
||||||
|
"cargoWertSchätzung": "~1000‑5000"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"missionName": "Surprise Strike",
|
||||||
|
"abgeschlosseneAufgabenFuerNächsteStufe": 5,
|
||||||
|
"tierOderFarben": "Gelb",
|
||||||
|
"empfohleneSpielerzahl": "1‑2",
|
||||||
|
"maxFeinde": "2‑4",
|
||||||
|
"möglicheFeindeSchiffe": ["Avenger Titan 315p","Cutlass","Freelancer + leichte Kampfschiffe"],
|
||||||
|
"aUEC_Payout": 30000,
|
||||||
|
"scripBonusMG": 3,
|
||||||
|
"potenzielleCargoBelohnungen": ["Abfall", "Grundwaren"],
|
||||||
|
"cargoWertSchätzung": "~3000‑8000"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"missionName": "Spring a Trap",
|
||||||
|
"abgeschlosseneAufgabenFuerNächsteStufe": 5,
|
||||||
|
"tierOderFarben": "Orange",
|
||||||
|
"empfohleneSpielerzahl": "2‑4",
|
||||||
|
"maxFeinde": "4‑6",
|
||||||
|
"möglicheFeindeSchiffe": ["Cutlass Black / Freelancer MIS / RAFT + leichte Kampfschiffe"],
|
||||||
|
"aUEC_Payout": 40000,
|
||||||
|
"scripBonusMG": 5,
|
||||||
|
"potenzielleCargoBelohnungen": ["Handelswaren","raffinierte Materialien"],
|
||||||
|
"cargoWertSchätzung": "~50000‑100000"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"missionName": "Return the Favor",
|
||||||
|
"abgeschlosseneAufgabenFuerNächsteStufe": 10,
|
||||||
|
"tierOderFarben": "Orange",
|
||||||
|
"empfohleneSpielerzahl": "4‑6 (kleines Team)",
|
||||||
|
"maxFeinde": "4‑6",
|
||||||
|
"möglicheFeindeSchiffe": ["RAFT","Valkyrie / Mercury / Taurus / Andromeda", "Corsair + leichte Kampfschiffe"],
|
||||||
|
"aUEC_Payout": 75000,
|
||||||
|
"scripBonusMG": 8,
|
||||||
|
"potenzielleCargoBelohnungen": ["Variiert (Konvoikargo)"],
|
||||||
|
"cargoWertSchätzung": "~100000‑250000"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"missionName": "Ambush Attack Squad",
|
||||||
|
"abgeschlosseneAufgabenFuerNächsteStufe": 10,
|
||||||
|
"tierOderFarben": "Rot",
|
||||||
|
"empfohleneSpielerzahl": "6‑8 (mittleres Team)",
|
||||||
|
"maxFeinde": "6‑8",
|
||||||
|
"möglicheFeindeSchiffe": ["Reclaimer","Starfarer","Caterpillar C2","Carrack","600i","Corsair"],
|
||||||
|
"aUEC_Payout": 120000,
|
||||||
|
"scripBonusMG": 12,
|
||||||
|
"potenzielleCargoBelohnungen": ["Militärkomponenten", "hochwertige Waren"],
|
||||||
|
"cargoWertSchätzung": "~150000‑300000"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"missionName": "Surprise Attack",
|
||||||
|
"abgeschlosseneAufgabenFuerNächsteStufe": null,
|
||||||
|
"tierOderFarben": "Rot",
|
||||||
|
"empfohleneSpielerzahl": "8+ (großes Team)",
|
||||||
|
"maxFeinde": "12‑16",
|
||||||
|
"möglicheFeindeSchiffe": ["Polaris"],
|
||||||
|
"aUEC_Payout": 200000,
|
||||||
|
"scripBonusMG": 16,
|
||||||
|
"potenzielleCargoBelohnungen": ["Variiert"],
|
||||||
|
"cargoWertSchätzung": "~200000‑500000+"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"payoutTrendAnalyse": {
|
||||||
|
"patrouillenSerie": "Die Payouts steigen von 20 000 aUEC bei der Evaluation bis zu 350 000 aUEC bei „Secure Threatened Space“. Die Erhöhungen spiegeln das zunehmende Risiko und die steigende Gefechtskomplexität wider.",
|
||||||
|
"hinterhaltSerie": "Analog zur Patrouillenserie beginnen die Payouts ebenfalls mit 20 000 aUEC für die Evaluation. Sie steigen schrittweise bis zu 200 000 aUEC bei der höchsten Stufe „Surprise Attack“."
|
||||||
|
},
|
||||||
|
"reputationVsMissions": {
|
||||||
|
"beschreibung": "Die Freischaltung von Missionen erfolgt ausschließlich über die Anzahl abgeschlossener Missionen in einer jeweiligen Serie. Reputation (Rep) wird für jede absolvierte Foxwell-Mission vergeben und kann zusätzliche Gelegenheiten oder leicht verbesserte Vertragskonditionen bieten, ist jedoch kein direkter Unlock-Faktor.",
|
||||||
|
"aktuellerStatus": "Deine aktuelle Reputation mit Foxwell findest du im mobiGlas."
|
||||||
|
},
|
||||||
|
"mercenaryGuildScrips": {
|
||||||
|
"beschreibung": "Mercenary Guild (MG) Scrips sind ein physischen Gegenstand, der für die meisten Foxwell‑Missionen vergeben wird. Sie können nicht in regulären Shops ausgegeben werden, sondern dienen einem speziellen Handelsweg für seltene und exklusive Ausrüstung.",
|
||||||
|
"aktuellerEinsatz": {
|
||||||
|
"gegenüberFavor": "Der Standardaustausch ist 50 MG Scrips = 1 Wikelo’s Favor.",
|
||||||
|
"Vendor": "Die Abmachung erfolgt über „Collections“-Missionen beim Banu‑Vendor Wikelo. Sein Emporium befindet sich an Stationen Kinga, Selo oder Dasi."
|
||||||
|
},
|
||||||
|
"zukunftspläne": {
|
||||||
|
"beschreibung": "Langfristig beabsichtigt die Mercenary Guild, eigene Händler zu eröffnen, bei denen MG‑Scrips direkt für exklusive Gegenstände eingelöst werden können.",
|
||||||
|
"geplanteBelohnungen": [
|
||||||
|
"Mercenary‑themenbasierte Rüstung",
|
||||||
|
"einzigartige Schiffwaffen",
|
||||||
|
"speziell entwickelte Schiffsbauteile"
|
||||||
|
],
|
||||||
|
"zeitplan": "Keine offizielle Zeitlinie."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"acePiloten": {
|
||||||
|
"beschreibung": "Ace‑Piloten sind Elitefeinde, die bei höheren Stufen (Orange & Rot) in beiden Serien auftauchen. Sie erscheinen als zufällige Eskalation und fungieren oft als Endboss.",
|
||||||
|
"belohnungenUndEinlösung": {
|
||||||
|
"Helm": "Der Ace Interceptor Helm ist ein hochgradig barterbarer Gegenstand, der bei Wikelo in Sammlungen gegen exklusive Belohnungen eingetauscht werden kann, z. B. seltene Waffen, spezielle Rüstungsets und hochwertige Schiffskomponenten."
|
||||||
|
},
|
||||||
|
"tipsZumBekämpfen": [
|
||||||
|
"Schalte das Ace-Schiff aus, bevor du die Mission abschließt.",
|
||||||
|
"Sammle den Helm, bevor das Objektiv verschwindet.",
|
||||||
|
"Ace‑Piloten tragen häufig Scrips im Kernpanzer."
|
||||||
|
],
|
||||||
|
"besonderheiten": {
|
||||||
|
"SpawnOrt": "Nur in Patrouillenmissionen, nicht bei Hinterhalten.",
|
||||||
|
"Flugzeugmodell": "Mk I Hornet Ghost."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zusätzlicheHinweise": {
|
||||||
|
"fehlerbehebungMissionMarker": "Wenn die Marker nach dem Eliminieren aller Feinde verschwinden, bewege dein Schiff mindestens 25 km von der Bergbaustation entfernt. Ein neuer Marker weist dich zurück.",
|
||||||
|
"acePilotBegegnungen": [
|
||||||
|
"Erhöhe deine Chancen bei Orange‑ und Rot‑Stufen.",
|
||||||
|
"Gründe diese Missionen nach dem Freischalten."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"referenzen": [
|
||||||
|
"Foxwell Enforcement Deep Dive.mp3 (16 Minuten)",
|
||||||
|
"Star Citizen Tools Wiki – Foxwell Enforcement",
|
||||||
|
"How To Grind Foxwell Ambush Mission: A Comprehensive Reputation & Mission Guide & Tips 4k",
|
||||||
|
"4.1.1 Foxwell Patrol: Complete Mission Guide & Walkthrough | Great Space Combat Missions! 4k",
|
||||||
|
"Foxwell Patrol Missions: Missions Sheet ☄️ChrisGBG☄️'s Star Citizen Reference Sheets",
|
||||||
|
"Foxwell Ambush Missions: Missions Sheet ☄️ChrisGBG☄️'s Star Citizen Reference Sheets",
|
||||||
|
"the907th.org – Alaska's Star Citizen Organization"
|
||||||
|
]
|
||||||
|
}
|
||||||
160
llm_rag_knowledge/Headhunter_mission_guide.json
Normal file
160
llm_rag_knowledge/Headhunter_mission_guide.json
Normal file
@@ -0,0 +1,160 @@
|
|||||||
|
{
|
||||||
|
"titel": "Beste Missionen für die Headhunter Reputation – Star Citizen 4.3",
|
||||||
|
"beschreibung": "Dieser Leitfaden fasst die wichtigsten Headhunter-Missionen zusammen, gruppiert sie nach Rep‑Level und gibt Optimierungsstrategien für einen effizienten Grind.",
|
||||||
|
"reputationLevels": [
|
||||||
|
{
|
||||||
|
"levelName": "Beginner → Junior Contractor",
|
||||||
|
"missionen": [
|
||||||
|
{
|
||||||
|
"name": "Arrow Salvage (10k aUEC)",
|
||||||
|
"ziel": "Salvage kaputte Arrow von Asteroidenbasen",
|
||||||
|
"durchführung": "Zum Marker fliegen, Salvagestrahl verwenden, Schrott einsammeln und zurückkehren. Dauer ca. 5 Min.",
|
||||||
|
"ReputationGewinn": "Mittel – ideal für Einsteiger",
|
||||||
|
"tipps": [
|
||||||
|
"Auf Navigations‑Fehler achten; bei Glitches den Vertrag im mobiGlas neu abholen.",
|
||||||
|
"Falls ihr damit kein Geld verdienen wollt, einfach Schiff abschießen."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Hit a CFP Ship (20k aUEC)",
|
||||||
|
"ziel": "Ein einzelnes CFP-Schiff in der Nähe einer Asteroidenbasis vernichten",
|
||||||
|
"durchführung": "Quantum zum Marker, Ziel (z. B. Mustang oder Aurora) abschießen und bei Zeitverfügbarkeit Fracht plündern. Dauer ca. 7 Min.",
|
||||||
|
"ReputationGewinn": "Hoher ReputationGewinn für frühe Levels",
|
||||||
|
"tipps": [
|
||||||
|
"Ein Jäger für schnelle Kills nutzen – Escorts meiden."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Treat Yourself to a Fight (20k aUEC)",
|
||||||
|
"ziel": "Ein feindliches Schiff (z. B. Cutlass Black) eliminieren",
|
||||||
|
"durchführung": "Zum Asteroiden‑Cluster fliegen, Hauptschiff anvisieren und Escorts ignorieren. Dauer ca. 7 Min.",
|
||||||
|
"ReputationGewinn": "Hoher Rep‑Gewinn; gut kombinierbar mit „Hit a CFP Ship“",
|
||||||
|
"tipps": [
|
||||||
|
"Attrition‑3 Repeater für schnellere Kills ausstatten."
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"levelName": "Junior Contractor → Contractor",
|
||||||
|
"missionen": [
|
||||||
|
{
|
||||||
|
"name": "Salvage Contract (50k aUEC)",
|
||||||
|
"ziel": "Schrott von größeren Wracks sammeln",
|
||||||
|
"durchführung": "Salvage Schiff benutzen, Marker erreichen, Schrott salvieren und zurückkehren. Dauer ca. 10 Min.",
|
||||||
|
"ReputationGewinn": "Signifikant, aber selten schnell neu verfügbar",
|
||||||
|
"tipps": [
|
||||||
|
"Falls der Marker zu einem falschen Vertrag führt, trotzdem abschließen – Rep + aUEC.",
|
||||||
|
"Falls ihr damit kein Geld verdienen wollt, einfach Schiff abschießen."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Headhunter Pilot in Trouble (47k aUEC)",
|
||||||
|
"ziel": "Ein Headhunter-Schiff vor Angreifern schützen",
|
||||||
|
"durchführung": "Quantum zum Marker, 2–3 feindliche Schiffe (z. B. Gladius oder Buccaneer) eliminieren und das Verbündete am Leben lassen. Dauer ca. 12 Min.",
|
||||||
|
"ReputationGewinn": "Hoher Rep‑Gewinn – mit einem Starter-Schiff machbar",
|
||||||
|
"tipps": [
|
||||||
|
"Nah dran zum Verbündeten bleiben, Aggro anziehen; FR‑66 Schilde für schnelles wiederaufladen nutzen."
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"levelName": "Contractor → Senior Contractor",
|
||||||
|
"missionen": [
|
||||||
|
{
|
||||||
|
"name": "Headhunter Ship Needs Backup (72k aUEC)",
|
||||||
|
"ziel": "Ein Headhunter-Schiff gegen mehrere Feinde verteidigen (z. B. Vanguard oder Hornet)",
|
||||||
|
"durchführung": "Dedizierten Fighter wie Anvil Hornet F7C oder Vanguard Harbinger einsetzen, Gegner schnell eliminieren und das Verbündete schützen. Dauer ca. 15 Min.",
|
||||||
|
"ReputationGewinn": "Sehr hoch – führt zum Senior Contractor",
|
||||||
|
"tipps": [
|
||||||
|
"Attrition‑4 Repeater + FR‑76 Schilde für härtere Kämpfe ausstatten."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Kill Order (80k aUEC, Asteroid Cluster)",
|
||||||
|
"ziel": "Ein Hochwertiges Ziel nahe einer Asteroidenbasis eliminieren",
|
||||||
|
"durchführung": "Quantum zum Marker, Ziel zerstören und Escorts meiden. Dauer ca. 10 Min, sofern der Marker nicht bugged.",
|
||||||
|
"ReputationGewinn": "Hoher Reputation‑Gewinn – prüfe, ob ein Fast‑Travel Marker vorhanden ist",
|
||||||
|
"tipps": [
|
||||||
|
"Schiff für hohe DPS einsetzen; bei fehlendem Marker abbrechen."
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"levelName": "Senior Contractor → Elite Contractor",
|
||||||
|
"missionen": [
|
||||||
|
{
|
||||||
|
"name": "Purge Xenothreat Server (233k aUEC)",
|
||||||
|
"ziel": "Xenothreat‑Server in einer Datenfarm zerstören (z. B. Canards View)",
|
||||||
|
"durchführung": "Zum Standort fliegen, alle bis auf einen Server zerstören, bis zu 3 Missionen stapeln und abschließen. Dauer ca. 20 Min pro Stapel.",
|
||||||
|
"ReputationGewinn": "Massiv – Stapeln kann jedoch als Exploit patcht werden",
|
||||||
|
"tipps": [
|
||||||
|
"C2 Hercules für Post‑Mission Cargo Looting nutzen; bei fehlenden Servern Bug an Issue Council melden."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Need a Death at Asteroid Base (104k aUEC)",
|
||||||
|
"ziel": "Ein Ziel in einer Asteroidenbasis töten",
|
||||||
|
"durchführung": "Quantum zum Marker, Ziel eliminieren (50 % Spawn‑Chance). Dauer ca. 10 Min bei funktionierendem Contract.",
|
||||||
|
"ReputationGewinn": "Hoher Rep‑Gewinn – häufig bugged; abbrechen, wenn das Ziel nicht erscheint",
|
||||||
|
"tipps": [
|
||||||
|
"Gladius für Wendigkeit einsetzen; bei Bug auf neuen Server wiederholen."
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"bugVermeidung": {
|
||||||
|
"beschreibung": "Tipps zur Vermeidung von bugged Missionen in Alpha 4.3",
|
||||||
|
"strategien": [
|
||||||
|
{
|
||||||
|
"name": "\"Kill\" Missions",
|
||||||
|
"tipps": [
|
||||||
|
"Vermeide Verträge mit \"Kill\" im Titel (z.B. Kill Order), wenn sie bugged sind – oft keine Fast‑Travel Marker oder zu weit entfernt."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Navigation Glitches",
|
||||||
|
"tipps": [
|
||||||
|
"Bei falschem Marker trotzdem Mission abschließen; im mobiGlas neu tracken, um das Problem zu beheben."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Server Crashes",
|
||||||
|
"tipps": [
|
||||||
|
"Abgebrochene Missionen beeinflussen Rep nicht – Spiel neustarten für neue Verträge."
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"workaround": "Server über das Hauptmenü wechseln, falls Missionen nicht neu auftauchen oder Ziele nicht spawnen."
|
||||||
|
},
|
||||||
|
"optimierungReputationGrind": {
|
||||||
|
"missionStacking": [
|
||||||
|
"Mehrere (3–4) Verträge gleichzeitig annehmen (z.B. Arrow Salvage + Hit a CFP Ship + Treat Yourself to a Fight).",
|
||||||
|
"Asteroidenbasis‑Missionen rund um Bloom nutzen – schneller Quantum‑Travel.",
|
||||||
|
"Exploits wie 60x Purge Xenothreat Server vermeiden, um Bans zu verhindern."
|
||||||
|
],
|
||||||
|
"schiffsAuswahl": [
|
||||||
|
{
|
||||||
|
"phase": "Frühes Spiel",
|
||||||
|
"empfehlung": "Aurora MR oder Mustang Alpha mit Attrition‑2 Repeater – risikoarm"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"phase": "Mittelspiel",
|
||||||
|
"empfehlung": "Gladius oder Hornet F7C für 47k–72k Missionen"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"phase": "Spätes Spiel",
|
||||||
|
"empfehlung": "Heavy oder Stealth Fighter für 80k+ Aufträge"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"zeitmanagement": [
|
||||||
|
"Start mit Arrow Salvage (5 Min), dann Hit a CFP Ship oder Treat Yourself to a Fight (7–10 Min).",
|
||||||
|
"Protect-Missionen wie Pilot in Trouble oder Ship Needs Backup erst bei Auslauf von Salvage‑Missionen nutzen (12–15 Min).",
|
||||||
|
"Falls Verträge nicht neu auftauchen, Helltide‑Events oder Cargo‑Hauling für aUEC erledigen."
|
||||||
|
],
|
||||||
|
"effizienzHinweis": "Durch Priorisierung von schnellen Missionen wie Hit a CFP Ship und Vermeidung von bugged Contracts erhält man ca. 500 Rep‑Punkte pro Stunde; 100k+ aUEC pro Stunde möglich."
|
||||||
|
}
|
||||||
|
}
|
||||||
16
llm_rag_knowledge/faq.json
Normal file
16
llm_rag_knowledge/faq.json
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"question" : "Wie oft wird gepatched?",
|
||||||
|
"answer" : "Normalerweise wird alle 4 Wochen gepatched. Allerdings sind pro Jahr 11 Patches geplant, was bedeutet, dass ein Patch, außerhalb von Bug‑/Hotfixes, 8 Wochen bespielt wird. 2025 war es 4.1, das im März kam, da es im April kein Patch gab und 4.1.1 erst im Mai kam.",
|
||||||
|
"source" : "https://robertsspaceindustries.com/spectrum/community/SC/forum/50259/thread/11-patches-planned/8222210",
|
||||||
|
"last_updated": "2025-08-24",
|
||||||
|
"tags" : ["patching", "release‑cycle", "game‑updates"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"question" : "Welche Schiffe werden als nächstes Released?",
|
||||||
|
"answer" : "Momentan (Stand 24.08.2025) werden geplante Schiffe in dieser Reihenfolge released: Apollo Triage/Medivac, Perseus, Ironclad, Galaxy. Dazwischen werden aber auch immer wieder Schiffe released, die der Spielerschaft nicht bekannt waren.",
|
||||||
|
"source" : "Star Citizen Monthly Reports",
|
||||||
|
"last_updated": "2025-08-24",
|
||||||
|
"tags" : ["ships", "release‑schedule", "game‑content"]
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
"Materialien Quellen": [
|
"Materialien Quellen": [
|
||||||
{
|
{
|
||||||
"Material": "Ace Interceptor Helmet",
|
"Material": "Ace Interceptor Helmet",
|
||||||
"Quelle": "Beute von gefallenen Ace-Piloten in den neuen Foxwell Patrol Missionen / Headhunters Patrol Missionen. Darf nur Soft Death, sonst verschwindet der Ace Pilot. Kann auch in Bräunungsboxen bei Align & Storm gefunden werden."
|
"Quelle": "Beute von gefallenen Ace‑Piloten in den neuen Foxwell Patrol Missionen / Headhunters Patrol Missionen. Darf nur Soft Death, sonst verschwindet der Ace Pilot. Kann auch in Bräunungsboxen bei Align & Storm gefunden werden."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Material": "Advocacy Badge (Replica)",
|
"Material": "Advocacy Badge (Replica)",
|
||||||
@@ -22,19 +22,19 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Material": "Carinite (Rein)",
|
"Material": "Carinite (Rein)",
|
||||||
"Quelle": "Seltenes Align & Mine Erz. Nur 1% Drop chance."
|
"Quelle": "Seltenes Align & Mine Erz. Nur 1 % Drop Chance."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Material": "DCHS-05 Comp-Board",
|
"Material": "DCHS‑05 Comp‑Board",
|
||||||
"Quelle": "DCHS-05 Orbital Positioning Comp-Board als Beute von Ghost Arena in Ruin Station."
|
"Quelle": "DCHS‑05 Orbital Positioning Comp‑Board als Beute von Ghost Arena in Ruin Station."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Material": "Finley The Stormwall Large Plushie",
|
"Material": "Finley The Stormwall Large Plushie",
|
||||||
"Quelle": "Orison August Dunlow Spaceport - Gift Shop & Cloudview Center - Stratus - Kel-To ConStore."
|
"Quelle": "Orison August Dunlow Spaceport – Gift Shop & Cloudview Center – Stratus – Kel-To ConStore."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Material": "Government Cartography (Makellos)",
|
"Material": "Government Cartography (Makellos)",
|
||||||
"Quelle": "Beute von Ace Piloten (gute Beute), lootbar von blauen Boxen bei Align & Mine und Storm Breaker Locations und kleinen Boxen bei Derelict Outpost Locations (schreckliche Beute)."
|
"Quelle": "Beute von Ace Piloten (gute Beute), lootbar von blauen Boxen bei Align & Mine und Storm Breaker Locations sowie kleinen Boxen bei Derelict Outpost Locations (schreckliche Beute)."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Material": "Irradiated Kopion Horn",
|
"Material": "Irradiated Kopion Horn",
|
||||||
@@ -42,15 +42,15 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Material": "Irradiated Valakkar Fang (Erwachsen)",
|
"Material": "Irradiated Valakkar Fang (Erwachsen)",
|
||||||
"Quelle": "Erwachsener Irradiated Valakkar - Storm Breaker Lazarus Locations."
|
"Quelle": "Erwachsener Irradiated Valakkar – Storm Breaker Lazarus Locations."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Material": "Irradiated Valakkar Fang (Juvenile)",
|
"Material": "Irradiated Valakkar Fang (Juvenile)",
|
||||||
"Quelle": "Juveniler Irradiated Valakkar - Storm Breaker Lazarus Locations."
|
"Quelle": "Juveniler Irradiated Valakkar – Storm Breaker Lazarus Locations."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Material": "Irradiated Valakkar Pearl (Grad AAA)",
|
"Material": "Irradiated Valakkar Pearl (Grad AAA)",
|
||||||
"Quelle": "Apex-Irradiated Valakkar - Storm Breaker Lazarus Locations (Ich bin mir nicht sicher, wie das Grad-System funktioniert)."
|
"Quelle": "Apex‑Irradiated Valakkar – Storm Breaker Lazarus Locations (Ich bin mir nicht sicher, wie das Grad-System funktioniert)."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Material": "Jaclium (Erz)",
|
"Material": "Jaclium (Erz)",
|
||||||
@@ -58,11 +58,11 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Material": "Janalite",
|
"Material": "Janalite",
|
||||||
"Quelle": "Seltenes FPS-Minable-Erz."
|
"Quelle": "Seltenes FPS‑Minable‑Erz."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Material": "MG Scrip",
|
"Material": "MG Scrip",
|
||||||
"Quelle": "Foxwell Patrol / Ambush Missions, Gilly's Combat Gauntlet missionen."
|
"Quelle": "Foxwell Patrol / Ambush Missions, Gilly's Combat Gauntlet missions."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Material": "Picoball",
|
"Material": "Picoball",
|
||||||
@@ -82,11 +82,11 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Material": "Tevarin War Service Marker (Makellos)",
|
"Material": "Tevarin War Service Marker (Makellos)",
|
||||||
"Quelle": "Beute von Ace-Piloten (gute Beute), lootbar von blauen Boxen bei Align & Mine und Storm Breaker Locations und kleinen Boxen bei Derelict Outpost Locations (schreckliche Beute)."
|
"Quelle": "Beute von Ace‑Piloten (gute Beute), lootbar von blauen Boxen bei Align & Mine und Storm Breaker Locations sowie kleinen Boxen bei Derelict Outpost Locations (schreckliche Beute)."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Material": "UEE 6th Platoon Medal (Makellos)",
|
"Material": "UEE 6th Platoon Medal (Makellos)",
|
||||||
"Quelle": "Beute von Ace-Piloten (gute Beute), lootbar von blauen Boxen bei Align & Mine und Storm Breaker Locations und kleinen Boxen bei Derelict Outpost Locations (schreckliche Beute)."
|
"Quelle": "Beute von Ace‑Piloten (gute Beute), lootbar von blauen Boxen bei Align & Mine und Storm Breaker Locations sowie kleinen Boxen bei Derelict Outpost Locations (schreckliche Beute)."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Material": "Wikelo Favor",
|
"Material": "Wikelo Favor",
|
||||||
@@ -106,7 +106,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Material": "ASD Secure Drive",
|
"Material": "ASD Secure Drive",
|
||||||
"Quelle": "Kann in den Onyx Facilities in Stanton gelootet werden. Kann ebenfalls als seltenes Drop von NPC's auftauchen."
|
"Quelle": "Kann in den Onyx Facilities in Stanton gelootet werden. Kann ebenfalls als seltenes Drop von NPCs auftauchen."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Material": "Geist Armor <slot>",
|
"Material": "Geist Armor <slot>",
|
||||||
@@ -115,6 +115,118 @@
|
|||||||
{
|
{
|
||||||
"Material": "Zenith Laser Sniper Rifle",
|
"Material": "Zenith Laser Sniper Rifle",
|
||||||
"Quelle": "ASD Onyx Facilities in Waffenständern."
|
"Quelle": "ASD Onyx Facilities in Waffenständern."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Material": "A03 Sniper Rifle (Mehrere Farben)",
|
||||||
|
"Quelle": "Beste Spot: Jumptown Labs\nZweiter Spot: Sakura Magnolia / Goldenrod\nDritter Spot: Bunkers\nDaten: Looting Sheet: Waffen\nSeltenheit: Common\nNotizen: Die 4 Jumptown‑Standorte sind bei Event oder ohne Event voll mit Loot. Wenn kein Event läuft, gibt es keine Spieler oder NPCs dort. Die großen grünen Boxen mit scharfen Ecken enthalten Sniper aller Typen und Farben.\nNPCs: Generic Outlaw Snipers und Citizens for Prosperity Snipers in Pyro sowie Distribution Center Outlaw Snipers nutzen diese Waffen."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Material": "P6‑LR Sniper Rifle (Mehrere Farben)",
|
||||||
|
"Quelle": "Beste Spot: Jumptown Labs\nZweiter Spot: Sakura Magnolia / Goldenrod\nDritter Spot: Bunkers\nDaten: Looting Sheet: Waffen\nSeltenheit: Common\nNotizen: Die 4 Jumptown‑Standorte sind bei Event oder ohne Event voll mit Loot. Wenn kein Event läuft, gibt es keine Spieler oder NPCs dort. Die großen grünen Boxen mit scharfen Ecken enthalten Sniper aller Typen und Farben.\nHonorable Mention: 2 Spawn im Whistler's Crypt haben jeweils ein P6‑LR in einer Box nahe dem Zentrum des Siedlungs."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Material": "Arrowhead Sniper Rifle (Mehrere Farben)",
|
||||||
|
"Quelle": "Beste Spot: Sakura Magnolia / Goldenrod\nZweiter Spot: Jumptown Labs\nDritter Spot: Bunkers\nDaten: Looting Sheet: Waffen\nSeltenheit: Common\nNotizen: Lüftungsschächte rund um den Lobby-Bereich oben in den DCs.\nBevorzugte Methode: kleines/mittleres Schiff an zwei kleinen Landeplätzen parken, durch die kleine quadratische Tür nahe den Plätzen hineingehen. Greycat Stanton IV Production Complex‑A hat dieselbe gute Loot-Tabelle; man muss aber hinein- und heraustreten.\nBoxen respawnen nicht mehr oder brauchen lange – kürzlich behoben.\nNPCs: Distribution Center Outlaw Snipers nutzen diese Waffen."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Material": "Atzkav Sniper Rifle (Mehrere Farben)",
|
||||||
|
"Quelle": "Beste Spot: Jumptown Labs\nZweiter Spot: Sakura Magnolia / Goldenrod\nHonorable Mention: Crusader Platforms\nDaten: Looting Sheet: Waffen\nSeltenheit: Common\nNotizen: Die 4 Jumptown‑Standorte sind bei Event oder ohne Event voll mit Loot. Wenn kein Event läuft, gibt es keine Spieler oder NPCs dort. Die großen grünen Boxen mit scharfen Ecken enthalten Sniper aller Typen und Farben.\nCrusader Platforms hatten früher viele dieser Waffen – wurden kürzlich stark reduziert."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Material": "Scalpel Sniper Rifle (Mehrere Farben)",
|
||||||
|
"Quelle": "Beste Spot: Sakura Magnolia / Goldenrod\nZweiter Spot: Bunkers\nDaten: Looting Sheet: Waffen\nSeltenheit: Common\nNotizen: Lüftungsschächte rund um den Lobby-Bereich oben in den DCs.\nBevorzugte Methode: kleines/mittleres Schiff an zwei kleinen Landeplätzen parken, durch die kleine quadratische Tür nahe den Plätzen hineingehen. Greycat Stanton IV Production Complex‑A hat dieselbe gute Loot-Tabelle; man muss aber hinein- und heraustreten.\nBoxen respawnen nicht mehr oder brauchen lange – kürzlich behoben.\nNPCs: Sniper in Pyro (Citizens for Prosperity, Headhunters) nutzen diese Waffen. Soldiert: In Pyro Store Data Included anyway because everyone doesn't want to source guns from Pyro."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Material": "S71 Rifle (Mehrere Farben)",
|
||||||
|
"Quelle": "Beste Spot: Sakura Magnolia / Goldenrod\nZweiter Spot: Remote Asteroid Bases\nDritter Spot: Bunkers\nDaten: Looting Sheet: Waffen\nSeltenheit: Uncommon\nNotizen: Lüftungsschächte rund um den Lobby-Bereich oben in den DCs.\nBevorzugte Methode: kleines/mittleres Schiff an zwei kleinen Landeplätzen parken, durch die kleine quadratische Tür nahe den Plätzen hineingehen. Greycat Stanton IV Production Complex‑A hat dieselbe gute Loot-Tabelle; man muss aber hinein- und heraustreten.\nBoxen respawnen nicht mehr oder brauchen lange – kürzlich behoben.\nNPCs: Distribution Center Outlaw Soldiers nutzen diese Waffen."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Material": "Deadrig Shotgun",
|
||||||
|
"Quelle": "Beste Spot: Stanton Bunkers Red Boxes\nZweiter Spot: Headhunters & Outlaw CQC NPCs\nDritter Spot: OLP/PAF Medium Gun Boxes\nDaten: Looting Sheet: Waffen\nSeltenheit: Common (in Pyro), Unicorn (in Stanton)\nNotizen: Headhunters Close Quarters Combat & Outlaw Close Quarters Combat NPCs in Pyro wield these, making them a good source for them. Not found it in boxes yet, but I don't have exhaustive loot data for Pyro yet, might be in RABs/CZ?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Material": "Demeco LMG (Mehrere Farben)",
|
||||||
|
"Quelle": "Beste Spot: Sakura Magnolia / Goldenrod\nZweiter Spot: Bunkers\nDaten: Looting Sheet: Waffen\nSeltenheit: Uncommon\nNotizen: Lüftungsschächte rund um den Lobby-Bereich oben in den DCs.\nBevorzugte Methode: kleines/mittleres Schiff an zwei kleinen Landeplätzen parken, durch die kleine quadratische Tür nahe den Plätzen hineingehen. Greycat Stanton IV Production Complex‑A hat dieselbe gute Loot-Tabelle; man muss aber hinein- und heraustreten.\nBoxen respawnen nicht mehr oder brauchen lange – kürzlich behoben.\nNPCs: Juggernaut (heavy armor + LMG) at DCs and in Pyro (CfP, HH) regularly wield these."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Material": "F55 LMG (Mehrere Farben)",
|
||||||
|
"Quelle": "Beste Spot: Sakura Magnolia / Goldenrod\nZweiter Spot: Bunkers\nDaten: Looting Sheet: Waffen\nSeltenheit: Uncommon\nNotizen: Lüftungsschächte rund um den Lobby-Bereich oben in den DCs.\nBevorzugte Methode: kleines/mittleres Schiff an zwei kleinen Landeplätzen parken, durch die kleine quadratische Tür nahe den Plätzen hineingehen. Greycat Stanton IV Production Complex‑A hat dieselbe gute Loot-Tabelle; man muss aber hinein- und heraustreten.\nBoxen respawnen nicht mehr oder brauchen lange – kürzlich behoben.\nNPCs: Juggernaut (heavy armor + LMG) at DCs and in Pyro (CfP, HH) regularly wield these."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Material": "FS-9 LMG (Mehrere Farben)",
|
||||||
|
"Quelle": "Beste Spot: Sakura Magnolia / Goldenrod\nZweiter Spot: Bunkers\nDaten: Looting Sheet: Waffen\nSeltenheit: Uncommon\nNotizen: Lüftungsschächte rund um den Lobby-Bereich oben in den DCs.\nBevorzugte Methode: kleines/mittleres Schiff an zwei kleinen Landeplätzen parken, durch die kleine quadratische Tür nahe den Plätzen hineingehen. Greycat Stanton IV Production Complex‑A hat dieselbe gute Loot-Tabelle; man muss aber hinein- und heraustreten.\nBoxen respawnen nicht mehr oder brauchen lange – kürzlich behoben.\nNPCs: Nine Tails NPCs in bunkers regularly wield these making them a good source for them. Sold: In Pyro Store Data Included anyway because everyone doesn't want to source guns from Pyro."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Material": "GP-33 MOD Grenade Launcher (Mehrere Farben)",
|
||||||
|
"Quelle": "Beste Spot: Sakura Magnolia / Goldenrod\nZweiter Spot: Jumptown Labs\nDritter Spot: Bunkers\nHonorable Mention: Crusader Platforms\nDaten: Looting Sheet: Waffen\nSeltenheit: Uncommon\nNotizen: Lüftungsschächte rund um den Lobby-Bereich oben in den DCs.\nBevorzugte Methode: kleines/mittleres Schiff an zwei kleinen Landeplätzen parken, durch die kleine quadratische Tür nahe den Plätzen hineingehen. Greycat Stanton IV Production Complex‑A hat dieselbe gute Loot-Tabelle; man muss aber hinein- und heraustreten.\nCrusader Platforms used to have lots of these, but been massively reduced recently."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Material": "Scourge Railgun (Mehrere Farben)",
|
||||||
|
"Quelle": "Beste Spot: Sakura Magnolia / Goldenrod\nZweiter Spot: Bunkers\nDaten: Looting Sheet: Waffen\nSeltenheit: Rare\nNotizen: Lüftungsschächte rund um den Lobby-Bereich oben in den DCs.\nBevorzugte Methode: kleines/mittleres Schiff an zwei kleinen Landeplätzen parken, durch die kleine quadratische Tür nahe den Plätzen hineingehen. Greycat Stanton IV Production Complex‑A hat dieselbe gute Loot-Tabelle; man muss aber hinein- und heraustreten.\nBoxen respawnen nicht mehr oder brauchen lange – kürzlich behoben."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Material": "Animus Missile Launcher",
|
||||||
|
"Quelle": "Beste Spot: Sakura Magnolia / Goldenrod\nZweiter Spot: Bunkers\nDaten: Looting Sheet: Waffen\nSeltenheit: Rare\nNotizen: Lüftungsschächte rund um den Lobby-Bereich oben in den DCs.\nBevorzugte Methode: kleines/mittleres Schiff an zwei kleinen Landeplätzen parken, durch die kleine quadratische Tür nahe den Plätzen hineingehen. Greycat Stanton IV Production Complex‑A hat dieselbe gute Loot-Tabelle; man muss aber hinein- und heraustreten.\nBoxen respawnen nicht mehr oder brauchen lange – kürzlich behoben."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Material": "NV‑TAC LL Scopes (1‑8x)",
|
||||||
|
"Quelle": "Beste Spot: Sakura Magnolia / Goldenrod\nZweiter Spot: Contested Zones\nHonorable Mention: Distribution Center NPCs\nDaten: Gun Attachments: Night Vision Scopes\nSeltenheit: Common\nNotizen: Lüftungsschächte rund um den Lobby-Bereich oben in den DCs.\nBevorzugte Methode: kleines/mittleres Schiff an zwei kleinen Landeplätzen parken, durch die kleine quadratische Tür nahe den Plätzen hineingehen. Greycat Stanton IV Production Complex‑A hat dieselbe gute Loot-Tabelle; man muss aber hinein- und heraustreten.\nWarnung: Kalt und mit Luftlöchern – angemessene Kleidung tragen.\nLinks: Left‑Shift schaltet LL‑Scopes NV an/aus, außer Gamma Plus LL (3x Holographic) bleibt immer ein. Tau Plus LL (4x Telescopic) ist Standard bei P4 SPC – Gamma 1x LL (1x Holographic) steht auf Coda SPC, C54 (SPC), Custodian (SPC). Gamma Duo LL (2x Holographic) ist Standard bei Karna \"Valor\" (SPC). Alle sind in Contested Zones häufig zu finden."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Material": "NV‑TAC Scopes (1‑8x)",
|
||||||
|
"Quelle": "Beste Spot: Sakura Magnolia / Goldenrod\nZweiter Spot: Jumptown Labs\nDritter Spot: Remote Asteroid Bases\nDaten: Gun Attachments: Scopes\nSeltenheit: Common\nNotizen: Lüftungsschächte rund um den Lobby-Bereich oben in den DCs.\nBevorzugte Methode: kleines/mittleres Schiff an zwei kleinen Landeplätzen parken, durch die kleine quadratische Tür nahe den Plätzen hineingehen. Greycat Stanton IV Production Complex‑A hat dieselbe gute Loot-Tabelle; man muss aber hinein- und heraustreten.\nBoxen respawnen nicht mehr oder brauchen lange – kürzlich behoben.\nDelta (1x Reflex), Gamma (1x Holographic), Gamma Duo (2x Holographic) sold in stores, click the links to see where."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Material": "Antium Base / Jet / Maroon / Sand / Storm",
|
||||||
|
"Quelle": "Best Spot: Orbital Laser Platform (OLPs) Storage Rooms, Supervisor Room. Second Best Spot: Planetary Alignment Facilities (PAFs) Security Rooms. Manufacturer: Quirinus Tech. Notes: In big tan armor boxes in 3 red key rooms (security, comms, admin) at PAFs in the center antenna building (requires security keycards aquired at same location). Can also be found in the 4 storage rooms & supervisor room of the OLPs."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Material": "Antium Moss",
|
||||||
|
"Quelle": "Only Spot: Orbital Laser Platform (OLPs) Supervisor Room. Manufacturer: Quirinus Tech. Notes: In one of the big tan armor boxes in supervisor room of the OLPs."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Material": "Ana Armor Endro",
|
||||||
|
"Quelle": "Only Source: Wikelo Trade. Manufacturer: Quirinus Tech. Notes: In"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Material": "Ana Armor Wao",
|
||||||
|
"Quelle": "Only Source: Pledge Store (Retired). Manufacturer: Quirinus Tech. Notes: In"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Material": "Parallax \"Sanguine\" Energy Assault Rifle",
|
||||||
|
"Quelle": "Best Spot: Planetary Alignment Facilities (PAFs) Security Rooms Second Best Spot: Orbital Laser Platform Supervisor Room Third Best Spot: Storm Breaker Weapon Racks rifle racks in lockers in the 3 security rooms at PAFs in the central antenna building (requires security keycards aquired in maintenance buildings) along with 3 ammo. There can be a door across the locker that needs to be opened. Can also be found in Supervisor Room of the OLPs."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Material": "Parallax \"Sunstone\" Energy Assault Rifle",
|
||||||
|
"Quelle": "Best Spot: Planetary Alignment Facilities (PAFs) Security Rooms Second Best Spot: Orbital Laser Platform Supervisor Room Third Best Spot: Storm Breaker Weapon Racks rifle racks in lockers in the 3 security rooms at PAFs in the central antenna building (requires security keycards aquired in maintenance buildings) along with 3 ammo. There can be a door across the locker that needs to be opened. Can also be found in Supervisor Room of the OLPs."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Material": "Parallax \"Shock Trooper\" Energy Assault Rifle",
|
||||||
|
"Quelle": "Only Spot: Orbital Laser Platform (OLP) Supervisor Room Manufacturer: Verified Offworld Laser Technologies (Volt) Notes: Prallax AR with a gray digital camo skin. In an open gun case inside supervisor room near the center of OLPs, the 9T LT Remy Kettle walking around the OLP wearing Pembroke (Modified 9T) & Mandible Helmet (Modified 9T) has the key. Full PAF/OLP Guide with more details."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Material": "Parallax Energy Assault Rifle (VOLT)",
|
||||||
|
"Quelle": "Best Spot: Planetary Alignment Facilities (PAFs) Security Rooms Second Best Spot: Orbital Laser Platform Supervisor Room Third Best Spot: Storm Breaker Weapon Racks rifle racks in lockers in the 3 security rooms at PAFs in the central antenna building (requires security keycards aquired in maintenance buildings) along with 3 ammo. There can be a door across the locker that needs to be opened. Can also be found in Supervisor Room of the OLPs."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Material": "Parallax \"Downburst Camo\" Energy Assault Rifle",
|
||||||
|
"Quelle": "Only Source: Pledge Store (Retired)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Material": "Parallax \"Fun Kopion Skull\" Energy Assault Rifle",
|
||||||
|
"Quelle": "Only Source: Wikelo Trade"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Material": "Parallax \"Fun Kopion Tooth\" Energy Assault Rifle",
|
||||||
|
"Quelle": "Only Source: Wikelo Trade"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Material": "Parallax \"Fun Military Skull\" Energy Assault Rifle",
|
||||||
|
"Quelle": "Only Source: Wikelo Trade"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Material": "Parallax \"Fun Military Tooth\" Energy Assault Rifle",
|
||||||
|
"Quelle": "Only Source: Wikelo Trade"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
"type": "Planet",
|
"type": "Planet",
|
||||||
"description": "Planet: Stanton III - ArcCorp",
|
"description": "Planet: Stanton III - ArcCorp",
|
||||||
"environment": "Sicher",
|
"environment": "Sicher",
|
||||||
"landingZone": "Area18 (Start Location, Ignis Borealis Heimatplanet)",
|
"landingZone": "Area18 (Als Heimat verfügbar, Ignis Borealis Heimatplanet)",
|
||||||
"lagrangeStation": "Baijini Point",
|
"lagrangeStation": "Baijini Point",
|
||||||
"moons": ["Wala", "Lyria"],
|
"moons": ["Wala", "Lyria"],
|
||||||
"lagrangianPoints": [
|
"lagrangianPoints": [
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
"type": "Planet",
|
"type": "Planet",
|
||||||
"description": "Planet: Stanton IV - MicroTech",
|
"description": "Planet: Stanton IV - MicroTech",
|
||||||
"environment": "Sicher",
|
"environment": "Sicher",
|
||||||
"landingZone": "New Babbage (Start Location)",
|
"landingZone": "New Babbage (Als Heimat verfügbar)",
|
||||||
"lagrangeStation": "Port Tressler",
|
"lagrangeStation": "Port Tressler",
|
||||||
"moons": ["Calliope", "Clio", "Euterpe"],
|
"moons": ["Calliope", "Clio", "Euterpe"],
|
||||||
"lagrangianPoints": [
|
"lagrangianPoints": [
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
"type": "Planet",
|
"type": "Planet",
|
||||||
"description": "Planet: Stanton II - Crusader",
|
"description": "Planet: Stanton II - Crusader",
|
||||||
"environment": "Sicher",
|
"environment": "Sicher",
|
||||||
"landingZone": "Orison (Start Location)",
|
"landingZone": "Orison (Als Heimat verfügbar)",
|
||||||
"lagrangeStation": "Seraphim Station",
|
"lagrangeStation": "Seraphim Station",
|
||||||
"moons": ["Cellin", "Daymar", "Yela"],
|
"moons": ["Cellin", "Daymar", "Yela"],
|
||||||
"lagrangianPoints": [
|
"lagrangianPoints": [
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
"type": "Planet",
|
"type": "Planet",
|
||||||
"description": "Planet: Stanton I - Hurston",
|
"description": "Planet: Stanton I - Hurston",
|
||||||
"environment": "Sicher (Bisher)",
|
"environment": "Sicher (Bisher)",
|
||||||
"landingZone": "Lorville (Start Location)",
|
"landingZone": "Lorville (Als Heimat verfügbar)",
|
||||||
"lagrangeStation": "Everus Harbor",
|
"lagrangeStation": "Everus Harbor",
|
||||||
"moons": ["Arial", "Aberdeen", "Magda", "Ita"],
|
"moons": ["Arial", "Aberdeen", "Magda", "Ita"],
|
||||||
"lagrangianPoints": [
|
"lagrangianPoints": [
|
||||||
@@ -143,7 +143,7 @@
|
|||||||
"environment": "Sicher",
|
"environment": "Sicher",
|
||||||
"moons": "Keine",
|
"moons": "Keine",
|
||||||
"lagrangianPoints": [
|
"lagrangianPoints": [
|
||||||
"Checkmate Station (Start Location)"
|
"Checkmate Station (Als Heimat verfügbar)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -156,7 +156,7 @@
|
|||||||
"Starlight Service Station",
|
"Starlight Service Station",
|
||||||
"Patch City",
|
"Patch City",
|
||||||
"PYAM-FARSTAT-3-5",
|
"PYAM-FARSTAT-3-5",
|
||||||
"Orbituary (Starting Location)"
|
"Obituary (Als Heimat verfügbar)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -184,7 +184,7 @@
|
|||||||
"Endgame",
|
"Endgame",
|
||||||
"Dudley & Daughters",
|
"Dudley & Daughters",
|
||||||
"Megumi Refueling",
|
"Megumi Refueling",
|
||||||
"Ruin Station (Starting Location)"
|
"Ruin Station (Als Heimat verfügbar)"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
121
llm_rag_knowledge/onyx_facility_guide.json
Normal file
121
llm_rag_knowledge/onyx_facility_guide.json
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
{
|
||||||
|
"onyx_facility_guide": {
|
||||||
|
"title": "ONYX-FACILITÄT Begleitführer – Verträge",
|
||||||
|
"warning": "4.3 INFO",
|
||||||
|
"overview": {
|
||||||
|
"description": "Über 100 unterirdische ASD-Einrichtungen, verteilt über Stantons Monde.",
|
||||||
|
"access": "Nur durch Landung in einem großen Hangar erreichbar.",
|
||||||
|
"hazards": [
|
||||||
|
"Elite-Gegner",
|
||||||
|
"Irradiierte Tiere",
|
||||||
|
"Umweltgefahren"
|
||||||
|
],
|
||||||
|
"loot": "Neue Loot‑Standorte für Volt‑Sniper und Geist‑Rüstung.",
|
||||||
|
"contracts": "Söldner- und Transportverträge öffnen sich nach Abschluss von Phase 1, Mission 1 bzw. den Einführungen.",
|
||||||
|
"content": "Großer Puzzlevorteil & zusätzliches Flügel erwartet mit Version 4.3.1.",
|
||||||
|
"note": "Dieser Leitfaden wird bis dahin als 'Work in Progress' geführt.",
|
||||||
|
"Guide": "https://robertsspaceindustries.com/i/165aa7ca3d571902c62b22b256f26f752077eb3d/resize(1464,1464,inside,JLypLpqVPBaNxs8FRN3D3vuTrjntZTaECi8ToQLLZiEgiUjcwEzuY511JgyJBk2nwU4KBWPC3t64FJzEsV4pZ3115no3gBGLkTWqGYTvQj9T3zvurrbVmcmVDexqQLuFFTGmdHidL3knf6KQMne95qrLy5W3aNgvxkpXVaW7ZYHYEB1iBRrFEDahjphuHVDwF4)/961264e3-f3df-4975-bb3c-1c6e907222fd.png",
|
||||||
|
"Momentane Anzahl an Phasen": 2
|
||||||
|
},
|
||||||
|
"investigations": {
|
||||||
|
"description": "Die Hockrow‑Agentur untersucht das frühere ONYX von Dr. Dorritt, um eine Akte zu erstellen.",
|
||||||
|
"p1m1": {
|
||||||
|
"title": "Phase 1, Mission 1 // ONYX Vertragspersonal",
|
||||||
|
"description": "Der ursprüngliche Vertrag verfügt nicht über einen direkten QT-Markierungspunkt. Du musst die Einrichtung manuell aufsuchen.",
|
||||||
|
"steps": [
|
||||||
|
"Daten von den ersten Terminals im Ingenieurwesen und anschließend im Forschungssaal herunterladen."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"p1m2": {
|
||||||
|
"title": "Phase 1, Mission 2 // Ingenieurdateien",
|
||||||
|
"steps": [
|
||||||
|
"Gehe zum Ingenieurbereich jenseits des Punktes ohne Rückkehr.",
|
||||||
|
"Durchquere den Bereich mit Rohren und betrete das Lager.",
|
||||||
|
"Der Sprachrekorder befindet sich in einem Schließfach.",
|
||||||
|
"Verlasse über die Lüftung, um einen Volt‑Sniper-Rack zu passieren."
|
||||||
|
],
|
||||||
|
"map": "https://robertsspaceindustries.com/i/403e289c202ec3402cd7be2c157f4ee987c7cc58/resize(1464,1464,inside,JLypLpqVPBaNxs8FRN3D3vuTrjntZTaECi8ToQLLZiEgiUjcwEzuY511JgyJBk2nwU4KBWPC3t64FJzEsV4pZ3115no3gBGLkTWqGYTvQj9T3zvurrbVmcmVDexqQLuFFTGmdHidL3knJrNQngMLd6zeEPikpZqU6UYzJafjmfd8cc3F4kV28KUKHLkXp3vRKk)/20564b9e-1e6c-485a-813f-9a1a7401cdce.png"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"research_files": {
|
||||||
|
"p1m3": {
|
||||||
|
"title": "Phase 1, Mission 3 // Forschungsdateien",
|
||||||
|
"steps": [
|
||||||
|
"Erreiche Ebene 7 Forschung (Analytik).",
|
||||||
|
"Gehe zum 'Abstürzschacht'.",
|
||||||
|
"Der Sprachrekorder befindet sich im Schließfach des Sicherheitsraums.",
|
||||||
|
"Drei Waffenregale im nächsten Raum.",
|
||||||
|
"Sprint über den Schacht, um die nächste Ebene zu erreichen und einen versteckten Ausgang zu finden."
|
||||||
|
],
|
||||||
|
"map": "https://robertsspaceindustries.com/i/eee6766d78b9beebe322696aa3a9f87f41076dda/resize(1464,1464,inside,JLypLpqVPBaNxs8FRN3D3vuTrjntZTaECi8ToQLLZiEgiUjcwEzuY511JgyJBk2nwU4KBWPC3t64FJzEsV4pZ3115no3gBGLkTWqGYTvQj9T3zvurrbVmcmVDexqQLuFFTGmdHidL3kpetKZHzcSZnb95JzASePonc9XY377SWxZajWuH3ydwVGsj26c6ZKhaW)/ad975d67-423d-4a7e-be3c-eb7035b58051.png"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"energy_anomaly_data": {
|
||||||
|
"p2m1": {
|
||||||
|
"title": "Phase 2, Mission 1 // Energienormdaten",
|
||||||
|
"steps": [
|
||||||
|
"Zufälliges Terminal im Kondensatorbereich.",
|
||||||
|
"Multitool, Cambio‑SRT-Modul und Kanister können an einem Wartungsstandort gedruckt werden.",
|
||||||
|
"Repariere die Rohrleitung neben dem Terminal, um Daten auf das Laufwerk herunterzuladen.",
|
||||||
|
"Liefer zum Frachtreaktor der Low‑Orbit‑Station."
|
||||||
|
],
|
||||||
|
"map": "https://robertsspaceindustries.com/i/403e289c202ec3402cd7be2c157f4ee987c7cc58/resize(1464,1464,inside,JLypLpqVPBaNxs8FRN3D3vuTrjntZTaECi8ToQLLZiEgiUjcwEzuY511JgyJBk2nwU4KBWPC3t64FJzEsV4pZ3115no3gBGLkTWqGYTvQj9T3zvurrbVmcmVDexqQLuFFTGmdHidL3knJrNQngMLd6zeEPikpZqU6UYzJafjmfd8cc3F4kV28KUKHLkXp3vRKk)/20564b9e-1e6c-485a-813f-9a1a7401cdce.png"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"security_data": {
|
||||||
|
"p2m2": {
|
||||||
|
"title": "Phase 2, Mission 2 // Sicherheitsdaten",
|
||||||
|
"steps": [
|
||||||
|
"Erreiche Ebene 6 (Xenotechnologie) und gehe zur Bürofläche links vom Server.",
|
||||||
|
"Vorsicht vor Elite‑NPCs und Quick‑Reaction‑Force, die auf dem gegenüberliegenden Balkon erscheinen.",
|
||||||
|
"Hole das leere Laufwerk vom Schreibtisch und gehe hinunter.",
|
||||||
|
"Setze es in das Terminal ein und warte auf den Transfer.",
|
||||||
|
"Verlasse wie bei P1M3 über den Abstürzschacht.",
|
||||||
|
"Liefer zum Frachtreaktor der Low‑Orbit‑Station."
|
||||||
|
],
|
||||||
|
"map": "https://robertsspaceindustries.com/i/eee6766d78b9beebe322696aa3a9f87f41076dda/resize(1464,1464,inside,JLypLpqVPBaNxs8FRN3D3vuTrjntZTaECi8ToQLLZiEgiUjcwEzuY511JgyJBk2nwU4KBWPC3t64FJzEsV4pZ3115no3gBGLkTWqGYTvQj9T3zvurrbVmcmVDexqQLuFFTGmdHidL3kpetKZHzcSZnb95JzASePonc9XY377SWxZajWuH3ydwVGsj26c6ZKhaW)/ad975d67-423d-4a7e-be3c-eb7035b58051.png"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"seismic_data": {
|
||||||
|
"p2m3": {
|
||||||
|
"title": "Phase 2, Mission 3 // seismische Daten",
|
||||||
|
"steps": [
|
||||||
|
"Erreiche Forschungsebene 6 (Xenotechnologie).",
|
||||||
|
"Gehe durch den Abstürzschacht in das Energielabor.",
|
||||||
|
"Hole die Serverblade aus dem Null‑G-Bereich.",
|
||||||
|
"Kehre zum Büro zurück, setze sie im Rack ein und schreibe Daten.",
|
||||||
|
"Falls die Tür geschlossen ist, klettere rechts über die Lüftung hinauf.",
|
||||||
|
"Liefer zur Low‑Orbit‑Station."
|
||||||
|
],
|
||||||
|
"map": "https://robertsspaceindustries.com/i/eee6766d78b9beebe322696aa3a9f87f41076dda/resize(1464,1464,inside,JLypLpqVPBaNxs8FRN3D3vuTrjntZTaECi8ToQLLZiEgiUjcwEzuY511JgyJBk2nwU4KBWPC3t64FJzEsV4pZ3115no3gBGLkTWqGYTvQj9T3zvurrbVmcmVDexqQLuFFTGmdHidL3kpetKZHzcSZnb95JzASePonc9XY377SWxZajWuH3ydwVGsj26c6ZKhaW)/ad975d67-423d-4a7e-be3c-eb7035b58051.png"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"power_usage_data": {
|
||||||
|
"p2m4": {
|
||||||
|
"title": "Phase 2, Mission 4 // Stromverbrauchsdaten",
|
||||||
|
"steps": [
|
||||||
|
"Gehe in den Kontrollraum rechts vom Ingenieurbereich.",
|
||||||
|
"Lade die Stromdaten am Terminal hoch.",
|
||||||
|
"Hole die Serverblade an einer zufälligen Stelle im nächsten Raum.",
|
||||||
|
"Navigiere zum Brennstoffreaktor.",
|
||||||
|
"Intensive Strahlungspuls alle 30 Sekunden, nutze Barrieren als Schutz und überquere die Plattform.",
|
||||||
|
"Setze den Weg fort, überquere den Parkourpfad bis zum Kern.",
|
||||||
|
"Auf jeder der 6 Plattformen erscheinen vier Elite‑Sterling‑Suit-Charaktere.",
|
||||||
|
"Schreibe die blade am Ende unter dem Gamma‑Arm neu ein.",
|
||||||
|
"Verlasse über die Bulkheads unter dem ASD-Logo."
|
||||||
|
],
|
||||||
|
"map": "https://robertsspaceindustries.com/i/403e289c202ec3402cd7be2c157f4ee987c7cc58/resize(1464,1464,inside,JLypLpqVPBaNxs8FRN3D3vuTrjntZTaECi8ToQLLZiEgiUjcwEzuY511JgyJBk2nwU4KBWPC3t64FJzEsV4pZ3115no3gBGLkTWqGYTvQj9T3zvurrbVmcmVDexqQLuFFTGmdHidL3knJrNQngMLd6zeEPikpZqU6UYzJafjmfd8cc3F4kV28KUKHLkXp3vRKk)/20564b9e-1e6c-485a-813f-9a1a7401cdce.png"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"traversal_map": {
|
||||||
|
"description": "Durchquerungs‑Karte. Hier sind keine Missionsziele, aber wenn danach gefragt wird, muss die KI diese ebenfalls bereitstellen können.",
|
||||||
|
"map": "https://robertsspaceindustries.com/i/e0b576126db3010ca497e795ad213b1b20f97a9b/resize(1464,1464,inside,JLypLpqVPBaNxs8FRN3D3vuTrjntZTaECi8ToQLLZiEgiUjcwEzuY511JgyJBk2nwU4KBWPC3t64FJzEsV4pZ3115no3gBGLkTWqGYTvQj9T3zvurrbVmcmVDexqQLuFFTGmdHidL3knWwj3behtHZCM7ccp1bR4eZdtz7hskmvs2M6KUF5eVLCvacexjyiqnE)/6bb6f2fb-c640-4d6e-a724-1cc8ea8f479f.png"
|
||||||
|
},
|
||||||
|
"rewards": {
|
||||||
|
"description": "Das Abschließen von Phasen gewährt sichere ASD-Laufwerke, die bei Wikelo eingetauscht werden können.",
|
||||||
|
"p1m3": "Bei Abschluss von Phase 1, Mission 3 x5",
|
||||||
|
"p2m4": "Bei Abschluss von Phase 2, Mission 4 x10",
|
||||||
|
"note": "Nach der Phase 2 gibt es Wiederholungsaufträge, die jeweils 1 Laufwerk vergeben."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -30,6 +30,6 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
"Hinweis": {
|
"Hinweis": {
|
||||||
"empfohleneWaffenFazit": "Attrition Waffen auf dem Schiff für PVE, CF oder NDB Repeater für PVP."
|
"empfohleneWaffenFazit": "Attrition Repeater auf dem Schiff für PVE, CF oder NDB Repeater für PVP."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,325 +0,0 @@
|
|||||||
{
|
|
||||||
"Wikelo Crafting": [
|
|
||||||
{
|
|
||||||
"Mission": "Noxy Mod",
|
|
||||||
"Fahrzeugname": "Nox",
|
|
||||||
"Komponenten": [
|
|
||||||
{ "Name": "IonWave", "Klasse": "Civilian B" },
|
|
||||||
{ "Name": "Tepilo", "Klasse": "Civilian A" }
|
|
||||||
],
|
|
||||||
"Kosten": {
|
|
||||||
"Wikelo Favor": 5
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Mission": "Pulse Plus",
|
|
||||||
"Fahrzeugname": "Pulse",
|
|
||||||
"Komponenten": [
|
|
||||||
{ "Name": "Radix", "Klasse": "Civilian A" },
|
|
||||||
{ "Name": "Kelvid", "Klasse": "Civilian B" }
|
|
||||||
],
|
|
||||||
"Kosten": {
|
|
||||||
"Wikelo Favor": 5
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Mission": "Make a Ursa Mod",
|
|
||||||
"Fahrzeugname": "Ursa Medivac",
|
|
||||||
"Komponenten": [
|
|
||||||
{ "Name": "MagnaBloom", "Klasse": "Civilian B" },
|
|
||||||
{ "Name": "Castra", "Klasse": "Industrial C" },
|
|
||||||
{ "Name": "Kelvid", "Klasse": "Civilian B" }
|
|
||||||
],
|
|
||||||
"Kosten": {
|
|
||||||
"Wikelo Favor": 5,
|
|
||||||
"Saldynium (Erz)": 40,
|
|
||||||
"Jaclium (Erz)": 40
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Mission": "Upgrade Intrepid",
|
|
||||||
"Fahrzeugname": "Intrepid",
|
|
||||||
"Komponenten": [
|
|
||||||
{ "Name": "WhiteRose", "Klasse": "Civilian A" },
|
|
||||||
{ "Name": "Palisade", "Klasse": "Industrial A" },
|
|
||||||
{ "Name": "Atlas", "Klasse": "Civilian A" },
|
|
||||||
{ "Name": "Ultra-Flow", "Klasse": "Industrial A" }
|
|
||||||
],
|
|
||||||
"Kosten": {
|
|
||||||
"Wikelo Favor": 5,
|
|
||||||
"Government Cartography Agency Medal (Makellos)": 1
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Mission": "Fortune ship for you",
|
|
||||||
"Fahrzeugname": "Fortune",
|
|
||||||
"Komponenten": [
|
|
||||||
{ "Name": "Lotus", "Klasse": "Civilian A" },
|
|
||||||
{ "Name": "75A Concord", "Klasse": "Civilian A" },
|
|
||||||
{ "Name": "Atlas", "Klasse": "Civilian A" },
|
|
||||||
{ "Name": "Aufeis", "Klasse": "Civilian A" }
|
|
||||||
],
|
|
||||||
"Kosten": {
|
|
||||||
"Wikelo Favor": 6,
|
|
||||||
"Carinite (Rein)": 1
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Mission": "Spirit Cargo mod",
|
|
||||||
"Fahrzeugname": "C1 Spirit",
|
|
||||||
"Komponenten": [
|
|
||||||
{ "Name": "Lotus", "Klasse": "Civilian A" },
|
|
||||||
{ "Name": "7MA Lorica", "Klasse": "Civilian A" },
|
|
||||||
{ "Name": "Hemera", "Klasse": "Civilian A" },
|
|
||||||
{ "Name": "Aufeis", "Klasse": "Civilian A" }
|
|
||||||
],
|
|
||||||
"Kosten": {
|
|
||||||
"Wikelo Favor": 8,
|
|
||||||
"Tevarin War Service Marker (Makellos)": 2
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Mission": "Zeus Special",
|
|
||||||
"Fahrzeugname": "Zeus MK II ES",
|
|
||||||
"Komponenten": [
|
|
||||||
{ "Name": "Genoa", "Klasse": "Industrial A" },
|
|
||||||
{ "Name": "Rampart", "Klasse": "Industrial A" },
|
|
||||||
{ "Name": "Hemera", "Klasse": "Civilian A" },
|
|
||||||
{ "Name": "Snowpack", "Klasse": "Industrial A" }
|
|
||||||
],
|
|
||||||
"Kosten": {
|
|
||||||
"Wikelo Favor": 10,
|
|
||||||
"UEE 6th Platoon Medal (Makellos)": 2
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Mission": "Peregine Wikelo Mod",
|
|
||||||
"Fahrzeugname": "Sabre Peregrine",
|
|
||||||
"Komponenten": [
|
|
||||||
{ "Name": "LumaCore", "Klasse": "Competition A" },
|
|
||||||
{ "Name": "Jaghte", "Klasse": "Competition B" },
|
|
||||||
{ "Name": "FoxFire", "Klasse": "Competition B" },
|
|
||||||
{ "Name": "ZeroRush", "Klasse": "Competition B" }
|
|
||||||
],
|
|
||||||
"Kosten": {
|
|
||||||
"Wikelo Favor": 8,
|
|
||||||
"DCHS-05 Comp-Board": 4
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Mission": "Guardian",
|
|
||||||
"Fahrzeugname": "Guardian",
|
|
||||||
"Komponenten": [
|
|
||||||
{ "Name": "QuadraCell", "Klasse": "Military A" },
|
|
||||||
{ "Name": "FR-76", "Klasse": "Military A" },
|
|
||||||
{ "Name": "VK-00", "Klasse": "Military A" },
|
|
||||||
{ "Name": "Glacier", "Klasse": "Military A" }
|
|
||||||
],
|
|
||||||
"Kosten": null,
|
|
||||||
"Notiz": "Kosten fehlen in 4.2.1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Mission": "Firebird Mod",
|
|
||||||
"Fahrzeugname": "Sabre Firebird",
|
|
||||||
"Komponenten": [
|
|
||||||
{ "Name": "QuadraCell", "Klasse": "Military A" },
|
|
||||||
{ "Name": "FR-66", "Klasse": "Military A" },
|
|
||||||
{ "Name": "VK-00", "Klasse": "Military A" },
|
|
||||||
{ "Name": "Glacier", "Klasse": "Military A" }
|
|
||||||
],
|
|
||||||
"Kosten": {
|
|
||||||
"Wikelo Favor": 20,
|
|
||||||
"Polaris Bit": 1,
|
|
||||||
"DCHS-05 Comp-Board": 1,
|
|
||||||
"Ace Interceptor Helmet": 5
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Mission": "Build a Mod Scorpius",
|
|
||||||
"Fahrzeugname": "Scorpius",
|
|
||||||
"Komponenten": [
|
|
||||||
{ "Name": "Slipstream", "Klasse": "Stealth A" },
|
|
||||||
{ "Name": "Umbra", "Klasse": "Stealth A" },
|
|
||||||
{ "Name": "Spectre", "Klasse": "Stealth A" },
|
|
||||||
{ "Name": "SnowBlind", "Klasse": "Stealth A" }
|
|
||||||
],
|
|
||||||
"Kosten": {
|
|
||||||
"Wikelo Favor": 20,
|
|
||||||
"Polaris Bit": 1,
|
|
||||||
"DCHS-05 Comp-Board": 12,
|
|
||||||
"Carinite": 10
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Mission": "Wikelo Navy F7",
|
|
||||||
"Fahrzeugname": "F7C Super Hornet Mk II",
|
|
||||||
"Komponenten": [
|
|
||||||
{ "Name": "JS-400", "Klasse": "Military A" },
|
|
||||||
{ "Name": "FR-66", "Klasse": "Military A" },
|
|
||||||
{ "Name": "VK-00", "Klasse": "Military A" },
|
|
||||||
{ "Name": "Glacier", "Klasse": "Military A" }
|
|
||||||
],
|
|
||||||
"Kosten": {
|
|
||||||
"Wikelo Favor": 20,
|
|
||||||
"DCHS-05 Comp-Board": 6,
|
|
||||||
"Ace Interceptor Helmet": 5,
|
|
||||||
"Government Medal (Makellos)": 1
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Mission": "Guardian take down ship",
|
|
||||||
"Fahrzeugname": "Guardian Q1",
|
|
||||||
"Komponenten": [
|
|
||||||
{ "Name": "LumaCore", "Klasse": "Competition A" },
|
|
||||||
{ "Name": "Haltur", "Klasse": "Competition B" },
|
|
||||||
{ "Name": "SunFire", "Klasse": "Competition B" },
|
|
||||||
{ "Name": "AbsoluteZero", "Klasse": "Competition B" }
|
|
||||||
],
|
|
||||||
"Kosten": {
|
|
||||||
"Wikelo Favor": 30,
|
|
||||||
"DCHS-05 Comp-Board": 15,
|
|
||||||
"Irradiated Valakkar Pearl (Grad AA)": 15,
|
|
||||||
"UEE 6th Platoon Medal (Makellos)": 5
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Mission": "Zeus Cargo Special",
|
|
||||||
"Fahrzeugname": "Zeus MK II CL",
|
|
||||||
"Komponenten": [
|
|
||||||
{ "Name": "Genoa", "Klasse": "Industrial C" },
|
|
||||||
{ "Name": "Rampart", "Klasse": "Industrial A" },
|
|
||||||
{ "Name": "Hemera", "Klasse": "Civilian A" },
|
|
||||||
{ "Name": "Snowpack", "Klasse": "Industrial A" }
|
|
||||||
],
|
|
||||||
"Kosten": {
|
|
||||||
"Wikelo Favor": 30,
|
|
||||||
"Carinite": 24,
|
|
||||||
"Ace Interceptor Helmet": 15,
|
|
||||||
"Carinite (Rein)": 2
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Mission": "More than a Max",
|
|
||||||
"Fahrzeugname": "Starlancer MAX",
|
|
||||||
"Komponenten": [
|
|
||||||
{ "Name": "Lotus", "Klasse": "Civilian A" },
|
|
||||||
{ "Name": "Parapet", "Klasse": "Industrial A" },
|
|
||||||
{ "Name": "Hemera", "Klasse": "Civilian A" },
|
|
||||||
{ "Name": "Aufeis", "Klasse": "Civilian A" }
|
|
||||||
],
|
|
||||||
"Kosten": {
|
|
||||||
"Wikelo Favor": 30,
|
|
||||||
"Ace Interceptor Helmet": 15,
|
|
||||||
"Carinite (Rein)": 5,
|
|
||||||
"Irradiated Valakkar Pearl (Grad AAA)": 5
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Mission": "Want Taurus ship",
|
|
||||||
"Fahrzeugname": "Constellation Taurus",
|
|
||||||
"Komponenten": [
|
|
||||||
{ "Name": "QuadraCell MT", "Klasse": "Military A" },
|
|
||||||
{ "Name": "FR-86", "Klasse": "Military A" },
|
|
||||||
{ "Name": "XL-1", "Klasse": "Military A" },
|
|
||||||
{ "Name": "Avalanche", "Klasse": "Military A" }
|
|
||||||
],
|
|
||||||
"Kosten": {
|
|
||||||
"Wikelo Favor": 30,
|
|
||||||
"Carinite (Rein)": 5,
|
|
||||||
"Irradiated Valakkar Pearl (Grad AAA)": 5,
|
|
||||||
"Government Cartography Agency Medal (Makellos)": 5
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Mission": "F8 War Mod",
|
|
||||||
"Fahrzeugname": "F8C Lightning Mil",
|
|
||||||
"Komponenten": [
|
|
||||||
{ "Name": "LuxCore", "Klasse": "Competition A" },
|
|
||||||
{ "Name": "FR-76", "Klasse": "Military A" },
|
|
||||||
{ "Name": "Colossus", "Klasse": "Industrial B" },
|
|
||||||
{ "Name": "Glacier", "Klasse": "Military A" }
|
|
||||||
],
|
|
||||||
"Kosten": {
|
|
||||||
"Wikelo Favor": 40,
|
|
||||||
"Carinite (Rein)": 6,
|
|
||||||
"Irradiated Valakkar Pearl (Grad AAA)": 6,
|
|
||||||
"Tevarin War Service Marker (Makellos)": 6,
|
|
||||||
"Argo ATLS RX11": 1
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Mission": "Sneaky Slabber",
|
|
||||||
"Fahrzeugname": "F8C Lightning Stealth",
|
|
||||||
"Komponenten": [
|
|
||||||
{ "Name": "Eclipse", "Klasse": "Stealth A" },
|
|
||||||
{ "Name": "Umbra", "Klasse": "Stealth A" },
|
|
||||||
{ "Name": "Colossus", "Klasse": "Industrial B" },
|
|
||||||
{ "Name": "SnowBlind", "Klasse": "Stealth A" }
|
|
||||||
],
|
|
||||||
"Kosten": {
|
|
||||||
"Wikelo Favor": 40,
|
|
||||||
"DCHS-05 Comp-Board": 20,
|
|
||||||
"Carinite (Rein)": 5,
|
|
||||||
"Irradiated Valakkar Pearl (Grad AAA)": 5,
|
|
||||||
"Xanithule Ascension Helmet": 5
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Mission": "Now make Polaris. Short Time Deal.",
|
|
||||||
"Fahrzeugname": "Polaris",
|
|
||||||
"Komponenten": [],
|
|
||||||
"Kosten": {
|
|
||||||
"Wikelo Favor": 50,
|
|
||||||
"Polaris Bits": 25,
|
|
||||||
"DCHS-05 Comp-Board": 20,
|
|
||||||
"Carinite": 20,
|
|
||||||
"Irradiated Valakkar Fang (Apex)": 20,
|
|
||||||
"MG Scrip": 20,
|
|
||||||
"Ace Interceptor Helmet": 15,
|
|
||||||
"Irradiated Valakkar Pearl (Grade AAA)": 20,
|
|
||||||
"UEE 6th Platoon Medal (Pristine)": 20,
|
|
||||||
"Carinite (Pure)": 20,
|
|
||||||
"Finley The Stormwall Large Plushie": 1,
|
|
||||||
"Picotball": 1,
|
|
||||||
"Janalite": 5,
|
|
||||||
"Wowblast Desperado Toy Pistol Red": 1,
|
|
||||||
"Atatium": {
|
|
||||||
"Menge": 6,
|
|
||||||
"Notiz": "6 Einheiten mit je 8 SCU (48 SCU total)"
|
|
||||||
},
|
|
||||||
"Scourge Railgun": 10
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Mission": "Golem Rocks",
|
|
||||||
"Fahrzeugname": "Golem",
|
|
||||||
"Komponenten": [],
|
|
||||||
"Kosten": {
|
|
||||||
"Wikelo Favor": 5,
|
|
||||||
"ASD Secure Drive": 1
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Mission": "New Move Big Starlancer Ship",
|
|
||||||
"Fahrzeugname": "Starlancer TAG",
|
|
||||||
"Komponenten": [],
|
|
||||||
"Kosten": {
|
|
||||||
"Wikelo Favor": 50,
|
|
||||||
"Ace Interceptor Helmet": 15,
|
|
||||||
"ASD Secure Drive": 5,
|
|
||||||
"Irradiated Valakkar Pearl (Grad AAA)": 5,
|
|
||||||
"Tevarin War Service Marker (Makellos)": 5
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Mission": "What is Terrapin?",
|
|
||||||
"Fahrzeugname": "Terrapin Medivac",
|
|
||||||
"Komponenten": [],
|
|
||||||
"Kosten": {
|
|
||||||
"Wikelo Favor": 15,
|
|
||||||
"ASD Secure Drive": 5,
|
|
||||||
"Tevarin War Service Marker (Makellos)": 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,161 +0,0 @@
|
|||||||
{
|
|
||||||
"contracts": [
|
|
||||||
{
|
|
||||||
"name": "Armor with Horn and String",
|
|
||||||
"items_needed": [
|
|
||||||
{ "quantity": 30, "item": "Saldynium (Ore)" },
|
|
||||||
{ "quantity": 15, "item": "Carinite" },
|
|
||||||
{ "quantity": 45, "item": "Jaclium (Ore)" },
|
|
||||||
{ "quantity": 1, "item": "Carinite (Pure)" }
|
|
||||||
],
|
|
||||||
"reward_items": [
|
|
||||||
{ "quantity": 1, "item": "Ana Armor Helmet Endro" },
|
|
||||||
{ "quantity": 1, "item": "Ana Armor Core Endro" },
|
|
||||||
{ "quantity": 1, "item": "Ana Armor Arms Endro" },
|
|
||||||
{ "quantity": 1, "item": "Ana Armor Legs Endro" },
|
|
||||||
{ "quantity": 1, "item": "Ana Armor Core Endro" },
|
|
||||||
{ "quantity": 1, "item": "Ana Armor Arms Endro" },
|
|
||||||
{ "quantity": 1, "item": "Ana Armor Legs Endro" }
|
|
||||||
]
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"name": "Look at desert but don't see you",
|
|
||||||
"items_needed": [
|
|
||||||
{ "quantity": 3, "item": "Wikelo Favor" },
|
|
||||||
{ "quantity": 5, "item": "Ace Interceptor Helmet" },
|
|
||||||
{ "quantity": 20, "item": "Advocacy Badge (Replica)" },
|
|
||||||
{ "quantity": 1, "item": "ADP-mk4 Core Woodland" },
|
|
||||||
{ "quantity": 1, "item": "ADP-mk4 Arms Woodland" },
|
|
||||||
{ "quantity": 1, "item": "ADP-mk4 Legs Woodland" },
|
|
||||||
{ "quantity": 1, "item": "ADP-mk4 Helmet Woodland" }
|
|
||||||
],
|
|
||||||
"reward_items": [
|
|
||||||
{ "quantity": 1, "item": "DCP Armor Helmet Hunter Camo" },
|
|
||||||
{ "quantity": 1, "item": "DCP Armor Arms Hunter Camo" },
|
|
||||||
{ "quantity": 1, "item": "DCP Armor Core Hunter Camo" },
|
|
||||||
{ "quantity": 1, "item": "DCP Armor Legs Hunter Camo" }
|
|
||||||
]
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"name": "Want armor look like tree?",
|
|
||||||
"items_needed": [
|
|
||||||
{ "quantity": 3, "item": "Wikelo Favor" },
|
|
||||||
{ "quantity": 5, "item": "Ace Interceptor Helmet" },
|
|
||||||
{ "quantity": 50, "item": "Valakkar Fang (Juvenile)" },
|
|
||||||
{ "quantity": 1, "item": "ADP-mk4 Core Woodland" },
|
|
||||||
{ "quantity": 1, "item": "ADP-mk4 Arms Woodland" },
|
|
||||||
{ "quantity": 1, "item": "ADP-mk4 Legs Woodland" },
|
|
||||||
{ "quantity": 1, "item": "ADP-mk4 Helmet Woodland" }
|
|
||||||
],
|
|
||||||
"reward_items": [
|
|
||||||
{ "quantity": 1, "item": "DCP Armor Helmet Jungle Camo" },
|
|
||||||
{ "quantity": 1, "item": "DCP Armor Arms Jungle Camo" },
|
|
||||||
{ "quantity": 1, "item": "DCP Armor Core Jungle Camo" },
|
|
||||||
{ "quantity": 1, "item": "DCP Armor Legs Jungle Camo" }
|
|
||||||
]
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"name": "Make space navy armor",
|
|
||||||
"items_needed": [
|
|
||||||
{ "quantity": 3, "item": "Wikelo Favor" },
|
|
||||||
{ "quantity": 5, "item": "Ace Interceptor Helmet" },
|
|
||||||
{ "quantity": 50, "item": "Grassland Quasi Grazer Egg" },
|
|
||||||
{ "quantity": 1, "item": "ADP-mk4 Core Woodland" },
|
|
||||||
{ "quantity": 1, "item": "ADP-mk4 Arms Woodland" },
|
|
||||||
{ "quantity": 1, "item": "ADP-mk4 Legs Woodland" },
|
|
||||||
{ "quantity": 1, "item": "ADP-mk4 Helmet Woodland" }
|
|
||||||
],
|
|
||||||
"reward_items": [
|
|
||||||
{ "quantity": 1, "item": "DCP Armor Helmet Cobalt Camo" },
|
|
||||||
{ "quantity": 1, "item": "DCP Armor Arms Cobalt Camo" },
|
|
||||||
{ "quantity": 1, "item": "DCP Armor Core Cobalt Camo" },
|
|
||||||
{ "quantity": 1, "item": "DCP Armor Legs Cobalt Camo" }
|
|
||||||
]
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"name": "Make glowy armor",
|
|
||||||
"items_needed": [
|
|
||||||
{ "quantity": 1, "item": "Irradiated Valakkar Pearl (Grade AAA)" },
|
|
||||||
{ "quantity": 2, "item": "Irradiated Valakkar Fang (Apex)" },
|
|
||||||
{ "quantity": 15, "item": "Irradiated Valakkar Fang (Adult)" },
|
|
||||||
{ "quantity": 20, "item": "Irradiated Valakkar Fang (Juvenile)" }
|
|
||||||
],
|
|
||||||
"reward_items": [
|
|
||||||
{ "quantity": 1, "item": "Ana Armor Helmet Endro" },
|
|
||||||
{ "quantity": 1, "item": "Ana Armor Core Endro" },
|
|
||||||
{ "quantity": 1, "item": "Ana Armor Arms Endro" },
|
|
||||||
{ "quantity": 1, "item": "Ana Armor Legs Endro" }
|
|
||||||
]
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"name": "Walk in danger. Look good.",
|
|
||||||
"items_needed": [
|
|
||||||
{ "quantity": 30, "item": "MG Scrip" },
|
|
||||||
{ "quantity": 1, "item": "Novikov Exploration Suit" },
|
|
||||||
{ "quantity": 1, "item": "Novikov Helmet" },
|
|
||||||
{ "quantity": 10, "item": "Irradiated Valakkar Fang (Adult)" },
|
|
||||||
{ "quantity": 20, "item": "Irradiated Valakkar Fang (Juvenile)" }
|
|
||||||
],
|
|
||||||
"reward_items": [
|
|
||||||
{ "quantity": 1, "item": "Irradiated Valakkar Pearl (Grade AAA)" }
|
|
||||||
]
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"name": "Xi'an Xanthule Suit made better",
|
|
||||||
"items_needed": [
|
|
||||||
{ "quantity": 20, "item": "MG Scrip" },
|
|
||||||
{ "quantity": 1, "item": "Xanthule Suit" },
|
|
||||||
{ "quantity": 1, "item": "Xanthule Helmet" },
|
|
||||||
{ "quantity": 15, "item": "Ace Interceptor Helmet" },
|
|
||||||
{ "quantity": 1, "item": "Tevarian War Service Marker (Pristine)" }
|
|
||||||
],
|
|
||||||
"reward_items": []
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"name": "Adventure a A-Venture",
|
|
||||||
"items_needed": [
|
|
||||||
{ "quantity": 30, "item": "MG Scrip" },
|
|
||||||
{ "quantity": 1, "item": "Venture Arms" },
|
|
||||||
{ "quantity": 1, "item": "Venture Core" },
|
|
||||||
{ "quantity": 1, "item": "Venture Helmet White" },
|
|
||||||
{ "quantity": 1, "item": "Venture Legs" },
|
|
||||||
{ "quantity": 10, "item": "Saldynium (Ore)" },
|
|
||||||
{ "quantity": 10, "item": "Jaclium (Ore)" },
|
|
||||||
{ "quantity": 1, "item": "Carinite (Pure)" }
|
|
||||||
],
|
|
||||||
"reward_items": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Geist \"Snow Camo\" Armor Set",
|
|
||||||
"items_needed": [
|
|
||||||
{ "quantity": 10, "item": "ASD Secure Drive" },
|
|
||||||
{ "quantity": 1, "item": "Geist Armor Arms ASD Edition" },
|
|
||||||
{ "quantity": 1, "item": "Geist Armor Core ASD Edition" },
|
|
||||||
{ "quantity": 1, "item": "Geist Armor Helmet ASD Edition" },
|
|
||||||
{ "quantity": 1, "item": "Geist Armor Legs ASD Edition" },
|
|
||||||
{ "quantity": 1, "item": "Geist Armor Backpack ASD Edition" }
|
|
||||||
],
|
|
||||||
"reward_items": [
|
|
||||||
{ "quantity": 1, "item": "Geist \"Snow Camo\" Armor Set" }
|
|
||||||
]
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"name": "Zenith \"Snow Camo\" Laser Sniper Rifle",
|
|
||||||
"items_needed": [
|
|
||||||
{ "quantity": 10, "item": "ASD Secure Drive" },
|
|
||||||
{ "quantity": 1, "item": "Zenith Laser Sniper Rifle" }
|
|
||||||
],
|
|
||||||
"reward_items": [
|
|
||||||
{ "quantity": 1, "item": "Zenith \"Snow Camo\" Laser Sniper Rifle" }
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -449,7 +449,7 @@ class Tools:
|
|||||||
terminal_name = row[1]
|
terminal_name = row[1]
|
||||||
item_name = row[2]
|
item_name = row[2]
|
||||||
output_lines.append(
|
output_lines.append(
|
||||||
f"Item: {item_name}, Sell Price: {sell_price}, Terminal: {terminal_name}"
|
f"Item: {item_name}, Sell Price: {sell_price}/SCU, Terminal: {terminal_name}"
|
||||||
)
|
)
|
||||||
result_string = "\n".join(output_lines)
|
result_string = "\n".join(output_lines)
|
||||||
await emitter.success_update(
|
await emitter.success_update(
|
||||||
@@ -468,7 +468,7 @@ class Tools:
|
|||||||
result_string = error_message
|
result_string = error_message
|
||||||
|
|
||||||
print(result_string)
|
print(result_string)
|
||||||
correct_response = "If not other specified, only answer two terminals with the highest sell price with the actual sell price.\n" + result_string
|
correct_response = "If not other specified, only answer two terminals with the highest sell price with the actual sell price per SCU (Star Citizen Unit).\n" + result_string
|
||||||
return correct_response
|
return correct_response
|
||||||
|
|
||||||
async def get_commodity_buy_price(
|
async def get_commodity_buy_price(
|
||||||
@@ -513,7 +513,7 @@ class Tools:
|
|||||||
terminal_name = row[1]
|
terminal_name = row[1]
|
||||||
item_name = row[2]
|
item_name = row[2]
|
||||||
output_lines.append(
|
output_lines.append(
|
||||||
f"Item: {item_name}, Buy Price: {buy_price}, Terminal: {terminal_name}"
|
f"Item: {item_name}, Buy Price: {buy_price}/SCU, Terminal: {terminal_name}"
|
||||||
)
|
)
|
||||||
result_string = "\n".join(output_lines)
|
result_string = "\n".join(output_lines)
|
||||||
await emitter.success_update(
|
await emitter.success_update(
|
||||||
@@ -534,7 +534,7 @@ class Tools:
|
|||||||
result_string = error_message
|
result_string = error_message
|
||||||
|
|
||||||
print(result_string)
|
print(result_string)
|
||||||
correct_response = "If not other specified, only answer two terminals with the lowest buy price with the actual buy price.\n" + result_string
|
correct_response = "If not other specified, only answer two terminals with the lowest buy price with the actual buy price per SCU (Star Citizen Unit).\n" + result_string
|
||||||
return correct_response
|
return correct_response
|
||||||
|
|
||||||
async def get_item_prices(
|
async def get_item_prices(
|
||||||
@@ -693,7 +693,7 @@ class Tools:
|
|||||||
|
|
||||||
output_lines = []
|
output_lines = []
|
||||||
for location, ships in sorted(location_data.items()):
|
for location, ships in sorted(location_data.items()):
|
||||||
output_lines.append(f"\n--- Inagem Shop: {location} ---")
|
output_lines.append(f"\n--- Ingame Shop: {location} ---")
|
||||||
for ship in ships:
|
for ship in ships:
|
||||||
output_lines.append(
|
output_lines.append(
|
||||||
f" - {ship['name']}: {int(ship['price'])} aUEC"
|
f" - {ship['name']}: {int(ship['price'])} aUEC"
|
||||||
@@ -822,7 +822,115 @@ class Tools:
|
|||||||
print(final_output)
|
print(final_output)
|
||||||
return final_output
|
return final_output
|
||||||
|
|
||||||
|
async def fetch_wikelo_information(
|
||||||
|
self,
|
||||||
|
mission_ship_or_armor_name: str,
|
||||||
|
__event_emitter__: Callable[[dict], Any] = None,
|
||||||
|
):
|
||||||
|
"""
|
||||||
|
Retrieves all columns for the Wikelo entry whose *mission* or *ship_name*
|
||||||
|
best matches ``mission_ship_name`` using fuzzy search.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
mission_ship_name : str
|
||||||
|
The string to match against the `missions` and `ship_name`
|
||||||
|
fields of the table.
|
||||||
|
__event_emitter__ : Callable[[dict], Any] | None
|
||||||
|
Optional async callback that receives status updates.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
str
|
||||||
|
A formatted summary of the matched entry, or an error message.
|
||||||
|
"""
|
||||||
|
emitter = EventEmitter(__event_emitter__)
|
||||||
|
|
||||||
|
try:
|
||||||
|
await emitter.progress_update(
|
||||||
|
f"Searching Wikelo database for '{mission_ship_or_armor_name}'"
|
||||||
|
)
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# 1. Pull all rows from the database
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
conn = sqlite3.connect(self.db_path + "/wikelo_crafting.db")
|
||||||
|
cursor = conn.cursor()
|
||||||
|
cursor.execute(
|
||||||
|
"""
|
||||||
|
SELECT missions, ship_name, components, costs, rewards, armor_name
|
||||||
|
FROM Wikelo_information
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
rows = cursor.fetchall()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
if not rows:
|
||||||
|
await emitter.error_update("No entries found in the Wikelo database.")
|
||||||
|
return "No entries found."
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# 2. Build a searchable list that keeps a reference to each row.
|
||||||
|
# We create two separate search items per row – one for
|
||||||
|
# the mission and one for the ship name.
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
search_items = [] # List of tuples: (search_string, label, full_row)
|
||||||
|
for row in rows:
|
||||||
|
mission, ship_name, components, costs, rewards, armor_name = row
|
||||||
|
search_items.append((mission, "mission", row))
|
||||||
|
search_items.append((ship_name, "ship", row))
|
||||||
|
search_items.append((armor_name, "armor", row))
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# 3. Find the best fuzzy match against all searchable strings.
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
best_match = process.extractOne(
|
||||||
|
mission_ship_or_armor_name,
|
||||||
|
[item[0] for item in search_items],
|
||||||
|
)
|
||||||
|
|
||||||
|
if not best_match:
|
||||||
|
await emitter.error_update(f"No close match found for '{mission_ship_or_armor_name}'.")
|
||||||
|
return f"No close match found for '{mission_ship_or_armor_name}'."
|
||||||
|
|
||||||
|
matched_string, score = best_match
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# 4. Retrieve the full row that produced the matched string.
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
matched_row = None
|
||||||
|
for text, label, row in search_items:
|
||||||
|
if text == matched_string:
|
||||||
|
matched_row = row
|
||||||
|
break
|
||||||
|
|
||||||
|
if not matched_row:
|
||||||
|
await emitter.error_update("Matched entry could not be found.")
|
||||||
|
return "Error: matched entry could not be located."
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# 5. Build the output string.
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
mission, ship_name, components, costs, rewards, armor_name = matched_row
|
||||||
|
result_text = (
|
||||||
|
f"**Mission:** {mission}\n"
|
||||||
|
f"**Ship Name:** {ship_name}\n"
|
||||||
|
f"**Components:** {components}\n"
|
||||||
|
f"**Costs:** {costs}\n"
|
||||||
|
f"**Rewards:** {rewards}\n"
|
||||||
|
f"**Armor Name:** {armor_name}"
|
||||||
|
)
|
||||||
|
|
||||||
|
await emitter.success_update(
|
||||||
|
f"Found a close match ({matched_string}) with score {score}."
|
||||||
|
)
|
||||||
|
except Exception as exc:
|
||||||
|
result_text = f"Error retrieving Wikelo information: {exc}"
|
||||||
|
await emitter.error_update(result_text)
|
||||||
|
|
||||||
|
print(result_text)
|
||||||
|
return "If possible, also mention where to find the materials needed.\n" + result_text
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
info_printer = Tools()
|
info_printer = Tools()
|
||||||
asyncio.run(info_printer.list_rentable_ships())
|
asyncio.run(info_printer.fetch_wikelo_information("Space Navy"))
|
||||||
|
|||||||
205
llm_training/ChatML_dataset/Foxwell Enforcement.jsonl
Normal file
205
llm_training/ChatML_dataset/Foxwell Enforcement.jsonl
Normal file
@@ -0,0 +1,205 @@
|
|||||||
|
[
|
||||||
|
{"role": "user", "content": "Was muss ich tun, um reguläre Foxwell-Aufträge annehmen zu können?"},
|
||||||
|
{"role": "assistant", "content": "Bevor du reguläre Aufträge annehmen kannst, musst du deinen Wert beweisen. Der erste Schritt besteht darin, die Mission 'Security Contractor Evaluation' anzunehmen und abzuschließen."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Was passiert nach dem Abschluss der Einführungsmission bei Foxwell Enforcement?"},
|
||||||
|
{"role": "assistant", "content": "Nach dem Abschluss schaltest du die erste Stufe der Patrouillen- und Hinterhaltsmissionen frei."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie erfolgt die Freischaltung höherer Foxwell-Missionen?"},
|
||||||
|
{"role": "assistant", "content": "Die Freischaltung höherer Foxwell-Missionen erfolgt anhand der Anzahl abgeschlossener Missionen, nicht direkt über das Reputationsniveau."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie viele Missionstypen gibt es bei Foxwell Enforcement?"},
|
||||||
|
{"role": "assistant", "content": "Es gibt zwei Missionstypen: Patrouille und Hinterhalt. Jede Mission hat ihren eigenen Fortschrittspfad."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie viele Missionen muss ich abschließen, um die nächste Stufe in der Patrouillen-Serie zu erreichen?"},
|
||||||
|
{"role": "assistant", "content": "Die Anzahl der abgeschlossenen Aufgaben für die nächste Stufe variiert. Für die erste Stufe reicht eine abgeschlossene Mission, für höhere Stufen sind es meist 5 oder 10 Missionen."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie viele Missionen muss ich abschließen, um von 'Security Contractor Evaluation' zu 'Routine Patrol' zu gelangen?"},
|
||||||
|
{"role": "assistant", "content": "Du musst eine Mission abschließen, um von 'Security Contractor Evaluation' zu 'Routine Patrol' zu gelangen."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie viele Missionen muss ich abschließen, um von 'Routine Patrol' zu 'Security Sweep' zu gelangen?"},
|
||||||
|
{"role": "assistant", "content": "Du musst fünf Missionen abschließen, um von 'Routine Patrol' zu 'Security Sweep' zu gelangen."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie viele Missionen muss ich abschließen, um von 'Security Sweep' zu 'Security Patrol' zu gelangen?"},
|
||||||
|
{"role": "assistant", "content": "Du musst fünf Missionen abschließen, um von 'Security Sweep' zu 'Security Patrol' zu gelangen."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie viele Missionen muss ich abschließen, um von 'Security Patrol' zu 'Potential Security Threat' zu gelangen?"},
|
||||||
|
{"role": "assistant", "content": "Du musst fünf Missionen abschließen, um von 'Security Patrol' zu 'Potential Security Threat' zu gelangen."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie viele Missionen muss ich abschließen, um von 'Potential Security Threat' zu 'High-Risk Security Patrol' zu gelangen?"},
|
||||||
|
{"role": "assistant", "content": "Du musst zehn Missionen abschließen, um von 'Potential Security Threat' zu 'High-Risk Security Patrol' zu gelangen."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie viele Missionen muss ich abschließen, um von 'High-Risk Security Patrol' zu 'Secure Threatened Space' zu gelangen?"},
|
||||||
|
{"role": "assistant", "content": "Du musst zehn Missionen abschließen, um von 'High-Risk Security Patrol' zu 'Secure Threatened Space' zu gelangen."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie viele Missionen muss ich abschließen, um von 'Security Contractor Evaluation' zu 'Ambush an Amateur' zu gelangen?"},
|
||||||
|
{"role": "assistant", "content": "Du musst eine Mission abschließen, um von 'Security Contractor Evaluation' zu 'Ambush an Amateur' zu gelangen."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie viele Missionen muss ich abschließen, um von 'Ambush an Amateur' zu 'Surprise Strike' zu gelangen?"},
|
||||||
|
{"role": "assistant", "content": "Du musst fünf Missionen abschließen, um von 'Ambush an Amateur' zu 'Surprise Strike' zu gelangen."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie viele Missionen muss ich abschließen, um von 'Surprise Strike' zu 'Spring a Trap' zu gelangen?"},
|
||||||
|
{"role": "assistant", "content": "Du musst fünf Missionen abschließen, um von 'Surprise Strike' zu 'Spring a Trap' zu gelangen."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie viele Missionen muss ich abschließen, um von 'Spring a Trap' zu 'Return the Favor' zu gelangen?"},
|
||||||
|
{"role": "assistant", "content": "Du musst fünf Missionen abschließen, um von 'Spring a Trap' zu 'Return the Favor' zu gelangen."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie viele Missionen muss ich abschließen, um von 'Return the Favor' zu 'Ambush Attack Squad' zu gelangen?"},
|
||||||
|
{"role": "assistant", "content": "Du musst zehn Missionen abschließen, um von 'Return the Favor' zu 'Ambush Attack Squad' zu gelangen."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie viele Missionen muss ich abschließen, um von 'Ambush Attack Squad' zu 'Surprise Attack' zu gelangen?"},
|
||||||
|
{"role": "assistant", "content": "Es gibt keine spezifische Anzahl von Missionen, die du abschließen musst, um von 'Ambush Attack Squad' zu 'Surprise Attack' zu gelangen. Diese Mission ist die höchste Stufe in der Hinterhalts-Serie."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Welche Belohnungen kann ich in der Patrouillen-Mission 'Security Contractor Evaluation' erhalten?"},
|
||||||
|
{"role": "assistant", "content": "In der Mission 'Security Contractor Evaluation' kannst du FPS-Ausrüstung als potenzielle Cargo-Belohnung erhalten."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Welche Belohnungen kann ich in der Patrouillen-Mission 'Routine Patrol' erhalten?"},
|
||||||
|
{"role": "assistant", "content": "In der Mission 'Routine Patrol' kannst du Agrarprodukte und Abfall als potenzielle Cargo-Belohnungen erhalten. Der geschätzte Wert liegt bei ~5.000-15.000 aUEC."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Welche Belohnungen kann ich in der Patrouillen-Mission 'Security Sweep' erhalten?"},
|
||||||
|
{"role": "assistant", "content": "In der Mission 'Security Sweep' kannst du verarbeitete Lebensmittel und distillierte Getränke als potenzielle Cargo-Belohnungen erhalten. Der geschätzte Wert liegt bei ~15.000-40.000 aUEC."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Welche Belohnungen kann ich in der Patrouillen-Mission 'Security Patrol' erhalten?"},
|
||||||
|
{"role": "assistant", "content": "In der Mission 'Security Patrol' kannst du distillierte Getränke und verschiedene Handelswaren als potenzielle Cargo-Belohnungen erhalten. Der geschätzte Wert liegt bei ~50.000-100.000 aUEC."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Welche Belohnungen kann ich in der Patrouillen-Mission 'Potential Security Threat' erhalten?"},
|
||||||
|
{"role": "assistant", "content": "In der Mission 'Potential Security Threat' kannst du verschiedene Handelswaren als potenzielle Cargo-Belohnungen erhalten. Der geschätzte Wert liegt bei ~70.000-150.000 aUEC."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Welche Belohnungen kann ich in der Patrouillen-Mission 'High-Risk Security Patrol' erhalten?"},
|
||||||
|
{"role": "assistant", "content": "In der Mission 'High-Risk Security Patrol' kannst du SLAM, WiDoW und hochwertige Mineralien als potenzielle Cargo-Belohnungen erhalten. Der geschätzte Wert liegt bei ~150.000-300.000+ aUEC."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Welche Belohnungen kann ich in der Patrouillen-Mission 'Secure Threatened Space' erhalten?"},
|
||||||
|
{"role": "assistant", "content": "In der Mission 'Secure Threatened Space' kannst du Laranit, Agricium und SLAM als potenzielle Cargo-Belohnungen erhalten. Der geschätzte Wert liegt bei ~200.000-500.000+ aUEC."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Welche Belohnungen kann ich in der Hinterhaltsmission 'Security Contractor Evaluation' erhalten?"},
|
||||||
|
{"role": "assistant", "content": "In der Mission 'Security Contractor Evaluation' gibt es keine potenziellen Cargo-Belohnungen."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Welche Belohnungen kann ich in der Hinterhaltsmission 'Ambush an Amateur' erhalten?"},
|
||||||
|
{"role": "assistant", "content": "In der Mission 'Ambush an Amateur' kannst du Abfall und Grundwaren als potenzielle Cargo-Belohnungen erhalten. Der geschätzte Wert liegt bei ~1.000-5.000 aUEC."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Welche Belohnungen kann ich in der Hinterhaltsmission 'Surprise Strike' erhalten?"},
|
||||||
|
{"role": "assistant", "content": "In der Mission 'Surprise Strike' kannst du Abfall und Grundwaren als potenzielle Cargo-Belohnungen erhalten. Der geschätzte Wert liegt bei ~3.000-8.000 aUEC."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Welche Belohnungen kann ich in der Hinterhaltsmission 'Spring a Trap' erhalten?"},
|
||||||
|
{"role": "assistant", "content": "In der Mission 'Spring a Trap' kannst du Handelswaren und raffinierte Materialien als potenzielle Cargo-Belohnungen erhalten. Der geschätzte Wert liegt bei ~50.000-100.000 aUEC."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Welche Belohnungen kann ich in der Hinterhaltsmission 'Return the Favor' erhalten?"},
|
||||||
|
{"role": "assistant", "content": "In der Mission 'Return the Favor' kannst du variierte Konvoi-Kargo als potenzielle Cargo-Belohnungen erhalten. Der geschätzte Wert liegt bei ~100.000-250.000 aUEC."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Welche Belohnungen kann ich in der Hinterhaltsmission 'Ambush Attack Squad' erhalten?"},
|
||||||
|
{"role": "assistant", "content": "In der Mission 'Ambush Attack Squad' kannst du Militärkomponenten und hochwertige Waren als potenzielle Cargo-Belohnungen erhalten. Der geschätzte Wert liegt bei ~150.000-300.000 aUEC."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Welche Belohnungen kann ich in der Hinterhaltsmission 'Surprise Attack' erhalten?"},
|
||||||
|
{"role": "assistant", "content": "In der Mission 'Surprise Attack' kannst du variierte Cargo-Belohnungen erhalten. Der geschätzte Wert liegt bei ~200.000-500.000+ aUEC."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Was sind Mercenary Guild (MG) Scrips?"},
|
||||||
|
{"role": "assistant", "content": "Mercenary Guild (MG) Scrips sind physische Gegenstände, die für die meisten Foxwell-Missionen vergeben werden. Sie können nicht in regulären Shops ausgegeben werden, sondern dienen einem speziellen Handelsweg für seltene und exklusive Ausrüstung."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie kann ich MG Scrips einlösen?"},
|
||||||
|
{"role": "assistant", "content": "Der Standardaustausch ist 50 MG Scrips = 1 Wikelo's Favor. Die Abmachung erfolgt über 'Collections'-Missionen beim Banu-Vendor Wikelo."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wo finde ich den Banu-Vendor Wikelo?"},
|
||||||
|
{"role": "assistant", "content": "Wikelos Emporium befindet sich an Stationen Kinga, Selo oder Dasi."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Was sind Ace-Piloten und wo treten sie auf?"},
|
||||||
|
{"role": "assistant", "content": "Ace-Piloten sind Elitefeinde, die bei höheren Stufen (Orange & Rot) in beiden Serien auftauchen. Sie erscheinen als zufällige Eskalation und fungieren oft als Endboss. Sie spawnen nur in Patrouillenmissionen."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Was kann ich mit dem Ace Interceptor Helm machen?"},
|
||||||
|
{"role": "assistant", "content": "Der Ace Interceptor Helm ist ein hochgradig barterbarer Gegenstand, der bei Wikelo in Sammlungen gegen exklusive Belohnungen eingetauscht werden kann, z. B. seltene Waffen, spezielle Rüstungsets und hochwertige Schiffskomponenten."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Welche Tipps gibt es zum Bekämpfen von Ace-Piloten?"},
|
||||||
|
{"role": "assistant", "content": "Schalte das Ace-Schiff aus, bevor du die Mission abschließt. Sammle den Helm, bevor das Objektiv verschwindet. Ace-Piloten tragen häufig Scrips im Kernpanzer."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Was soll ich tun, wenn die Marker nach dem Eliminieren aller Feinde verschwinden?"},
|
||||||
|
{"role": "assistant", "content": "Bewege dein Schiff mindestens 25 km von der Bergbaustation entfernt. Ein neuer Marker weist dich zurück."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie kann ich meine Chancen auf Begegnungen mit Ace-Piloten erhöhen?"},
|
||||||
|
{"role": "assistant", "content": "Erhöhe deine Chancen bei Orange- und Rot-Stufen. Gründe diese Missionen nach dem Freischalten."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wo finde ich weitere Informationen zu Foxwell Enforcement?"},
|
||||||
|
{"role": "assistant", "content": "Weitere Informationen findest du in Quellen wie 'Foxwell Enforcement Deep Dive.mp3', 'Star Citizen Tools Wiki – Foxwell Enforcement' und den Referenzblättern von ChrisGBG."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie hoch ist der Payout in der Patrouillen-Mission 'Security Contractor Evaluation'?"},
|
||||||
|
{"role": "assistant", "content": "Der Payout in der Mission 'Security Contractor Evaluation' beträgt 20.000 aUEC."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie hoch ist der Payout in der Patrouillen-Mission 'Routine Patrol'?"},
|
||||||
|
{"role": "assistant", "content": "Der Payout in der Mission 'Routine Patrol' beträgt 30.000 aUEC."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie hoch ist der Payout in der Patrouillen-Mission 'Security Sweep'?"},
|
||||||
|
{"role": "assistant", "content": "Der Payout in der Mission 'Security Sweep' beträgt 50.000 aUEC."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie hoch ist der Payout in der Patrouillen-Mission 'Security Patrol'?"},
|
||||||
|
{"role": "assistant", "content": "Der Payout in der Mission 'Security Patrol' beträgt 74.000 aUEC."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie hoch ist der Payout in der Patrouillen-Mission 'Potential Security Threat'?"},
|
||||||
|
{"role": "assistant", "content": "Der Payout in der Mission 'Potential Security Threat' beträgt 135.000 aUEC."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie hoch ist der Payout in der Patrouillen-Mission 'High-Risk Security Patrol'?"},
|
||||||
|
{"role": "assistant", "content": "Der Payout in der Mission 'High-Risk Security Patrol' beträgt 200.000 aUEC."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie hoch ist der Payout in der Patrouillen-Mission 'Secure Threatened Space'?"},
|
||||||
|
{"role": "assistant", "content": "Der Payout in der Mission 'Secure Threatened Space' beträgt 350.000 aUEC."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie hoch ist der Payout in der Hinterhaltsmission 'Security Contractor Evaluation'?"},
|
||||||
|
{"role": "assistant", "content": "Der Payout in der Mission 'Security Contractor Evaluation' beträgt 20.000 aUEC."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie hoch ist der Payout in der Hinterhaltsmission 'Ambush an Amateur'?"},
|
||||||
|
{"role": "assistant", "content": "Der Payout in der Mission 'Ambush an Amateur' beträgt 20.000 aUEC."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie hoch ist der Payout in der Hinterhaltsmission 'Surprise Strike'?"},
|
||||||
|
{"role": "assistant", "content": "Der Payout in der Mission 'Surprise Strike' beträgt 30.000 aUEC."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie hoch ist der Payout in der Hinterhaltsmission 'Spring a Trap'?"},
|
||||||
|
{"role": "assistant", "content": "Der Payout in der Mission 'Spring a Trap' beträgt 40.000 aUEC."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie hoch ist der Payout in der Hinterhaltsmission 'Return the Favor'?"},
|
||||||
|
{"role": "assistant", "content": "Der Payout in der Mission 'Return the Favor' beträgt 75.000 aUEC."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie hoch ist der Payout in der Hinterhaltsmission 'Ambush Attack Squad'?"},
|
||||||
|
{"role": "assistant", "content": "Der Payout in der Mission 'Ambush Attack Squad' beträgt 120.000 aUEC."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie hoch ist der Payout in der Hinterhaltsmission 'Surprise Attack'?"},
|
||||||
|
{"role": "assistant", "content": "Der Payout in der Mission 'Surprise Attack' beträgt 200.000 aUEC."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie viele MG Scrips bekomme ich in der Patrouillen-Mission 'Security Contractor Evaluation'?"},
|
||||||
|
{"role": "assistant", "content": "In der Mission 'Security Contractor Evaluation' erhältst du 0 MG Scrips."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie viele MG Scrips bekomme ich in der Patrouillen-Mission 'Routine Patrol'?"},
|
||||||
|
{"role": "assistant", "content": "In der Mission 'Routine Patrol' erhältst du 2 MG Scrips."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie viele MG Scrips bekomme ich in der Patrouillen-Mission 'Security Sweep'?"},
|
||||||
|
{"role": "assistant", "content": "In der Mission 'Security Sweep' erhältst du 4 MG Scrips."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie viele MG Scrips bekomme ich in der Patrouillen-Mission 'Security Patrol'?"},
|
||||||
|
{"role": "assistant", "content": "In der Mission 'Security Patrol' erhältst du 8 MG Scrips."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie viele MG Scrips bekomme ich in der Patrouillen-Mission 'Potential Security Threat'?"},
|
||||||
|
{"role": "assistant", "content": "In der Mission 'Potential Security Threat' erhältst du 14 MG Scrips."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie viele MG Scrips bekomme ich in der Patrouillen-Mission 'High-Risk Security Patrol'?"},
|
||||||
|
{"role": "assistant", "content": "In der Mission 'High-Risk Security Patrol' erhältst du 18 MG Scrips."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie viele MG Scrips bekomme ich in der Patrouillen-Mission 'Secure Threatened Space'?"},
|
||||||
|
{"role": "assistant", "content": "In der Mission 'Secure Threatened Space' erhältst du 24 MG Scrips."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie viele MG Scrips bekomme ich in der Hinterhaltsmission 'Security Contractor Evaluation'?"},
|
||||||
|
{"role": "assistant", "content": "In der Mission 'Security Contractor Evaluation' erhältst du 0 MG Scrips."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie viele MG Scrips bekomme ich in der Hinterhaltsmission 'Ambush an Amateur'?"},
|
||||||
|
{"role": "assistant", "content": "In der Mission 'Ambush an Amateur' erhältst du 1 MG Scrip."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie viele MG Scrips bekomme ich in der Hinterhaltsmission 'Surprise Strike'?"},
|
||||||
|
{"role": "assistant", "content": "In der Mission 'Surprise Strike' erhältst du 3 MG Scrips."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie viele MG Scrips bekomme ich in der Hinterhaltsmission 'Spring a Trap'?"},
|
||||||
|
{"role": "assistant", "content": "In der Mission 'Spring a Trap' erhältst du 5 MG Scrips."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie viele MG Scrips bekomme ich in der Hinterhaltsmission 'Return the Favor'?"},
|
||||||
|
{"role": "assistant", "content": "In der Mission 'Return the Favor' erhältst du 8 MG Scrips."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie viele MG Scrips bekomme ich in der Hinterhaltsmission 'Ambush Attack Squad'?"},
|
||||||
|
{"role": "assistant", "content": "In der Mission 'Ambush Attack Squad' erhältst du 12 MG Scrips."},
|
||||||
|
|
||||||
|
{"role": "user", "content": "Wie viele MG Scrips bekomme ich in der Hinterhaltsmission 'Surprise Attack'?"},
|
||||||
|
{"role": "assistant", "content": "In der Mission 'Surprise Attack' erhältst du 16 MG Scrips."}
|
||||||
|
]
|
||||||
162
llm_training/ChatML_dataset/align_and_mine.jsonl
Normal file
162
llm_training/ChatML_dataset/align_and_mine.jsonl
Normal file
@@ -0,0 +1,162 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Was ist das Align & Mine Event?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Das Align & Mine Event ist ein hochriskantes Bergbau-Event in Star Citizen, bei dem Spieler zusammenarbeiten müssen, um einen Orbital-Mining-Laser zu aktivieren, der Zugang zu wertvollen unterirdischen Ressourcen freischaltet."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Welche Schlüsselanforderungen gibt es für das Align & Mine Event?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die Schlüsselanforderungen sind: Drei Satellitenschüsseln ausrichten, verschiedene Keycards sammeln, Batteriepacks sichern und Gegner abwehren (NPCs und andere Spieler)."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Was ist das Hauptziel des Align & Mine Events?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Das Hauptziel ist es, den Orbital-Mining-Laser zu aktivieren und wertvolle Ressourcen zu sichern."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Beschreibe den Mond Daymar."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Daymar ist ein felsiger, wüstenähnlicher Mond mit einer Stickstoff-Methan-Atmosphäre. Die Temperaturen liegen zwischen -40°C und 78°C."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Welche Ausrüstung wird für Daymar benötigt?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Für Daymar wird ein Standard-Raumanzug mit zusätzlichen Sauerstoffreserven benötigt."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Was sind die Punkte von Interesse auf Daymar?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die Punkte von Interesse auf Daymar sind Lamina und Attritus, jeweils mit drei PAF-Sites und einem OLP."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Beschreibe den POI Lamina auf Daymar."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Lamina ist ein POI auf Daymar mit drei PAF-Sites und einem OLP. Die Sublocations sind Lamina-PAF I, Lamina-PAF II, Lamina-PAF III und Lamina-OLP."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Beschreibe den Mond Aberdeen."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Aberdeen ist ein tödlich heißer Mond mit einer Schwefelatmosphäre. Die Temperaturen liegen zwischen 170°C und 237°C."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Welche Ausrüstung wird für Aberdeen benötigt?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Für Aberdeen wird ein Pembroke Exploration Suit mit hitzebeständiger Ausrüstung benötigt."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Was sind die Punkte von Interesse auf Aberdeen?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die Punkte von Interesse auf Aberdeen sind Ruptura und Vivere, jeweils mit drei PAF-Sites und einem OLP."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Beschreibe den POI Ruptura auf Aberdeen."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Ruptura ist ein POI auf Aberdeen mit drei PAF-Sites und einem OLP. Die Sublocations sind Ruptura-PAF I, Ruptura-PAF II, Ruptura-PAF III und Ruptura-OLP."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Was kann man nach dem Bergbau bei Wikelo's eintauschen?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Nach dem Bergbau können Ressourcen bei Wikelo's gegen spezielle Gegenstände wie Rüstungen und eine Polaris eingetauscht werden."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Welche Ausrüstung wird für das Align & Mine Event empfohlen?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Empfohlene Ausrüstung umfasst einen Standard-Raumanzug mit Sauerstoffreserven für Daymar und einen Pembroke Exploration Suit für Aberdeen, Waffen wie FS-9 LMG und Arclight Pistole, sowie Tools wie MaxLift Tractor Beam und MedGun."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Welche Schiffe werden für das Align & Mine Event empfohlen?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Empfohlene Schiffe sind der Avenger Titan für Solo-Spieler, die Cutlass Black für kleine Teams und die Valkyrie oder Carrack für Multi-Crew-Teams."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Was ist der erste Schritt im Align & Mine Event?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Der erste Schritt ist die Aktivierung der drei Satellitenschüsseln, die um den Orbital-Mining-Laser positioniert sind."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wie findet man die Keycards im Align & Mine Event?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die Keycards können bei toten NPCs/Wachen, in Schließfächern oder Kontrollräumen gefunden werden."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Was passiert nach der Aktivierung der Satellitenschüsseln?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Nach der Aktivierung öffnet sich eine Garagentür und gibt ein Batteriepack frei. Spieler müssen drei Batterien sammeln."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wie bringt man die Batteriepacks zum Orbital-Mining-Laser?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die drei Batteriepacks müssen zum Mining-Laser gebracht und mit den Power Banks verbunden werden."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Was ist der letzte Schritt im Align & Mine Event?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Der letzte Schritt ist das Betreten der Mine und das Sammeln von wertvollen Ressourcen."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Welche Tipps gibt es für das Align & Mine Event?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Tipps sind: Nutze einen Spotter für Valakkar-Bedrohungen, plane Rollenverteilung für Teamkoordination, sichere Batterien und Keycards vor Einbrüchen und suche nach mehreren Supervisor Access Cards für schnelleren Zugriff."
|
||||||
|
}
|
||||||
|
]
|
||||||
458
llm_training/ChatML_dataset/loot_table.jsonl
Normal file
458
llm_training/ChatML_dataset/loot_table.jsonl
Normal file
@@ -0,0 +1,458 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Woher bekommt man den Ace Interceptor Helmet?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Den Ace Interceptor Helmet erhältst du als Beute von gefallenen Ace-Piloten in den Foxwell Patrol Missionen oder Headhunters Patrol Missionen. Wichtig ist, dass es sich um einen Soft Death handeln muss, da der Ace-Pilot ansonsten verschwindet. Zudem kannst du ihn auch in braunen Lootkisten bei Align and Mine oder Stormbreaker finden (Sehr selten)."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wie bekommt man eine Advocacy Badge (Replica)?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die Advocacy Badge (Replica) findest du als Beute an den Security Posts rund um Kareah, in den Contested Zones oder an Standorten von Larzarus."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wo kann ich den Argo ATLS Ikti finden?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Den Argo ATLS Ikti erhältst du im Rahmen der Wikelo Mission: "Make ATLS shoot"."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wie kommt man an Atlasium?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Atlasium ist eine Handelsware. Du kannst es von Händlern erwerben. Weitere Informationen dazu, wo es verkauft wird, findest du unter folgendem Link: https://uexcorp.space/commodities/info/name/atlasium/tab/locations_selling/ ."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wo finde ich Carinite?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Carinite kannst du bei Align & Mine als Erz abbauen."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wie bekomme ich Carinite (Rein)?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Reines Carinite ist ein seltenes Erz, das du bei Align & Mine abbauen kannst. Es hat jedoch nur eine Drop-Chance von etwa 1%."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wo finde ich die DCHS-05 Comp-Board?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die DCHS-05 Orbital Positioning Comp-Board kannst du als Beute in der Ghost Arena in Ruin Station finden."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wo bekomme ich den Finley The Stormwall Large Plushie?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Den Finley The Stormwall Large Plushie kannst du im Orison August Dunlow Spaceport – Gift Shop oder im Cloudview Center – Stratus – Kel-To ConStore kaufen."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wie erhalte ich Government Cartography (Makellos)?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Government Cartography (Makellos) findest du als Beute von Ace-Piloten. Zusätzlich kannst du es in blauen Boxen bei Align & Mine und Storm Breaker Standorten sowie kleinen Boxen bei Derelict Outpost Standorten looten."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wo finde ich das Irradiated Kopion Horn?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Das Irradiated Kopion Horn erhältst du vom Irradiated Kopion rund um die Lazarus Komplexe."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wie bekomme ich den Irradiated Valakkar Fang (Erwachsen)?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Den Irradiated Valakkar Fang (Erwachsen) findest du bei erwachsenen Irradiated Valakkars rund um die Lazarus Komplexe."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wo finde ich den Irradiated Valakkar Fang (Juvenile)?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Den Irradiated Valakkar Fang (Juvenile) erhältst du von juvenilen Irradiated Valakkars rund um die Lazarus Komplexe."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wie bekomme ich die Irradiated Valakkar Pearl (Grad AAA)?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die Irradiated Valakkar Pearl (Grad AAA) findest du bei Apex-Irradiated Valakkars an Storm Breaker Lazarus Standorten. Ich bin mir jedoch nicht sicher, wie das Grad-System genau funktioniert."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wo finde ich Jaclium (Erz)?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Jaclium (Erz) kannst du bei Align & Mine abbauen."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wie bekomme ich Janalite?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Janalite ist ein seltenes FPS-minable Erz."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wo finde ich MG Scrip?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "MG Scrip erhältst du in Foxwell Patrol- oder Ambush-Missionen sowie bei Gilly's Combat Gauntlet Missionen."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wie bekomme ich einen Picoball?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Picoballs findest du als Beute in Aid Shelters, Outposts, Farro Datacenter, Larzarus oder Align & Mine Paf-Standorten. Beachte, dass sie nicht neu spawnen."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wie erhalte ich Polaris Bit?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Polaris Bits bekommst du, indem du 24x Quantanium abbaust und mit einem Schiff konvertierst. Dies kannst du in der Mission 'Want Polaris? Need something special' tun."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wo finde ich Saldynium (Erz)?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Saldynium (Erz) kannst du bei Align & Mine abbauen."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wie komme ich an die Scourge Railgun?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die Scourge Railgun findest du in roten Boxen in Bunkern oder großen grünen Boxen bei Align & Mine und Storm Breaker Standorten im Wartungsbereich."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wo bekomme ich den Tevarin War Service Marker (Makellos)?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Den Tevarin War Service Marker (Makellos) kannst du als Beute von Ace-Piloten erhalten. Zusätzlich findest du ihn in blauen Boxen bei Align & Mine und Storm Breaker Standorten sowie in kleinen Boxen bei Derelict Outpost Standorten."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wie erhalte ich die UEE 6th Platoon Medal (Makellos)?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die UEE 6th Platoon Medal (Makellos) findest du als Beute von Ace-Piloten. Zudem kannst du sie in blauen Boxen bei Align & Mine und Storm Breaker Standorten sowie in kleinen Boxen bei Derelict Outpost Standorten looten."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wie bekomme ich Wikelo Favor?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Wikelo Favor erhältst du, indem du einer der folgenden Ressourcen sammelst und in den jeweiligen Missionen eintauschst: 50x MG Scrip (Trade Merc Scrip for Favors?), 50x Council Scrip (Trade Council Scrip for Favors?), 50x Carinite (Turn Things to Favor) oder 15x Irradiated Valakkar Pearl (Trade Worm Parts for Favors?)."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wo finde ich die Wowblast Desperado Toy Pistol Red?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die Wowblast Desperado Toy Pistol Red ist allgemeine Beute und kann überall im Spiel gefunden werden."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wie erhalte ich den Xanthule Ascension Helmet?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Den Xanthule Ascension Helmet kannst du über eine Wikelo-Mission erhalten, in der die Basisversion in die Aufstiegsversion konvertiert wird. Zudem ist er auch im Pledge Store erhältlich."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wo bekomme ich den Xanthule Ascension Suit?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Den Xanthule Ascension Suit kannst du über eine Wikelo-Mission (Xi'an Xanthule Suit made better) erhalten, in der die Basisversion in die Aufstiegsversion konvertiert wird. Zudem ist er auch im Pledge Store erhältlich."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wie finde ich einen ASD Secure Drive?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Den ASD Secure Drive kannst du in den Onyx Facilities in Stanton bekommen als Missions Belohnung oder als seltenes Drop von NPCs erhalten."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wo bekomme ich Geist Armor?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Geist Armor findest du in orangenen Kisten in den ASD Onyx Facilities."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wie erhalte ich die Zenith Laser Sniper Rifle?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die Zenith Laser Sniper Rifle findest du in Waffenständern in den ASD Onyx Facilities."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wo finde ich die A03 Sniper Rifle (Mehrere Farben)?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die besten Spots für die A03 Sniper Rifle sind Jumptown Labs. Weitere gute Standorte sind Sakura Magnolia / Goldenrod und Bunkers. Die großen grünen Boxen mit scharfen Ecken enthalten Sniper aller Typen und Farben."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wie bekomme ich die P6-LR Sniper Rifle (Mehrere Farben)?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die besten Spots für die P6-LR Sniper Rifle sind Jumptown Labs. Weitere gute Standorte sind Sakura Magnolia / Goldenrod und Bunkers. Die großen grünen Boxen mit scharfen Ecken enthalten Sniper aller Typen und Farben."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wo finde ich die Arrowhead Sniper Rifle (Mehrere Farben)?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die besten Spots für die Arrowhead Sniper Rifle sind Sakura Magnolia / Goldenrod. Weitere gute Standorte sind Jumptown Labs und Bunkers. Lüftungsschächte rund um den Lobby-Bereich oben in den DCs sind besonders lohnenswert."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wie erhalte ich die Atzkav Sniper Rifle (Mehrere Farben)?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die besten Spots für die Atzkav Sniper Rifle sind Jumptown Labs. Weitere gute Standorte sind Sakura Magnolia / Goldenrod und Crusader Platforms. Die großen grünen Boxen mit scharfen Ecken enthalten Sniper aller Typen und Farben."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wo bekomme ich die Scalpel Sniper Rifle (Mehrere Farben)?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die besten Spots für die Scalpel Sniper Rifle sind Sakura Magnolia / Goldenrod. Weitere gute Standorte sind Bunkers. Lüftungsschächte rund um den Lobby-Bereich oben in den DCs sind besonders lohnenswert."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wie finde ich die S71 Rifle (Mehrere Farben)?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die besten Spots für die S71 Rifle sind Sakura Magnolia / Goldenrod. Weitere gute Standorte sind Remote Asteroid Bases und Bunkers. Lüftungsschächte rund um den Lobby-Bereich oben in den DCs sind besonders lohnenswert."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wo bekomme ich die Deadrig Shotgun?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die besten Spots für die Deadrig Shotgun sind Stanton Bunkers in roten Boxen. Weitere gute Standorte sind Headhunters & Outlaw CQC NPCs und OLP/PAF Medium Gun Boxes."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wie erhalte ich die Demeco LMG (Mehrere Farben)?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die besten Spots für die Demeco LMG sind Sakura Magnolia / Goldenrod. Weitere gute Standorte sind Bunkers. Lüftungsschächte rund um den Lobby-Bereich oben in den DCs sind besonders lohnenswert."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wo finde ich die F55 LMG (Mehrere Farben)?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die besten Spots für die F55 LMG sind Sakura Magnolia / Goldenrod. Weitere gute Standorte sind Bunkers. Lüftungsschächte rund um den Lobby-Bereich oben in den DCs sind besonders lohnenswert."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wie bekomme ich die FS-9 LMG (Mehrere Farben)?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die besten Spots für die FS-9 LMG sind Sakura Magnolia / Goldenrod. Weitere gute Standorte sind Bunkers. Lüftungsschächte rund um den Lobby-Bereich oben in den DCs sind besonders lohnenswert."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wo erhalte ich die GP-33 MOD Grenade Launcher (Mehrere Farben)?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die besten Spots für die GP-33 MOD Grenade Launcher sind Sakura Magnolia / Goldenrod. Weitere gute Standorte sind Jumptown Labs und Bunkers. Crusader Platforms hatten früher viele dieser Waffen, wurden jedoch kürzlich stark reduziert."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wie finde ich die Scourge Railgun (Mehrere Farben)?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die besten Spots für die Scourge Railgun sind Sakura Magnolia / Goldenrod. Weitere gute Standorte sind Bunkers. Lüftungsschächte rund um den Lobby-Bereich oben in den DCs sind besonders lohnenswert."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wo bekomme ich die Animus Missile Launcher?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die besten Spots für die Animus Missile Launcher sind Sakura Magnolia / Goldenrod. Weitere gute Standorte sind Bunkers. Lüftungsschächte rund um den Lobby-Bereich oben in den DCs sind besonders lohnenswert."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wie erhalte ich die NV-TAC LL Scopes (1-8x)?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die besten Spots für die NV-TAC LL Scopes sind Sakura Magnolia / Goldenrod. Weitere gute Standorte sind Contested Zones. Lüftungsschächte rund um den Lobby-Bereich oben in den DCs sind besonders lohnenswert."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wo finde ich die NV-TAC Scopes (1-8x)?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die besten Spots für die NV-TAC Scopes sind Sakura Magnolia / Goldenrod. Weitere gute Standorte sind Jumptown Labs und Remote Asteroid Bases."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wie bekomme ich Antium Base / Jet / Maroon / Sand / Storm?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die besten Spots für Antium sind die Lagerräume der Orbital Laser Platforms (OLPs) und die Sicherheitsräume der Planetary Alignment Facilities (PAFs)."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wo finde ich Antium Moss?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Antium Moss findest du ausschließlich im Supervisor Room der Orbital Laser Platforms (OLPs)."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wie erhalte ich Ana Armor Endro?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Ana Armor Endro kannst du nur über den Wikelo Trade erhalten."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wo bekomme ich Ana Armor Wao?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Ana Armor Wao ist nur im Pledge Store (Retired) erhältlich."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wie finde ich die Parallax \"Sanguine\" Energy Assault Rifle?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die besten Spots für die Parallax \"Sanguine\" Energy Assault Rifle sind die Sicherheitsräume der Planetary Alignment Facilities (PAFs) und der Supervisor Room der Orbital Laser Platforms."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wo bekomme ich die Parallax \"Sunstone\" Energy Assault Rifle?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die besten Spots für die Parallax \"Sunstone\" Energy Assault Rifle sind die Sicherheitsräume der Planetary Alignment Facilities (PAFs) und der Supervisor Room der Orbital Laser Platforms."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wie erhalte ich die Parallax \"Shock Trooper\" Energy Assault Rifle?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die Parallax \"Shock Trooper\" Energy Assault Rifle findest du ausschließlich im Supervisor Room der Orbital Laser Platforms (OLP)."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wo finde ich die Parallax Energy Assault Rifle (VOLT)?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die besten Spots für die Parallax Energy Assault Rifle (VOLT) sind die Sicherheitsräume der Planetary Alignment Facilities (PAFs) und der Supervisor Room der Orbital Laser Platforms."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wie bekomme ich die Parallax \"Downburst Camo\" Energy Assault Rifle?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die Parallax \"Downburst Camo\" Energy Assault Rifle ist nur im Pledge Store (Retired) erhältlich."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wo finde ich die Parallax \"Fun Kopion Skull\" Energy Assault Rifle?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die Parallax \"Fun Kopion Skull\" Energy Assault Rifle kannst du nur über den Wikelo Trade erhalten."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wie erhalte ich die Parallax \"Fun Kopion Tooth\" Energy Assault Rifle?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die Parallax \"Fun Kopion Tooth\" Energy Assault Rifle kannst du nur über den Wikelo Trade erhalten."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wo bekomme ich die Parallax \"Fun Military Skull\" Energy Assault Rifle?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die Parallax \"Fun Military Skull\" Energy Assault Rifle kannst du nur über den Wikelo Trade erhalten."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Wie finde ich die Parallax \"Fun Military Tooth\" Energy Assault Rifle?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": "Die Parallax \"Fun Military Tooth\" Energy Assault Rifle kannst du nur über den Wikelo Trade erhalten."
|
||||||
|
}
|
||||||
|
]
|
||||||
28
llm_training/deduplicate.py
Normal file
28
llm_training/deduplicate.py
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
import json, re
|
||||||
|
from pathlib import Path
|
||||||
|
from tqdm.auto import tqdm
|
||||||
|
|
||||||
|
def dedupe(input_file: Path, output_file: Path):
|
||||||
|
print(f"\n>>> Deduping {input_file}")
|
||||||
|
seen = set()
|
||||||
|
out_f = output_file.open("w", encoding="utf-8")
|
||||||
|
|
||||||
|
# Wir laden die Datei Zeile für Zeile (JSONL)
|
||||||
|
i = 0
|
||||||
|
with input_file.open("r", encoding="utf-8") as f:
|
||||||
|
for line in tqdm(f, desc="reading"):
|
||||||
|
msg = json.loads(line)
|
||||||
|
if msg["role"] != "user":
|
||||||
|
continue
|
||||||
|
|
||||||
|
key = re.sub(r"\s+", " ", msg["content"]).strip().lower()
|
||||||
|
if key not in seen:
|
||||||
|
seen.add(key)
|
||||||
|
out_f.write(json.dumps(msg, ensure_ascii=False) + "\n")
|
||||||
|
# nächster Zeile ist der entsprechende Assistant‑Message
|
||||||
|
next_line = f.readline()
|
||||||
|
if next_line:
|
||||||
|
out_f.write(next_line.rstrip("\n") + "\n")
|
||||||
|
|
||||||
|
out_f.close()
|
||||||
|
print(f"✅ {output_file} – {len(seen)} einzigartige User‑Phrasen.")
|
||||||
123
llm_training/paraphrase_chatml.py
Normal file
123
llm_training/paraphrase_chatml.py
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -------------------------------------------------------------
|
||||||
|
# paraphrase_batch.py
|
||||||
|
#
|
||||||
|
# Run it once per dataset and it will automatically iterate over
|
||||||
|
# the models you listed, writing a separate JSONL for each.
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# python paraphrase_batch.py --input refusal_questions.jsonl \
|
||||||
|
# --out-dir ./paraphrases
|
||||||
|
#
|
||||||
|
# -------------------------------------------------------------
|
||||||
|
import json, random, time
|
||||||
|
from pathlib import Path
|
||||||
|
import requests
|
||||||
|
from tqdm.auto import tqdm
|
||||||
|
|
||||||
|
# ---------- CONFIG ----------
|
||||||
|
API_URL = "http://10.0.0.193:123/v1"
|
||||||
|
|
||||||
|
PROMPT_TEMPLATE = (
|
||||||
|
"Paraphrasiere den folgenden Satz auf natürliche, menschliche Weise auf Deutsch.\n\n"
|
||||||
|
"Original:\n{text}\n\nParaphrase:"
|
||||||
|
)
|
||||||
|
|
||||||
|
MAX_TOKENS = 256
|
||||||
|
TEMPERATURE_RANGE = (0.45, 0.8) # per request
|
||||||
|
|
||||||
|
# ---------- MODEL LIST ----------
|
||||||
|
MODELS = [
|
||||||
|
("Qwen3-30B-A3B"),
|
||||||
|
("Mistral Small 3.2"),
|
||||||
|
("Gemma3-27B"),
|
||||||
|
("gpt-oss-20b")
|
||||||
|
]
|
||||||
|
|
||||||
|
# ---------- HELPERS ----------
|
||||||
|
def paraphrase_batch(texts, model_name, temperatures):
|
||||||
|
"""Send a batch of texts to the API and return list of paraphrases."""
|
||||||
|
payload = {
|
||||||
|
"model": model_name,
|
||||||
|
"prompt": [PROMPT_TEMPLATE.format(text=t) for t in texts],
|
||||||
|
"temperature": temperatures,
|
||||||
|
"max_tokens": MAX_TOKENS,
|
||||||
|
"n": 1
|
||||||
|
}
|
||||||
|
resp = requests.post(f"{API_URL}/completions", json=payload)
|
||||||
|
if resp.status_code != 200:
|
||||||
|
raise RuntimeError(f"API error {resp.status_code}: {resp.text}")
|
||||||
|
return [c["text"].strip() for c in resp.json()["choices"]]
|
||||||
|
|
||||||
|
# ---------- MAIN PARAPHRASE ----------
|
||||||
|
def process_model(model_name, output_path: Path, messages):
|
||||||
|
"""Paraphrase all *user* messages with a single model."""
|
||||||
|
out_f = output_path.open("w", encoding="utf-8")
|
||||||
|
|
||||||
|
i = 0
|
||||||
|
pbar = tqdm(total=len(messages)//2, desc=model_name)
|
||||||
|
|
||||||
|
while i < len(messages) - 1:
|
||||||
|
user_msg = messages[i]
|
||||||
|
assistant_msg= messages[i + 1]
|
||||||
|
|
||||||
|
# skip malformed pairs
|
||||||
|
if user_msg["role"] != "user" or assistant_msg["role"] != "assistant":
|
||||||
|
i += 1
|
||||||
|
continue
|
||||||
|
|
||||||
|
# write original pair once
|
||||||
|
out_f.write(json.dumps(user_msg, ensure_ascii=False) + "\n")
|
||||||
|
out_f.write(json.dumps(assistant_msg, ensure_ascii=False) + "\n")
|
||||||
|
|
||||||
|
# generate paraphrases for this question
|
||||||
|
n_variants = random.randint(3, 10)
|
||||||
|
texts = [user_msg["content"]] * n_variants
|
||||||
|
temps = [round(random.uniform(*TEMPERATURE_RANGE), 2) for _ in range(n_variants)]
|
||||||
|
|
||||||
|
try:
|
||||||
|
paraphrases = paraphrase_batch(texts, model_name, temps)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"\n⚠️ Fehler bei {user_msg['content']!r}: {e}")
|
||||||
|
# fallback: reuse original text
|
||||||
|
paraphrases = [user_msg["content"]] * n_variants
|
||||||
|
|
||||||
|
for p in paraphrases:
|
||||||
|
out_f.write(json.dumps({"role": "user", "content": p}, ensure_ascii=False) + "\n")
|
||||||
|
out_f.write(json.dumps(assistant_msg, ensure_ascii=False) + "\n")
|
||||||
|
|
||||||
|
i += 2
|
||||||
|
pbar.update(1)
|
||||||
|
time.sleep(0.05) # gentle rate‑limit
|
||||||
|
|
||||||
|
out_f.close()
|
||||||
|
print(f"✅ {output_path} fertig – {(len(messages)//2)*(1+n_variants)} Zeilen")
|
||||||
|
|
||||||
|
# ---------- MAIN ENTRY ----------
|
||||||
|
def main():
|
||||||
|
import argparse
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description="Generate paraphrases for a JSONL of user/assistant pairs using multiple models."
|
||||||
|
)
|
||||||
|
parser.add_argument("--input", type=Path, default="refusal_questions.jsonl",
|
||||||
|
help="Input file (JSON array of messages)")
|
||||||
|
parser.add_argument("--out-dir", type=Path, default="./paraphrases",
|
||||||
|
help="Directory to write the per‑model JSONL files")
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
# Ensure output directory exists
|
||||||
|
args.out_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
# Load all messages once – works for < 1 M lines comfortably
|
||||||
|
print(f"Loading {args.input} …")
|
||||||
|
with args.input.open("r", encoding="utf-8") as f:
|
||||||
|
messages = json.load(f) # expects a JSON array
|
||||||
|
|
||||||
|
# Iterate over the models automatically
|
||||||
|
for model_name in MODELS:
|
||||||
|
output_path = args.out_dir / f"{model_name}.jsonl"
|
||||||
|
process_model(model_name, output_path, messages)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
Reference in New Issue
Block a user