METIN2 STATIC WIKI TEMPLATE — M2CITY EDITION R1.1 This is a standalone HTML/CSS/JavaScript viewer. It is not the original React application and needs no Node, npm, framework build, database or API key. Original wiki concept and supplied legacy catalogue: Lehel (credit preserved from the supplied React footer). Static edition and validation: M2City. QUICK START Extract the archive into a static HTTP(S) folder on your own web server. Open index.html in that HTTP(S) location. JavaScript modules and JSON fetches do not work reliably from file://. Do not disable browser security for this. For a local preview with an existing Python 3 installation, from the extracted folder run: python -m http.server 8080 --bind 127.0.0.1 Then open http://127.0.0.1:8080/ . This is a local preview, not production hosting. The same files work in a subdirectory without changing the URLs. DATA IS A LEGACY SAMPLE, NOT YOUR SERVER'S CONFIGURATION The 13 JSON catalogues are copied from the owner-supplied archive. Their fields, names, prices, rewards, probabilities and units are not authenticated against a Metin2 branch. The source contains corrupted names and placeholder names such as "dada". The viewer flags those names and does not guess replacements. VNUMs are displayed as supplied. A matching icon uses the exact supplied icon filename, with numeric zero-padding removed only for lookup. No fallback to a neighbouring VNUM is invented. Records without exact artwork show a placeholder. Monster VNUMs have a separate namespace; item icons are not assigned to monsters just because the numeric IDs happen to match. No monster artwork was established. Quests have no VNUM in the source. Their q-... catalogue keys are stable hashes of the source record, for navigation only; they are NOT game identifiers. The demo has noindex,nofollow to keep sample game data out of search results. Do not remove that notice until you have replaced and verified the data. CUSTOMISATION Edit config.json for the title, subtitle and optional community link. The viewer accepts only HTTP(S) community URLs without embedded credentials. Edit assets/data/.json using the existing field shapes. Keep IDs unique within each category. Names are UTF-8. Do not paste database credentials into any client-side file: every file in this template is public. After replacing data/icons, regenerate catalogue-meta.json with: python build_catalogue.py This uses Python 3 and Pillow for image decoding and lossless WebP thumbnails. Use an already available environment or install dependencies at your discretion. This build step is only needed when changing data/icons; serving the included prebuilt files has no Python/Pillow dependency. Retain assets/images/icons/ as original reference artwork. The browser uses only the smaller prebuilt assets/thumbs/ files. Original icon bytes are not modified. The metadata records category counts, quest keys, exact icon matches and known record routes. Rebuild it whenever the data changes. Item cross-references link only to VNUMs present in the supplied primary item records; unknown references remain text. The separate mob VNUM namespace is never used for item references. VALIDATION Run: python validate_release.py This checks all included file hashes, JSON counts/identities, exact local image references and catalogue metadata without a Metin2 client or server. Changing a file deliberately invalidates the release hash list; keep the original archive as an audit reference and version your changes. Use build_catalogue.py to regenerate metadata, and create your own new file-index.json for a new release. CHANGES FROM THE SUPPLIED REACT ARCHIVE - Replaced the legacy framework/build stack with a static viewer. - Stable hash URLs contain category + record identity, so reload and browser back/forward do not depend on in-memory navigation state. - Data/module/icon URLs resolve relative to the app, including subdirectories. - Category changes load the correct data; failed requests offer an explicit retry. - Search applies to the full category by name or VNUM before sorting/pagination. - Monster names sort as text; IDs/levels sort numerically; page bounds clamp. - Details expose drops, refinement materials, bonuses, quest rewards and source values. Unrecoverable sample names are flagged rather than silently replaced. - Exact artwork index avoids broken requests for icons not supplied. - Dynamic data is written with DOM text nodes, not interpreted as HTML. SCOPE AND RIGHTS No game integration, protocol migration, proto converter, server installation, gameplay balancing or in-game rendering was tested or claimed. The legacy proto_to_json converter is not included or represented as validated tooling. The owner explicitly confirmed public redistribution of the supplied archive. Exact upstream revision and a blanket open-source licence are not established. Original authors retain their rights. Preserve the Lehel credit and this notice; do not infer that all supplied data/artwork has been relicensed by M2City. See ORIGIN.txt, validation-report.json and file-index.json for provenance and the exact checks performed on this release.