gitextract__red38cn/ ├── .claude/ │ ├── client-camera-follow-system.md │ ├── commands-reference.md │ ├── entities-reference.md │ ├── environment-variables.md │ ├── feature-modules.md │ ├── guest-system-technical-guide.md │ ├── installer-guide.md │ ├── items-system-implementation.md │ ├── player-state-flow.md │ ├── room-data-optimization.md │ ├── room-images-tileset-override-flow.md │ ├── stat-bars-configuration.md │ ├── storage-architecture.md │ ├── trade-system-implementation.md │ └── ui-visibility-configuration.md ├── .github/ │ ├── FUNDING.yml │ └── workflows/ │ └── codeql.yml ├── .gitignore ├── CLAUDE.md ├── LICENSE ├── README.md ├── bin/ │ ├── commander.js │ ├── generate.js │ ├── import.js │ ├── install-test.js │ └── reldens-commands.js ├── client.js ├── generated-entities/ │ ├── entities/ │ │ ├── ads-banner-entity.js │ │ ├── ads-entity.js │ │ ├── ads-event-video-entity.js │ │ ├── ads-played-entity.js │ │ ├── ads-providers-entity.js │ │ ├── ads-types-entity.js │ │ ├── audio-categories-entity.js │ │ ├── audio-entity.js │ │ ├── audio-markers-entity.js │ │ ├── audio-player-config-entity.js │ │ ├── chat-entity.js │ │ ├── chat-message-types-entity.js │ │ ├── clan-entity.js │ │ ├── clan-levels-entity.js │ │ ├── clan-levels-modifiers-entity.js │ │ ├── clan-members-entity.js │ │ ├── config-entity.js │ │ ├── config-types-entity.js │ │ ├── drops-animations-entity.js │ │ ├── features-entity.js │ │ ├── items-group-entity.js │ │ ├── items-inventory-entity.js │ │ ├── items-item-entity.js │ │ ├── items-item-modifiers-entity.js │ │ ├── items-types-entity.js │ │ ├── locale-entity.js │ │ ├── objects-animations-entity.js │ │ ├── objects-assets-entity.js │ │ ├── objects-entity.js │ │ ├── objects-items-inventory-entity.js │ │ ├── objects-items-requirements-entity.js │ │ ├── objects-items-rewards-entity.js │ │ ├── objects-skills-entity.js │ │ ├── objects-stats-entity.js │ │ ├── objects-types-entity.js │ │ ├── operation-types-entity.js │ │ ├── players-entity.js │ │ ├── players-state-entity.js │ │ ├── players-stats-entity.js │ │ ├── respawn-entity.js │ │ ├── rewards-entity.js │ │ ├── rewards-events-entity.js │ │ ├── rewards-events-state-entity.js │ │ ├── rewards-modifiers-entity.js │ │ ├── rooms-change-points-entity.js │ │ ├── rooms-entity.js │ │ ├── rooms-return-points-entity.js │ │ ├── scores-detail-entity.js │ │ ├── scores-entity.js │ │ ├── skills-class-level-up-animations-entity.js │ │ ├── skills-class-path-entity.js │ │ ├── skills-class-path-level-labels-entity.js │ │ ├── skills-class-path-level-skills-entity.js │ │ ├── skills-groups-entity.js │ │ ├── skills-levels-entity.js │ │ ├── skills-levels-modifiers-conditions-entity.js │ │ ├── skills-levels-modifiers-entity.js │ │ ├── skills-levels-set-entity.js │ │ ├── skills-owners-class-path-entity.js │ │ ├── skills-skill-animations-entity.js │ │ ├── skills-skill-attack-entity.js │ │ ├── skills-skill-entity.js │ │ ├── skills-skill-group-relation-entity.js │ │ ├── skills-skill-owner-conditions-entity.js │ │ ├── skills-skill-owner-effects-conditions-entity.js │ │ ├── skills-skill-owner-effects-entity.js │ │ ├── skills-skill-physical-data-entity.js │ │ ├── skills-skill-target-effects-conditions-entity.js │ │ ├── skills-skill-target-effects-entity.js │ │ ├── skills-skill-type-entity.js │ │ ├── snippets-entity.js │ │ ├── stats-entity.js │ │ ├── target-options-entity.js │ │ ├── users-entity.js │ │ ├── users-locale-entity.js │ │ └── users-login-entity.js │ ├── entities-config.js │ ├── entities-translations.js │ └── models/ │ ├── mikro-orm/ │ │ ├── ads-banner-model.js │ │ ├── ads-event-video-model.js │ │ ├── ads-model.js │ │ ├── ads-played-model.js │ │ ├── ads-providers-model.js │ │ ├── ads-types-model.js │ │ ├── audio-categories-model.js │ │ ├── audio-markers-model.js │ │ ├── audio-model.js │ │ ├── audio-player-config-model.js │ │ ├── chat-message-types-model.js │ │ ├── chat-model.js │ │ ├── clan-levels-model.js │ │ ├── clan-levels-modifiers-model.js │ │ ├── clan-members-model.js │ │ ├── clan-model.js │ │ ├── config-model.js │ │ ├── config-types-model.js │ │ ├── drops-animations-model.js │ │ ├── features-model.js │ │ ├── items-group-model.js │ │ ├── items-inventory-model.js │ │ ├── items-item-model.js │ │ ├── items-item-modifiers-model.js │ │ ├── items-types-model.js │ │ ├── locale-model.js │ │ ├── objects-animations-model.js │ │ ├── objects-assets-model.js │ │ ├── objects-items-inventory-model.js │ │ ├── objects-items-requirements-model.js │ │ ├── objects-items-rewards-model.js │ │ ├── objects-model.js │ │ ├── objects-skills-model.js │ │ ├── objects-stats-model.js │ │ ├── objects-types-model.js │ │ ├── operation-types-model.js │ │ ├── players-model.js │ │ ├── players-state-model.js │ │ ├── players-stats-model.js │ │ ├── registered-models-mikro-orm.js │ │ ├── respawn-model.js │ │ ├── rewards-events-model.js │ │ ├── rewards-events-state-model.js │ │ ├── rewards-model.js │ │ ├── rewards-modifiers-model.js │ │ ├── rooms-change-points-model.js │ │ ├── rooms-model.js │ │ ├── rooms-return-points-model.js │ │ ├── scores-detail-model.js │ │ ├── scores-model.js │ │ ├── skills-class-level-up-animations-model.js │ │ ├── skills-class-path-level-labels-model.js │ │ ├── skills-class-path-level-skills-model.js │ │ ├── skills-class-path-model.js │ │ ├── skills-groups-model.js │ │ ├── skills-levels-model.js │ │ ├── skills-levels-modifiers-conditions-model.js │ │ ├── skills-levels-modifiers-model.js │ │ ├── skills-levels-set-model.js │ │ ├── skills-owners-class-path-model.js │ │ ├── skills-skill-animations-model.js │ │ ├── skills-skill-attack-model.js │ │ ├── skills-skill-group-relation-model.js │ │ ├── skills-skill-model.js │ │ ├── skills-skill-owner-conditions-model.js │ │ ├── skills-skill-owner-effects-conditions-model.js │ │ ├── skills-skill-owner-effects-model.js │ │ ├── skills-skill-physical-data-model.js │ │ ├── skills-skill-target-effects-conditions-model.js │ │ ├── skills-skill-target-effects-model.js │ │ ├── skills-skill-type-model.js │ │ ├── snippets-model.js │ │ ├── stats-model.js │ │ ├── target-options-model.js │ │ ├── users-locale-model.js │ │ ├── users-login-model.js │ │ └── users-model.js │ ├── objection-js/ │ │ ├── ads-banner-model.js │ │ ├── ads-event-video-model.js │ │ ├── ads-model.js │ │ ├── ads-played-model.js │ │ ├── ads-providers-model.js │ │ ├── ads-types-model.js │ │ ├── audio-categories-model.js │ │ ├── audio-markers-model.js │ │ ├── audio-model.js │ │ ├── audio-player-config-model.js │ │ ├── chat-message-types-model.js │ │ ├── chat-model.js │ │ ├── clan-levels-model.js │ │ ├── clan-levels-modifiers-model.js │ │ ├── clan-members-model.js │ │ ├── clan-model.js │ │ ├── config-model.js │ │ ├── config-types-model.js │ │ ├── drops-animations-model.js │ │ ├── features-model.js │ │ ├── items-group-model.js │ │ ├── items-inventory-model.js │ │ ├── items-item-model.js │ │ ├── items-item-modifiers-model.js │ │ ├── items-types-model.js │ │ ├── locale-model.js │ │ ├── objects-animations-model.js │ │ ├── objects-assets-model.js │ │ ├── objects-items-inventory-model.js │ │ ├── objects-items-requirements-model.js │ │ ├── objects-items-rewards-model.js │ │ ├── objects-model.js │ │ ├── objects-skills-model.js │ │ ├── objects-stats-model.js │ │ ├── objects-types-model.js │ │ ├── operation-types-model.js │ │ ├── players-model.js │ │ ├── players-state-model.js │ │ ├── players-stats-model.js │ │ ├── registered-models-objection-js.js │ │ ├── respawn-model.js │ │ ├── rewards-events-model.js │ │ ├── rewards-events-state-model.js │ │ ├── rewards-model.js │ │ ├── rewards-modifiers-model.js │ │ ├── rooms-change-points-model.js │ │ ├── rooms-model.js │ │ ├── rooms-return-points-model.js │ │ ├── scores-detail-model.js │ │ ├── scores-model.js │ │ ├── skills-class-level-up-animations-model.js │ │ ├── skills-class-path-level-labels-model.js │ │ ├── skills-class-path-level-skills-model.js │ │ ├── skills-class-path-model.js │ │ ├── skills-groups-model.js │ │ ├── skills-levels-model.js │ │ ├── skills-levels-modifiers-conditions-model.js │ │ ├── skills-levels-modifiers-model.js │ │ ├── skills-levels-set-model.js │ │ ├── skills-owners-class-path-model.js │ │ ├── skills-skill-animations-model.js │ │ ├── skills-skill-attack-model.js │ │ ├── skills-skill-group-relation-model.js │ │ ├── skills-skill-model.js │ │ ├── skills-skill-owner-conditions-model.js │ │ ├── skills-skill-owner-effects-conditions-model.js │ │ ├── skills-skill-owner-effects-model.js │ │ ├── skills-skill-physical-data-model.js │ │ ├── skills-skill-target-effects-conditions-model.js │ │ ├── skills-skill-target-effects-model.js │ │ ├── skills-skill-type-model.js │ │ ├── snippets-model.js │ │ ├── stats-model.js │ │ ├── target-options-model.js │ │ ├── users-locale-model.js │ │ ├── users-login-model.js │ │ └── users-model.js │ └── prisma/ │ ├── ads-banner-model.js │ ├── ads-event-video-model.js │ ├── ads-model.js │ ├── ads-played-model.js │ ├── ads-providers-model.js │ ├── ads-types-model.js │ ├── audio-categories-model.js │ ├── audio-markers-model.js │ ├── audio-model.js │ ├── audio-player-config-model.js │ ├── chat-message-types-model.js │ ├── chat-model.js │ ├── clan-levels-model.js │ ├── clan-levels-modifiers-model.js │ ├── clan-members-model.js │ ├── clan-model.js │ ├── config-model.js │ ├── config-types-model.js │ ├── drops-animations-model.js │ ├── features-model.js │ ├── items-group-model.js │ ├── items-inventory-model.js │ ├── items-item-model.js │ ├── items-item-modifiers-model.js │ ├── items-types-model.js │ ├── locale-model.js │ ├── objects-animations-model.js │ ├── objects-assets-model.js │ ├── objects-items-inventory-model.js │ ├── objects-items-requirements-model.js │ ├── objects-items-rewards-model.js │ ├── objects-model.js │ ├── objects-skills-model.js │ ├── objects-stats-model.js │ ├── objects-types-model.js │ ├── operation-types-model.js │ ├── players-model.js │ ├── players-state-model.js │ ├── players-stats-model.js │ ├── registered-models-prisma.js │ ├── respawn-model.js │ ├── rewards-events-model.js │ ├── rewards-events-state-model.js │ ├── rewards-model.js │ ├── rewards-modifiers-model.js │ ├── rooms-change-points-model.js │ ├── rooms-model.js │ ├── rooms-return-points-model.js │ ├── scores-detail-model.js │ ├── scores-model.js │ ├── skills-class-level-up-animations-model.js │ ├── skills-class-path-level-labels-model.js │ ├── skills-class-path-level-skills-model.js │ ├── skills-class-path-model.js │ ├── skills-groups-model.js │ ├── skills-levels-model.js │ ├── skills-levels-modifiers-conditions-model.js │ ├── skills-levels-modifiers-model.js │ ├── skills-levels-set-model.js │ ├── skills-owners-class-path-model.js │ ├── skills-skill-animations-model.js │ ├── skills-skill-attack-model.js │ ├── skills-skill-group-relation-model.js │ ├── skills-skill-model.js │ ├── skills-skill-owner-conditions-model.js │ ├── skills-skill-owner-effects-conditions-model.js │ ├── skills-skill-owner-effects-model.js │ ├── skills-skill-physical-data-model.js │ ├── skills-skill-target-effects-conditions-model.js │ ├── skills-skill-target-effects-model.js │ ├── skills-skill-type-model.js │ ├── snippets-model.js │ ├── stats-model.js │ ├── target-options-model.js │ ├── users-locale-model.js │ ├── users-login-model.js │ └── users-model.js ├── install/ │ ├── css/ │ │ └── styles.scss │ ├── index.html │ ├── index.js │ └── site.webmanifest ├── lib/ │ ├── actions/ │ │ ├── client/ │ │ │ ├── game-manager-enricher.js │ │ │ ├── messages-guard.js │ │ │ ├── messages-handler.js │ │ │ ├── player-selector.js │ │ │ ├── plugin.js │ │ │ ├── preloader-handler.js │ │ │ ├── receiver-wrapper.js │ │ │ ├── skills-ui.js │ │ │ └── snippets/ │ │ │ └── en_US.js │ │ ├── constants.js │ │ ├── factories/ │ │ │ ├── class-path-key-factory.js │ │ │ └── skill-data-factory.js │ │ ├── schemas/ │ │ │ └── skill-schema.js │ │ └── server/ │ │ ├── battle-end-action.js │ │ ├── battle.js │ │ ├── data-loader.js │ │ ├── entities/ │ │ │ ├── operation-types-entity-override.js │ │ │ ├── skills-class-path-entity-override.js │ │ │ ├── skills-levels-modifiers-entity-override.js │ │ │ ├── skills-levels-set-entity-override.js │ │ │ ├── skills-owners-class-path-entity-override.js │ │ │ ├── skills-skill-animations-entity-override.js │ │ │ ├── skills-skill-attack-entity-override.js │ │ │ ├── skills-skill-entity-override.js │ │ │ ├── skills-skill-owner-effects-entity-override.js │ │ │ └── skills-skill-target-effects-entity-override.js │ │ ├── entities-config.js │ │ ├── entities-translations.js │ │ ├── event-listeners.js │ │ ├── events/ │ │ │ ├── battle-ended-event.js │ │ │ └── player-death-event.js │ │ ├── initial-game-data-enricher.js │ │ ├── message-actions.js │ │ ├── models-manager.js │ │ ├── player-class-path-handler.js │ │ ├── player-enricher.js │ │ ├── plugin.js │ │ ├── pve.js │ │ ├── pvp.js │ │ ├── skills/ │ │ │ ├── type-attack.js │ │ │ ├── type-effect.js │ │ │ ├── type-physical-attack.js │ │ │ ├── type-physical-effect.js │ │ │ └── types.js │ │ ├── skills-class-path-loader.js │ │ ├── skills-extra-data-mapper.js │ │ ├── storage/ │ │ │ ├── class-path-generator.js │ │ │ ├── conditions-generator.js │ │ │ ├── levels-generator.js │ │ │ ├── modifiers-generator.js │ │ │ └── skills-generator.js │ │ └── storage-observer.js │ ├── admin/ │ │ └── server/ │ │ ├── entities-config-override.js │ │ ├── plugin.js │ │ ├── room-map-tilesets-validator.js │ │ ├── rooms-file-upload-renderer.js │ │ ├── subscribers/ │ │ │ ├── create-admin-subscriber.js │ │ │ ├── generators-routes-subscriber.js │ │ │ ├── maps-wizard-subscriber.js │ │ │ ├── objects-importer-subscriber.js │ │ │ ├── rooms-entity-subscriber.js │ │ │ ├── shutdown-subscriber.js │ │ │ ├── skills-importer-subscriber.js │ │ │ └── theme-manager-subscriber.js │ │ └── templates-list.js │ ├── ads/ │ │ ├── client/ │ │ │ ├── ads-provider.js │ │ │ ├── messages-listener.js │ │ │ ├── plugin.js │ │ │ ├── providers/ │ │ │ │ ├── crazy-games/ │ │ │ │ │ ├── banners-handler.js │ │ │ │ │ ├── validator.js │ │ │ │ │ └── videos-handler.js │ │ │ │ ├── crazy-games.js │ │ │ │ ├── game-monetize.js │ │ │ │ └── google-ad-sense.js │ │ │ ├── providers-list.js │ │ │ ├── sdk-handler.js │ │ │ └── snippets/ │ │ │ └── en_US.js │ │ ├── constants.js │ │ └── server/ │ │ ├── ads-start-handler.js │ │ ├── ads-type/ │ │ │ ├── banner.js │ │ │ ├── base-ad.js │ │ │ └── event-video.js │ │ ├── entities/ │ │ │ └── ads-entity-override.js │ │ ├── entities-config.js │ │ ├── entities-translations.js │ │ ├── event-handlers/ │ │ │ └── create-player-ads-handler.js │ │ ├── message-actions.js │ │ └── plugin.js │ ├── audio/ │ │ ├── client/ │ │ │ ├── audio-ui.js │ │ │ ├── audio-update.js │ │ │ ├── manager.js │ │ │ ├── messages-listener.js │ │ │ ├── plugin.js │ │ │ ├── scene-audio-player.js │ │ │ └── snippets/ │ │ │ └── en_US.js │ │ ├── constants.js │ │ └── server/ │ │ ├── audio-hot-plug-callbacks.js │ │ ├── entities/ │ │ │ └── audio-entity-override.js │ │ ├── entities-config.js │ │ ├── entities-translations.js │ │ ├── manager.js │ │ └── plugin.js │ ├── bundlers/ │ │ └── drivers/ │ │ └── parcel-config.json │ ├── chat/ │ │ ├── cleaner.js │ │ ├── client/ │ │ │ ├── chat-tabs.js │ │ │ ├── chat-ui.js │ │ │ ├── messages-listener.js │ │ │ ├── plugin.js │ │ │ ├── snippets/ │ │ │ │ └── en_US.js │ │ │ └── templates-handler.js │ │ ├── constants.js │ │ ├── message-factory.js │ │ └── server/ │ │ ├── entities/ │ │ │ ├── chat-entity-override.js │ │ │ └── chat-message-types-entity-override.js │ │ ├── entities-config.js │ │ ├── entities-translations.js │ │ ├── event-listener/ │ │ │ ├── guest-invalid-change-point.js │ │ │ ├── npc-skills.js │ │ │ └── player-skills.js │ │ ├── manager.js │ │ ├── message-actions.js │ │ ├── messages/ │ │ │ ├── message-data-mapper.js │ │ │ ├── npc-damage-callback.js │ │ │ ├── npc-dodge-callback.js │ │ │ ├── npc-modifiers-callback.js │ │ │ ├── player-damage-callback.js │ │ │ ├── player-dodge-callback.js │ │ │ ├── player-modifiers-callback.js │ │ │ └── validator.js │ │ ├── messages-guard.js │ │ ├── plugin.js │ │ └── room-chat.js │ ├── config/ │ │ ├── client/ │ │ │ └── config-manager.js │ │ ├── constants.js │ │ ├── processor.js │ │ └── server/ │ │ ├── entities/ │ │ │ ├── config-entity-override.js │ │ │ └── config-types-entity-override.js │ │ ├── entities-config.js │ │ ├── entities-translations.js │ │ └── manager.js │ ├── features/ │ │ ├── client/ │ │ │ ├── config-client.js │ │ │ └── manager.js │ │ ├── plugin-interface.js │ │ └── server/ │ │ ├── config-server.js │ │ ├── entities/ │ │ │ ├── features-entity-override.js │ │ │ └── features-entity.js │ │ ├── entities-config.js │ │ ├── entities-translations.js │ │ ├── manager.js │ │ └── setup-server-properties.js │ ├── firebase/ │ │ ├── client/ │ │ │ └── connector.js │ │ └── server/ │ │ └── plugin.js │ ├── game/ │ │ ├── allowed-file-types.js │ │ ├── client/ │ │ │ ├── animations-defaults-merger.js │ │ │ ├── communication/ │ │ │ │ ├── room-state-entities-manager.js │ │ │ │ └── state-callbacks-manager.js │ │ │ ├── engine/ │ │ │ │ └── sprite-text-factory.js │ │ │ ├── fps-counter.js │ │ │ ├── game-client.js │ │ │ ├── game-dom.js │ │ │ ├── game-engine.js │ │ │ ├── game-manager.js │ │ │ ├── handlers/ │ │ │ │ ├── client-start-handler.js │ │ │ │ ├── errors-block-handler.js │ │ │ │ ├── forgot-password-form-handler.js │ │ │ │ ├── full-screen-handler.js │ │ │ │ ├── guest-form-handler.js │ │ │ │ ├── login-form-handler.js │ │ │ │ ├── registration-form-handler.js │ │ │ │ └── terms-and-conditions-handler.js │ │ │ ├── instructions-ui.js │ │ │ ├── joystick.js │ │ │ ├── minimap-ui.js │ │ │ ├── minimap.js │ │ │ ├── room-events.js │ │ │ ├── scene-dynamic.js │ │ │ ├── scene-preloader.js │ │ │ ├── settings-ui.js │ │ │ ├── snippets/ │ │ │ │ └── en_US.js │ │ │ ├── tileset-animation.js │ │ │ ├── ui-factory.js │ │ │ └── user-interface.js │ │ ├── constants.js │ │ ├── mime-types.js │ │ ├── properties-handler.js │ │ ├── reldens-ascii.js │ │ ├── server/ │ │ │ ├── client-wrapper.js │ │ │ ├── data-server-config.js │ │ │ ├── data-server-initializer.js │ │ │ ├── entities-loader.js │ │ │ ├── entity-properties.js │ │ │ ├── forgot-password.js │ │ │ ├── game-server.js │ │ │ ├── homepage-loader.js │ │ │ ├── install-templates/ │ │ │ │ ├── .gitignore.dist │ │ │ │ ├── data-package.json │ │ │ │ └── knexfile.js.dist │ │ │ ├── installer/ │ │ │ │ ├── entities-installation.js │ │ │ │ ├── generic-driver-installation.js │ │ │ │ ├── packages-installation.js │ │ │ │ ├── prisma-installation.js │ │ │ │ ├── prisma-subprocess-worker.js │ │ │ │ └── project-files-creation.js │ │ │ ├── installer.js │ │ │ ├── login-manager.js │ │ │ ├── mailer/ │ │ │ │ ├── nodemailer-factory.js │ │ │ │ └── sendgrid-factory.js │ │ │ ├── mailer.js │ │ │ ├── manager.js │ │ │ ├── maps-loader.js │ │ │ ├── memory/ │ │ │ │ ├── active-player.js │ │ │ │ └── active-players.js │ │ │ ├── storage/ │ │ │ │ └── drivers-map.js │ │ │ ├── template-engine.js │ │ │ ├── templates-to-path-mapper.js │ │ │ └── theme-manager.js │ │ └── type-determiner.js │ ├── import/ │ │ └── server/ │ │ ├── attributes-per-level-importer.js │ │ ├── class-paths-importer.js │ │ ├── maps-importer.js │ │ ├── objects-importer.js │ │ ├── players-experience-per-level-importer.js │ │ ├── skills-importer.js │ │ └── tile-extruder.js │ ├── inventory/ │ │ ├── client/ │ │ │ ├── exchange/ │ │ │ │ └── trade-target-action.js │ │ │ ├── inventory-receiver.js │ │ │ ├── inventory-ui.js │ │ │ ├── plugin.js │ │ │ ├── snippets/ │ │ │ │ └── en_US.js │ │ │ ├── templates-handler.js │ │ │ ├── trade-items-helper.js │ │ │ ├── trade-message-handler.js │ │ │ └── trade-message-listener.js │ │ ├── constants.js │ │ └── server/ │ │ ├── entities/ │ │ │ ├── items-group-entity-override.js │ │ │ ├── items-inventory-entity-override.js │ │ │ └── items-item-entity-override.js │ │ ├── entities-config.js │ │ ├── entities-translations.js │ │ ├── exchange/ │ │ │ ├── player-processor.js │ │ │ └── processor.js │ │ ├── group-hot-plug-callbacks.js │ │ ├── groups-data-remover.js │ │ ├── items-factory.js │ │ ├── message-actions.js │ │ ├── models-manager.js │ │ ├── plugin.js │ │ ├── storage-observer.js │ │ └── subscribers/ │ │ ├── player-death-subscriber.js │ │ ├── player-subscriber.js │ │ └── server-subscriber.js │ ├── objects/ │ │ ├── client/ │ │ │ ├── animation-engine.js │ │ │ ├── drops-message-listener.js │ │ │ ├── objects-message-listener.js │ │ │ ├── plugin.js │ │ │ ├── snippets/ │ │ │ │ └── en_US.js │ │ │ └── trader-object-ui.js │ │ ├── constants.js │ │ └── server/ │ │ ├── entities/ │ │ │ └── objects-entity-override.js │ │ ├── entities-config.js │ │ ├── entities-translations.js │ │ ├── handler/ │ │ │ └── objects-class-type.js │ │ ├── manager.js │ │ ├── object/ │ │ │ ├── object-types-classes.js │ │ │ ├── object-types.js │ │ │ └── type/ │ │ │ ├── animation-object.js │ │ │ ├── base-object.js │ │ │ ├── drop-object.js │ │ │ ├── enemy-object.js │ │ │ ├── multiple-object.js │ │ │ ├── npc-object.js │ │ │ └── trader-object.js │ │ └── plugin.js │ ├── prediction/ │ │ └── client/ │ │ ├── player-engine-prediction.js │ │ ├── plugin.js │ │ ├── prediction-world-creator.js │ │ └── room-events-override.js │ ├── respawn/ │ │ └── server/ │ │ ├── entities/ │ │ │ └── respawn-entity-override.js │ │ ├── entities-config.js │ │ ├── entities-translations.js │ │ ├── plugin.js │ │ └── room-respawn.js │ ├── rewards/ │ │ ├── client/ │ │ │ ├── message-handler.js │ │ │ ├── message-listener.js │ │ │ ├── messages-processor.js │ │ │ ├── plugin.js │ │ │ ├── preloader-handler.js │ │ │ └── snippets/ │ │ │ └── en_US.js │ │ ├── constants.js │ │ └── server/ │ │ ├── actions/ │ │ │ └── give-reward-action.js │ │ ├── add-item-to-inventory.js │ │ ├── drops-animations.js │ │ ├── entities/ │ │ │ ├── drops-animations-entity-override.js │ │ │ ├── rewards-entity-override.js │ │ │ ├── rewards-events-entity-override.js │ │ │ └── rewards-modifiers-entity-override.js │ │ ├── entities-config.js │ │ ├── entities-translations.js │ │ ├── event-handlers/ │ │ │ ├── event-handler.js │ │ │ └── login-state-handler.js │ │ ├── mappers/ │ │ │ ├── rewards-events-mapper.js │ │ │ └── rewards-to-actions-mapper.js │ │ ├── pick-up-object.js │ │ ├── plugin.js │ │ ├── repositories-extension.js │ │ ├── reward-message-actions.js │ │ ├── reward.js │ │ ├── rewards-drops-mapper.js │ │ ├── rewards-drops-processor.js │ │ ├── rewards-events-data-sender.js │ │ ├── rewards-events-handler.js │ │ ├── rewards-events-message-actions.js │ │ ├── rewards-events-provider.js │ │ ├── rewards-events-updater.js │ │ ├── rewards-mapper.js │ │ ├── subscribers/ │ │ │ ├── object-subscriber.js │ │ │ └── rewards-subscriber.js │ │ ├── target-determiner.js │ │ ├── validator/ │ │ │ └── reward-drop-validator.js │ │ └── world-drop-handler.js │ ├── rooms/ │ │ ├── client/ │ │ │ └── plugin.js │ │ ├── constants.js │ │ └── server/ │ │ ├── entities/ │ │ │ └── rooms-entity-override.js │ │ ├── entities-config.js │ │ ├── entities-translations.js │ │ ├── events/ │ │ │ └── joined-scene-room-event.js │ │ ├── game.js │ │ ├── login.js │ │ ├── manager.js │ │ ├── plugin.js │ │ ├── random-player-state.js │ │ ├── scene-data-filter.js │ │ ├── scene.js │ │ ├── state.js │ │ └── world-config.js │ ├── scores/ │ │ ├── client/ │ │ │ ├── messages-processor.js │ │ │ ├── plugin.js │ │ │ ├── preloader-handler.js │ │ │ ├── scores-message-handler.js │ │ │ ├── scores-message-listener.js │ │ │ └── snippets/ │ │ │ └── en_US.js │ │ ├── constants.js │ │ └── server/ │ │ ├── entities/ │ │ │ ├── scores-detail-entity-override.js │ │ │ └── scores-entity-override.js │ │ ├── entities-config.js │ │ ├── entities-translations.js │ │ ├── mapper/ │ │ │ └── increase-score-on-kill-mapper.js │ │ ├── plugin.js │ │ ├── repositories-extension.js │ │ ├── scores-provider.js │ │ ├── scores-sender.js │ │ ├── scores-updater.js │ │ └── subscriber/ │ │ ├── create-scores-route.js │ │ ├── increase-score-on-kill.js │ │ └── send-initial-scores-data.js │ ├── snippets/ │ │ ├── client/ │ │ │ ├── plugin.js │ │ │ ├── snippets/ │ │ │ │ └── en_US.js │ │ │ ├── snippets-ui.js │ │ │ ├── templates-handler.js │ │ │ └── translations-mapper.js │ │ ├── constants.js │ │ ├── server/ │ │ │ ├── configuration-enricher.js │ │ │ ├── entities/ │ │ │ │ ├── locale-entity-override.js │ │ │ │ ├── snippets-entity-override.js │ │ │ │ └── users-locale-entity-override.js │ │ │ ├── entities-config.js │ │ │ ├── entities-translations.js │ │ │ ├── initial-game-data-enricher.js │ │ │ └── plugin.js │ │ └── translator.js │ ├── teams/ │ │ ├── client/ │ │ │ ├── clan-message-handler.js │ │ │ ├── clan-message-listener.js │ │ │ ├── messages-processor.js │ │ │ ├── plugin.js │ │ │ ├── target-box-enricher.js │ │ │ ├── team-message-handler.js │ │ │ ├── team-message-listener.js │ │ │ └── templates-handler.js │ │ ├── constants.js │ │ └── server/ │ │ ├── clan-factory.js │ │ ├── clan-message-actions.js │ │ ├── clan-updates-handler.js │ │ ├── clan.js │ │ ├── entities/ │ │ │ ├── clan-entity-override.js │ │ │ └── clan-levels-modifiers-entity-override.js │ │ ├── entities-config.js │ │ ├── entities-translations.js │ │ ├── event-handlers/ │ │ │ ├── create-player-clan-handler.js │ │ │ ├── create-player-team-handler.js │ │ │ ├── end-player-hit-change-point-team-handler.js │ │ │ └── stats-update-handler.js │ │ ├── message-actions/ │ │ │ ├── chat-message-actions.js │ │ │ ├── clan-create.js │ │ │ ├── clan-disconnect.js │ │ │ ├── clan-join.js │ │ │ ├── clan-leave.js │ │ │ ├── team-join.js │ │ │ ├── team-leave.js │ │ │ ├── try-clan-invite.js │ │ │ └── try-team-start.js │ │ ├── players-data-mapper.js │ │ ├── plugin.js │ │ ├── team-message-actions.js │ │ ├── team-updates-handler.js │ │ └── team.js │ ├── users/ │ │ ├── client/ │ │ │ ├── bar-properties.js │ │ │ ├── lifebar-ui.js │ │ │ ├── objects-handler.js │ │ │ ├── player-engine.js │ │ │ ├── player-stats-bars-ui.js │ │ │ ├── player-stats-ui.js │ │ │ ├── plugin.js │ │ │ └── snippets/ │ │ │ └── en_US.js │ │ ├── constants.js │ │ └── server/ │ │ ├── create-admin.js │ │ ├── entities/ │ │ │ ├── players-entity-override.js │ │ │ ├── players-state-entity-override.js │ │ │ ├── players-stats-entity-override.js │ │ │ ├── stats-entity-override.js │ │ │ ├── users-entity-override.js │ │ │ └── users-login-entity-override.js │ │ ├── entities-config.js │ │ ├── entities-translations.js │ │ ├── manager.js │ │ ├── player.js │ │ ├── plugin.js │ │ └── reset-password.js │ └── world/ │ ├── client/ │ │ ├── debug-world-creator.js │ │ ├── plugin.js │ │ └── renderer.js │ ├── constants.js │ ├── server/ │ │ ├── body-state.js │ │ ├── collisions-manager.js │ │ ├── object-body-state.js │ │ ├── p2world.js │ │ ├── path-finder.js │ │ ├── physical-body.js │ │ └── world-walkable-nodes-around-provider.js │ ├── world-points-validator.js │ ├── world-position-calculator.js │ └── world-timer.js ├── migrations/ │ ├── development/ │ │ ├── 20190923183906_v4.0.0.js │ │ ├── beta.09-sql-update.sql │ │ ├── beta.12-sql-update.sql │ │ ├── beta.15-sql-update.sql │ │ ├── beta.16-sql-update.sql │ │ ├── beta.16.5-sql-update.sql │ │ ├── beta.17-sql-update.sql │ │ ├── beta.18-sql-update.sql │ │ ├── beta.18.1-sql-update.sql │ │ ├── beta.19-sql-update.sql │ │ ├── beta.20-sql-update.sql │ │ ├── beta.21-sql-update.sql │ │ ├── beta.22-sql-update.sql │ │ ├── beta.23-sql-update.sql │ │ ├── beta.24-sql-update.sql │ │ ├── beta.24.1-sql-update.sql │ │ ├── beta.25-sql-update.sql │ │ ├── beta.26-sql-update.sql │ │ ├── beta.27-sql-update.sql │ │ ├── beta.28-sql-update.sql │ │ ├── beta.30-sql-update.sql │ │ ├── beta.31-sql-update.sql │ │ ├── beta.34-sql-update.sql │ │ ├── beta.35-sql-update.sql │ │ ├── beta.36-sql-update.sql │ │ ├── beta.38-sql-update.sql │ │ ├── beta.38.3-sql-update.sql │ │ ├── beta.39-sql-update.sql │ │ ├── beta.39.7-sql-update.sql │ │ ├── beta.39.8-sql-update.sql │ │ └── reldens-test-sample-data-v4.0.0.sql │ └── production/ │ ├── 20190923181825_v4.0.0.js │ ├── mongo-db-install.js │ ├── reldens-basic-config-v4.0.0.sql │ ├── reldens-install-v4.0.0.sql │ └── reldens-sample-data-v4.0.0.sql ├── package.json ├── server.js ├── tests/ │ ├── base-test.js │ ├── database-reset-utility.js │ ├── fixtures/ │ │ ├── crud-test-data.js │ │ ├── entities-list.js │ │ ├── features-test-data.js │ │ ├── generate-complete-comparison.js │ │ ├── generate-entities-fixtures.js │ │ └── test-file.json │ ├── manager.js │ ├── run.js │ ├── test-admin-auth.js │ ├── test-admin-crud.js │ ├── test-admin-features.js │ └── utils.js └── theme/ ├── admin/ │ ├── functions.js │ ├── reldens-admin-client.css │ ├── reldens-admin-client.js │ ├── reldens-functions.js │ └── templates/ │ ├── cache-clean-button.html │ ├── clear-all-cache-button.html │ ├── dashboard.html │ ├── default-copyright.html │ ├── edit.html │ ├── fields/ │ │ ├── edit/ │ │ │ ├── button.html │ │ │ ├── checkbox.html │ │ │ ├── file.html │ │ │ ├── radio.html │ │ │ ├── select.html │ │ │ ├── text.html │ │ │ ├── textarea.html │ │ │ ├── tileset-alert-wrapper.html │ │ │ └── tileset-file-item.html │ │ └── view/ │ │ ├── audio.html │ │ ├── audios.html │ │ ├── boolean.html │ │ ├── image.html │ │ ├── images.html │ │ ├── link.html │ │ ├── links.html │ │ ├── text.html │ │ └── textarea.html │ ├── layout.html │ ├── list-content.html │ ├── list.html │ ├── login.html │ ├── management.html │ ├── maps-wizard-maps-selection.html │ ├── maps-wizard.html │ ├── objects-import.html │ ├── pagination-link.html │ ├── sections/ │ │ ├── editForm/ │ │ │ └── cms-pages.html │ │ ├── view/ │ │ │ └── rooms.html │ │ └── viewForm/ │ │ └── cms-pages.html │ ├── sidebar-header.html │ ├── sidebar-item.html │ ├── sidebar.html │ ├── skills-import.html │ ├── theme-manager.html │ └── view.html ├── default/ │ ├── assets/ │ │ ├── email/ │ │ │ ├── forgot.html │ │ │ ├── reset-error.html │ │ │ └── reset-success.html │ │ ├── features/ │ │ │ ├── chat/ │ │ │ │ └── templates/ │ │ │ │ ├── message.html │ │ │ │ ├── tab-content.html │ │ │ │ ├── tab-label.html │ │ │ │ ├── tabs-container.html │ │ │ │ └── ui-chat.html │ │ │ ├── inventory/ │ │ │ │ └── templates/ │ │ │ │ ├── equip.html │ │ │ │ ├── group.html │ │ │ │ ├── item.html │ │ │ │ ├── trade-accept.html │ │ │ │ ├── trade-action-remove.html │ │ │ │ ├── trade-action.html │ │ │ │ ├── trade-container.html │ │ │ │ ├── trade-item-quantity.html │ │ │ │ ├── trade-item.html │ │ │ │ ├── trade-player-container.html │ │ │ │ ├── trade-requirements.html │ │ │ │ ├── trade-rewards.html │ │ │ │ ├── trade-start.html │ │ │ │ ├── ui-equipment.html │ │ │ │ ├── ui-inventory.html │ │ │ │ └── usable.html │ │ │ ├── rewards/ │ │ │ │ └── templates/ │ │ │ │ ├── ui-rewards-list.html │ │ │ │ └── ui-rewards.html │ │ │ ├── scores/ │ │ │ │ └── templates/ │ │ │ │ ├── ui-scores-table.html │ │ │ │ └── ui-scores.html │ │ │ ├── skills/ │ │ │ │ └── templates/ │ │ │ │ ├── ui-class-path.html │ │ │ │ ├── ui-experience.html │ │ │ │ ├── ui-level.html │ │ │ │ ├── ui-skill-box.html │ │ │ │ └── ui-skills.html │ │ │ ├── snippets/ │ │ │ │ └── templates/ │ │ │ │ └── ui-snippets.html │ │ │ └── teams/ │ │ │ └── templates/ │ │ │ ├── clan-accept.html │ │ │ ├── clan-container.html │ │ │ ├── clan-create.html │ │ │ ├── clan-invite.html │ │ │ ├── clan-member-data.html │ │ │ ├── clan-player-data.html │ │ │ ├── clan-remove.html │ │ │ ├── shared-property.html │ │ │ ├── team-accept.html │ │ │ ├── team-container.html │ │ │ ├── team-invite.html │ │ │ ├── team-player-data.html │ │ │ ├── team-remove.html │ │ │ ├── ui-clan.html │ │ │ └── ui-teams.html │ │ ├── html/ │ │ │ ├── dialog-box.html │ │ │ ├── layout.html │ │ │ ├── player-stat.html │ │ │ ├── player-stats-bar.html │ │ │ ├── ui-action-box.html │ │ │ ├── ui-audio-category-row.html │ │ │ ├── ui-audio.html │ │ │ ├── ui-controls.html │ │ │ ├── ui-full-screen-button.html │ │ │ ├── ui-instructions.html │ │ │ ├── ui-loading.html │ │ │ ├── ui-minimap.html │ │ │ ├── ui-option-button.html │ │ │ ├── ui-option-icon.html │ │ │ ├── ui-options-container.html │ │ │ ├── ui-player-box.html │ │ │ ├── ui-player-stats.html │ │ │ ├── ui-scene-label.html │ │ │ ├── ui-settings-content.html │ │ │ ├── ui-settings.html │ │ │ └── ui-target.html │ │ └── maps/ │ │ ├── reldens-bots-forest-house-01-n0.json │ │ ├── reldens-bots-forest.json │ │ ├── reldens-bots.json │ │ ├── reldens-forest.json │ │ ├── reldens-gravity.json │ │ ├── reldens-house-1-2d-floor.json │ │ ├── reldens-house-1.json │ │ ├── reldens-house-2.json │ │ └── reldens-town.json │ ├── browserconfig.xml │ ├── config.js │ ├── css/ │ │ ├── ads.scss │ │ ├── base.scss │ │ ├── chat.scss │ │ ├── firebase.scss │ │ ├── game-over.scss │ │ ├── instructions.scss │ │ ├── items-system.scss │ │ ├── joystick.scss │ │ ├── minimap.scss │ │ ├── player-selection.scss │ │ ├── player-stats-bars.scss │ │ ├── rewards-events.scss │ │ ├── scores.scss │ │ ├── settings.scss │ │ ├── skills.scss │ │ ├── styles.scss │ │ ├── teams.scss │ │ ├── terms-and-conditions.scss │ │ ├── variables.scss │ │ └── wooden-ui.scss │ ├── es-index.html │ ├── index.html │ ├── index.js │ └── site.webmanifest ├── index.js.dist └── plugins/ ├── bot.js ├── client-plugin.js ├── objects/ │ ├── client/ │ │ └── npc1.js │ └── server/ │ ├── healer.js │ ├── quest-npc.js │ └── weapons-master.js └── server-plugin.js