├── client ├── src │ ├── App.css │ ├── vite-env.d.ts │ ├── UI │ │ ├── util │ │ │ ├── constants.ts │ │ │ ├── capn.ts │ │ │ └── string-table.ts │ │ ├── common │ │ │ ├── qrg.webp │ │ │ ├── qeynos.webp │ │ │ ├── qeynos2.webp │ │ │ ├── splash.ts │ │ │ ├── ui-bar.tsx │ │ │ └── ui-image.tsx │ │ ├── components │ │ │ ├── overlay.css │ │ │ ├── game │ │ │ │ ├── action-button │ │ │ │ │ └── item-tooltip.css │ │ │ │ ├── stone │ │ │ │ │ ├── middle │ │ │ │ │ │ ├── top │ │ │ │ │ │ │ └── stone-middle-top.tsx │ │ │ │ │ │ ├── slate-types.ts │ │ │ │ │ │ └── stone-chat.hooks.tsx │ │ │ │ │ └── right │ │ │ │ │ │ └── stone-target.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── inventory │ │ │ │ │ └── bags-container.tsx │ │ │ ├── login │ │ │ │ ├── util.ts │ │ │ │ └── index.tsx │ │ │ ├── overlay-types.tsx │ │ │ ├── context.tsx │ │ │ └── character-select │ │ │ │ └── races.tsx │ │ └── net │ │ │ └── instances.ts │ ├── components │ │ ├── images │ │ │ ├── dark.gif │ │ │ ├── midt.gif │ │ │ ├── leftt.gif │ │ │ ├── light.gif │ │ │ ├── rightt.gif │ │ │ ├── tab_l.png │ │ │ ├── tab_r.png │ │ │ ├── check_0.png │ │ │ ├── check_1.png │ │ │ ├── tab_up_l.png │ │ │ ├── tab_up_r.png │ │ │ ├── tab_up_t.png │ │ │ ├── tab_down_b.png │ │ │ ├── tab_down_l.png │ │ │ ├── tab_down_r.png │ │ │ ├── tab_down_t.png │ │ │ ├── button_big_up.png │ │ │ ├── super_fancy_b.png │ │ │ ├── super_fancy_bg.png │ │ │ ├── super_fancy_bl.png │ │ │ ├── super_fancy_br.png │ │ │ ├── super_fancy_l.png │ │ │ ├── super_fancy_r.png │ │ │ ├── super_fancy_t.png │ │ │ ├── super_fancy_tl.png │ │ │ ├── super_fancy_tr.png │ │ │ ├── button_big_down.png │ │ │ ├── button_big_hover.png │ │ │ ├── button_small_up.png │ │ │ ├── progress_bar_top.png │ │ │ ├── window_corner_bl.png │ │ │ ├── window_corner_br.png │ │ │ ├── window_corner_tl.png │ │ │ ├── window_corner_tr.png │ │ │ ├── button_small_down.png │ │ │ ├── button_small_hover.png │ │ │ ├── progress_bar_bottom.png │ │ │ ├── super_fancy_title.png │ │ │ ├── simple_window_corner_bl.png │ │ │ ├── simple_window_corner_br.png │ │ │ ├── simple_window_corner_tl.png │ │ │ └── simple_window_corner_tr.png │ │ ├── dialogs │ │ │ └── status-dialog.css │ │ └── home.module.css │ ├── Game │ │ ├── Net │ │ │ └── internal │ │ │ │ └── api │ │ │ │ └── capnp │ │ │ │ └── go.ts │ │ ├── Player │ │ │ ├── player-ability.ts │ │ │ ├── player-socials.ts │ │ │ └── player-combat.ts │ │ ├── Model │ │ │ ├── entity-types.ts │ │ │ └── bjs-texture-cache.ts │ │ ├── ChatCommands │ │ │ ├── command-parser.ts │ │ │ └── chat-message.ts │ │ ├── FileSystem │ │ │ └── filesystem.ts │ │ └── Zone │ │ │ └── zone-types.ts │ ├── Core │ │ └── ui.css │ ├── main.tsx │ └── auth.ts ├── public │ ├── favicon.ico │ ├── requiem.png │ ├── requiem │ │ └── bg1.png │ ├── textures │ │ ├── flare.png │ │ ├── wnd_bg_dark_rock.png │ │ └── wnd_bg_light_rock.png │ ├── brand │ │ ├── png │ │ │ ├── logo-black.png │ │ │ ├── logo-color.png │ │ │ ├── logo-white.png │ │ │ ├── logo-no-background.png │ │ │ └── logo-no-background-white.png │ │ └── fonts │ │ │ ├── Habibi Regular.ttf │ │ │ └── Montaga Regular.ttf │ ├── static │ │ ├── draco_encoder.wasm │ │ └── draco_decoder_gltf.wasm │ └── sky │ │ └── sunflowers_puresky_1k.exr ├── .gitignore ├── index.html ├── scripts │ ├── atlas.js │ └── upload-db.js ├── tsconfig.node.json ├── localhost.csr ├── localhost.crt └── README.md ├── server ├── internal │ ├── zone │ │ ├── npc │ │ │ └── npc-mods.go │ │ ├── zone-quests.go │ │ ├── client │ │ │ ├── client-inventory.go │ │ │ └── client-handler-registry.go │ │ ├── zone-player.go │ │ ├── interface │ │ │ ├── entity.go │ │ │ ├── client.go │ │ │ ├── zone-access.go │ │ │ └── npc.go │ │ └── zone-chat.go │ ├── .DS_Store │ ├── config │ │ └── eqgo_config_template.json │ ├── quest │ │ ├── zones │ │ │ ├── qeynos │ │ │ │ ├── main.go │ │ │ │ └── npc.go │ │ │ └── qeynos2 │ │ │ │ ├── main.go │ │ │ │ ├── zone.go │ │ │ │ └── npc.go │ │ ├── yaegi_wrappers │ │ │ └── github_com-knervous-eqgo-internal-quest-zones-qeynos.go │ │ └── registry │ │ │ ├── quest_bench_test.go │ │ │ └── quest-registry.go │ ├── db │ │ ├── jetgen │ │ │ └── eqgo │ │ │ │ └── model │ │ │ │ ├── profanity_list.go │ │ │ │ ├── db_version.go │ │ │ │ ├── saylink.go │ │ │ │ ├── gm_ips.go │ │ │ │ ├── name_filter.go │ │ │ │ ├── rule_sets.go │ │ │ │ ├── banned_ips.go │ │ │ │ ├── alternate_currency.go │ │ │ │ ├── damageshieldtypes.go │ │ │ │ ├── faction_list.go │ │ │ │ ├── keyring.go │ │ │ │ ├── account_rewards.go │ │ │ │ ├── inventory_versions.go │ │ │ │ ├── tasksets.go │ │ │ │ ├── zone_flags.go │ │ │ │ ├── character_pet_name.go │ │ │ │ ├── chatchannel_reserved_names.go │ │ │ │ ├── qs_player_npc_kill_record_entries.go │ │ │ │ ├── db_str.go │ │ │ │ ├── command_settings.go │ │ │ │ ├── level_exp_mods.go │ │ │ │ ├── login_server_list_types.go │ │ │ │ ├── books.go │ │ │ │ ├── grid_paths.go │ │ │ │ ├── instance_list_player.go │ │ │ │ ├── pets_equipmentset.go │ │ │ │ ├── player_titlesets.go │ │ │ │ ├── account_flags.go │ │ │ │ ├── guild_ranks.go │ │ │ │ ├── aa_rank_prereqs.go │ │ │ │ ├── character_auras.go │ │ │ │ ├── character_inspect_messages.go │ │ │ │ ├── npc_spells_effects.go │ │ │ │ ├── character_skills.go │ │ │ │ ├── character_spells.go │ │ │ │ ├── content_flags.go │ │ │ │ ├── eqtime.go │ │ │ │ ├── guild_relations.go │ │ │ │ ├── ip_exemptions.go │ │ │ │ ├── char_recipe_list.go │ │ │ │ ├── character_languages.go │ │ │ │ ├── dynamic_zone_members.go │ │ │ │ ├── npc_emotes.go │ │ │ │ ├── spawn_condition_values.go │ │ │ │ ├── spell_globals.go │ │ │ │ ├── character_disciplines.go │ │ │ │ ├── faction_list_mod.go │ │ │ │ ├── guild_permissions.go │ │ │ │ ├── pets_equipmentset_entries.go │ │ │ │ ├── reports.go │ │ │ │ ├── spawn2_disabled.go │ │ │ │ ├── account_ip.go │ │ │ │ ├── character_memmed_spells.go │ │ │ │ ├── qs_player_aa_rate_hourly.go │ │ │ │ ├── character_alt_currency.go │ │ │ │ ├── character_item_recast.go │ │ │ │ ├── rule_values.go │ │ │ │ ├── chatchannels.go │ │ │ │ ├── friends.go │ │ │ │ ├── respawn_times.go │ │ │ │ ├── timers.go │ │ │ │ ├── discovered_items.go │ │ │ │ ├── skill_caps.go │ │ │ │ ├── spell_buckets.go │ │ │ │ ├── character_potionbelt.go │ │ │ │ ├── faction_values.go │ │ │ │ ├── graveyard.go │ │ │ │ ├── npc_faction.go │ │ │ │ ├── qs_player_events.go │ │ │ │ ├── aa_rank_effects.go │ │ │ │ ├── character_alternate_abilities.go │ │ │ │ ├── character_pet_inventory.go │ │ │ │ ├── spawn_conditions.go │ │ │ │ ├── tool_gearup_armor_sets.go │ │ │ │ ├── tool_game_objects.go │ │ │ │ ├── command_subsettings.go │ │ │ │ ├── item_instances.go │ │ │ │ ├── npc_faction_entries.go │ │ │ │ ├── variables.go │ │ │ │ ├── mail.go │ │ │ │ ├── qs_player_npc_kill_record.go │ │ │ │ ├── character_activities.go │ │ │ │ ├── character_material.go │ │ │ │ ├── group_id.go │ │ │ │ ├── buyer_trade_items.go │ │ │ │ ├── discord_webhooks.go │ │ │ │ ├── faction_base_data.go │ │ │ │ ├── loottable_entries.go │ │ │ │ ├── qs_player_delete_record.go │ │ │ │ ├── trader_audit.go │ │ │ │ ├── horses.go │ │ │ │ ├── quest_globals.go │ │ │ │ ├── login_api_tokens.go │ │ │ │ ├── lootdrop.go │ │ │ │ ├── pets_beastlord_data.go │ │ │ │ ├── guild_tributes.go │ │ │ │ ├── player_event_log_settings.go │ │ │ │ ├── character_exp_modifiers.go │ │ │ │ ├── instance_list.go │ │ │ │ ├── pets.go │ │ │ │ ├── buyer_buy_lines.go │ │ │ │ ├── character_bandolier.go │ │ │ │ ├── player_event_aa_purchase.go │ │ │ │ ├── qs_player_delete_record_entries.go │ │ │ │ ├── character_bind.go │ │ │ │ ├── character_pet_info.go │ │ │ │ ├── raid_leaders.go │ │ │ │ ├── guilds.go │ │ │ │ ├── lfguild.go │ │ │ │ ├── qs_merchant_transaction_record_entries.go │ │ │ │ ├── auras.go │ │ │ │ ├── qs_player_move_record_entries.go │ │ │ │ ├── tradeskill_recipe_entries.go │ │ │ │ ├── base_data.go │ │ │ │ ├── merchantlist_temp.go │ │ │ │ ├── char_create_combinations.go │ │ │ │ ├── group_leaders.go │ │ │ │ ├── dynamic_zone_lockouts.go │ │ │ │ ├── qs_player_move_record.go │ │ │ │ ├── data_buckets.go │ │ │ │ ├── player_event_speech.go │ │ │ │ ├── qs_player_handin_record_entries.go │ │ │ │ ├── qs_player_speech.go │ │ │ │ ├── logsys_categories.go │ │ │ │ ├── guild_members.go │ │ │ │ ├── npc_spells_effects_entries.go │ │ │ │ ├── qs_player_trade_record_entries.go │ │ │ │ ├── items_evolving_details.go │ │ │ │ ├── character_parcels_containers.go │ │ │ │ ├── bugs.go │ │ │ │ ├── buyer.go │ │ │ │ ├── character_instance_safereturns.go │ │ │ │ ├── forage.go │ │ │ │ ├── character_expedition_lockouts.go │ │ │ │ ├── spawn_events.go │ │ │ │ ├── loottable.go │ │ │ │ ├── spawngroup.go │ │ │ │ ├── login_accounts.go │ │ │ │ ├── login_server_admins.go │ │ │ │ ├── object_contents.go │ │ │ │ ├── character_inventory.go │ │ │ │ ├── character_pet_buffs.go │ │ │ │ ├── player_event_killed_npc.go │ │ │ │ ├── aa_ranks.go │ │ │ │ ├── player_event_killed_raid_npc.go │ │ │ │ ├── spawnentry.go │ │ │ │ ├── fishing.go │ │ │ │ ├── player_event_killed_named_npc.go │ │ │ │ ├── char_create_point_allocations.go │ │ │ │ ├── character_parcels.go │ │ │ │ ├── raid_members.go │ │ │ │ ├── player_event_loot_items.go │ │ │ │ ├── player_event_trade.go │ │ │ │ ├── titles.go │ │ │ │ ├── qs_player_trade_record.go │ │ │ │ ├── login_world_servers.go │ │ │ │ ├── petitions.go │ │ │ │ ├── faction_association.go │ │ │ │ ├── qs_player_handin_record.go │ │ │ │ ├── guild_bank.go │ │ │ │ ├── aa_ability.go │ │ │ │ ├── player_event_logs.go │ │ │ │ ├── player_event_npc_handin.go │ │ │ │ ├── raid_details.go │ │ │ │ ├── character_buffs.go │ │ │ │ ├── qs_merchant_transaction_record.go │ │ │ │ ├── player_event_merchant_sell.go │ │ │ │ ├── player_event_merchant_purchase.go │ │ │ │ ├── character_corpse_items.go │ │ │ │ ├── sharedbank.go │ │ │ │ ├── player_event_trade_entries.go │ │ │ │ ├── lootdrop_entries.go │ │ │ │ ├── tradeskill_recipe.go │ │ │ │ ├── inventory.go │ │ │ │ ├── npc_spells_entries.go │ │ │ │ ├── blocked_spells.go │ │ │ │ ├── server_scheduled_events.go │ │ │ │ ├── global_loot.go │ │ │ │ ├── player_event_npc_handin_entries.go │ │ │ │ ├── merc_buffs.go │ │ │ │ ├── character_currency.go │ │ │ │ ├── trader.go │ │ │ │ ├── inventory_snapshots.go │ │ │ │ ├── merchantlist.go │ │ │ │ ├── spawn2.go │ │ │ │ ├── ground_spawns.go │ │ │ │ ├── starting_items.go │ │ │ │ ├── dynamic_zone_templates.go │ │ │ │ ├── npc_spells.go │ │ │ │ ├── npc_types_tint.go │ │ │ │ ├── start_zones.go │ │ │ │ ├── mercs.go │ │ │ │ ├── dynamic_zones.go │ │ │ │ ├── traps.go │ │ │ │ ├── zone_points.go │ │ │ │ ├── task_activities.go │ │ │ │ ├── account.go │ │ │ │ ├── tasks.go │ │ │ │ ├── zone_state_spawns.go │ │ │ │ ├── object.go │ │ │ │ └── bug_reports.go │ │ ├── instance.go │ │ └── zone │ │ │ ├── zone.go │ │ │ └── zone-points.go │ ├── api │ │ └── capnp │ │ │ ├── go.capnp.go │ │ │ ├── world.capnp │ │ │ ├── go.capnp │ │ │ └── util.go │ └── navigation │ │ └── navigation.go ├── daemon ├── server ├── .gitignore ├── maps │ └── qeynos2.bin └── cmd │ ├── races │ └── main.go │ └── jetgen │ └── main.go ├── .prettierrc ├── .gitignore ├── tsconfig.json └── .vscode └── settings.json /client/src/App.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | } -------------------------------------------------------------------------------- /server/internal/zone/npc/npc-mods.go: -------------------------------------------------------------------------------- 1 | package npc 2 | -------------------------------------------------------------------------------- /server/internal/zone/zone-quests.go: -------------------------------------------------------------------------------- 1 | package zone 2 | -------------------------------------------------------------------------------- /client/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /server/internal/zone/client/client-inventory.go: -------------------------------------------------------------------------------- 1 | package client 2 | -------------------------------------------------------------------------------- /server/daemon: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/server/daemon -------------------------------------------------------------------------------- /server/server: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/server/server -------------------------------------------------------------------------------- /client/src/UI/util/constants.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | export const inEditor = 'ipc' in window; 4 | -------------------------------------------------------------------------------- /server/.gitignore: -------------------------------------------------------------------------------- 1 | server 2 | server.log 3 | server.pid 4 | discord.txt 5 | eqgo_config.json 6 | key.pem -------------------------------------------------------------------------------- /server/maps/qeynos2.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/server/maps/qeynos2.bin -------------------------------------------------------------------------------- /client/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/public/favicon.ico -------------------------------------------------------------------------------- /client/public/requiem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/public/requiem.png -------------------------------------------------------------------------------- /server/internal/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/server/internal/.DS_Store -------------------------------------------------------------------------------- /client/public/requiem/bg1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/public/requiem/bg1.png -------------------------------------------------------------------------------- /client/src/UI/common/qrg.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/UI/common/qrg.webp -------------------------------------------------------------------------------- /client/public/textures/flare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/public/textures/flare.png -------------------------------------------------------------------------------- /client/src/UI/common/qeynos.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/UI/common/qeynos.webp -------------------------------------------------------------------------------- /client/src/UI/components/overlay.css: -------------------------------------------------------------------------------- 1 | .requiem-ui { 2 | font-family: Arial, Helvetica, sans-serif !important; 3 | } -------------------------------------------------------------------------------- /client/src/UI/common/qeynos2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/UI/common/qeynos2.webp -------------------------------------------------------------------------------- /client/src/UI/net/instances.ts: -------------------------------------------------------------------------------- 1 | import { EqSocket } from "./eq-socket"; 2 | 3 | export const WorldSocket = new EqSocket(); 4 | -------------------------------------------------------------------------------- /client/src/components/images/dark.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/dark.gif -------------------------------------------------------------------------------- /client/src/components/images/midt.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/midt.gif -------------------------------------------------------------------------------- /client/public/brand/png/logo-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/public/brand/png/logo-black.png -------------------------------------------------------------------------------- /client/public/brand/png/logo-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/public/brand/png/logo-color.png -------------------------------------------------------------------------------- /client/public/brand/png/logo-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/public/brand/png/logo-white.png -------------------------------------------------------------------------------- /client/public/static/draco_encoder.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/public/static/draco_encoder.wasm -------------------------------------------------------------------------------- /client/src/components/images/leftt.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/leftt.gif -------------------------------------------------------------------------------- /client/src/components/images/light.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/light.gif -------------------------------------------------------------------------------- /client/src/components/images/rightt.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/rightt.gif -------------------------------------------------------------------------------- /client/src/components/images/tab_l.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/tab_l.png -------------------------------------------------------------------------------- /client/src/components/images/tab_r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/tab_r.png -------------------------------------------------------------------------------- /client/src/components/images/check_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/check_0.png -------------------------------------------------------------------------------- /client/src/components/images/check_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/check_1.png -------------------------------------------------------------------------------- /client/src/components/images/tab_up_l.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/tab_up_l.png -------------------------------------------------------------------------------- /client/src/components/images/tab_up_r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/tab_up_r.png -------------------------------------------------------------------------------- /client/src/components/images/tab_up_t.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/tab_up_t.png -------------------------------------------------------------------------------- /client/public/brand/fonts/Habibi Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/public/brand/fonts/Habibi Regular.ttf -------------------------------------------------------------------------------- /client/public/sky/sunflowers_puresky_1k.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/public/sky/sunflowers_puresky_1k.exr -------------------------------------------------------------------------------- /client/public/static/draco_decoder_gltf.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/public/static/draco_decoder_gltf.wasm -------------------------------------------------------------------------------- /client/public/textures/wnd_bg_dark_rock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/public/textures/wnd_bg_dark_rock.png -------------------------------------------------------------------------------- /client/public/textures/wnd_bg_light_rock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/public/textures/wnd_bg_light_rock.png -------------------------------------------------------------------------------- /client/src/components/images/tab_down_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/tab_down_b.png -------------------------------------------------------------------------------- /client/src/components/images/tab_down_l.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/tab_down_l.png -------------------------------------------------------------------------------- /client/src/components/images/tab_down_r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/tab_down_r.png -------------------------------------------------------------------------------- /client/src/components/images/tab_down_t.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/tab_down_t.png -------------------------------------------------------------------------------- /client/public/brand/fonts/Montaga Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/public/brand/fonts/Montaga Regular.ttf -------------------------------------------------------------------------------- /client/public/brand/png/logo-no-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/public/brand/png/logo-no-background.png -------------------------------------------------------------------------------- /client/src/components/images/button_big_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/button_big_up.png -------------------------------------------------------------------------------- /client/src/components/images/super_fancy_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/super_fancy_b.png -------------------------------------------------------------------------------- /client/src/components/images/super_fancy_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/super_fancy_bg.png -------------------------------------------------------------------------------- /client/src/components/images/super_fancy_bl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/super_fancy_bl.png -------------------------------------------------------------------------------- /client/src/components/images/super_fancy_br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/super_fancy_br.png -------------------------------------------------------------------------------- /client/src/components/images/super_fancy_l.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/super_fancy_l.png -------------------------------------------------------------------------------- /client/src/components/images/super_fancy_r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/super_fancy_r.png -------------------------------------------------------------------------------- /client/src/components/images/super_fancy_t.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/super_fancy_t.png -------------------------------------------------------------------------------- /client/src/components/images/super_fancy_tl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/super_fancy_tl.png -------------------------------------------------------------------------------- /client/src/components/images/super_fancy_tr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/super_fancy_tr.png -------------------------------------------------------------------------------- /client/src/components/images/button_big_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/button_big_down.png -------------------------------------------------------------------------------- /client/src/components/images/button_big_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/button_big_hover.png -------------------------------------------------------------------------------- /client/src/components/images/button_small_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/button_small_up.png -------------------------------------------------------------------------------- /client/src/components/images/progress_bar_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/progress_bar_top.png -------------------------------------------------------------------------------- /client/src/components/images/window_corner_bl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/window_corner_bl.png -------------------------------------------------------------------------------- /client/src/components/images/window_corner_br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/window_corner_br.png -------------------------------------------------------------------------------- /client/src/components/images/window_corner_tl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/window_corner_tl.png -------------------------------------------------------------------------------- /client/src/components/images/window_corner_tr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/window_corner_tr.png -------------------------------------------------------------------------------- /client/public/brand/png/logo-no-background-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/public/brand/png/logo-no-background-white.png -------------------------------------------------------------------------------- /client/src/components/images/button_small_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/button_small_down.png -------------------------------------------------------------------------------- /client/src/components/images/button_small_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/button_small_hover.png -------------------------------------------------------------------------------- /client/src/components/images/progress_bar_bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/progress_bar_bottom.png -------------------------------------------------------------------------------- /client/src/components/images/super_fancy_title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/super_fancy_title.png -------------------------------------------------------------------------------- /client/src/components/images/simple_window_corner_bl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/simple_window_corner_bl.png -------------------------------------------------------------------------------- /client/src/components/images/simple_window_corner_br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/simple_window_corner_br.png -------------------------------------------------------------------------------- /client/src/components/images/simple_window_corner_tl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/simple_window_corner_tl.png -------------------------------------------------------------------------------- /client/src/components/images/simple_window_corner_tr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/knervous/eqrequiem/HEAD/client/src/components/images/simple_window_corner_tr.png -------------------------------------------------------------------------------- /client/src/components/dialogs/status-dialog.css: -------------------------------------------------------------------------------- 1 | .chrome-flags { 2 | background-image: url('./persistent-filesystem.png'); 3 | height: 300px; 4 | background-size: cover; 5 | } -------------------------------------------------------------------------------- /client/src/Game/Net/internal/api/capnp/go.ts: -------------------------------------------------------------------------------- 1 | // This file has been automatically generated by capnp-es. 2 | import * as $ from "capnp-es"; 3 | export const _capnpFileId = BigInt("0xd12a1c51fedd6c88"); 4 | -------------------------------------------------------------------------------- /client/src/UI/util/capn.ts: -------------------------------------------------------------------------------- 1 | import * as $ from "capnp-es"; 2 | 3 | 4 | export const copyCapn = (obj: T) : T => { 5 | const newObj = {} as T; 6 | 7 | return newObj; 8 | }; 9 | 10 | -------------------------------------------------------------------------------- /client/src/Core/ui.css: -------------------------------------------------------------------------------- 1 | #requiem-ui { 2 | position: fixed; 3 | z-index:100; 4 | } 5 | 6 | #embed-host { 7 | z-index: 100000 !important; 8 | * { 9 | z-index: 100000 !important; 10 | } 11 | } -------------------------------------------------------------------------------- /server/internal/config/eqgo_config_template.json: -------------------------------------------------------------------------------- 1 | { 2 | "db_host": "127.0.0.1", 3 | "db_port": 3306, 4 | "db_user": "root", 5 | "db_pass": "", 6 | "local": true, 7 | "localQuests": true, 8 | "gracePeriod": 0 9 | } -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "tabWidth": 2, 3 | "useTabs": false, 4 | "semi": true, 5 | "trailingComma": "all", 6 | "arrowParens": "always", 7 | "bracketSpacing": true, 8 | "printWidth": 80, 9 | "singleQuote": false 10 | } -------------------------------------------------------------------------------- /client/src/UI/components/game/action-button/item-tooltip.css: -------------------------------------------------------------------------------- 1 | .item-tooltip { 2 | border-radius: 5px; 3 | border-width: 2px; 4 | border-style: solid; 5 | border-color: rgb(180, 173, 134) rgb(142, 134, 107) rgb(61, 58, 48) 6 | rgb(177, 170, 142); 7 | } 8 | -------------------------------------------------------------------------------- /server/internal/quest/zones/qeynos/main.go: -------------------------------------------------------------------------------- 1 | package qeynos 2 | 3 | import "github.com/knervous/eqgo/internal/quest" 4 | 5 | func RegisterZone() *quest.ZoneQuestInterface { 6 | zq := &quest.ZoneQuestInterface{} 7 | registerNpcQuests(zq) 8 | return zq 9 | } 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | keys/ 2 | serverconfig/ 3 | items.dat 4 | 5 | # Imported translations (automatically generated from CSV files) 6 | *.translation 7 | 8 | node_modules/ 9 | 10 | *.DS_Store 11 | # Mono-specific ignores 12 | .mono/ 13 | data_*/ 14 | mono_crash.*.json 15 | .vercel 16 | 17 | *.sql.gz -------------------------------------------------------------------------------- /server/internal/quest/zones/qeynos2/main.go: -------------------------------------------------------------------------------- 1 | package qeynos2 2 | 3 | import "github.com/knervous/eqgo/internal/quest" 4 | 5 | func RegisterZone() *quest.ZoneQuestInterface { 6 | zq := &quest.ZoneQuestInterface{} 7 | registerNpcQuests(zq) 8 | registerZoneQuests(zq) 9 | return zq 10 | } 11 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/profanity_list.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type ProfanityList struct { 11 | Word string 12 | } 13 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/db_version.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type DbVersion struct { 11 | Version *int32 12 | BotsVersion *int32 13 | } 14 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/saylink.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Saylink struct { 11 | ID int32 `sql:"primary_key"` 12 | Phrase string 13 | } 14 | -------------------------------------------------------------------------------- /client/src/components/home.module.css: -------------------------------------------------------------------------------- 1 | .app { 2 | text-align: center; 3 | width: 100vw; 4 | height: 100vh; 5 | 6 | background-repeat: unset; 7 | overflow: hidden; 8 | background: #123148; 9 | } 10 | 11 | #root, 12 | .dashboard-content, 13 | .main-content { 14 | overflow: hidden; 15 | } 16 | html, 17 | body { 18 | overflow: hidden; 19 | } -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/gm_ips.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type GmIps struct { 11 | Name string 12 | AccountID int32 13 | IPAddress string 14 | } 15 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/name_filter.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type NameFilter struct { 11 | ID int32 `sql:"primary_key"` 12 | Name string 13 | } 14 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/rule_sets.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type RuleSets struct { 11 | RulesetID uint8 `sql:"primary_key"` 12 | Name string 13 | } 14 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/banned_ips.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type BannedIps struct { 11 | IPAddress string `sql:"primary_key"` 12 | Notes *string 13 | } 14 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/alternate_currency.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type AlternateCurrency struct { 11 | ID int32 `sql:"primary_key"` 12 | ItemID int32 13 | } 14 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/damageshieldtypes.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Damageshieldtypes struct { 11 | Spellid uint32 `sql:"primary_key"` 12 | Type uint8 13 | } 14 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/faction_list.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type FactionList struct { 11 | ID int32 `sql:"primary_key"` 12 | Name string 13 | Base int16 14 | } 15 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/keyring.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Keyring struct { 11 | ID uint32 `sql:"primary_key"` 12 | CharID int32 13 | ItemID int32 14 | } 15 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/account_rewards.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type AccountRewards struct { 11 | AccountID uint32 12 | RewardID uint32 13 | Amount uint32 14 | } 15 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/inventory_versions.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type InventoryVersions struct { 11 | Version uint32 12 | Step uint32 13 | BotStep uint32 14 | } 15 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/tasksets.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Tasksets struct { 11 | ID uint32 `sql:"primary_key"` 12 | Taskid uint32 `sql:"primary_key"` 13 | } 14 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/zone_flags.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type ZoneFlags struct { 11 | CharID int32 `sql:"primary_key"` 12 | ZoneID int32 `sql:"primary_key"` 13 | } 14 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/character_pet_name.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type CharacterPetName struct { 11 | CharacterID int32 `sql:"primary_key"` 12 | Name string 13 | } 14 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/chatchannel_reserved_names.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type ChatchannelReservedNames struct { 11 | ID int32 `sql:"primary_key"` 12 | Name string 13 | } 14 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/qs_player_npc_kill_record_entries.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type QsPlayerNpcKillRecordEntries struct { 11 | EventID *int32 12 | CharID *int32 13 | } 14 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/db_str.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type DbStr struct { 11 | ID int32 `sql:"primary_key"` 12 | Type int32 `sql:"primary_key"` 13 | Value string 14 | } 15 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/command_settings.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type CommandSettings struct { 11 | Command string `sql:"primary_key"` 12 | Access int32 13 | Aliases string 14 | } 15 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/level_exp_mods.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type LevelExpMods struct { 11 | Level int32 `sql:"primary_key"` 12 | ExpMod *float64 13 | AaExpMod *float64 14 | } 15 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/login_server_list_types.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type LoginServerListTypes struct { 11 | ID uint32 `sql:"primary_key"` 12 | Description string 13 | } 14 | -------------------------------------------------------------------------------- /client/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | .vercel 26 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/books.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Books struct { 11 | ID int32 `sql:"primary_key"` 12 | Name string 13 | Txtfile string 14 | Language int32 15 | } 16 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/grid_paths.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type GridPaths struct { 11 | Zoneid int32 `sql:"primary_key"` 12 | Gridid int32 `sql:"primary_key"` 13 | Points string 14 | } 15 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/instance_list_player.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type InstanceListPlayer struct { 11 | ID uint32 `sql:"primary_key"` 12 | Charid uint32 `sql:"primary_key"` 13 | } 14 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/pets_equipmentset.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type PetsEquipmentset struct { 11 | SetID int32 `sql:"primary_key"` 12 | Setname string 13 | NestedSet int32 14 | } 15 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/player_titlesets.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type PlayerTitlesets struct { 11 | ID uint32 `sql:"primary_key"` 12 | CharID uint32 13 | TitleSet uint32 14 | } 15 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/account_flags.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type AccountFlags struct { 11 | PAccid uint32 `sql:"primary_key"` 12 | PFlag string `sql:"primary_key"` 13 | PValue string 14 | } 15 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/guild_ranks.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type GuildRanks struct { 11 | GuildID uint32 `sql:"primary_key"` 12 | Rank uint8 `sql:"primary_key"` 13 | Title string 14 | } 15 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/aa_rank_prereqs.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type AaRankPrereqs struct { 11 | RankID uint32 `sql:"primary_key"` 12 | AaID int32 `sql:"primary_key"` 13 | Points int32 14 | } 15 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/character_auras.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type CharacterAuras struct { 11 | ID int32 `sql:"primary_key"` 12 | Slot int8 `sql:"primary_key"` 13 | SpellID int32 14 | } 15 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/character_inspect_messages.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type CharacterInspectMessages struct { 11 | ID uint32 `sql:"primary_key"` 12 | InspectMessage string 13 | } 14 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/npc_spells_effects.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type NpcSpellsEffects struct { 11 | ID uint32 `sql:"primary_key"` 12 | Name string 13 | ParentList uint32 14 | } 15 | -------------------------------------------------------------------------------- /client/src/UI/components/login/util.ts: -------------------------------------------------------------------------------- 1 | export const DISCORD_CLIENT_ID = "1354327280532459582"; 2 | export const url = import.meta.env.DEV ? "https://localhost:3500/login" : "https://eqrequiem.com/login"; 3 | export const REDIRECT_URI = encodeURIComponent(url); // your registered callback URL 4 | export const RESPONSE_TYPE = "code"; 5 | export const SCOPE = encodeURIComponent("identify"); // add or remove scopes as needed -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/character_skills.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type CharacterSkills struct { 11 | ID uint32 `sql:"primary_key"` 12 | SkillID uint16 `sql:"primary_key"` 13 | Value uint16 14 | } 15 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/character_spells.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type CharacterSpells struct { 11 | ID uint32 `sql:"primary_key"` 12 | SlotID uint16 `sql:"primary_key"` 13 | SpellID uint16 14 | } 15 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/content_flags.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type ContentFlags struct { 11 | ID int32 `sql:"primary_key"` 12 | FlagName *string 13 | Enabled *int8 14 | Notes *string 15 | } 16 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/eqtime.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Eqtime struct { 11 | Minute int8 12 | Hour int8 13 | Day int8 14 | Month int8 15 | Year int32 16 | Realtime int32 17 | } 18 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/guild_relations.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type GuildRelations struct { 11 | Guild1 uint32 `sql:"primary_key"` 12 | Guild2 uint32 `sql:"primary_key"` 13 | Relation int8 14 | } 15 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/ip_exemptions.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type IPExemptions struct { 11 | ExemptionID int32 `sql:"primary_key"` 12 | ExemptionIP *string 13 | ExemptionAmount *int32 14 | } 15 | -------------------------------------------------------------------------------- /client/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | EQ: Requiem 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/char_recipe_list.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type CharRecipeList struct { 11 | CharID int32 `sql:"primary_key"` 12 | RecipeID int32 `sql:"primary_key"` 13 | Madecount int32 14 | } 15 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/character_languages.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type CharacterLanguages struct { 11 | ID uint32 `sql:"primary_key"` 12 | LangID uint16 `sql:"primary_key"` 13 | Value uint16 14 | } 15 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/dynamic_zone_members.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type DynamicZoneMembers struct { 11 | ID uint32 `sql:"primary_key"` 12 | DynamicZoneID uint32 13 | CharacterID uint32 14 | } 15 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/npc_emotes.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type NpcEmotes struct { 11 | ID int32 `sql:"primary_key"` 12 | Emoteid uint32 13 | Event int8 14 | Type int8 15 | Text string 16 | } 17 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/spawn_condition_values.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type SpawnConditionValues struct { 11 | ID uint32 12 | Value *uint8 13 | Zone string 14 | InstanceID uint32 15 | } 16 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/spell_globals.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type SpellGlobals struct { 11 | Spellid int32 `sql:"primary_key"` 12 | SpellName string 13 | Qglobal string 14 | Value string 15 | } 16 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/character_disciplines.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type CharacterDisciplines struct { 11 | ID uint32 `sql:"primary_key"` 12 | SlotID uint16 `sql:"primary_key"` 13 | DiscID uint16 14 | } 15 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/faction_list_mod.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type FactionListMod struct { 11 | ID uint32 `sql:"primary_key"` 12 | FactionID uint32 13 | Mod int16 14 | ModName string 15 | } 16 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/guild_permissions.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type GuildPermissions struct { 11 | ID int32 `sql:"primary_key"` 12 | PermID int32 13 | GuildID int32 14 | Permission int32 15 | } 16 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/pets_equipmentset_entries.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type PetsEquipmentsetEntries struct { 11 | SetID int32 `sql:"primary_key"` 12 | Slot int32 `sql:"primary_key"` 13 | ItemID int32 14 | } 15 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/reports.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Reports struct { 11 | ID uint32 `sql:"primary_key"` 12 | Name *string 13 | Reported *string 14 | ReportedText *string 15 | } 16 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/spawn2_disabled.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Spawn2Disabled struct { 11 | ID int64 `sql:"primary_key"` 12 | Spawn2ID *int32 13 | InstanceID *int32 14 | Disabled *int16 15 | } 16 | -------------------------------------------------------------------------------- /client/scripts/atlas.js: -------------------------------------------------------------------------------- 1 | import fs from 'node:fs' 2 | import path from 'node:path' 3 | const atlasStr = fs.readFileSync('./atlas.json', 'utf-8') 4 | 5 | const atlas = JSON.parse(atlasStr) 6 | 7 | 8 | for (const entry of Object.values(atlas)) { 9 | entry.texture = entry.texture.toLowerCase().replace('tga', 'webp'); 10 | } 11 | fs.writeFileSync('./atlas.json', JSON.stringify(atlas, null, 2), 'utf-8') 12 | const stop = 23; -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/account_ip.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type AccountIP struct { 15 | Accid int32 16 | IP string 17 | Count int32 18 | Lastused time.Time 19 | } 20 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/character_memmed_spells.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type CharacterMemmedSpells struct { 11 | ID uint32 `sql:"primary_key"` 12 | SlotID uint16 `sql:"primary_key"` 13 | SpellID uint16 14 | } 15 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/qs_player_aa_rate_hourly.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type QsPlayerAaRateHourly struct { 11 | CharID int32 `sql:"primary_key"` 12 | HourTime int32 `sql:"primary_key"` 13 | AaCount *string 14 | } 15 | -------------------------------------------------------------------------------- /client/src/Game/Player/player-ability.ts: -------------------------------------------------------------------------------- 1 | import type { ActionButtonData } from '@ui/components/game/action-button/constants'; 2 | import type Player from './player'; 3 | 4 | 5 | export class PlayerAbility { 6 | constructor(private player: Player) { 7 | } 8 | 9 | public doAbility(actionData: ActionButtonData) { 10 | switch (actionData.data) { 11 | 12 | default: break; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/character_alt_currency.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type CharacterAltCurrency struct { 11 | CharID uint32 `sql:"primary_key"` 12 | CurrencyID uint32 `sql:"primary_key"` 13 | Amount uint32 14 | } 15 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/character_item_recast.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type CharacterItemRecast struct { 11 | ID uint32 `sql:"primary_key"` 12 | RecastType uint32 `sql:"primary_key"` 13 | Timestamp uint32 14 | } 15 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/rule_values.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type RuleValues struct { 11 | RulesetID uint8 `sql:"primary_key"` 12 | RuleName string `sql:"primary_key"` 13 | RuleValue string 14 | Notes *string 15 | } 16 | -------------------------------------------------------------------------------- /client/src/main.tsx: -------------------------------------------------------------------------------- 1 | import ReactDOM from "react-dom/client"; 2 | import bjs from '@bjs'; 3 | 4 | async function render() { 5 | import('./App').then(({ App }) => { 6 | const root = document.getElementById("root"); 7 | if (!root) { 8 | throw new Error("Root element not found"); 9 | } 10 | ReactDOM.createRoot(root).render(); 11 | }, 12 | ); 13 | } 14 | 15 | bjs.initialize().then(render); 16 | 17 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/chatchannels.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Chatchannels struct { 11 | ID int32 `sql:"primary_key"` 12 | Name string 13 | Owner string 14 | Password string 15 | Minstatus int32 16 | } 17 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/friends.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Friends struct { 11 | Charid uint32 `sql:"primary_key"` 12 | Type uint8 `sql:"primary_key"` // 1 = Friend, 0 = Ignore 13 | Name string `sql:"primary_key"` 14 | } 15 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/respawn_times.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type RespawnTimes struct { 11 | ID int32 `sql:"primary_key"` 12 | Start int32 13 | Duration int32 14 | InstanceID int16 `sql:"primary_key"` 15 | } 16 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/timers.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Timers struct { 11 | CharID int32 `sql:"primary_key"` 12 | Type uint32 `sql:"primary_key"` 13 | Start uint32 14 | Duration uint32 15 | Enable int8 16 | } 17 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/discovered_items.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type DiscoveredItems struct { 11 | ItemID uint32 `sql:"primary_key"` 12 | CharName string 13 | DiscoveredDate uint32 14 | AccountStatus int32 15 | } 16 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/skill_caps.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type SkillCaps struct { 11 | ID uint32 `sql:"primary_key"` 12 | SkillID uint8 13 | ClassID uint8 14 | Level uint8 15 | Cap uint32 16 | Class uint8 17 | } 18 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/spell_buckets.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type SpellBuckets struct { 11 | SpellID uint32 `sql:"primary_key"` 12 | BucketName string 13 | BucketValue string 14 | BucketComparison uint8 15 | } 16 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/character_potionbelt.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type CharacterPotionbelt struct { 11 | ID uint32 `sql:"primary_key"` 12 | PotionID uint8 `sql:"primary_key"` 13 | ItemID uint32 14 | Icon uint32 15 | } 16 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/faction_values.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type FactionValues struct { 11 | CharID int32 `sql:"primary_key"` 12 | FactionID int32 `sql:"primary_key"` 13 | CurrentValue int16 14 | Temp int8 15 | } 16 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/graveyard.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Graveyard struct { 11 | ID int32 `sql:"primary_key"` 12 | ZoneID int32 13 | X float64 14 | Y float64 15 | Z float64 16 | Heading float64 17 | } 18 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/npc_faction.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type NpcFaction struct { 11 | ID int32 `sql:"primary_key"` 12 | Name string 13 | Primaryfaction int32 14 | IgnorePrimaryAssist int8 15 | } 16 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/qs_player_events.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type QsPlayerEvents struct { 11 | ID uint32 `sql:"primary_key"` 12 | CharID *int32 13 | Event *uint32 14 | EventDesc *string 15 | Time *uint32 16 | } 17 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/aa_rank_effects.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type AaRankEffects struct { 11 | RankID uint32 `sql:"primary_key"` 12 | Slot uint32 `sql:"primary_key"` 13 | EffectID int32 14 | Base1 int32 15 | Base2 int32 16 | } 17 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/character_alternate_abilities.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type CharacterAlternateAbilities struct { 11 | ID uint32 `sql:"primary_key"` 12 | AaID uint16 `sql:"primary_key"` 13 | AaValue uint16 14 | Charges uint16 15 | } 16 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/character_pet_inventory.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type CharacterPetInventory struct { 11 | CharID int32 `sql:"primary_key"` 12 | Pet int32 `sql:"primary_key"` 13 | Slot int32 `sql:"primary_key"` 14 | ItemID int32 15 | } 16 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/spawn_conditions.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type SpawnConditions struct { 11 | Zone string `sql:"primary_key"` 12 | ID uint32 `sql:"primary_key"` 13 | Value int32 14 | Onchange uint8 15 | Name string 16 | } 17 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/tool_gearup_armor_sets.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type ToolGearupArmorSets struct { 11 | Class *int8 12 | Level *int16 13 | Slot *int8 14 | ItemID *int32 15 | Score *int32 16 | Expansion *int8 17 | } 18 | -------------------------------------------------------------------------------- /server/internal/api/capnp/go.capnp.go: -------------------------------------------------------------------------------- 1 | // Code generated by capnpc-go. DO NOT EDIT. 2 | 3 | package net 4 | 5 | import () 6 | 7 | const Package_ = uint64(0xbea97f1023792be0) 8 | const Import_ = uint64(0xe130b601260e44b5) 9 | const Doc_ = uint64(0xc58ad6bd519f935e) 10 | const Tag_ = uint64(0xa574b41924caefc7) 11 | const Notag_ = uint64(0xc8768679ec52e012) 12 | const Customtype_ = uint64(0xfa10659ae02f2093) 13 | const Name_ = uint64(0xc2b96012172f8df1) 14 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/tool_game_objects.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type ToolGameObjects struct { 11 | ID int32 `sql:"primary_key"` 12 | Zoneid int32 13 | Zonesn string 14 | ObjectName string 15 | FileFrom *string 16 | IsGlobal *bool 17 | } 18 | -------------------------------------------------------------------------------- /client/src/Game/Model/entity-types.ts: -------------------------------------------------------------------------------- 1 | import type * as BJS from '@babylonjs/core'; 2 | 3 | 4 | export type EntityMeshMetadata = { 5 | textureAttributesDirtyRef: { 6 | value: boolean; 7 | }; 8 | submeshCount: number; 9 | atlasArrayTexture?: BJS.BaseTexture; 10 | cloakAtlasArrayTexture?: BJS.BaseTexture; 11 | helmAtlasArrayTexture?: BJS.BaseTexture; 12 | vatTexture?: BJS.BaseTexture; 13 | textureAttributeArray?: BJS.RawTexture; 14 | }; 15 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/command_subsettings.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type CommandSubsettings struct { 11 | ID uint32 `sql:"primary_key"` 12 | ParentCommand string 13 | SubCommand string 14 | AccessLevel uint32 15 | TopLevelAliases string 16 | } 17 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/item_instances.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type ItemInstances struct { 11 | ID int32 `sql:"primary_key"` 12 | ItemID int32 13 | Mods *string 14 | Charges uint8 15 | Quantity uint8 16 | OwnerID *uint32 17 | OwnerType uint8 18 | } 19 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/npc_faction_entries.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type NpcFactionEntries struct { 11 | NpcFactionID uint32 `sql:"primary_key"` 12 | FactionID uint32 `sql:"primary_key"` 13 | Value int32 14 | NpcValue int8 15 | Temp int8 16 | } 17 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/variables.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type Variables struct { 15 | ID int32 `sql:"primary_key"` 16 | Varname string 17 | Value string 18 | Information string 19 | Ts time.Time 20 | } 21 | -------------------------------------------------------------------------------- /client/src/UI/common/splash.ts: -------------------------------------------------------------------------------- 1 | import qrg from "./qrg.webp"; 2 | import qeynos2 from "./qeynos2.webp"; 3 | import qeynos from "./qeynos.webp"; 4 | 5 | export const getSplashImage = () => { 6 | const splash = Math.floor(Math.random() * 3); 7 | let splashImage = qrg; 8 | if (splash === 0) { 9 | splashImage = qeynos; 10 | } else if (splash === 1) { 11 | splashImage = qeynos2; 12 | } else { 13 | splashImage = qrg; 14 | } 15 | return splashImage; 16 | }; 17 | -------------------------------------------------------------------------------- /client/src/UI/common/ui-bar.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { UiImageComponent } from './ui-image'; 3 | import { Box, Stack } from '@mui/material'; 4 | 5 | 6 | export const UiBarComponent: React.FC = () => { 7 | 8 | return 9 | 10 | 11 | 12 | 13 | 14 | ; 15 | }; -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/mail.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Mail struct { 11 | Msgid uint32 `sql:"primary_key"` 12 | Charid uint32 13 | Timestamp int32 14 | From string 15 | Subject string 16 | Body string 17 | To string 18 | Status int8 19 | } 20 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", // Base directory for resolving non-relative module names 4 | "target": "ESNext", 5 | "module": "ESNext", 6 | "strict": true, 7 | "noEmit": true, // Root doesn't emit, sub-projects will 8 | "composite": true, // Enable project references 9 | "declaration": true, 10 | "declarationMap": true 11 | }, 12 | "references": [ 13 | { 14 | "path": "./client" 15 | }, 16 | ] 17 | } -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/qs_player_npc_kill_record.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type QsPlayerNpcKillRecord struct { 15 | FightID int32 `sql:"primary_key"` 16 | NpcID *int32 17 | Type *int32 18 | ZoneID *int32 19 | Time *time.Time 20 | } 21 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/character_activities.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type CharacterActivities struct { 11 | Charid uint32 `sql:"primary_key"` 12 | Taskid uint32 `sql:"primary_key"` 13 | Activityid uint32 `sql:"primary_key"` 14 | Donecount uint32 15 | Completed *bool 16 | } 17 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/character_material.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type CharacterMaterial struct { 11 | ID uint32 `sql:"primary_key"` 12 | Slot uint8 `sql:"primary_key"` 13 | Blue uint8 14 | Green uint8 15 | Red uint8 16 | UseTint uint8 17 | Color uint32 18 | } 19 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/group_id.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type GroupID struct { 11 | GroupID uint32 `sql:"primary_key"` 12 | Name string 13 | CharacterID uint32 `sql:"primary_key"` 14 | BotID uint32 `sql:"primary_key"` 15 | MercID uint32 `sql:"primary_key"` 16 | } 17 | -------------------------------------------------------------------------------- /server/internal/zone/zone-player.go: -------------------------------------------------------------------------------- 1 | package zone 2 | 3 | import ( 4 | db_chardata "github.com/knervous/eqgo/internal/db/character" 5 | "github.com/knervous/eqgo/internal/session" 6 | ) 7 | 8 | func savePlayerData(ses *session.Session) error { 9 | if ses.Client == nil || ses.Client.CharData() == nil { 10 | return nil 11 | } 12 | 13 | if err := db_chardata.UpdateCharacter(ses.Client.CharData(), ses.AccountID); err != nil { 14 | return err 15 | } 16 | 17 | return nil 18 | } 19 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/buyer_trade_items.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type BuyerTradeItems struct { 11 | ID uint64 `sql:"primary_key"` 12 | BuyerBuyLinesID uint64 13 | ItemID int32 14 | ItemQty int32 15 | ItemIcon int32 16 | ItemName string 17 | } 18 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/discord_webhooks.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type DiscordWebhooks struct { 15 | ID int32 `sql:"primary_key"` 16 | WebhookName *string 17 | WebhookURL *string 18 | CreatedAt *time.Time 19 | DeletedAt *time.Time 20 | } 21 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/faction_base_data.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type FactionBaseData struct { 11 | ClientFactionID int16 `sql:"primary_key"` 12 | Min *int16 13 | Max *int16 14 | UnkHero1 *int16 15 | UnkHero2 *int16 16 | UnkHero3 *int16 17 | } 18 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/loottable_entries.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type LoottableEntries struct { 11 | LoottableID uint32 `sql:"primary_key"` 12 | LootdropID uint32 `sql:"primary_key"` 13 | Multiplier uint8 14 | Droplimit uint8 15 | Mindrop uint8 16 | Probability float64 17 | } 18 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/qs_player_delete_record.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type QsPlayerDeleteRecord struct { 15 | DeleteID int32 `sql:"primary_key"` 16 | Time *time.Time 17 | CharID *int32 18 | StackSize *int32 19 | CharItems *int32 20 | } 21 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/trader_audit.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type TraderAudit struct { 15 | Time time.Time 16 | Seller string 17 | Buyer string 18 | Itemname string 19 | Quantity int32 20 | Totalcost int32 21 | Trantype int8 22 | } 23 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/horses.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Horses struct { 11 | ID int32 `sql:"primary_key"` 12 | Filename string 13 | Race int16 14 | Gender bool 15 | Texture int8 16 | Helmtexture int8 17 | Mountspeed float64 18 | Notes *string 19 | } 20 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/quest_globals.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type QuestGlobals struct { 11 | Charid int32 `sql:"primary_key"` 12 | Npcid int32 `sql:"primary_key"` 13 | Zoneid int32 `sql:"primary_key"` 14 | Name string `sql:"primary_key"` 15 | Value string 16 | Expdate *int32 17 | } 18 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/login_api_tokens.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type LoginAPITokens struct { 15 | ID int32 `sql:"primary_key"` 16 | Token *string 17 | CanWrite *int32 18 | CanRead *int32 19 | CreatedAt *time.Time 20 | UpdatedAt *time.Time 21 | } 22 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/lootdrop.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Lootdrop struct { 11 | ID uint32 `sql:"primary_key"` 12 | Name string 13 | MinExpansion int8 14 | MaxExpansion int8 15 | ContentFlags *string 16 | ContentFlagsDisabled *string 17 | } 18 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/pets_beastlord_data.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type PetsBeastlordData struct { 11 | PlayerRace uint32 `sql:"primary_key"` 12 | PetRace uint32 13 | Texture uint8 14 | HelmTexture uint8 15 | Gender uint8 16 | SizeModifier *float64 17 | Face uint8 18 | } 19 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/guild_tributes.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type GuildTributes struct { 11 | GuildID uint32 `sql:"primary_key"` 12 | TributeID1 uint32 13 | TributeID1Tier uint32 14 | TributeID2 uint32 15 | TributeID2Tier uint32 16 | TimeRemaining uint32 17 | Enabled uint32 18 | } 19 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/player_event_log_settings.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type PlayerEventLogSettings struct { 11 | ID int64 `sql:"primary_key"` 12 | EventName *string 13 | EventEnabled *bool 14 | RetentionDays *int32 15 | DiscordWebhookID *int32 16 | EtlEnabled uint8 17 | } 18 | -------------------------------------------------------------------------------- /client/src/UI/components/game/stone/middle/top/stone-middle-top.tsx: -------------------------------------------------------------------------------- 1 | import { useInventoryOpen } from '@game/Events/event-hooks'; 2 | import { StoneInventory } from './stone-inventory'; 3 | 4 | export const StoneMiddleTop: React.FC<{ 5 | width: number; 6 | height: number; 7 | scale: number; 8 | }> = ({ width, height, scale }) => { 9 | const inventoryOpen = useInventoryOpen(); 10 | 11 | return ( 12 | 13 | ); 14 | }; 15 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/character_exp_modifiers.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type CharacterExpModifiers struct { 11 | CharacterID int32 `sql:"primary_key"` 12 | ZoneID int32 `sql:"primary_key"` 13 | InstanceVersion int32 `sql:"primary_key"` 14 | AaModifier float64 15 | ExpModifier float64 16 | } 17 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/instance_list.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type InstanceList struct { 11 | ID int32 `sql:"primary_key"` 12 | Zone uint32 13 | Version uint8 14 | IsGlobal uint8 15 | StartTime uint32 16 | Duration uint32 17 | NeverExpires uint8 18 | Notes *string 19 | } 20 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/pets.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Pets struct { 11 | ID int32 `sql:"primary_key"` 12 | Type string 13 | Petpower int32 14 | NpcID int32 15 | Temp int8 16 | Petcontrol int8 17 | Petnaming int8 18 | Monsterflag int8 19 | Equipmentset int32 20 | } 21 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/buyer_buy_lines.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type BuyerBuyLines struct { 11 | ID uint64 `sql:"primary_key"` 12 | BuyerID uint64 13 | CharID uint32 14 | BuySlotID int32 15 | ItemID int32 16 | ItemQty int32 17 | ItemPrice int32 18 | ItemIcon uint32 19 | ItemName string 20 | } 21 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/character_bandolier.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type CharacterBandolier struct { 11 | ID uint32 `sql:"primary_key"` 12 | BandolierID uint8 `sql:"primary_key"` 13 | BandolierSlot uint8 `sql:"primary_key"` 14 | ItemID uint32 15 | Icon uint32 16 | BandolierName string 17 | } 18 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/player_event_aa_purchase.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type PlayerEventAaPurchase struct { 15 | ID uint64 `sql:"primary_key"` 16 | AaAbilityID *int32 17 | Cost *int32 18 | PreviousID *int32 19 | NextID *int32 20 | CreatedAt *time.Time 21 | } 22 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/qs_player_delete_record_entries.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type QsPlayerDeleteRecordEntries struct { 11 | EventID *int32 12 | CharSlot *int32 13 | ItemID *int32 14 | Charges *int32 15 | Aug1 *int32 16 | Aug2 *int32 17 | Aug3 *int32 18 | Aug4 *int32 19 | Aug5 *int32 20 | } 21 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/character_bind.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type CharacterBind struct { 11 | ID uint32 `sql:"primary_key"` 12 | Slot int32 `sql:"primary_key"` 13 | ZoneID uint16 14 | InstanceID uint32 15 | X float64 16 | Y float64 17 | Z float64 18 | Heading float64 19 | } 20 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/character_pet_info.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type CharacterPetInfo struct { 11 | CharID int32 `sql:"primary_key"` 12 | Pet int32 `sql:"primary_key"` 13 | Petname string 14 | Petpower int32 15 | SpellID int32 16 | Hp int32 17 | Mana int32 18 | Size float64 19 | Taunting bool 20 | } 21 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/raid_leaders.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type RaidLeaders struct { 11 | Gid uint32 12 | Rid uint32 13 | Marknpc string 14 | Maintank string 15 | Assist string 16 | Puller string 17 | Leadershipaa []byte 18 | Mentoree string 19 | MentorPercent int32 20 | } 21 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/guilds.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Guilds struct { 11 | ID int32 `sql:"primary_key"` 12 | Name string 13 | Leader int32 14 | Minstatus int16 15 | Motd string 16 | Tribute uint32 17 | MotdSetter string 18 | Channel string 19 | URL string 20 | Favor uint32 21 | } 22 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/lfguild.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Lfguild struct { 11 | Type uint8 `sql:"primary_key"` 12 | Name string `sql:"primary_key"` 13 | Comment string 14 | Fromlevel uint8 15 | Tolevel uint8 16 | Classes uint32 17 | Aacount uint32 18 | Timezone uint32 19 | Timeposted uint32 20 | } 21 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/qs_merchant_transaction_record_entries.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type QsMerchantTransactionRecordEntries struct { 11 | EventID *int32 12 | CharSlot *int32 13 | ItemID *int32 14 | Charges *int32 15 | Aug1 *int32 16 | Aug2 *int32 17 | Aug3 *int32 18 | Aug4 *int32 19 | Aug5 *int32 20 | } 21 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/auras.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Auras struct { 11 | Type int32 `sql:"primary_key"` 12 | NpcType int32 13 | Name string 14 | SpellID int32 15 | Distance int32 16 | AuraType int32 17 | SpawnType int32 18 | Movement int32 19 | Duration int32 20 | Icon int32 21 | CastTime int32 22 | } 23 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/qs_player_move_record_entries.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type QsPlayerMoveRecordEntries struct { 11 | EventID *int32 12 | FromSlot *int32 13 | ToSlot *int32 14 | ItemID *int32 15 | Charges *int32 16 | Aug1 *int32 17 | Aug2 *int32 18 | Aug3 *int32 19 | Aug4 *int32 20 | Aug5 *int32 21 | } 22 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/tradeskill_recipe_entries.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type TradeskillRecipeEntries struct { 11 | ID int32 `sql:"primary_key"` 12 | RecipeID int32 13 | ItemID int32 14 | Successcount int8 15 | Failcount int8 16 | Componentcount int8 17 | Salvagecount int8 18 | Iscontainer bool 19 | } 20 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/base_data.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type BaseData struct { 11 | Level uint8 `sql:"primary_key"` 12 | Class uint8 `sql:"primary_key"` 13 | Hp float64 14 | Mana float64 15 | End float64 16 | HpRegen float64 17 | EndRegen float64 18 | HpFac float64 19 | ManaFac float64 20 | EndFac float64 21 | } 22 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/merchantlist_temp.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type MerchantlistTemp struct { 11 | Npcid uint32 `sql:"primary_key"` 12 | Slot uint32 `sql:"primary_key"` 13 | ZoneID int32 `sql:"primary_key"` 14 | InstanceID int32 `sql:"primary_key"` 15 | Itemid uint32 16 | Charges uint32 17 | CustomData *string 18 | } 19 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/char_create_combinations.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type CharCreateCombinations struct { 11 | AllocationID uint32 12 | Race uint32 `sql:"primary_key"` 13 | Class uint32 `sql:"primary_key"` 14 | Deity uint32 `sql:"primary_key"` 15 | StartZone uint32 `sql:"primary_key"` 16 | ExpansionsReq uint32 17 | } 18 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/group_leaders.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type GroupLeaders struct { 11 | Gid int32 `sql:"primary_key"` 12 | Leadername string 13 | Marknpc string 14 | Leadershipaa *[]byte 15 | Maintank string 16 | Assist string 17 | Puller string 18 | Mentoree string 19 | MentorPercent int32 20 | } 21 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/dynamic_zone_lockouts.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type DynamicZoneLockouts struct { 15 | ID uint32 `sql:"primary_key"` 16 | DynamicZoneID uint32 17 | EventName string 18 | ExpireTime time.Time 19 | Duration uint32 20 | FromExpeditionUUID string 21 | } 22 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/qs_player_move_record.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type QsPlayerMoveRecord struct { 15 | MoveID int32 `sql:"primary_key"` 16 | Time *time.Time 17 | CharID *int32 18 | FromSlot *int32 19 | ToSlot *int32 20 | StackSize *int32 21 | CharItems *int32 22 | Postaction *bool 23 | } 24 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/data_buckets.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type DataBuckets struct { 11 | ID uint64 `sql:"primary_key"` 12 | Key *string 13 | Value string 14 | Expires *uint32 15 | AccountID *uint64 16 | CharacterID uint64 17 | NpcID uint32 18 | BotID uint32 19 | ZoneID uint16 20 | InstanceID uint16 21 | } 22 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/player_event_speech.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type PlayerEventSpeech struct { 15 | ID uint64 `sql:"primary_key"` 16 | ToCharID *string 17 | FromCharID *string 18 | GuildID *uint32 19 | Type *uint32 20 | MinStatus *uint32 21 | Message *string 22 | CreatedAt *time.Time 23 | } 24 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/qs_player_handin_record_entries.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type QsPlayerHandinRecordEntries struct { 11 | EventID *int32 12 | ActionType *string 13 | CharSlot *int32 14 | ItemID *int32 15 | Charges *int32 16 | Aug1 *int32 17 | Aug2 *int32 18 | Aug3 *int32 19 | Aug4 *int32 20 | Aug5 *int32 21 | } 22 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/qs_player_speech.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type QsPlayerSpeech struct { 15 | ID int32 `sql:"primary_key"` 16 | From string 17 | To string 18 | Message string 19 | Minstatus int16 20 | Guilddbid int32 21 | Type int8 22 | Timerecorded time.Time 23 | } 24 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/logsys_categories.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type LogsysCategories struct { 11 | LogCategoryID int32 `sql:"primary_key"` 12 | LogCategoryDescription *string 13 | LogToConsole *int16 14 | LogToFile *int16 15 | LogToGmsay *int16 16 | LogToDiscord *int16 17 | DiscordWebhookID *int32 18 | } 19 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/guild_members.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type GuildMembers struct { 11 | CharID int32 `sql:"primary_key"` 12 | GuildID uint32 13 | Rank uint8 14 | TributeEnable uint8 15 | TotalTribute uint32 16 | LastTribute uint32 17 | Banker uint8 18 | PublicNote string 19 | Alt uint8 20 | Online uint8 21 | } 22 | -------------------------------------------------------------------------------- /server/internal/quest/yaegi_wrappers/github_com-knervous-eqgo-internal-quest-zones-qeynos.go: -------------------------------------------------------------------------------- 1 | // Code generated by 'yaegi extract github.com/knervous/eqgo/internal/quest/zones/qeynos'. DO NOT EDIT. 2 | 3 | package yaegi_wrappers 4 | 5 | import ( 6 | "github.com/knervous/eqgo/internal/quest/zones/qeynos" 7 | "reflect" 8 | ) 9 | 10 | func init() { 11 | Symbols["github.com/knervous/eqgo/internal/quest/zones/qeynos/qeynos"] = map[string]reflect.Value{ 12 | // function, constant and variable definitions 13 | "RegisterZone": reflect.ValueOf(qeynos.RegisterZone), 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/npc_spells_effects_entries.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type NpcSpellsEffectsEntries struct { 11 | ID uint32 `sql:"primary_key"` 12 | NpcSpellsEffectsID int32 13 | SpellEffectID int16 14 | Minlevel uint8 15 | Maxlevel uint8 16 | SeBase int32 17 | SeLimit int32 18 | SeMax int32 19 | } 20 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/qs_player_trade_record_entries.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type QsPlayerTradeRecordEntries struct { 11 | EventID *int32 12 | FromID *int32 13 | FromSlot *int32 14 | ToID *int32 15 | ToSlot *int32 16 | ItemID *int32 17 | Charges *int32 18 | Aug1 *int32 19 | Aug2 *int32 20 | Aug3 *int32 21 | Aug4 *int32 22 | Aug5 *int32 23 | } 24 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/items_evolving_details.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type ItemsEvolvingDetails struct { 11 | ID uint32 `sql:"primary_key"` 12 | ItemEvoID *uint32 // items.evoid 13 | ItemEvolveLevel *uint32 // items.evolvinglevel 14 | ItemID *uint32 // items.id 15 | Type *uint32 16 | SubType *string 17 | RequiredAmount *int64 18 | } 19 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/character_parcels_containers.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type CharacterParcelsContainers struct { 11 | ID uint32 `sql:"primary_key"` 12 | ParcelsID uint32 13 | SlotID uint32 14 | ItemID uint32 15 | AugSlot1 uint32 16 | AugSlot2 uint32 17 | AugSlot3 uint32 18 | AugSlot4 uint32 19 | AugSlot5 uint32 20 | AugSlot6 uint32 21 | Quantity uint32 22 | } 23 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/bugs.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type Bugs struct { 15 | ID uint32 `sql:"primary_key"` 16 | Zone string 17 | Name string 18 | UI string 19 | X float64 20 | Y float64 21 | Z float64 22 | Type string 23 | Flag uint8 24 | Target *string 25 | Bug string 26 | Date time.Time 27 | Status uint8 28 | } 29 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/buyer.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type Buyer struct { 15 | ID uint64 `sql:"primary_key"` 16 | CharID uint32 17 | CharEntityID uint32 18 | CharName *string 19 | CharZoneID uint32 20 | CharZoneInstanceID uint32 21 | TransactionDate *time.Time 22 | WelcomeMessage *string 23 | } 24 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/character_instance_safereturns.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type CharacterInstanceSafereturns struct { 11 | ID uint32 `sql:"primary_key"` 12 | CharacterID uint32 13 | InstanceZoneID int32 14 | InstanceID int32 15 | SafeZoneID int32 16 | SafeX float64 17 | SafeY float64 18 | SafeZ float64 19 | SafeHeading float64 20 | } 21 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/forage.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Forage struct { 11 | ID int32 `sql:"primary_key"` 12 | Zoneid int32 13 | Itemid int32 14 | Level int16 15 | Chance int16 16 | MinExpansion int8 17 | MaxExpansion int8 18 | ContentFlags *string 19 | ContentFlagsDisabled *string 20 | } 21 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/character_expedition_lockouts.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type CharacterExpeditionLockouts struct { 15 | ID uint32 `sql:"primary_key"` 16 | CharacterID uint32 17 | ExpeditionName string 18 | EventName string 19 | ExpireTime time.Time 20 | Duration uint32 21 | FromExpeditionUUID string 22 | } 23 | -------------------------------------------------------------------------------- /server/internal/zone/interface/entity.go: -------------------------------------------------------------------------------- 1 | package entity 2 | 3 | const ( 4 | EntityTypeNPC = iota 5 | EntityTypePlayer 6 | EntityTypeCorpse 7 | ) 8 | 9 | type MobPosition struct { 10 | X, Y, Z float64 11 | Heading float64 12 | } 13 | 14 | type Velocity struct { 15 | X float64 16 | Y float64 17 | Z float64 18 | } 19 | 20 | type EntityDataSource interface { 21 | Level() uint8 22 | Class() uint8 23 | } 24 | 25 | type Entity interface { 26 | ID() int 27 | GetMob() *Mob 28 | Name() string 29 | Type() int32 30 | Say(msg string) 31 | Position() MobPosition 32 | SetPosition(pos MobPosition) 33 | } 34 | -------------------------------------------------------------------------------- /client/src/UI/components/overlay-types.tsx: -------------------------------------------------------------------------------- 1 | export type MessagePayload = object & { 2 | type: string; 3 | payload: object; 4 | }; 5 | 6 | // Create an interface for our custom message handler. 7 | export interface IMessageHandler { 8 | postMessage(message: object | string): void; 9 | } 10 | 11 | export interface IMessageTarget { 12 | addEventListener( 13 | event: string, 14 | callback: (message: MessagePayload) => void, 15 | ): void; 16 | removeEventListener( 17 | event: string, 18 | callback: (message: MessagePayload) => void, 19 | ): void; 20 | } 21 | 22 | export const stateKey = 'uiState'; 23 | -------------------------------------------------------------------------------- /client/src/Game/Model/bjs-texture-cache.ts: -------------------------------------------------------------------------------- 1 | import BABYLON from "@bjs"; 2 | import type * as BJS from "@babylonjs/core"; 3 | 4 | export class BabylonTextureCache { 5 | static cache = new Map(); 6 | 7 | static set(name: string, tex: BJS.Texture): void { 8 | BabylonTextureCache.cache.set(name, tex); 9 | } 10 | 11 | static get(name: string): BJS.Texture | undefined { 12 | return BabylonTextureCache.cache.get(name); 13 | } 14 | 15 | static clear(): void { 16 | BabylonTextureCache.clear(); 17 | } 18 | } 19 | 20 | window.BJSTextureCache = BabylonTextureCache; // Expose to global scope for debugging -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/spawn_events.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type SpawnEvents struct { 11 | ID uint32 `sql:"primary_key"` 12 | Zone *string 13 | CondID uint32 14 | Name string 15 | Period uint32 16 | NextMinute uint8 17 | NextHour uint8 18 | NextDay uint8 19 | NextMonth uint8 20 | NextYear uint32 21 | Enabled int8 22 | Action uint8 23 | Argument int32 24 | Strict int8 25 | } 26 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/loottable.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Loottable struct { 11 | ID uint32 `sql:"primary_key"` 12 | Name string 13 | Mincash uint32 14 | Maxcash uint32 15 | Avgcoin uint32 16 | Done int8 17 | MinExpansion int8 18 | MaxExpansion int8 19 | ContentFlags *string 20 | ContentFlagsDisabled *string 21 | } 22 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/spawngroup.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Spawngroup struct { 11 | ID int32 `sql:"primary_key"` 12 | Name string 13 | SpawnLimit int8 14 | Dist float64 15 | MaxX float64 16 | MinX float64 17 | MaxY float64 18 | MinY float64 19 | Delay int32 20 | Mindelay int32 21 | Despawn int8 22 | DespawnTimer int32 23 | WpSpawns uint8 24 | } 25 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/login_accounts.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type LoginAccounts struct { 15 | ID uint32 `sql:"primary_key"` 16 | AccountName string 17 | AccountPassword string 18 | AccountEmail string 19 | SourceLoginserver *string 20 | LastIPAddress string 21 | LastLoginDate time.Time 22 | CreatedAt *time.Time 23 | UpdatedAt *time.Time 24 | } 25 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/login_server_admins.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type LoginServerAdmins struct { 15 | ID uint32 `sql:"primary_key"` 16 | AccountName string 17 | AccountPassword string 18 | FirstName string 19 | LastName string 20 | Email string 21 | RegistrationDate time.Time 22 | RegistrationIPAddress string 23 | } 24 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/object_contents.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type ObjectContents struct { 15 | Zoneid uint32 16 | Parentid uint32 `sql:"primary_key"` 17 | Bagidx uint32 `sql:"primary_key"` 18 | Itemid uint32 19 | Charges int16 20 | Droptime time.Time 21 | Augslot1 *uint32 22 | Augslot2 *uint32 23 | Augslot3 *uint32 24 | Augslot4 *uint32 25 | Augslot5 *uint32 26 | Augslot6 int32 27 | } 28 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/character_inventory.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type CharacterInventory struct { 11 | ID uint64 `sql:"primary_key"` 12 | CharacterID uint32 // character_data.id 13 | Bag int8 `sql:"primary_key"` // Container (-1 = equipment, 0 = main backpack, 1–n = bag slots) 14 | Slot int8 `sql:"primary_key"` // Slot index within bag/equipment 15 | ItemInstanceID int32 // Item instance GUID 16 | } 17 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/character_pet_buffs.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type CharacterPetBuffs struct { 11 | CharID int32 `sql:"primary_key"` 12 | Pet int32 `sql:"primary_key"` 13 | Slot int32 `sql:"primary_key"` 14 | SpellID int32 15 | CasterLevel int8 16 | Castername string 17 | Ticsremaining int32 18 | Counters int32 19 | Numhits int32 20 | Rune int32 21 | InstrumentMod uint8 22 | } 23 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/player_event_killed_npc.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type PlayerEventKilledNpc struct { 15 | ID uint64 `sql:"primary_key"` 16 | NpcID *uint32 17 | NpcName *string 18 | CombatTimeSeconds *uint32 19 | TotalDamagePerSecondTaken *uint64 20 | TotalHealPerSecondTaken *uint64 21 | CreatedAt *time.Time 22 | } 23 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/aa_ranks.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type AaRanks struct { 11 | ID uint32 `sql:"primary_key"` 12 | UpperHotkeySid int32 13 | LowerHotkeySid int32 14 | TitleSid int32 15 | DescSid int32 16 | Cost int32 17 | LevelReq int32 18 | Spell int32 19 | SpellType int32 20 | RecastTime int32 21 | Expansion int32 22 | PrevID int32 23 | NextID int32 24 | } 25 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/player_event_killed_raid_npc.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type PlayerEventKilledRaidNpc struct { 15 | ID uint64 `sql:"primary_key"` 16 | NpcID *uint32 17 | NpcName *string 18 | CombatTimeSeconds *uint32 19 | TotalDamagePerSecondTaken *uint64 20 | TotalHealPerSecondTaken *uint64 21 | CreatedAt *time.Time 22 | } 23 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/spawnentry.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Spawnentry struct { 11 | SpawngroupID int32 `sql:"primary_key"` 12 | NpcID int32 `sql:"primary_key"` 13 | Chance int16 14 | ConditionValueFilter int32 15 | MinTime int16 16 | MaxTime int16 17 | MinExpansion int8 18 | MaxExpansion int8 19 | ContentFlags *string 20 | ContentFlagsDisabled *string 21 | } 22 | -------------------------------------------------------------------------------- /client/src/Game/Player/player-socials.ts: -------------------------------------------------------------------------------- 1 | import { CommandHandler } from '@game/ChatCommands/command-handler'; 2 | import { CommandParser } from '@game/ChatCommands/command-parser'; 3 | import type { ActionButtonData } from '@ui/components/game/action-button/constants'; 4 | import type Player from './player'; 5 | 6 | 7 | export class PlayerSocials { 8 | constructor(private player: Player) { 9 | } 10 | 11 | public doSocial(actionData: ActionButtonData) { 12 | for (const line of actionData.data ?? ([] as string[])) { 13 | console.log('Executing social command:', line); 14 | CommandParser.parseCommand(line); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/fishing.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Fishing struct { 11 | ID int32 `sql:"primary_key"` 12 | Zoneid int32 13 | Itemid int32 14 | SkillLevel int16 15 | Chance int16 16 | NpcID int32 17 | NpcChance int32 18 | MinExpansion int8 19 | MaxExpansion int8 20 | ContentFlags *string 21 | ContentFlagsDisabled *string 22 | } 23 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/player_event_killed_named_npc.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type PlayerEventKilledNamedNpc struct { 15 | ID uint64 `sql:"primary_key"` 16 | NpcID *uint32 17 | NpcName *string 18 | CombatTimeSeconds *uint32 19 | TotalDamagePerSecondTaken *uint64 20 | TotalHealPerSecondTaken *uint64 21 | CreatedAt *time.Time 22 | } 23 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/char_create_point_allocations.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type CharCreatePointAllocations struct { 11 | ID uint32 `sql:"primary_key"` 12 | BaseStr uint32 13 | BaseSta uint32 14 | BaseDex uint32 15 | BaseAgi uint32 16 | BaseInt uint32 17 | BaseWis uint32 18 | BaseCha uint32 19 | AllocStr uint32 20 | AllocSta uint32 21 | AllocDex uint32 22 | AllocAgi uint32 23 | AllocInt uint32 24 | AllocWis uint32 25 | AllocCha uint32 26 | } 27 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/character_parcels.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type CharacterParcels struct { 15 | ID uint32 `sql:"primary_key"` 16 | CharID uint32 17 | ItemID uint32 18 | AugSlot1 uint32 19 | AugSlot2 uint32 20 | AugSlot3 uint32 21 | AugSlot4 uint32 22 | AugSlot5 uint32 23 | AugSlot6 uint32 24 | SlotID uint32 25 | Quantity uint32 26 | FromName *string 27 | Note *string 28 | SentDate *time.Time 29 | } 30 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/raid_members.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type RaidMembers struct { 11 | ID uint64 `sql:"primary_key"` 12 | Raidid int32 13 | Charid int32 14 | BotID int32 15 | Groupid uint32 16 | Class int8 17 | Level int8 18 | Name string 19 | Isgroupleader bool 20 | Israidleader bool 21 | Islooter bool 22 | IsMarker uint8 23 | IsAssister uint8 24 | Note string 25 | } 26 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/player_event_loot_items.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type PlayerEventLootItems struct { 15 | ID uint64 `sql:"primary_key"` 16 | ItemID *uint32 17 | ItemName *string 18 | Charges *int32 19 | Augment1ID *uint32 20 | Augment2ID *uint32 21 | Augment3ID *uint32 22 | Augment4ID *uint32 23 | Augment5ID *uint32 24 | Augment6ID *uint32 25 | NpcID *uint32 26 | CorpseName *string 27 | CreatedAt *time.Time 28 | } 29 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/player_event_trade.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type PlayerEventTrade struct { 15 | ID uint32 `sql:"primary_key"` 16 | Char1ID *uint32 17 | Char2ID *uint32 18 | Char1Copper *uint64 19 | Char1Silver *uint64 20 | Char1Gold *uint64 21 | Char1Platinum *uint64 22 | Char2Copper *uint64 23 | Char2Silver *uint64 24 | Char2Gold *uint64 25 | Char2Platinum *uint64 26 | CreatedAt *time.Time 27 | } 28 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/titles.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Titles struct { 11 | ID uint32 `sql:"primary_key"` 12 | SkillID int8 13 | MinSkillValue int32 14 | MaxSkillValue int32 15 | MinAaPoints int32 16 | MaxAaPoints int32 17 | Class int8 18 | Gender bool // -1 = either, 0 = male, 1 = female 19 | CharID int32 20 | Status int32 21 | ItemID int32 22 | Prefix string 23 | Suffix string 24 | TitleSet int32 25 | } 26 | -------------------------------------------------------------------------------- /server/internal/db/instance.go: -------------------------------------------------------------------------------- 1 | package db 2 | 3 | import ( 4 | "database/sql" 5 | "fmt" 6 | 7 | "github.com/go-jet/jet/v2/stmtcache" 8 | ) 9 | 10 | type WorldDB struct { 11 | DB *stmtcache.DB 12 | } 13 | 14 | var GlobalWorldDB *WorldDB 15 | 16 | func InitWorldDB(dsn string) error { 17 | db, err := sql.Open("mysql", dsn) 18 | if err != nil { 19 | return fmt.Errorf("failed to open database: %w", err) 20 | } 21 | if err := db.Ping(); err != nil { 22 | _ = db.Close() 23 | return fmt.Errorf("failed to ping database: %w", err) 24 | } 25 | cacheDb := stmtcache.New(db) 26 | fmt.Println("Connected to database successfully") 27 | GlobalWorldDB = &WorldDB{DB: cacheDb} 28 | return nil 29 | } 30 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/qs_player_trade_record.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type QsPlayerTradeRecord struct { 15 | TradeID int32 `sql:"primary_key"` 16 | Time *time.Time 17 | Char1ID *int32 18 | Char1Pp *int32 19 | Char1Gp *int32 20 | Char1Sp *int32 21 | Char1Cp *int32 22 | Char1Items *int32 23 | Char2ID *int32 24 | Char2Pp *int32 25 | Char2Gp *int32 26 | Char2Sp *int32 27 | Char2Cp *int32 28 | Char2Items *int32 29 | } 30 | -------------------------------------------------------------------------------- /server/internal/api/capnp/world.capnp: -------------------------------------------------------------------------------- 1 | @0x9a7b8c6d5e4f3210; # Unique schema ID 2 | 3 | using Go = import "go.capnp"; # Import go.capnp for Go annotations 4 | $Go.package("net"); # Go package name 5 | $Go.import("github.com/knervous/eqgo/internal/api/capnp"); # Go import path 6 | 7 | struct JWTLogin { 8 | token @0 :Text; 9 | } 10 | 11 | struct JWTResponse { 12 | status @0 :Int32; 13 | } 14 | 15 | struct WebInitiateConnection { 16 | login @0 :Bool; 17 | } 18 | 19 | struct EnterWorld { 20 | name @0 :Text; 21 | tutorial @1 :Int32; 22 | returnHome @2 :Int32; 23 | } 24 | 25 | struct NameApproval { 26 | name @0 :Text; 27 | race @1 :Int32; 28 | charClass @2 :Int32; 29 | deity @3 :Int32; 30 | } -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/login_world_servers.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type LoginWorldServers struct { 15 | ID uint32 `sql:"primary_key"` 16 | LongName string 17 | ShortName string 18 | TagDescription string 19 | LoginServerListTypeID int32 20 | LastLoginDate *time.Time 21 | LastIPAddress *string 22 | LoginServerAdminID int32 23 | IsServerTrusted int32 24 | Note *string 25 | } 26 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/petitions.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Petitions struct { 11 | Dib uint32 `sql:"primary_key"` 12 | Petid uint32 13 | Charname string 14 | Accountname string 15 | Lastgm string 16 | Petitiontext string 17 | Gmtext *string 18 | Zone string 19 | Urgency int32 20 | Charclass int32 21 | Charrace int32 22 | Charlevel int32 23 | Checkouts int32 24 | Unavailables int32 25 | Ischeckedout int8 26 | Senttime int64 27 | } 28 | -------------------------------------------------------------------------------- /client/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", 4 | "target": "ES2022", 5 | "lib": ["ES2023"], 6 | "module": "ESNext", 7 | "skipLibCheck": true, 8 | 9 | /* Bundler mode */ 10 | "moduleResolution": "bundler", 11 | "allowImportingTsExtensions": true, 12 | "isolatedModules": true, 13 | "moduleDetection": "force", 14 | "noEmit": true, 15 | 16 | /* Linting */ 17 | "strict": true, 18 | "noUnusedLocals": true, 19 | "noUnusedParameters": true, 20 | "noFallthroughCasesInSwitch": true, 21 | "noUncheckedSideEffectImports": true 22 | }, 23 | "include": ["vite.config.ts"] 24 | } 25 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/faction_association.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type FactionAssociation struct { 11 | ID int32 `sql:"primary_key"` 12 | ID1 int32 13 | Mod1 float64 14 | ID2 int32 15 | Mod2 float64 16 | ID3 int32 17 | Mod3 float64 18 | ID4 int32 19 | Mod4 float64 20 | ID5 int32 21 | Mod5 float64 22 | ID6 int32 23 | Mod6 float64 24 | ID7 int32 25 | Mod7 float64 26 | ID8 int32 27 | Mod8 float64 28 | ID9 int32 29 | Mod9 float64 30 | ID10 int32 31 | Mod10 float64 32 | } 33 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/qs_player_handin_record.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type QsPlayerHandinRecord struct { 15 | HandinID int32 `sql:"primary_key"` 16 | Time *time.Time 17 | QuestID *int32 18 | CharID *int32 19 | CharPp *int32 20 | CharGp *int32 21 | CharSp *int32 22 | CharCp *int32 23 | CharItems *int32 24 | NpcID *int32 25 | NpcPp *int32 26 | NpcGp *int32 27 | NpcSp *int32 28 | NpcCp *int32 29 | NpcItems *int32 30 | } 31 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/guild_bank.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type GuildBank struct { 11 | ID uint32 `sql:"primary_key"` 12 | GuildID uint32 13 | Area uint8 14 | Slot uint32 15 | ItemID uint32 16 | AugmentOneID *uint32 17 | AugmentTwoID *uint32 18 | AugmentThreeID *uint32 19 | AugmentFourID *uint32 20 | AugmentFiveID *uint32 21 | AugmentSixID *uint32 22 | Quantity int32 23 | Donator *string 24 | Permissions uint8 25 | WhoFor *string 26 | } 27 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/aa_ability.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type AaAbility struct { 11 | ID uint32 `sql:"primary_key"` 12 | Name string 13 | Category int32 14 | Classes int32 15 | Races int32 16 | DrakkinHeritage int32 17 | Deities int32 18 | Status int32 19 | Type int32 20 | Charges int32 21 | GrantOnly int8 22 | FirstRankID int32 23 | Enabled uint8 24 | ResetOnDeath int8 25 | AutoGrantEnabled int8 26 | } 27 | -------------------------------------------------------------------------------- /client/src/UI/components/game/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Box } from '@mui/material'; 3 | import { inEditor } from '../../util/constants'; 4 | import { ItemCursor } from './action-button/item-cursor'; 5 | import { DevWindowComponent } from './dev/dev-window'; 6 | import { StoneUIBase } from './stone'; 7 | import { CompassWindowComponent } from './topbar/compass-window'; 8 | import 'allotment/dist/style.css'; 9 | 10 | export const GameUIComponent: React.FC = () => { 11 | 12 | return ( 13 | 14 | 15 | 16 | 17 | {!inEditor && } 18 | 19 | ); 20 | }; 21 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/player_event_logs.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type PlayerEventLogs struct { 15 | ID int64 `sql:"primary_key"` 16 | AccountID *int64 17 | CharacterID *int64 18 | ZoneID *int32 19 | InstanceID *int32 20 | X *float64 21 | Y *float64 22 | Z *float64 23 | Heading *float64 24 | EventTypeID *int32 25 | EventTypeName *string 26 | EventData *string 27 | EtlTableID int64 28 | CreatedAt *time.Time 29 | } 30 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/player_event_npc_handin.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type PlayerEventNpcHandin struct { 15 | ID uint64 `sql:"primary_key"` 16 | NpcID *uint32 17 | NpcName *string 18 | HandinCopper *uint64 19 | HandinSilver *uint64 20 | HandinGold *uint64 21 | HandinPlatinum *uint64 22 | ReturnCopper *uint64 23 | ReturnSilver *uint64 24 | ReturnGold *uint64 25 | ReturnPlatinum *uint64 26 | IsQuestHandin *uint8 27 | CreatedAt *time.Time 28 | } 29 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/raid_details.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type RaidDetails struct { 11 | Raidid int32 `sql:"primary_key"` 12 | Loottype int32 13 | Locked bool 14 | Motd *string 15 | MarkedNpc1EntityID uint32 16 | MarkedNpc1ZoneID uint32 17 | MarkedNpc1InstanceID uint32 18 | MarkedNpc2EntityID uint32 19 | MarkedNpc2ZoneID uint32 20 | MarkedNpc2InstanceID uint32 21 | MarkedNpc3EntityID uint32 22 | MarkedNpc3ZoneID uint32 23 | MarkedNpc3InstanceID uint32 24 | } 25 | -------------------------------------------------------------------------------- /client/src/UI/components/game/stone/middle/slate-types.ts: -------------------------------------------------------------------------------- 1 | // src/UI/components/game/stone/middle/slate-types.ts 2 | import { BaseEditor, Descendant } from 'slate'; 3 | import { ReactEditor } from 'slate-react'; 4 | import type { JsonCommandLink } from './command-link-util'; 5 | 6 | export interface CommandLinkElement { 7 | type: 'command-link' 8 | payload: JsonCommandLink 9 | children: Descendant[] // Slate requires inline elements to have at least one text child 10 | } 11 | 12 | export type CustomElement = CommandLinkElement 13 | export type CustomText = { text: string } 14 | 15 | declare module 'slate' { 16 | interface CustomTypes { 17 | Editor: BaseEditor & ReactEditor 18 | Element: CustomElement 19 | Text: CustomText 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /server/internal/quest/zones/qeynos2/zone.go: -------------------------------------------------------------------------------- 1 | package qeynos2 2 | 3 | import ( 4 | "fmt" 5 | 6 | "github.com/knervous/eqgo/internal/quest" 7 | "github.com/knervous/eqgo/internal/zone/npc" 8 | ) 9 | 10 | func registerZoneQuests(zq *quest.ZoneQuestInterface) { 11 | zq.Register( 12 | "", 13 | quest.EventSay, func(e *quest.QuestEvent) bool { 14 | switch e.Receiver.(type) { 15 | case *npc.NPC: 16 | if e.Receiver == nil || e.Actor == nil { 17 | return false 18 | } 19 | greetings := fmt.Sprintf("Hello, %s! My name is %s", e.Actor.Name(), e.Receiver.Name()) 20 | e.Receiver.Say(greetings) 21 | } 22 | switch e.Actor.(type) { 23 | case *npc.NPC: 24 | return true 25 | 26 | default: 27 | return false 28 | } 29 | }, 30 | ) 31 | } 32 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/character_buffs.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type CharacterBuffs struct { 11 | CharacterID uint32 `sql:"primary_key"` 12 | SlotID uint8 `sql:"primary_key"` 13 | SpellID uint16 14 | CasterLevel uint8 15 | CasterName string 16 | Ticsremaining int32 17 | Counters uint32 18 | Numhits uint32 19 | MeleeRune uint32 20 | MagicRune uint32 21 | Persistent uint8 22 | DotRune int32 23 | CastonX int32 24 | CastonY int32 25 | CastonZ int32 26 | ExtraDIChance int32 27 | InstrumentMod int32 28 | } 29 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/qs_merchant_transaction_record.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type QsMerchantTransactionRecord struct { 15 | TransactionID int32 `sql:"primary_key"` 16 | Time *time.Time 17 | ZoneID *int32 18 | MerchantID *int32 19 | MerchantPp *int32 20 | MerchantGp *int32 21 | MerchantSp *int32 22 | MerchantCp *int32 23 | MerchantItems *int32 24 | CharID *int32 25 | CharPp *int32 26 | CharGp *int32 27 | CharSp *int32 28 | CharCp *int32 29 | CharItems *int32 30 | } 31 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | // "editor.defaultFormatter": "rvest.vs-code-prettier-eslint", 3 | // "editor.formatOnType": false, // required 4 | //"editor.formatOnSave": true, // optional 5 | // "editor.formatOnSaveMode": "file", // required to format on save 6 | //"files.autoSave": "onFocusChange", // optional but recommended 7 | "vs-code-prettier-eslint.prettierLast": false, // set as "true" to run 'prettier' last not first 8 | "editor.codeActionsOnSave": { 9 | "source.fixAll.eslint": "always" 10 | }, 11 | "eslint.validate": ["javascript", "typescript", "typescriptreact"], 12 | "files.associations": { 13 | "*.tsx": "typescriptreact" 14 | }, 15 | "eslint.codeActionsOnSave.rules": null, 16 | "eslint.execArgv": null, 17 | 18 | } -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/player_event_merchant_sell.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type PlayerEventMerchantSell struct { 15 | ID uint64 `sql:"primary_key"` 16 | NpcID *uint32 17 | MerchantName *string 18 | MerchantType *uint32 19 | ItemID *uint32 20 | ItemName *string 21 | Charges *int32 22 | Cost *uint32 23 | AlternateCurrencyID *uint32 24 | PlayerMoneyBalance *uint64 25 | PlayerCurrencyBalance *uint64 26 | CreatedAt *time.Time 27 | } 28 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/player_event_merchant_purchase.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type PlayerEventMerchantPurchase struct { 15 | ID uint64 `sql:"primary_key"` 16 | NpcID *uint32 17 | MerchantName *string 18 | MerchantType *uint32 19 | ItemID *uint32 20 | ItemName *string 21 | Charges *int32 22 | Cost *uint32 23 | AlternateCurrencyID *uint32 24 | PlayerMoneyBalance *uint64 25 | PlayerCurrencyBalance *uint64 26 | CreatedAt *time.Time 27 | } 28 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/character_corpse_items.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type CharacterCorpseItems struct { 11 | CorpseID uint32 `sql:"primary_key"` 12 | EquipSlot uint32 `sql:"primary_key"` 13 | ItemID *uint32 14 | Charges *uint32 15 | Aug1 *uint32 16 | Aug2 *uint32 17 | Aug3 *uint32 18 | Aug4 *uint32 19 | Aug5 *uint32 20 | Aug6 int32 21 | Attuned int16 22 | CustomData *string 23 | Ornamenticon uint32 24 | Ornamentidfile uint32 25 | OrnamentHeroModel uint32 26 | } 27 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/sharedbank.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Sharedbank struct { 11 | AccountID uint32 `sql:"primary_key"` 12 | SlotID uint32 `sql:"primary_key"` 13 | ItemID uint32 14 | Charges uint16 15 | Color uint32 16 | AugmentOne uint32 17 | AugmentTwo uint32 18 | AugmentThree uint32 19 | AugmentFour uint32 20 | AugmentFive uint32 21 | AugmentSix uint32 22 | CustomData *string 23 | OrnamentIcon uint32 24 | OrnamentIdfile uint32 25 | OrnamentHeroModel int32 26 | GUID uint64 27 | } 28 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/player_event_trade_entries.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type PlayerEventTradeEntries struct { 15 | ID uint64 `sql:"primary_key"` 16 | PlayerEventTradeID *uint64 17 | CharID *uint32 18 | Slot *int16 19 | ItemID *uint32 20 | Charges *int16 21 | Augment1ID *uint32 22 | Augment2ID *uint32 23 | Augment3ID *uint32 24 | Augment4ID *uint32 25 | Augment5ID *uint32 26 | Augment6ID *uint32 27 | InBag *int8 28 | CreatedAt *time.Time 29 | } 30 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/lootdrop_entries.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type LootdropEntries struct { 11 | LootdropID uint32 `sql:"primary_key"` 12 | ItemID int32 `sql:"primary_key"` 13 | ItemCharges uint16 14 | EquipItem uint8 15 | Chance float64 16 | DisabledChance float64 17 | TrivialMinLevel uint16 18 | TrivialMaxLevel uint16 19 | Multiplier uint8 20 | NpcMinLevel uint16 21 | NpcMaxLevel uint16 22 | MinExpansion int8 23 | MaxExpansion int8 24 | ContentFlags *string 25 | ContentFlagsDisabled *string 26 | } 27 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/tradeskill_recipe.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type TradeskillRecipe struct { 11 | ID int32 `sql:"primary_key"` 12 | Name string 13 | Tradeskill int16 14 | Skillneeded int16 15 | Trivial int16 16 | Nofail bool 17 | ReplaceContainer bool 18 | Notes string 19 | MustLearn int8 20 | LearnedByItemID int32 21 | Quest bool 22 | Enabled bool 23 | MinExpansion int8 24 | MaxExpansion int8 25 | ContentFlags *string 26 | ContentFlagsDisabled *string 27 | } 28 | -------------------------------------------------------------------------------- /client/src/UI/util/string-table.ts: -------------------------------------------------------------------------------- 1 | import { fsBindings } from "@/Core/bindings"; 2 | 3 | export class StringTable { 4 | private static strings: Record = {}; 5 | public static async initialize(): Promise { 6 | const data = await fsBindings.getFile("", "eqstr_us.txt"); 7 | if (data) { 8 | const decoder = new TextDecoder("utf-8"); 9 | const text = decoder.decode(data); 10 | const lines = text.split("\n"); 11 | for (const line of lines) { 12 | const [key, ...value] = line.split(" "); 13 | if (!isNaN(+key) && value.length) { 14 | this.strings[key.trim()] = value.join(' ').trim().replaceAll('
', '\n'); 15 | } 16 | } 17 | } 18 | 19 | } 20 | public static getString (key: string): string | undefined { 21 | return this.strings[key]; 22 | } 23 | } -------------------------------------------------------------------------------- /client/src/Game/ChatCommands/command-parser.ts: -------------------------------------------------------------------------------- 1 | import { BaseCommandHandler } from './command-base'; 2 | import { CommandHandler } from './command-handler'; 3 | import { GMCommandHandler } from './gm-command-handler'; 4 | 5 | 6 | export class CommandParser { 7 | public static parseCommand(command: string): void { 8 | if (!command || command.trim() === '') { 9 | return; 10 | } 11 | let handler: BaseCommandHandler = CommandHandler.instance(); 12 | switch (command[0]) { 13 | case '/': 14 | command = command.slice(1); 15 | break; 16 | case '#': 17 | command = command.slice(1); 18 | handler = GMCommandHandler.instance(); 19 | break; 20 | default: 21 | command = `say ${command}`; 22 | break; 23 | } 24 | handler.parseCommand(command); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/inventory.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Inventory struct { 11 | CharacterID uint32 `sql:"primary_key"` 12 | SlotID uint32 `sql:"primary_key"` 13 | ItemID *uint32 14 | Charges *uint16 15 | Color uint32 16 | AugmentOne uint32 17 | AugmentTwo uint32 18 | AugmentThree uint32 19 | AugmentFour uint32 20 | AugmentFive uint32 21 | AugmentSix uint32 22 | Instnodrop uint8 23 | CustomData *string 24 | OrnamentIcon uint32 25 | OrnamentIdfile uint32 26 | OrnamentHeroModel int32 27 | GUID *uint64 28 | } 29 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/npc_spells_entries.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type NpcSpellsEntries struct { 11 | ID uint32 `sql:"primary_key"` 12 | NpcSpellsID int32 13 | Spellid uint16 14 | Type uint32 15 | Minlevel uint8 16 | Maxlevel uint8 17 | Manacost int16 18 | RecastDelay int32 19 | Priority int16 20 | ResistAdjust *int32 21 | MinHp *int16 22 | MaxHp *int16 23 | MinExpansion int8 24 | MaxExpansion int8 25 | ContentFlags *string 26 | ContentFlagsDisabled *string 27 | } 28 | -------------------------------------------------------------------------------- /server/internal/zone/interface/client.go: -------------------------------------------------------------------------------- 1 | package entity 2 | 3 | import ( 4 | "github.com/knervous/eqgo/internal/constants" 5 | "github.com/knervous/eqgo/internal/db/jetgen/eqgo/model" 6 | ) 7 | 8 | // Client defines the minimal methods Session needs. 9 | type Client interface { 10 | Level() uint8 11 | Class() uint8 12 | Race() uint8 13 | Position() MobPosition 14 | Items() map[constants.InventoryKey]*constants.ItemWithInstance 15 | WithItems(caller func(map[constants.InventoryKey]*constants.ItemWithInstance)) 16 | SetPosition(MobPosition) 17 | SetVelocity(Velocity) 18 | CanEquipItem(item *constants.ItemWithInstance) bool 19 | UpdateStats() 20 | CharData() *model.CharacterData 21 | Mob() *Mob 22 | GetMob() *Mob 23 | ID() int 24 | Name() string 25 | Say(msg string) 26 | Type() int32 // EntityTypePlayer, EntityTypeNPC, etc. 27 | } 28 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/blocked_spells.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type BlockedSpells struct { 11 | ID int32 `sql:"primary_key"` 12 | Spellid uint32 13 | Type int8 14 | Zoneid int32 15 | X float64 16 | Y float64 17 | Z float64 18 | XDiff float64 19 | YDiff float64 20 | ZDiff float64 21 | Message string 22 | Description string 23 | MinExpansion int8 24 | MaxExpansion int8 25 | ContentFlags *string 26 | ContentFlagsDisabled *string 27 | } 28 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/server_scheduled_events.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type ServerScheduledEvents struct { 15 | ID int32 `sql:"primary_key"` 16 | Description *string 17 | EventType *string 18 | EventData *string 19 | MinuteStart *int32 20 | HourStart *int32 21 | DayStart *int32 22 | MonthStart *int32 23 | YearStart *int32 24 | MinuteEnd *int32 25 | HourEnd *int32 26 | DayEnd *int32 27 | MonthEnd *int32 28 | YearEnd *int32 29 | CronExpression *string 30 | CreatedAt *time.Time 31 | DeletedAt *time.Time 32 | } 33 | -------------------------------------------------------------------------------- /client/src/auth.ts: -------------------------------------------------------------------------------- 1 | export function getCookie(name: string) { 2 | const value = `; ${document.cookie}`; 3 | const parts = value.split(`; ${name}=`); 4 | if (parts.length === 2) return parts.pop().split(';').shift(); 5 | } 6 | 7 | export function parseJwt(token: string) : object | undefined { 8 | try { 9 | const base64Url = token.split('.')[1]; // Get the payload (second part) 10 | const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/'); // Convert base64url to base64 11 | const jsonPayload = decodeURIComponent( 12 | atob(base64) 13 | .split('') 14 | .map((c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)) 15 | .join(''), 16 | ); 17 | 18 | return JSON.parse(jsonPayload); 19 | } catch (e) { 20 | console.error('Failed to parse JWT:', e); 21 | return undefined; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /client/src/Game/ChatCommands/chat-message.ts: -------------------------------------------------------------------------------- 1 | import emitter, { ChatMessage } from '@game/Events/events'; 2 | 3 | export const chatMessage = (message: Partial): void => { 4 | emitter.emit('chatMessage', { 5 | type : message.type ?? 0, 6 | message: message?.message ?? '', 7 | color : message?.color ?? '#ddd', 8 | chanNum: message?.chanNum ?? 0, 9 | }); 10 | }; 11 | 12 | 13 | export const addChatLine = (message: string) => { 14 | chatMessage({ 15 | type : 0, 16 | message, 17 | color : '#ddd', 18 | chanNum: 0, 19 | }); 20 | }; 21 | 22 | export const addChatLines = (lines: string | string[]) => { 23 | const lineArray = Array.isArray(lines) 24 | ? lines 25 | : lines 26 | .trim() 27 | .split('\n') 28 | .map((line) => line.trim()); 29 | lineArray.forEach((line) => addChatLine(line)); 30 | }; 31 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/global_loot.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type GlobalLoot struct { 11 | ID int32 `sql:"primary_key"` 12 | Description *string 13 | LoottableID int32 14 | Enabled int8 15 | MinLevel int32 16 | MaxLevel int32 17 | Rare *int8 18 | Raid *int8 19 | Race *string 20 | Class *string 21 | Bodytype *string 22 | Zone *string 23 | HotZone *int8 24 | MinExpansion int8 25 | MaxExpansion int8 26 | ContentFlags *string 27 | ContentFlagsDisabled *string 28 | } 29 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/player_event_npc_handin_entries.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type PlayerEventNpcHandinEntries struct { 15 | ID uint64 `sql:"primary_key"` 16 | PlayerEventNpcHandinID uint64 17 | Type *uint32 18 | ItemID uint32 19 | Charges int32 20 | EvolveLevel uint32 21 | EvolveAmount uint64 22 | Augment1ID uint32 23 | Augment2ID uint32 24 | Augment3ID uint32 25 | Augment4ID uint32 26 | Augment5ID uint32 27 | Augment6ID uint32 28 | CreatedAt *time.Time 29 | } 30 | -------------------------------------------------------------------------------- /server/internal/zone/zone-chat.go: -------------------------------------------------------------------------------- 1 | package zone 2 | 3 | import ( 4 | "encoding/base64" 5 | "encoding/json" 6 | 7 | "log" 8 | ) 9 | 10 | type CommandType int32 11 | 12 | const ( 13 | CommandTypeLink CommandType = iota 14 | CommandTypeSummon 15 | ) 16 | 17 | type JsonCommandLink struct { 18 | LinkType CommandType `json:"linkType"` 19 | Label string `json:"label"` 20 | Data interface{} `json:"data"` 21 | } 22 | 23 | func (z *ZoneInstance) createJsonCommandLink(linkType CommandType, label string, data interface{}) string { 24 | link := JsonCommandLink{ 25 | LinkType: linkType, 26 | Label: label, 27 | Data: data, 28 | } 29 | 30 | jsonData, err := json.Marshal(link) 31 | if err != nil { 32 | log.Printf("failed to marshal command link: %v", err) 33 | return "" 34 | } 35 | 36 | return "{{" + base64.StdEncoding.EncodeToString(jsonData) + "}}" 37 | } 38 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/merc_buffs.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type MercBuffs struct { 11 | MercBuffId uint32 `sql:"primary_key"` 12 | MercId uint32 13 | SpellId uint32 14 | CasterLevel uint32 15 | DurationFormula uint32 16 | TicsRemaining int32 17 | PoisonCounters uint32 18 | DiseaseCounters uint32 19 | CurseCounters uint32 20 | CorruptionCounters uint32 21 | HitCount uint32 22 | MeleeRune uint32 23 | MagicRune uint32 24 | DotRune int32 25 | CastonX int32 26 | Persistent bool 27 | CastonY int32 28 | CastonZ int32 29 | ExtraDIChance int32 30 | } 31 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/character_currency.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type CharacterCurrency struct { 11 | ID uint32 `sql:"primary_key"` 12 | Platinum uint32 13 | Gold uint32 14 | Silver uint32 15 | Copper uint32 16 | PlatinumBank uint32 17 | GoldBank uint32 18 | SilverBank uint32 19 | CopperBank uint32 20 | PlatinumCursor uint32 21 | GoldCursor uint32 22 | SilverCursor uint32 23 | CopperCursor uint32 24 | RadiantCrystals uint32 25 | CareerRadiantCrystals uint32 26 | EbonCrystals uint32 27 | CareerEbonCrystals uint32 28 | } 29 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/trader.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type Trader struct { 15 | ID uint64 `sql:"primary_key"` 16 | CharID uint32 17 | ItemID uint32 18 | AugSlot1 uint32 19 | AugSlot2 uint32 20 | AugSlot3 uint32 21 | AugSlot4 uint32 22 | AugSlot5 uint32 23 | AugSlot6 uint32 24 | ItemSn uint32 25 | ItemCharges int32 26 | ItemCost uint32 27 | SlotID uint8 28 | CharEntityID uint32 29 | CharZoneID uint32 30 | CharZoneInstanceID *int32 31 | ActiveTransaction uint8 32 | ListingDate *time.Time 33 | } 34 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/inventory_snapshots.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type InventorySnapshots struct { 11 | TimeIndex uint32 `sql:"primary_key"` 12 | Charid uint32 `sql:"primary_key"` 13 | Slotid uint32 `sql:"primary_key"` 14 | Itemid *uint32 15 | Charges *uint16 16 | Color uint32 17 | Augslot1 uint32 18 | Augslot2 uint32 19 | Augslot3 uint32 20 | Augslot4 uint32 21 | Augslot5 *uint32 22 | Augslot6 int32 23 | Instnodrop uint8 24 | CustomData *string 25 | Ornamenticon uint32 26 | Ornamentidfile uint32 27 | OrnamentHeroModel int32 28 | GUID *uint64 29 | } 30 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/merchantlist.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Merchantlist struct { 11 | Merchantid int32 `sql:"primary_key"` 12 | Slot uint32 `sql:"primary_key"` 13 | Item int32 14 | CustomData *string 15 | FactionRequired int16 16 | LevelRequired uint8 17 | MinStatus uint8 18 | MaxStatus uint8 19 | AltCurrencyCost uint16 20 | ClassesRequired int32 21 | Probability int32 22 | BucketName string 23 | BucketValue string 24 | BucketComparison *uint8 25 | MinExpansion int8 26 | MaxExpansion int8 27 | ContentFlags *string 28 | ContentFlagsDisabled *string 29 | } 30 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/spawn2.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Spawn2 struct { 11 | ID int32 `sql:"primary_key"` 12 | SpawngroupID int32 13 | Zone *string 14 | Version int16 15 | X float64 16 | Y float64 17 | Z float64 18 | Heading float64 19 | Respawntime int32 20 | Variance int32 21 | Pathgrid int32 22 | PathWhenZoneIdle bool 23 | Condition uint32 24 | CondValue int32 25 | Animation uint8 26 | MinExpansion int8 27 | MaxExpansion int8 28 | ContentFlags *string 29 | ContentFlagsDisabled *string 30 | } 31 | -------------------------------------------------------------------------------- /client/src/UI/components/login/index.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { LoginWindowComponent } from "./login-window"; 3 | import { Box } from "@mui/material"; 4 | import { getSplashImage } from "../../common/splash"; 5 | 6 | export const LoginUIComponent: React.FC = () => { 7 | return ( 8 | 22 | 23 | 24 | ); 25 | }; -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/ground_spawns.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type GroundSpawns struct { 11 | ID uint32 `sql:"primary_key"` 12 | Zoneid uint32 13 | Version int16 14 | MaxX float64 15 | MaxY float64 16 | MaxZ float64 17 | MinX float64 18 | MinY float64 19 | Heading float64 20 | Name string 21 | Item uint32 22 | MaxAllowed uint32 23 | Comment string 24 | RespawnTimer uint32 25 | FixZ uint8 26 | MinExpansion int8 27 | MaxExpansion int8 28 | ContentFlags *string 29 | ContentFlagsDisabled *string 30 | } 31 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/starting_items.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type StartingItems struct { 11 | ID uint32 `sql:"primary_key"` 12 | ClassList *string 13 | RaceList *string 14 | DeityList *string 15 | ZoneIDList *string 16 | ItemID uint32 17 | ItemCharges uint8 18 | AugmentOne uint32 19 | AugmentTwo uint32 20 | AugmentThree uint32 21 | AugmentFour uint32 22 | AugmentFive uint32 23 | AugmentSix uint32 24 | Status int32 25 | InventorySlot int32 26 | MinExpansion int8 27 | MaxExpansion int8 28 | ContentFlags *string 29 | ContentFlagsDisabled *string 30 | } 31 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/dynamic_zone_templates.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type DynamicZoneTemplates struct { 11 | ID uint32 `sql:"primary_key"` 12 | ZoneID int32 13 | ZoneVersion int32 14 | Name string 15 | MinPlayers int32 16 | MaxPlayers int32 17 | DurationSeconds int32 18 | DzSwitchID int32 19 | CompassZoneID int32 20 | CompassX float64 21 | CompassY float64 22 | CompassZ float64 23 | ReturnZoneID int32 24 | ReturnX float64 25 | ReturnY float64 26 | ReturnZ float64 27 | ReturnH float64 28 | OverrideZoneIn int8 29 | ZoneInX float64 30 | ZoneInY float64 31 | ZoneInZ float64 32 | ZoneInH float64 33 | } 34 | -------------------------------------------------------------------------------- /server/internal/zone/client/client-handler-registry.go: -------------------------------------------------------------------------------- 1 | package client 2 | 3 | import ( 4 | "github.com/knervous/eqgo/internal/api/opcodes" 5 | "github.com/knervous/eqgo/internal/session" 6 | entity "github.com/knervous/eqgo/internal/zone/interface" 7 | ) 8 | 9 | type DatagramHandler func(z entity.ZoneAccess, clientSession *session.Session, payload []byte) 10 | 11 | type HandlerRegistry struct { 12 | handlers map[opcodes.OpCode]DatagramHandler 13 | } 14 | 15 | func (c *Client) NewClientRegistry() *HandlerRegistry { 16 | handlers := map[opcodes.OpCode]DatagramHandler{ 17 | opcodes.MoveItem: c.HandleMoveItem, 18 | opcodes.DeleteItem: c.HandleDeleteItem, 19 | } 20 | registry := &HandlerRegistry{ 21 | handlers: handlers, 22 | } 23 | return registry 24 | } 25 | 26 | func (c *Client) HandleZonePacket(z entity.ZoneAccess, session *session.Session, op opcodes.OpCode, payload []byte) { 27 | if h, ok := c.packetHandlers.handlers[op]; ok { 28 | h(z, session, payload) 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/npc_spells.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type NpcSpells struct { 11 | ID uint32 `sql:"primary_key"` 12 | Name string 13 | ParentList uint32 14 | AttackProc int16 15 | ProcChance int8 16 | RangeProc int16 17 | RprocChance int16 18 | DefensiveProc int16 19 | DprocChance int16 20 | FailRecast uint32 21 | EngagedNoSpRecastMin uint32 22 | EngagedNoSpRecastMax uint32 23 | EngagedBSelfChance uint8 24 | EngagedBOtherChance uint8 25 | EngagedDChance uint8 26 | PursueNoSpRecastMin uint32 27 | PursueNoSpRecastMax uint32 28 | PursueDChance uint8 29 | IdleNoSpRecastMin uint32 30 | IdleNoSpRecastMax uint32 31 | IdleBChance uint8 32 | } 33 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/npc_types_tint.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type NpcTypesTint struct { 11 | ID uint32 `sql:"primary_key"` 12 | TintSetName string 13 | Red1h uint8 14 | Grn1h uint8 15 | Blu1h uint8 16 | Red2c uint8 17 | Grn2c uint8 18 | Blu2c uint8 19 | Red3a uint8 20 | Grn3a uint8 21 | Blu3a uint8 22 | Red4b uint8 23 | Grn4b uint8 24 | Blu4b uint8 25 | Red5g uint8 26 | Grn5g uint8 27 | Blu5g uint8 28 | Red6l uint8 29 | Grn6l uint8 30 | Blu6l uint8 31 | Red7f uint8 32 | Grn7f uint8 33 | Blu7f uint8 34 | Red8x uint8 35 | Grn8x uint8 36 | Blu8x uint8 37 | Red9x uint8 38 | Grn9x uint8 39 | Blu9x uint8 40 | } 41 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/start_zones.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type StartZones struct { 11 | X float64 12 | Y float64 13 | Z float64 14 | Heading float64 15 | ZoneID int32 16 | BindID int32 17 | PlayerChoice int32 `sql:"primary_key"` 18 | PlayerClass int32 `sql:"primary_key"` 19 | PlayerDeity int32 `sql:"primary_key"` 20 | PlayerRace int32 `sql:"primary_key"` 21 | StartZone int32 22 | BindX float64 23 | BindY float64 24 | BindZ float64 25 | SelectRank uint8 26 | MinExpansion int8 27 | MaxExpansion int8 28 | ContentFlags *string 29 | ContentFlagsDisabled *string 30 | } 31 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/mercs.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Mercs struct { 11 | MercID uint32 `sql:"primary_key"` 12 | OwnerCharacterID uint32 13 | Slot uint8 14 | Name string 15 | TemplateID uint32 16 | SuspendedTime uint32 17 | IsSuspended uint8 18 | TimerRemaining uint32 19 | Gender uint8 20 | MercSize float64 21 | StanceID uint8 22 | Hp uint32 23 | Mana uint32 24 | Endurance uint32 25 | Face uint32 26 | LuclinHairStyle uint32 27 | LuclinHairColor uint32 28 | LuclinEyeColor uint32 29 | LuclinEyeColor2 uint32 30 | LuclinBeardColor uint32 31 | LuclinBeard uint32 32 | DrakkinHeritage uint32 33 | DrakkinTattoo uint32 34 | DrakkinDetails uint32 35 | } 36 | -------------------------------------------------------------------------------- /server/internal/api/capnp/go.capnp: -------------------------------------------------------------------------------- 1 | @0xd12a1c51fedd6c88; 2 | 3 | annotation package(file) :Text; 4 | # The Go package name for the generated file. 5 | 6 | annotation import(file) :Text; 7 | # The Go import path that the generated file is accessible from. 8 | # Used to generate import statements and check if two types are in the 9 | # same package. 10 | 11 | annotation doc(struct, field, enum) :Text; 12 | # Adds a doc comment to the generated code. 13 | 14 | annotation tag(enumerant) :Text; 15 | # Changes the string representation of the enum in the generated code. 16 | 17 | annotation notag(enumerant) :Void; 18 | # Removes the string representation of the enum in the generated code. 19 | 20 | annotation customtype(field) :Text; 21 | # OBSOLETE, not used by code generator. 22 | 23 | annotation name(struct, field, union, enum, enumerant, interface, method, param, annotation, const, group) :Text; 24 | # Used to rename the element in the generated code. 25 | 26 | $package("net"); 27 | $import("capnproto.org/go/capnp/v3/std/go"); 28 | -------------------------------------------------------------------------------- /client/src/UI/components/game/stone/middle/stone-chat.hooks.tsx: -------------------------------------------------------------------------------- 1 | // src/components/game/stone/middle/stone-chat.hooks.tsx 2 | import { Editor, Element, Node, Transforms } from 'slate'; 3 | 4 | export const withCommandLinks = (editor: T) => { 5 | const { isInline, normalizeNode } = editor; 6 | 7 | editor.isInline = (element) => { 8 | return element.type === 'command-link' ? true : isInline(element); 9 | }; 10 | 11 | editor.normalizeNode = (entry) => { 12 | const [node, path] = entry; 13 | if (Element.isElement(node) && node.type === 'command-link') { 14 | if (node.children.length !== 1) { 15 | Transforms.setNodes( 16 | editor, 17 | { 18 | children: [ 19 | { text: `{{${Buffer.from(JSON.stringify(node.payload)).toString('base64')}}}` }, 20 | ], 21 | }, 22 | { at: path }, 23 | ); 24 | return; 25 | } 26 | } 27 | normalizeNode(entry); 28 | }; 29 | 30 | return editor; 31 | }; 32 | -------------------------------------------------------------------------------- /client/src/Game/FileSystem/filesystem.ts: -------------------------------------------------------------------------------- 1 | import { fsBindings } from "@/Core/bindings"; 2 | 3 | 4 | export class FileSystem { 5 | static async getFileBytes( 6 | folderPath: string, 7 | fileName?: string, 8 | ): Promise { 9 | let buffer: ArrayBuffer | undefined; 10 | const bytes = await fsBindings.getFile?.(folderPath, fileName ?? ''); 11 | if (bytes) { 12 | buffer = bytes; 13 | } 14 | 15 | return buffer; 16 | } 17 | 18 | static async getFileJSON( 19 | folderPath: string, 20 | fileName?: string, 21 | ): Promise { 22 | const bytes = await this.getFileBytes(folderPath, fileName); 23 | if (!bytes) { 24 | return undefined; 25 | } 26 | 27 | try { 28 | const jsonString = new TextDecoder().decode(bytes); 29 | return JSON.parse(jsonString) as T; 30 | } catch (error) { 31 | console.error(`Failed to parse JSON from ${folderPath}/${fileName}:`, error); 32 | return undefined; 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /server/internal/zone/interface/zone-access.go: -------------------------------------------------------------------------------- 1 | package entity 2 | 3 | import ( 4 | "github.com/knervous/eqgo/internal/constants" 5 | "github.com/knervous/eqgo/internal/db/jetgen/eqgo/model" 6 | ) 7 | 8 | // ZoneAccess provides read-only, thread-safe access to zone state. 9 | 10 | // ZoneAccess provides read-only, thread-safe access to zone state. 11 | type ZoneAccess interface { 12 | // Basic zone info 13 | GetZone() *model.Zone 14 | GetZoneID() int 15 | GetInstanceID() int 16 | 17 | // Clients 18 | Clients() []Client 19 | ClientBySession(sessionID int) (Client, bool) 20 | ClientByEntity(entityID int) (Client, bool) 21 | 22 | // NPCs 23 | NPCs() []NPC 24 | NPCByID(npcID int) (NPC, bool) 25 | NPCByName(name string) (NPC, bool) 26 | 27 | // Entities (players + NPCs) 28 | ZoneEntities() []Entity 29 | EntityByID(id int) (Entity, bool) 30 | 31 | // Messaging 32 | BroadcastChannel(sender string, channelID int, msg string) 33 | BroadcastServer(msg string) 34 | BroadcastWearChange(sender int, slot int8, item *constants.ItemWithInstance) 35 | } 36 | -------------------------------------------------------------------------------- /client/localhost.csr: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE REQUEST----- 2 | MIICpDCCAYwCAQAwSTELMAkGA1UEBhMCZGUxCzAJBgNVBAgMAmJlMQ8wDQYDVQQH 3 | DAZiZXJsaW4xDTALBgNVBAoMBG5vbmUxDTALBgNVBAsMBG5vbmUwggEiMA0GCSqG 4 | SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDexNjy7d+FHpkqozTJOfhU9IZpeoxBci6j 5 | UmF/2jAQsuveKhXJh6aZPuyOGyZhVKnNKrhVSXxWs92pDD5cx3mqx1XOqx58Tw0b 6 | LLQZe4rMXx4RpZBRw8pQkcnM0SDIXoM8lLjy90OtAHwcFgWey03xf27ufR8FevW7 7 | /3SD2qLEjk3pOCpxYGVZm/ulwEgQTM5NtKihp2nctcYPOEddkx/n6sDHmOci7dmH 8 | ATFoxnG4g0U0QjoOQ7heaYnSOsMnmmCWORDUvtpbnQBOGQRP0CuXPMy0b1h0jpUk 9 | HjIL7c3kkM03daXAFci/CF5QT3IIVL42p3CWDLB4gG6S/KaszOQHAgMBAAGgFjAU 10 | BgkqhkiG9w0BCQcxBwwFYWRtaW4wDQYJKoZIhvcNAQELBQADggEBAFDAOTJSIi8R 11 | pYRpurbliyf2BQ0x1GdcB1s0fq6ROlafYE2pntI5Vhmvf4PxkA1A9gPK7UTazEab 12 | cYyZDa/ky9cmrBM712ANUgrzTgOuv++e7Kr5KfoPTH9c+NPxTOxrnpF709kyCTVu 13 | rzpenQdpUSMnlfV/B35Rl0INPW4sRx7s7fp3Qfc80ocFd3Uj2CMUjivHDO7cY+tN 14 | U2115xX7GjNRk8v1LsdDV9WkNHVGuihVS2KAV99lhWK9FhDiS2cZHpxKfexQQKHj 15 | jPlpjjMMh8VWDc3+019uXbPTN4Ohe4obpGWAHhZqJ3jcBQCzevBrnLC9nGWK4xfC 16 | rzup9h4mgbM= 17 | -----END CERTIFICATE REQUEST----- 18 | -------------------------------------------------------------------------------- /server/cmd/races/main.go: -------------------------------------------------------------------------------- 1 | // gen_race_names.go 2 | // Run with `go run gen_race_names.go > race_names_generated.go` 3 | 4 | package main 5 | 6 | import ( 7 | "bufio" 8 | "fmt" 9 | "os" 10 | "regexp" 11 | ) 12 | 13 | func main() { 14 | in, err := os.Open("/Users/Paul/source/eqemu-server/common/races.cpp") 15 | if err != nil { 16 | panic(err) 17 | } 18 | defer in.Close() 19 | 20 | reCase := regexp.MustCompile(`case\s+Race::(\w+):`) 21 | reRet := regexp.MustCompile(`return\s+"([^"]+)"`) 22 | scanner := bufio.NewScanner(in) 23 | 24 | fmt.Println("package constants") 25 | fmt.Println() 26 | fmt.Println("// DO NOT EDIT—auto-generated by gen_race_names.go") 27 | fmt.Println("var raceNames = map[RaceID]string{") 28 | 29 | var last string 30 | for scanner.Scan() { 31 | line := scanner.Text() 32 | if m := reCase.FindStringSubmatch(line); m != nil { 33 | last = m[1] 34 | } else if m := reRet.FindStringSubmatch(line); m != nil && last != "" { 35 | fmt.Printf("\tRace%s: %q,\n", last, m[1]) 36 | last = "" 37 | } 38 | } 39 | fmt.Println("}") 40 | } 41 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/dynamic_zones.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type DynamicZones struct { 11 | ID uint32 `sql:"primary_key"` 12 | InstanceID int32 13 | Type uint8 14 | UUID string 15 | Name string 16 | LeaderID uint32 17 | MinPlayers uint32 18 | MaxPlayers uint32 19 | DzSwitchID int32 20 | CompassZoneID uint32 21 | CompassX float64 22 | CompassY float64 23 | CompassZ float64 24 | SafeReturnZoneID uint32 25 | SafeReturnX float64 26 | SafeReturnY float64 27 | SafeReturnZ float64 28 | SafeReturnHeading float64 29 | ZoneInX float64 30 | ZoneInY float64 31 | ZoneInZ float64 32 | ZoneInHeading float64 33 | HasZoneIn uint8 34 | IsLocked int8 35 | AddReplay int8 36 | } 37 | -------------------------------------------------------------------------------- /client/src/Game/Zone/zone-types.ts: -------------------------------------------------------------------------------- 1 | 2 | export interface Transform { 3 | x: number; 4 | y: number; 5 | z: number; 6 | rotateX: number; 7 | rotateY: number; 8 | rotateZ: number; 9 | scale: number; 10 | } 11 | 12 | interface Light { 13 | x: number; 14 | y: number; 15 | z: number; 16 | radius: number; 17 | r: number; 18 | g: number; 19 | b: number; 20 | } 21 | 22 | interface ZoneLineInfo { 23 | type?: number; 24 | index?: number; 25 | rot?: number; 26 | x?: number; 27 | y?: number; 28 | z?: number; 29 | zoneIndex?: number; 30 | } 31 | 32 | interface Region { 33 | minVertex: [number, number, number]; 34 | maxVertex: [number, number, number]; 35 | center: [number, number, number]; 36 | regionType: number; 37 | zoneLineInfo: ZoneLineInfo | null; 38 | } 39 | 40 | export interface ZoneMetadata { 41 | version: number; 42 | objects: { 43 | [key: string]: Transform[]; 44 | }; 45 | lights: Light[]; 46 | sounds: any[]; 47 | regions: Region[]; 48 | } -------------------------------------------------------------------------------- /client/src/UI/common/ui-image.tsx: -------------------------------------------------------------------------------- 1 | import { Box, SxProps } from "@mui/material"; 2 | import React from "react"; 3 | import { useImage, useSakImage } from "../hooks/use-image"; 4 | 5 | type Props = { 6 | name: string; 7 | crop?: boolean; 8 | children?: React.ReactNode; 9 | sx?: SxProps; 10 | sak?: boolean; // If true, use sakui images instead of default images 11 | onClick?: () => void; 12 | }; 13 | 14 | export const UiImageComponent: React.FC = (props: Props) => { 15 | const imageEntry = props.sak ? useSakImage(props.name, props.crop) : useImage(props.name, props.crop); 16 | return ( 17 | 29 | {props.children} 30 | 31 | ); 32 | }; 33 | -------------------------------------------------------------------------------- /server/internal/navigation/navigation.go: -------------------------------------------------------------------------------- 1 | package nav 2 | 3 | import ( 4 | "fmt" 5 | "os" 6 | 7 | "github.com/arl/go-detour/detour" 8 | ) 9 | 10 | // GetNavigation returns the instantiated WebAssembly module for recast-navigation. 11 | func GetNavigation() (*detour.NavMesh, error) { 12 | // Ensure the module is instantiated only once. 13 | // Read navmesh data from a file 14 | file, err := os.Open("maps/qeynos2.bin") 15 | if err != nil { 16 | return nil, fmt.Errorf("error opening navmesh file: %v", err) 17 | } 18 | defer file.Close() 19 | // Create a new NavMesh 20 | // Decode the navmesh using detour.Decode 21 | navMesh, err := detour.Decode(file) 22 | if err != nil { 23 | return nil, fmt.Errorf("error decoding navmesh: %v", err) 24 | } 25 | 26 | fmt.Println("NavMesh loaded successfully!") 27 | // Initialize the NavMesh with the data 28 | status, query := detour.NewNavMeshQuery(navMesh, 512) // 512 is the max nodes for the query 29 | if query == nil { 30 | return nil, fmt.Errorf("error creating NavMeshQuery") 31 | } 32 | fmt.Println("Status", status) 33 | return navMesh, nil 34 | } 35 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/traps.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Traps struct { 11 | ID int32 `sql:"primary_key"` 12 | Zone string 13 | Version uint16 14 | X int32 15 | Y int32 16 | Z int32 17 | Chance int8 18 | Maxzdiff float64 19 | Radius float64 20 | Effect int32 21 | Effectvalue int32 22 | Effectvalue2 int32 23 | Message string 24 | Skill int32 25 | Level uint32 26 | RespawnTime uint32 27 | RespawnVar uint32 28 | TriggeredNumber int8 29 | Group int8 30 | DespawnWhenTriggered int8 31 | Undetectable int8 32 | MinExpansion int8 33 | MaxExpansion int8 34 | ContentFlags *string 35 | ContentFlagsDisabled *string 36 | } 37 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/zone_points.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type ZonePoints struct { 11 | ID int32 `sql:"primary_key"` 12 | Zone *string 13 | Version int32 14 | Number uint16 15 | Y float64 16 | X float64 17 | Z float64 18 | Heading float64 19 | TargetY float64 20 | TargetX float64 21 | TargetZ float64 22 | TargetHeading float64 23 | Zoneinst *uint16 24 | TargetZoneID uint32 25 | TargetInstance uint32 26 | Buffer *float64 27 | ClientVersionMask uint32 28 | MinExpansion int8 29 | MaxExpansion int8 30 | ContentFlags *string 31 | ContentFlagsDisabled *string 32 | IsVirtual int8 33 | Height int32 34 | Width int32 35 | } 36 | -------------------------------------------------------------------------------- /server/internal/db/zone/zone.go: -------------------------------------------------------------------------------- 1 | package db_zone 2 | 3 | import ( 4 | "context" 5 | "fmt" 6 | 7 | "github.com/knervous/eqgo/internal/cache" 8 | "github.com/knervous/eqgo/internal/db" 9 | "github.com/knervous/eqgo/internal/db/jetgen/eqgo/model" 10 | "github.com/knervous/eqgo/internal/db/jetgen/eqgo/table" 11 | 12 | "github.com/go-jet/jet/v2/mysql" 13 | _ "github.com/go-sql-driver/mysql" 14 | ) 15 | 16 | func GetZoneById(ctx context.Context, zoneID int) (*model.Zone, error) { 17 | cacheKey := fmt.Sprintf("zone:id:%d", zoneID) 18 | if val, found, err := cache.GetCache().Get(cacheKey); err == nil && found { 19 | if zone, ok := val.(*model.Zone); ok { 20 | return zone, nil 21 | } 22 | } 23 | 24 | var zone model.Zone 25 | err := table.Zone. 26 | SELECT(table.Zone.AllColumns). 27 | FROM(table.Zone). 28 | WHERE( 29 | table.Zone.Zoneidnumber.EQ(mysql.Int(int64(zoneID))), 30 | ). 31 | QueryContext(ctx, db.GlobalWorldDB.DB, &zone) 32 | if err != nil { 33 | return nil, fmt.Errorf("query zone_data: %w", err) 34 | } 35 | 36 | cache.GetCache().Set(cacheKey, &zone) 37 | return &zone, nil 38 | } 39 | -------------------------------------------------------------------------------- /client/src/UI/components/context.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Context, createContext, useContextSelector } from 'use-context-selector'; 3 | import { UiState } from '../state/initial-state'; 4 | import { UiAction } from '../state/reducer'; 5 | 6 | export type State = { 7 | ui: UiState; 8 | mode: string; 9 | setMode: React.Dispatch>; 10 | setSplash: React.Dispatch>; 11 | token: React.RefObject; 12 | dispatcher: React.ActionDispatch<[Action: UiAction]>; 13 | getEQFile(path: string, file: string): Promise; 14 | }; 15 | 16 | export const UIContext = createContext(undefined); 17 | export const useUIContext = (selector: (state: State) => T): T => { 18 | const actualSelector = selector ?? ((state: State) => state as unknown as T); 19 | return useContextSelector(UIContext as Context, actualSelector); 20 | }; 21 | 22 | export const useDispatch = () => 23 | useUIContext((state: State) => state.dispatcher); 24 | export const useGetEQFile = () => 25 | useUIContext((state: State) => state.getEQFile); 26 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/task_activities.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type TaskActivities struct { 11 | Taskid uint32 `sql:"primary_key"` 12 | Activityid uint32 `sql:"primary_key"` 13 | ReqActivityID int32 14 | Step int32 15 | Activitytype uint8 16 | TargetName string 17 | Goalmethod uint32 18 | Goalcount *int32 19 | DescriptionOverride string 20 | NpcMatchList *string 21 | ItemIDList *string 22 | ItemList string 23 | DzSwitchID int32 24 | MinX float64 25 | MinY float64 26 | MinZ float64 27 | MaxX float64 28 | MaxY float64 29 | MaxZ float64 30 | SkillList string 31 | SpellList string 32 | Zones string 33 | ZoneVersion *int32 34 | Optional bool 35 | ListGroup uint8 36 | } 37 | -------------------------------------------------------------------------------- /server/internal/quest/zones/qeynos2/npc.go: -------------------------------------------------------------------------------- 1 | package qeynos2 2 | 3 | import ( 4 | "fmt" 5 | 6 | "github.com/knervous/eqgo/internal/quest" 7 | "github.com/knervous/eqgo/internal/zone/npc" 8 | ) 9 | 10 | func registerNpcQuests(zq *quest.ZoneQuestInterface) { 11 | zq.Register( 12 | "Guard_Gehnus", 13 | quest.EventSay, func(e *quest.QuestEvent) bool { 14 | greetings := fmt.Sprintf("Hello, %s! How can I assist you today?", e.Actor.Name()) 15 | e.Receiver.Say(greetings) 16 | switch e.Actor.(type) { 17 | case *npc.NPC: 18 | return true 19 | 20 | default: 21 | return false 22 | } 23 | }, 24 | quest.EventAggro, func(e *quest.QuestEvent) bool { 25 | return true 26 | }, 27 | ) 28 | 29 | zq.Register( 30 | "Phin_Esrinap", 31 | quest.EventSay, func(e *quest.QuestEvent) bool { 32 | greetings := fmt.Sprintf("Hello, %s!", e.Actor.Name()) 33 | e.Receiver.Say(greetings) 34 | switch e.Actor.(type) { 35 | case *npc.NPC: 36 | return true 37 | 38 | default: 39 | return false 40 | } 41 | }, 42 | quest.EventAggro, func(e *quest.QuestEvent) bool { 43 | return true 44 | }, 45 | ) 46 | } 47 | -------------------------------------------------------------------------------- /server/internal/quest/registry/quest_bench_test.go: -------------------------------------------------------------------------------- 1 | //go:build !dev 2 | // +build !dev 3 | 4 | package questregistry 5 | 6 | import ( 7 | "testing" 8 | 9 | "github.com/knervous/eqgo/internal/db/jetgen/eqgo/model" 10 | "github.com/knervous/eqgo/internal/quest" 11 | ) 12 | 13 | var questInterface *quest.ZoneQuestInterface 14 | var questEvent *quest.QuestEvent 15 | var npc *clientz.NPC 16 | 17 | func init() { 18 | questInterface = GetQuestInterface("qeynos") 19 | questEvent = &quest.QuestEvent{} 20 | npc = &clientz.NPC{ 21 | NpcData: model.NpcTypes{ 22 | Name: "Captaaaain Tillin", 23 | }, 24 | } 25 | } 26 | 27 | func BenchmarkQuestInvoke(b *testing.B) { 28 | b.ReportAllocs() 29 | for i := 0; i < b.N; i++ { 30 | questEvent.Reset() 31 | questEvent.Type(quest.EventSay) 32 | questEvent.SetActor(npc) 33 | questInterface.Invoke("Captain_Tillin", questEvent) 34 | } 35 | } 36 | 37 | func BenchmarkNonExistQuestInvoke(b *testing.B) { 38 | b.ReportAllocs() 39 | for i := 0; i < b.N; i++ { 40 | questEvent.EventType = quest.EventSay 41 | questEvent.Actor = npc 42 | questInterface.Invoke("Captain_Tulane", questEvent) 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /client/src/UI/components/game/stone/right/stone-target.tsx: -------------------------------------------------------------------------------- 1 | import { useTarget } from '@game/Events/event-hooks'; 2 | import { Stack, Typography } from '@mui/material'; 3 | import { useSakImage } from '@ui/hooks/use-image'; 4 | 5 | 6 | export const StoneTarget: React.FC = () => { 7 | const hpFill = useSakImage('Classic_HP_Fill', true); 8 | 9 | const target = useTarget(); 10 | return ! target ? null : ( 11 | 25 | 26 | {target.cleanName} 27 | 28 | 29 | {target.spawn.curHp}% 30 | 31 | 32 | ); 33 | }; 34 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/account.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type Account struct { 15 | ID int32 `sql:"primary_key"` 16 | Name string 17 | Charname string 18 | AutoLoginCharname string 19 | Sharedplat uint32 20 | Password string 21 | Status int32 22 | LsID *string 23 | LsaccountID *uint32 24 | Gmspeed uint8 25 | Invulnerable *int8 26 | Flymode *int8 27 | IgnoreTells *int8 28 | Revoked uint8 29 | Karma uint32 30 | MiniloginIP string 31 | Hideme int8 32 | Rulesflag uint8 33 | Suspendeduntil *time.Time 34 | TimeCreation uint32 35 | BanReason *string 36 | SuspendReason *string 37 | CrcEqgame *string 38 | CrcSkillcaps *string 39 | CrcBasedata *string 40 | PrimaryAuth uint8 41 | DiscordID string 42 | } 43 | -------------------------------------------------------------------------------- /client/scripts/upload-db.js: -------------------------------------------------------------------------------- 1 | import { BlobServiceClient } from "@azure/storage-blob"; 2 | import { DefaultAzureCredential } from "@azure/identity"; 3 | import fs from 'node:fs'; 4 | import path from 'node:path'; 5 | 6 | const accountName = "eqrequiem"; 7 | const containerName = "dev"; 8 | 9 | 10 | async function uploadFilesToAzure() { 11 | const cred = new DefaultAzureCredential(); 12 | const service = new BlobServiceClient( 13 | `https://${accountName}.blob.core.windows.net`, 14 | cred, 15 | ); 16 | const container = service.getContainerClient(containerName); 17 | 18 | const dbFileStream = fs.createReadStream(path.join('../', 'server/eqgo.sql.gz')); 19 | const blobClient = container.getBlockBlobClient('eqgo.sql.gz'); 20 | await blobClient.uploadStream(dbFileStream, 4 * 1024 * 1024, 5).catch(e => { 21 | console.error(`Failed to upload DB:`, e.message); 22 | }) 23 | console.log(`Uploaded DB to Azure Blob Storage`); 24 | } 25 | 26 | uploadFilesToAzure() 27 | .catch((err) => { 28 | console.error(err) 29 | }) 30 | .then(() => { 31 | console.log('Finished') 32 | }) 33 | .finally(() => { 34 | console.log("Done!"); 35 | process.exit(0); 36 | }); 37 | -------------------------------------------------------------------------------- /client/src/UI/components/game/inventory/bags-container.tsx: -------------------------------------------------------------------------------- 1 | // BagPortalManager.tsx 2 | import React from 'react'; 3 | import { useEvent } from '@game/Events/event-hooks'; 4 | import Player from '@game/Player/player'; 5 | import type { BagState } from '@game/Player/player-inventory'; 6 | import { Bag } from './bags'; // a version of Bag that only cares about props, not its own useState 7 | 8 | export const BagsContainer: React.FC<{scale: number}> = ({ scale }) => { 9 | const [localBagStates, setLocalBagStates] = React.useState>({}); 10 | useEvent('updateBagState', (e: { slot: number, state: BagState }) => { 11 | setLocalBagStates((prev) => ({ 12 | ...prev, 13 | [e.slot]: e.state, 14 | })); 15 | }); 16 | 17 | 18 | return Object.entries(localBagStates) 19 | .filter(([_, state]) => state.open) 20 | .map(([slot, state]) => 21 | , 30 | ); 31 | }; 32 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/tasks.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Tasks struct { 11 | ID uint32 `sql:"primary_key"` 12 | Type int8 13 | Duration uint32 14 | DurationCode int8 15 | Title string 16 | Description string 17 | RewardText string 18 | RewardIDList *string 19 | CashReward uint32 20 | ExpReward int32 21 | RewardMethod uint8 22 | RewardPoints int32 23 | RewardPointType int32 24 | MinLevel uint8 25 | MaxLevel uint8 26 | LevelSpread uint32 27 | MinPlayers uint32 28 | MaxPlayers uint32 29 | Repeatable uint8 30 | FactionReward int32 31 | CompletionEmote string 32 | ReplayTimerGroup uint32 33 | ReplayTimerSeconds uint32 34 | RequestTimerGroup uint32 35 | RequestTimerSeconds uint32 36 | DzTemplateID uint32 37 | LockActivityID int32 38 | FactionAmount int32 39 | Enabled *int16 40 | } 41 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/zone_state_spawns.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type ZoneStateSpawns struct { 15 | ID int64 `sql:"primary_key"` 16 | ZoneID *uint32 17 | InstanceID *uint32 18 | IsCorpse *int8 19 | IsZone *int8 20 | DecayInSeconds *int32 21 | NpcID *uint32 22 | Spawn2ID uint32 23 | SpawngroupID uint32 24 | X float64 25 | Y float64 26 | Z float64 27 | Heading float64 28 | RespawnTime uint32 29 | Variance uint32 30 | Grid *uint32 31 | CurrentWaypoint *int32 32 | PathWhenZoneIdle *int16 33 | ConditionID *uint16 34 | ConditionMinValue *int16 35 | Enabled *int16 36 | Anim *uint16 37 | LootData string 38 | EntityVariables string 39 | Buffs string 40 | Hp *int64 41 | Mana *int64 42 | Endurance *int64 43 | CreatedAt *time.Time 44 | } 45 | -------------------------------------------------------------------------------- /client/localhost.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDQTCCAimgAwIBAgIUS/uxnPuHUep3692Y0/Tg/GavuFAwDQYJKoZIhvcNAQEL 3 | BQAwSTELMAkGA1UEBhMCZGUxCzAJBgNVBAgMAmJlMQ8wDQYDVQQHDAZiZXJsaW4x 4 | DTALBgNVBAoMBG5vbmUxDTALBgNVBAsMBG5vbmUwHhcNMjQwNTI4MTI0OTU4WhcN 5 | MjQwNjI3MTI0OTU4WjBJMQswCQYDVQQGEwJkZTELMAkGA1UECAwCYmUxDzANBgNV 6 | BAcMBmJlcmxpbjENMAsGA1UECgwEbm9uZTENMAsGA1UECwwEbm9uZTCCASIwDQYJ 7 | KoZIhvcNAQEBBQADggEPADCCAQoCggEBAN7E2PLt34UemSqjNMk5+FT0hml6jEFy 8 | LqNSYX/aMBCy694qFcmHppk+7I4bJmFUqc0quFVJfFaz3akMPlzHearHVc6rHnxP 9 | DRsstBl7isxfHhGlkFHDylCRyczRIMhegzyUuPL3Q60AfBwWBZ7LTfF/bu59HwV6 10 | 9bv/dIPaosSOTek4KnFgZVmb+6XASBBMzk20qKGnady1xg84R12TH+fqwMeY5yLt 11 | 2YcBMWjGcbiDRTRCOg5DuF5pidI6wyeaYJY5ENS+2ludAE4ZBE/QK5c8zLRvWHSO 12 | lSQeMgvtzeSQzTd1pcAVyL8IXlBPcghUvjancJYMsHiAbpL8pqzM5AcCAwEAAaMh 13 | MB8wHQYDVR0OBBYEFNXbp4DunudUBccFymc9oiXRGSP/MA0GCSqGSIb3DQEBCwUA 14 | A4IBAQCeOP9b/1+rzoddjikqVDJ0bGvI0qFPT4klsvLiA/p/0YqdABpYBYN15a9m 15 | A+scr2zqVYLIk1Pg2dG7I0Z5MA068he9csoUWgUP7RtN+pJ0Y2Osfmh4owik6Tkc 16 | e4frzPw87m0JbAjWI+8ALymuB1xuXMG2Croi97kHSy1NcE+a4KGxYlxV//IQ+qaj 17 | iAq9aU+06/oLDiLbqhqGbuiLyzayABIB6NNF/uGrl8cZgi/41QdeRTABVc5ViU4x 18 | AzVELcmZkir7/I1XNuniqmzBp/tbN9VUdwEvAO7Ys5S4U9/Mq5i0t2krLb29LWj3 19 | XyZm6UpK/Tin/aSFsnbmmgFF/vTV 20 | -----END CERTIFICATE----- 21 | -------------------------------------------------------------------------------- /server/cmd/jetgen/main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | "log" 6 | 7 | "github.com/knervous/eqgo/internal/config" 8 | 9 | "github.com/go-jet/jet/v2/generator/mysql" 10 | ) 11 | 12 | func getConnection() (mysql.DBConnection, error) { 13 | serverConfig, err := config.Get() 14 | if err != nil { 15 | return mysql.DBConnection{}, fmt.Errorf("failed to read config: %v", err) 16 | } 17 | 18 | host := serverConfig.DBHost 19 | port := serverConfig.DBPort 20 | user := serverConfig.DBUser 21 | pass := serverConfig.DBPass 22 | 23 | if host == "" || user == "" || pass == "" { 24 | return mysql.DBConnection{}, fmt.Errorf("database connection details are not set") 25 | } 26 | 27 | return mysql.DBConnection{ 28 | Host: host, 29 | Port: port, 30 | User: user, 31 | Password: pass, 32 | Params: "parseTime=true", 33 | DBName: "eqgo", 34 | }, nil 35 | } 36 | 37 | func main() { 38 | dbConn, err := getConnection() 39 | if err != nil { 40 | log.Fatalf("failed to get connection details: %v", err) 41 | } 42 | 43 | err = mysql.Generate("./internal/db/jetgen", dbConn) 44 | if err != nil { 45 | log.Fatalf("failed to generate Jet bindings: %v", err) 46 | } 47 | 48 | log.Println("Jet bindings generated successfully in ./internal/db/jetgen") 49 | } 50 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/object.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | type Object struct { 11 | ID int32 `sql:"primary_key"` 12 | Zoneid uint32 13 | Version int16 14 | Xpos float64 15 | Ypos float64 16 | Zpos float64 17 | Heading float64 18 | Itemid int32 19 | Charges uint16 20 | Objectname *string 21 | Type int32 22 | Icon int32 23 | SizePercentage float64 24 | Unknown24 int32 25 | Unknown60 int32 26 | Unknown64 int32 27 | Unknown68 int32 28 | Unknown72 int32 29 | Unknown76 int32 30 | Unknown84 int32 31 | Size float64 32 | SolidType int32 33 | Incline int32 34 | TiltX float64 35 | TiltY float64 36 | DisplayName *string 37 | MinExpansion int8 38 | MaxExpansion int8 39 | ContentFlags *string 40 | ContentFlagsDisabled *string 41 | } 42 | -------------------------------------------------------------------------------- /server/internal/db/jetgen/eqgo/model/bug_reports.go: -------------------------------------------------------------------------------- 1 | // 2 | // Code generated by go-jet DO NOT EDIT. 3 | // 4 | // WARNING: Changes to this file may cause incorrect behavior 5 | // and will be lost if the code is regenerated 6 | // 7 | 8 | package model 9 | 10 | import ( 11 | "time" 12 | ) 13 | 14 | type BugReports struct { 15 | ID uint32 `sql:"primary_key"` 16 | Zone string 17 | ClientVersionID uint32 18 | ClientVersionName string 19 | AccountID uint32 20 | CharacterID uint32 21 | CharacterName string 22 | ReporterSpoof bool 23 | CategoryID uint32 24 | CategoryName string 25 | ReporterName string 26 | UIPath string 27 | PosX float64 28 | PosY float64 29 | PosZ float64 30 | Heading uint32 31 | TimePlayed uint32 32 | TargetID uint32 33 | TargetName string 34 | OptionalInfoMask uint32 35 | CanDuplicate bool 36 | CrashBug bool 37 | TargetInfo bool 38 | CharacterFlags bool 39 | UnknownValue bool 40 | BugReport string 41 | SystemInfo string 42 | ReportDatetime time.Time 43 | BugStatus uint8 44 | LastReview time.Time 45 | LastReviewer string 46 | ReviewerNotes string 47 | } 48 | -------------------------------------------------------------------------------- /client/src/UI/components/character-select/races.tsx: -------------------------------------------------------------------------------- 1 | import { memo } from 'react'; 2 | import { CharRaceStrings } from '@game/Constants/constants'; 3 | import RACE_DATA from '@game/Constants/race-data'; 4 | import { Stack } from '@mui/material'; 5 | import { UiButtonComponent } from '@ui/common/ui-button'; 6 | import classNames from 'classnames'; 7 | 8 | const supportedRaces = Object.entries(RACE_DATA) 9 | .slice(0, 12) 10 | .sort(([_key, race], [_key2, race2]) => (race.name > race2.name ? 1 : -1)); 11 | 12 | 13 | export const SupportedRaces = memo(({ selectedRace, setDescription, setSelectedRace }) => { 14 | return 19 | {supportedRaces.map(([key, race]) => ( 20 | { 33 | setDescription(CharRaceStrings[key]); 34 | setSelectedRace(key); 35 | }} 36 | /> 37 | ))} 38 | ; 39 | }); 40 | -------------------------------------------------------------------------------- /client/src/Game/Player/player-combat.ts: -------------------------------------------------------------------------------- 1 | import { Skills, ActiveCombatSkills } from '@game/Constants/skills'; 2 | import type { ActionButtonData } from '@ui/components/game/action-button/constants'; 3 | import type Player from './player'; 4 | 5 | 6 | export class PlayerCombat { 7 | constructor(private player: Player) { 8 | } 9 | 10 | public doCombatAction(actionData: ActionButtonData) { 11 | switch (actionData.data) { 12 | case ActiveCombatSkills[Skills.Kick]: 13 | break; 14 | case ActiveCombatSkills[Skills.ApplyPoison]: 15 | break; 16 | case ActiveCombatSkills[Skills.Backstab]: 17 | break; 18 | case ActiveCombatSkills[Skills.Bash]: 19 | break; 20 | case ActiveCombatSkills[Skills.Disarm]: 21 | break; 22 | case ActiveCombatSkills[Skills.DragonPunchTailRake]: 23 | break; 24 | case ActiveCombatSkills[Skills.DualWield]: 25 | break; 26 | case ActiveCombatSkills[Skills.EagleStrike]: 27 | break; 28 | case ActiveCombatSkills[Skills.Evocation]: 29 | break; 30 | case ActiveCombatSkills[Skills.FlyingKick]: 31 | break; 32 | case ActiveCombatSkills[Skills.Kick]: 33 | break; 34 | case ActiveCombatSkills[Skills.RoundKick]: 35 | break; 36 | default: break; 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /server/internal/db/zone/zone-points.go: -------------------------------------------------------------------------------- 1 | package db_zone 2 | 3 | import ( 4 | "context" 5 | "fmt" 6 | 7 | "github.com/knervous/eqgo/internal/cache" 8 | 9 | "github.com/knervous/eqgo/internal/db" 10 | "github.com/knervous/eqgo/internal/db/jetgen/eqgo/model" 11 | "github.com/knervous/eqgo/internal/db/jetgen/eqgo/table" 12 | 13 | "github.com/go-jet/jet/v2/mysql" 14 | _ "github.com/go-sql-driver/mysql" 15 | ) 16 | 17 | func GetZonePointsByZoneName(zoneName string) ([]*model.ZonePoints, error) { 18 | cacheKey := fmt.Sprintf("zone:points:id:%s", zoneName) 19 | if val, found, err := cache.GetCache().Get(cacheKey); err == nil && found { 20 | if zonePoints, ok := val.([]*model.ZonePoints); ok { 21 | return zonePoints, nil 22 | } 23 | } 24 | ctx := context.Background() 25 | var zonePoints []*model.ZonePoints 26 | err := table.ZonePoints. 27 | SELECT(table.ZonePoints.AllColumns). 28 | FROM(table.ZonePoints). 29 | WHERE( 30 | table.ZonePoints.Zone.EQ(mysql.String(zoneName)), 31 | ). 32 | QueryContext(ctx, db.GlobalWorldDB.DB, &zonePoints) 33 | if err != nil { 34 | return nil, fmt.Errorf("query zone_data: %w", err) 35 | } 36 | // Store in cache 37 | if ok, err := cache.GetCache().Set(cacheKey, zonePoints); err != nil || !ok { 38 | return nil, fmt.Errorf("cache set error: %w", err) 39 | } 40 | 41 | return zonePoints, nil 42 | } 43 | -------------------------------------------------------------------------------- /server/internal/quest/zones/qeynos/npc.go: -------------------------------------------------------------------------------- 1 | package qeynos 2 | 3 | import ( 4 | "fmt" 5 | 6 | "github.com/knervous/eqgo/internal/quest" 7 | "github.com/knervous/eqgo/internal/zone/npc" 8 | ) 9 | 10 | func registerNpcQuests(zq *quest.ZoneQuestInterface) { 11 | zq.Register( 12 | "Captain_Tillin", 13 | quest.EventSay, func(e *quest.QuestEvent) bool { 14 | switch e.Actor.(type) { 15 | case *npc.NPC: 16 | return true 17 | default: 18 | return false 19 | } 20 | }, 21 | quest.EventAggro, func(e *quest.QuestEvent) bool { 22 | return true 23 | }, 24 | ) 25 | 26 | zq.Register( 27 | "Trumpy_Irontoe", 28 | quest.EventSay, func(e *quest.QuestEvent) bool { 29 | greetings := fmt.Sprintf("Shaddup, %s!", e.Actor.Name()) 30 | e.Actor.Say(greetings) 31 | return true 32 | }, 33 | quest.EventAggro, func(e *quest.QuestEvent) bool { 34 | return true 35 | }, 36 | ) 37 | 38 | zq.Register( 39 | "Klieb_Torne", 40 | quest.EventSay, func(e *quest.QuestEvent) bool { 41 | greetings := fmt.Sprintf("Shaddup, %s!", e.Actor.Name()) 42 | e.Receiver.Say(greetings) 43 | if fish, ok := e.ZoneAccess.NPCByName("Fish_Ranamer"); ok && fish != nil { 44 | fish.Say("Let the boy drink") 45 | } 46 | return true 47 | }, 48 | quest.EventAggro, func(e *quest.QuestEvent) bool { 49 | return true 50 | }, 51 | ) 52 | } 53 | -------------------------------------------------------------------------------- /server/internal/api/capnp/util.go: -------------------------------------------------------------------------------- 1 | package net 2 | 3 | import ( 4 | "log" 5 | "path" 6 | "reflect" 7 | "runtime" 8 | 9 | "capnproto.org/go/capnp/v3" 10 | ) 11 | 12 | // CopyCapnValue calls get(); on error it logs "failed to get : " 13 | // Otherwise it calls set(v); on error it logs "failed to set : ". 14 | // Returns false on any error, true on success. 15 | func CopyErrorValue[T any](get func() (T, error), set func(T) error) bool { 16 | v, err := get() 17 | if err != nil { 18 | log.Printf("failed to get %s: %v", funcName(get), err) 19 | return false 20 | } 21 | if err := set(v); err != nil { 22 | log.Printf("failed to set %s: %v", funcName(set), err) 23 | return false 24 | } 25 | return true 26 | } 27 | 28 | func Deserialize[T any](data []byte, get func(*capnp.Message) (T, error)) (T, error) { 29 | msg, err := capnp.Unmarshal(data) 30 | if err != nil { 31 | log.Printf("unmarshal error: %v", err) 32 | var zero T 33 | return zero, err 34 | } 35 | return get(msg) 36 | } 37 | 38 | // funcName extracts the base name of any function via reflection/runtime. 39 | func funcName(fn interface{}) string { 40 | pc := reflect.ValueOf(fn).Pointer() 41 | f := runtime.FuncForPC(pc) 42 | if f == nil { 43 | return "" 44 | } 45 | // strip path, leave only package+func or closure name 46 | return path.Base(f.Name()) 47 | } 48 | -------------------------------------------------------------------------------- /server/internal/zone/interface/npc.go: -------------------------------------------------------------------------------- 1 | package entity 2 | 3 | import ( 4 | "time" 5 | 6 | "github.com/knervous/eqgo/internal/db/jetgen/eqgo/model" 7 | db_zone "github.com/knervous/eqgo/internal/db/zone" 8 | ) 9 | 10 | type NPC interface { 11 | Mob() *Mob 12 | GetMob() *Mob 13 | NpcData() *model.NpcTypes // returns the NPC data from the database 14 | AggressionLevel() int 15 | SetAggressionLevel(level int) 16 | Level() uint8 17 | Class() uint8 18 | Position() MobPosition 19 | SetPosition(MobPosition) 20 | Velocity() Velocity 21 | SetVelocity(Velocity) 22 | ID() int 23 | Name() string 24 | Say(msg string) 25 | Type() int32 // EntityTypePlayer, EntityTypeNPC, etc. 26 | 27 | Speed() float32 // speed in units per second 28 | CalcBonuses() // calculate any bonuses or stats 29 | 30 | GridEntries() []db_zone.GridEntries // the full path 31 | SetGridEntries(entries []db_zone.GridEntries) 32 | CurrentGridEntry() db_zone.GridEntries // current entry in the path 33 | GridIndex() int // which entry we’re on 34 | SetGridIndex(index int) 35 | NextGridMove() time.Time // when to move to the next entry 36 | SetNextGridMove(next time.Time) 37 | PauseUntil() time.Time // if now < PauseUntil, we’re paused 38 | SetPauseUntil(pause time.Time) 39 | LastUpdate() time.Time // last time we moved/interpolated 40 | SetLastUpdate(last time.Time) 41 | } 42 | -------------------------------------------------------------------------------- /server/internal/quest/registry/quest-registry.go: -------------------------------------------------------------------------------- 1 | //go:build !dev 2 | // +build !dev 3 | 4 | package questregistry 5 | 6 | import ( 7 | "fmt" 8 | "sync" 9 | 10 | "github.com/knervous/eqgo/internal/quest" 11 | "github.com/knervous/eqgo/internal/quest/zones/qeynos" 12 | "github.com/knervous/eqgo/internal/quest/zones/qeynos2" 13 | ) 14 | 15 | var ( 16 | mu sync.RWMutex 17 | questRegistry = make(map[string]*quest.ZoneQuestInterface) 18 | zoneConstructs = map[string]func() *quest.ZoneQuestInterface{ 19 | "qeynos": qeynos.RegisterZone, 20 | "qeynos2": qeynos2.RegisterZone, 21 | } 22 | ) 23 | 24 | func IsDev() bool { 25 | return false 26 | } 27 | 28 | func RegisterReload(zoneName string, callback func(*quest.ZoneQuestInterface)) { 29 | 30 | } 31 | 32 | // GetQuestInterface returns the cached or newly constructed quest data for a zone 33 | func GetQuestInterface(zoneName string) *quest.ZoneQuestInterface { 34 | mu.RLock() 35 | q, ok := questRegistry[zoneName] 36 | mu.RUnlock() 37 | if ok { 38 | return q 39 | } 40 | 41 | // Construct if available 42 | constructor, found := zoneConstructs[zoneName] 43 | if !found { 44 | fmt.Printf("No constructor found for zone: %s\n", zoneName) 45 | return nil 46 | } 47 | 48 | newQuest := constructor() 49 | 50 | mu.Lock() 51 | questRegistry[zoneName] = newQuest 52 | mu.Unlock() 53 | 54 | return newQuest 55 | } 56 | -------------------------------------------------------------------------------- /client/README.md: -------------------------------------------------------------------------------- 1 | # React + TypeScript + Vite 2 | 3 | This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. 4 | 5 | Currently, two official plugins are available: 6 | 7 | - [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh 8 | - [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh 9 | 10 | ## Expanding the ESLint configuration 11 | 12 | If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: 13 | 14 | - Configure the top-level `parserOptions` property like this: 15 | 16 | ```js 17 | export default { 18 | // other rules... 19 | parserOptions: { 20 | ecmaVersion: 'latest', 21 | sourceType: 'module', 22 | project: ['./tsconfig.json', './tsconfig.node.json'], 23 | tsconfigRootDir: __dirname, 24 | }, 25 | } 26 | ``` 27 | 28 | - Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked` 29 | - Optionally add `plugin:@typescript-eslint/stylistic-type-checked` 30 | - Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list 31 | --------------------------------------------------------------------------------