├── 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 |
--------------------------------------------------------------------------------