90 lines
3.7 KiB
Python
90 lines
3.7 KiB
Python
#!/usr/bin/env python3
|
|
"""Nomi delle tecnologie OGame (numerazione client attuale, verificata con report reali).
|
|
|
|
Gli id usati dalle API di gioco (v8+) differiscono dalla vecchia numerazione storica:
|
|
edifici: 1-4 miniere/centrale, 12 fusione, 14-15 fabbriche, 21 hangar, 22-24 depositi,
|
|
31 laboratorio, 33 terraformer, 34 deposito alleanza, 36 dock riparazioni,
|
|
41-43 base lunare/phalanx/salto, 44 silo
|
|
ricerca: 106 spionaggio, 108 computer, 109 armi, 110 scudi, 111 corazzatura, 113 energia,
|
|
114 iperspazio, 115 motore combustione, 117 motore impulso, 118 motore iperspazio,
|
|
120 laser, 121 ioni, 122 plasma, 123 rete ricerca, 124 astrofisica, 199 gravitoni
|
|
navi: 202-210 cargo/caccia/..., 212 satellite solare, 215 interceptor, 217 crawler,
|
|
218 reaper, 219 pathfinder
|
|
difese: 401-408 cannoni/cupole, 502-503 missili
|
|
"""
|
|
import json
|
|
from pathlib import Path
|
|
|
|
BASE_DIR = Path(__file__).resolve().parent
|
|
|
|
BUILDINGS = {
|
|
1: "Miniera di metallo", 2: "Miniera di cristallo", 3: "Sintetizzatore di deuterio",
|
|
4: "Centrale solare", 12: "Centrale a fusione", 14: "Fabbrica di robot",
|
|
15: "Fabbrica di naniti", 21: "Cantiere spaziale", 22: "Deposito di metallo",
|
|
23: "Deposito di cristallo", 24: "Serbatoio di deuterio", 31: "Laboratorio di ricerca",
|
|
33: "Terraformer", 34: "Deposito dell'alleanza", 36: "Dock di riparazione",
|
|
41: "Base lunare", 42: "Falanx sensoriale", 43: "Portale quantico", 44: "Silo missilistico",
|
|
}
|
|
|
|
RESEARCH = {
|
|
106: "Tecnologia spionaggio", 108: "Tecnologia informatica", 109: "Tecnologia delle armi",
|
|
110: "Tecnologia scudi", 111: "Tecnologia corazzatura", 113: "Tecnologia energetica",
|
|
114: "Tecnologia iperspazio", 115: "Motore a combustione", 117: "Motore a impulso",
|
|
118: "Motore iperspaziale", 120: "Tecnologia laser", 121: "Tecnologia ionica",
|
|
122: "Tecnologia al plasma", 123: "Rete di ricerca intergalattica",
|
|
124: "Astrofisica", 199: "Tecnologia gravitoni",
|
|
}
|
|
|
|
SHIPS = {
|
|
202: "Cargo leggero", 203: "Cargo pesante", 204: "Caccia leggero",
|
|
205: "Caccia pesante", 206: "Incrociatore", 207: "Nave da battaglia",
|
|
208: "Nave colonizzatrice", 209: "Riciclatore", 210: "Sonda di spionaggio",
|
|
211: "Bombardiere", 212: "Satellite solare", 213: "Corazzata",
|
|
214: "Morte Nera", 215: "Incrociatore da battaglia", 217: "Crawler", 218: "Reaper",
|
|
219: "Pathfinder",
|
|
}
|
|
|
|
DEFENSES = {
|
|
401: "Lanciamissili", 402: "Laser leggero", 403: "Laser pesante",
|
|
404: "Cannone Gauss", 405: "Cannone ionico", 406: "Cannone al plasma",
|
|
407: "Cupola protettiva piccola", 408: "Cupola protettiva grande",
|
|
502: "Missili anti-balistici", 503: "Missili interplanetari",
|
|
}
|
|
|
|
LF_BUILDINGS = {
|
|
11101: "Campo di coltivazione", 11102: "Centro di ricerca",
|
|
}
|
|
|
|
CATEGORY = {
|
|
"buildings": "Edifici", "lfbuildings": "Edifici Lifeform",
|
|
"research": "Ricerca", "ships": "Navi", "defense": "Difese",
|
|
}
|
|
|
|
|
|
def _localized_names():
|
|
"""Tenta di caricare i nomi localizzati dal server (per id non coperti qui)."""
|
|
try:
|
|
with open(BASE_DIR / "data" / "latest" / "localization.json", encoding="utf-8") as f:
|
|
lo = json.load(f)
|
|
return {i + 1: n for i, n in enumerate(lo.get("techs", {}).get("name", []))}
|
|
except Exception:
|
|
return {}
|
|
|
|
|
|
def item_name(category, tid):
|
|
tid = int(tid)
|
|
table = {"buildings": BUILDINGS, "research": RESEARCH,
|
|
"ships": SHIPS, "defense": DEFENSES}.get(category)
|
|
if table and tid in table:
|
|
return table[tid]
|
|
if category == "lfbuildings" and tid in LF_BUILDINGS:
|
|
return LF_BUILDINGS[tid]
|
|
loc = _localized_names()
|
|
if tid in loc:
|
|
return loc[tid]
|
|
return f"{CATEGORY.get(category, 'Elemento')} #{tid}"
|
|
|
|
|
|
def category_name(cat):
|
|
return CATEGORY.get(cat, cat)
|