From 1d3931d91666e9afb7eafaf998935059e356c888 Mon Sep 17 00:00:00 2001 From: DeKaN Date: Thu, 18 Aug 2022 21:46:08 +0400 Subject: [PATCH 1/5] Add dockerized postgress for easier start --- .gitignore | 7 +- README.md | 8 +- db/data/postgresql.conf | 18 + db/docker-compose.yml | 50 + db/initdb/dump.sql | 2397 +++++++++++++++++++++++++++++++++++++++ db/pgadmin/pgpass | 1 + db/servers.json | 14 + 7 files changed, 2492 insertions(+), 3 deletions(-) create mode 100644 db/data/postgresql.conf create mode 100644 db/docker-compose.yml create mode 100644 db/initdb/dump.sql create mode 100644 db/pgadmin/pgpass create mode 100644 db/servers.json diff --git a/.gitignore b/.gitignore index 9491a2f..b05edf7 100644 --- a/.gitignore +++ b/.gitignore @@ -360,4 +360,9 @@ MigrationBackup/ .ionide/ # Fody - auto-generated XML schema -FodyWeavers.xsd \ No newline at end of file +FodyWeavers.xsd + +# Dockerized database +db/data/pgdata/ +db/pgadmin/* +!db/pgadmin/pgpass diff --git a/README.md b/README.md index d3ea7bd..60cf190 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,7 @@ DiIiS is a fully-functional open-source local server for [Diablo III: Reaper of ## Installation +### General steps 1. Install [PostgreSQL 9.5.25](https://www.enterprisedb.com/downloads/postgres-postgresql-downloads). 2. Create databases in PostgreSQL: `diiis` and `worlds` 3. Change you account and password in `database.Account.config` and `database.Worlds.conifg` @@ -36,12 +37,15 @@ DiIiS is a fully-functional open-source local server for [Diablo III: Reaper of 7. Create account using console: `!account add Login Password Tag` 8. Install certificate `bnetserver.p12`, password - `123` (the game verifies the CA root certificates). 9. Use Client Diablo 3 `2.7.3.82785`. -9. Add redirects to the `hosts` file (`%WinDir%\System32\drivers\etc\hosts`): - `127.0.0.1 us.actual.battle.net` +9. Add redirects to the `hosts` file (`%WinDir%\System32\drivers\etc\hosts`): + `127.0.0.1 us.actual.battle.net` `127.0.0.1 eu.actual.battle.net` 11. Launch client (`x64` or `x86`) with arguments `"Diablo III64.exe" -launch -uid diablo3_engb` 10. Login to the game using your credentials =) +### Using Docker +Run `docker-compose up` inside `db` folder and continue from the 5th step in section above + ## Playing with friends 1. Create new accounts using the console command: diff --git a/db/data/postgresql.conf b/db/data/postgresql.conf new file mode 100644 index 0000000..73ce6e7 --- /dev/null +++ b/db/data/postgresql.conf @@ -0,0 +1,18 @@ +max_connections = 50 + +shared_buffers=1GB +work_mem=16MB +maintenance_work_mem=512MB +temp_file_limit=10GB + +random_page_cost=1.1 +effective_cache_size=4GB + +log_min_duration_statement=200ms +statement_timeout=60s +lock_timeout=1s +idle_in_transaction_session_timeout=10s + +shared_preload_libraries=pg_stat_statements +pg_stat_statements.max=10000 +pg_stat_statements.track=all diff --git a/db/docker-compose.yml b/db/docker-compose.yml new file mode 100644 index 0000000..176faf0 --- /dev/null +++ b/db/docker-compose.yml @@ -0,0 +1,50 @@ +version: "3.9" + +services: + postgres: + container_name: postgres_container + image: postgres:14.5 + environment: + POSTGRES_USER: "postgres" + POSTGRES_PASSWORD: "postgres" + PGDATA: "/var/lib/postgresql/data/pgdata" + volumes: + - ./data:/var/lib/postgresql/data + - ./initdb:/docker-entrypoint-initdb.d + ports: + - "5432:5432" + networks: + - postgres + restart: unless-stopped + deploy: + resources: + limits: + cpus: "1" + memory: 4G + + pgadmin: + container_name: pgadmin_container + image: dpage/pgadmin4:6 + environment: + PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:-pgadmin4@pgadmin.org} + PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-password} + PGADMIN_CONFIG_SERVER_MODE: "False" + PGADMIN_CONFIG_MASTER_PASSWORD_REQUIRED: "False" + volumes: + - ./pgadmin:/var/lib/pgadmin + - ./servers.json:/pgadmin4/servers.json + + ports: + - "5555:80" + networks: + - postgres + restart: unless-stopped + deploy: + resources: + limits: + cpus: "0.5" + memory: 1G + +networks: + postgres: + driver: bridge diff --git a/db/initdb/dump.sql b/db/initdb/dump.sql new file mode 100644 index 0000000..07a1025 --- /dev/null +++ b/db/initdb/dump.sql @@ -0,0 +1,2397 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 14.5 (Debian 14.5-1.pgdg110+1) +-- Dumped by pg_dump version 14.4 + +-- Started on 2022-08-18 16:47:30 UTC + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SELECT pg_catalog.set_config('search_path', '', false); +SET check_function_bodies = false; +SET xmloption = content; +SET client_min_messages = warning; +SET row_security = off; + + +CREATE DATABASE diiis WITH OWNER = postgres ENCODING = 'UTF8' LC_COLLATE = 'en_US.utf8' LC_CTYPE = 'en_US.utf8' TABLESPACE = pg_default; + +CREATE DATABASE worlds WITH OWNER = postgres ENCODING = 'UTF8' LC_COLLATE = 'en_US.utf8' LC_CTYPE = 'en_US.utf8' TABLESPACE = pg_default; +-- +-- TOC entry 3546 (class 1262 OID 24881) +-- Name: worlds; Type: DATABASE; Schema: -; Owner: postgres +-- + +\connect worlds + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SELECT pg_catalog.set_config('search_path', '', false); +SET check_function_bodies = false; +SET xmloption = content; +SET client_min_messages = warning; +SET row_security = off; + +SET default_tablespace = ''; + +SET default_table_access_method = heap; + +-- +-- TOC entry 209 (class 1259 OID 25184) +-- Name: DRLG_Container; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public."DRLG_Container" ( + id integer NOT NULL, + worldsno bigint, + rangeofscenes bigint, + params bigint +); + + +ALTER TABLE public."DRLG_Container" OWNER TO postgres; + +-- +-- TOC entry 210 (class 1259 OID 25187) +-- Name: DRLG_Container_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public."DRLG_Container_id_seq" + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public."DRLG_Container_id_seq" OWNER TO postgres; + +-- +-- TOC entry 3548 (class 0 OID 0) +-- Dependencies: 210 +-- Name: DRLG_Container_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres +-- + +ALTER SEQUENCE public."DRLG_Container_id_seq" OWNED BY public."DRLG_Container".id; + + +-- +-- TOC entry 211 (class 1259 OID 25188) +-- Name: DRLG_Tile; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public."DRLG_Tile" ( + id integer NOT NULL, + head_container integer, + type integer, + snohandle_id integer, + snolevelarea integer, + snomusic integer, + snoweather integer +); + + +ALTER TABLE public."DRLG_Tile" OWNER TO postgres; + +-- +-- TOC entry 212 (class 1259 OID 25191) +-- Name: DRLG_Tile_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public."DRLG_Tile_id_seq" + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public."DRLG_Tile_id_seq" OWNER TO postgres; + +-- +-- TOC entry 3549 (class 0 OID 0) +-- Dependencies: 212 +-- Name: DRLG_Tile_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres +-- + +ALTER SEQUENCE public."DRLG_Tile_id_seq" OWNED BY public."DRLG_Tile".id; + + +-- +-- TOC entry 213 (class 1259 OID 25192) +-- Name: account_relations; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.account_relations ( + id bigint NOT NULL, + listowner_id bigint, + listtarget_id bigint, + type character varying(255) DEFAULT 'FRIEND'::character varying NOT NULL +); + + +ALTER TABLE public.account_relations OWNER TO postgres; + +-- +-- TOC entry 214 (class 1259 OID 25196) +-- Name: account_relations_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.account_relations_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.account_relations_seq OWNER TO postgres; + +-- +-- TOC entry 215 (class 1259 OID 25197) +-- Name: accounts; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.accounts ( + id bigint NOT NULL, + email character varying(255), + banned boolean DEFAULT false NOT NULL, + salt bytea, + passwordverifier bytea, + saltedticket character varying(255), + battletagname character varying(255), + hashcode integer, + referralcode integer, + inviteeaccount_id bigint, + money bigint DEFAULT 0, + userlevel character varying(255), + lastonline bigint, + hasrename boolean DEFAULT false NOT NULL, + renamecooldown bigint DEFAULT 0 +); + + +ALTER TABLE public.accounts OWNER TO postgres; + +-- +-- TOC entry 216 (class 1259 OID 25206) +-- Name: accounts_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.accounts_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.accounts_seq OWNER TO postgres; + +-- +-- TOC entry 217 (class 1259 OID 25207) +-- Name: achievements; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.achievements ( + id bigint NOT NULL, + dbgameaccount_id bigint, + achievementid bigint, + completetime integer, + ishardcore boolean DEFAULT false NOT NULL, + quantity integer DEFAULT 0, + criteria bytea +); + + +ALTER TABLE public.achievements OWNER TO postgres; + +-- +-- TOC entry 218 (class 1259 OID 25214) +-- Name: achievements_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.achievements_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.achievements_seq OWNER TO postgres; + +-- +-- TOC entry 219 (class 1259 OID 25215) +-- Name: collection_editions; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.collection_editions ( + id bigint NOT NULL, + setid integer, + dbaccount_id bigint, + claimed boolean DEFAULT false NOT NULL, + claimedtoon_id bigint, + claimedhardcore boolean DEFAULT false NOT NULL +); + + +ALTER TABLE public.collection_editions OWNER TO postgres; + +-- +-- TOC entry 220 (class 1259 OID 25220) +-- Name: collection_editions_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.collection_editions_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.collection_editions_seq OWNER TO postgres; + +-- +-- TOC entry 221 (class 1259 OID 25221) +-- Name: craft_data; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.craft_data ( + id bigint NOT NULL, + dbgameaccount_id bigint, + ishardcore boolean, + isseasoned boolean, + artisan character varying(255), + level integer, + learnedrecipes bytea NOT NULL +); + + +ALTER TABLE public.craft_data OWNER TO postgres; + +-- +-- TOC entry 222 (class 1259 OID 25226) +-- Name: craft_data_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.craft_data_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.craft_data_seq OWNER TO postgres; + +-- +-- TOC entry 223 (class 1259 OID 25227) +-- Name: game_accounts; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.game_accounts ( + id bigint NOT NULL, + dbaccount_id bigint, + banner bytea, + uiprefs bytea, + uisettings bytea, + seentutorials bytea, + bossprogress bytea, + stashicons bytea, + lastonline bigint, + flags integer, + paragonlevel integer, + paragonlevelhardcore integer, + experience integer, + experiencehardcore integer, + lastplayedhero_id bigint, + gold bigint, + platinum integer, + hardcoregold bigint, + rmtcurrency bigint, + bloodshards integer, + hardcorebloodshards integer, + stashsize integer, + hardcorestashsize integer, + seasonstashsize integer, + eliteskilled bigint, + totalkilled bigint, + totalgold bigint, + totalbloodshards integer, + totalbounties integer DEFAULT 0 NOT NULL, + totalbountieshardcore integer DEFAULT 0 NOT NULL, + pvptotalkilled bigint, + pvptotalwins bigint, + pvptotalgold bigint +); + + +ALTER TABLE public.game_accounts OWNER TO postgres; + +-- +-- TOC entry 224 (class 1259 OID 25234) +-- Name: game_accounts_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.game_accounts_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.game_accounts_seq OWNER TO postgres; + +-- +-- TOC entry 225 (class 1259 OID 25235) +-- Name: global_params; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.global_params ( + id bigint NOT NULL, + name character varying(255), + value bigint +); + + +ALTER TABLE public.global_params OWNER TO postgres; + +-- +-- TOC entry 226 (class 1259 OID 25238) +-- Name: global_params_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.global_params_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.global_params_seq OWNER TO postgres; + +-- +-- TOC entry 227 (class 1259 OID 25239) +-- Name: guild_members; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.guild_members ( + id bigint NOT NULL, + dbguild_id bigint, + dbgameaccount_id bigint, + note character varying(50), + rank integer +); + + +ALTER TABLE public.guild_members OWNER TO postgres; + +-- +-- TOC entry 228 (class 1259 OID 25242) +-- Name: guild_news; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.guild_news ( + id bigint NOT NULL, + dbguild_id bigint, + dbgameaccount_id bigint, + type integer, + "time" bigint, + data bytea +); + + +ALTER TABLE public.guild_news OWNER TO postgres; + +-- +-- TOC entry 229 (class 1259 OID 25247) +-- Name: guildmembers_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.guildmembers_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.guildmembers_seq OWNER TO postgres; + +-- +-- TOC entry 230 (class 1259 OID 25248) +-- Name: guildnews_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.guildnews_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.guildnews_seq OWNER TO postgres; + +-- +-- TOC entry 231 (class 1259 OID 25249) +-- Name: guilds; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.guilds ( + id bigint NOT NULL, + name character varying(50), + tag character varying(6), + description character varying(255), + motd character varying(255), + category integer, + language integer, + islfm boolean, + isinviterequired boolean, + rating integer, + creator_id bigint, + ranks bytea, + disbanded boolean +); + + +ALTER TABLE public.guilds OWNER TO postgres; + +-- +-- TOC entry 232 (class 1259 OID 25254) +-- Name: guilds_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.guilds_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.guilds_seq OWNER TO postgres; + +-- +-- TOC entry 233 (class 1259 OID 25255) +-- Name: hireling_data; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.hireling_data ( + id bigint NOT NULL, + dbtoon_id bigint, + class integer, + skill1snoid integer DEFAULT '-1'::integer NOT NULL, + skill2snoid integer DEFAULT '-1'::integer NOT NULL, + skill3snoid integer DEFAULT '-1'::integer NOT NULL, + skill4snoid integer DEFAULT '-1'::integer NOT NULL +); + + +ALTER TABLE public.hireling_data OWNER TO postgres; + +-- +-- TOC entry 234 (class 1259 OID 25262) +-- Name: hireling_data_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.hireling_data_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.hireling_data_seq OWNER TO postgres; + +-- +-- TOC entry 235 (class 1259 OID 25263) +-- Name: items; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.items ( + id bigint NOT NULL, + dbgameaccount_id bigint, + dbtoon_id bigint, + equipmentslot integer, + forsale boolean DEFAULT false NOT NULL, + hirelingid integer DEFAULT 0 NOT NULL, + locationx integer, + locationy integer, + ishardcore boolean DEFAULT false NOT NULL, + unidentified boolean DEFAULT false NOT NULL, + firstgem integer DEFAULT '-1'::integer NOT NULL, + secondgem integer DEFAULT '-1'::integer NOT NULL, + thirdgem integer DEFAULT '-1'::integer NOT NULL, + gbid integer, + version integer DEFAULT 1 NOT NULL, + count integer DEFAULT 1, + rareitemname bytea, + dyetype integer DEFAULT 0, + quality integer DEFAULT 1, + binding integer DEFAULT 0, + durability integer DEFAULT 0, + rating integer DEFAULT 0, + affixes character varying(255), + attributes character varying(2500), + transmoggbid integer DEFAULT '-1'::integer NOT NULL +); + + +ALTER TABLE public.items OWNER TO postgres; + +-- +-- TOC entry 236 (class 1259 OID 25283) +-- Name: items_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.items_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.items_seq OWNER TO postgres; + +-- +-- TOC entry 237 (class 1259 OID 25284) +-- Name: mail; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.mail ( + id bigint NOT NULL, + dbtoon_id bigint, + claimed boolean, + title character varying(255), + body character varying(255), + itemgbid integer +); + + +ALTER TABLE public.mail OWNER TO postgres; + +-- +-- TOC entry 238 (class 1259 OID 25289) +-- Name: mail_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.mail_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.mail_seq OWNER TO postgres; + +-- +-- TOC entry 239 (class 1259 OID 25290) +-- Name: quests; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.quests ( + id bigint NOT NULL, + dbtoon_id bigint, + questid integer, + iscompleted boolean DEFAULT false NOT NULL, + queststep integer +); + + +ALTER TABLE public.quests OWNER TO postgres; + +-- +-- TOC entry 240 (class 1259 OID 25294) +-- Name: quests_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.quests_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.quests_seq OWNER TO postgres; + +-- +-- TOC entry 241 (class 1259 OID 25295) +-- Name: reports; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.reports ( + id bigint NOT NULL, + type character varying(255), + dbgameaccount_id bigint, + dbtoon_id bigint, + sender_id bigint, + note character varying(255) +); + + +ALTER TABLE public.reports OWNER TO postgres; + +-- +-- TOC entry 242 (class 1259 OID 25300) +-- Name: reports_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.reports_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.reports_seq OWNER TO postgres; + +-- +-- TOC entry 243 (class 1259 OID 25301) +-- Name: skills; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.skills ( + id bigint NOT NULL, + dbtoon_id bigint, + rune0 integer, + skill0 integer, + rune1 integer, + skill1 integer, + rune2 integer, + skill2 integer, + rune3 integer, + skill3 integer, + rune4 integer, + skill4 integer, + rune5 integer, + skill5 integer, + passive0 integer, + passive1 integer, + passive2 integer, + passive3 integer DEFAULT '-1'::integer NOT NULL, + potiongbid integer DEFAULT '-1'::integer NOT NULL +); + + +ALTER TABLE public.skills OWNER TO postgres; + +-- +-- TOC entry 244 (class 1259 OID 25306) +-- Name: skills_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.skills_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.skills_seq OWNER TO postgres; + +-- +-- TOC entry 245 (class 1259 OID 25307) +-- Name: toons; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.toons ( + id bigint NOT NULL, + class character varying(255), + dbgameaccount_id bigint, + deleted boolean, + ishardcore boolean, + isseasoned boolean, + dead boolean, + timedeadharcode integer, + stoneofportal boolean, + createdseason integer, + experience integer, + paragonbonuses bytea, + pverating integer DEFAULT 0 NOT NULL, + chestsopened integer DEFAULT 0 NOT NULL, + eventscompleted integer DEFAULT 0 NOT NULL, + kills integer DEFAULT 0 NOT NULL, + deaths integer DEFAULT 0 NOT NULL, + eliteskilled integer DEFAULT 0 NOT NULL, + goldgained integer DEFAULT 0 NOT NULL, + activehireling integer, + currentact integer, + currentquestid integer, + currentqueststepid integer, + currentdifficulty integer, + flags character varying(255), + level smallint, + stats character varying(255) DEFAULT '0;0;0;0;0;0'::character varying NOT NULL, + name character varying(255), + timeplayed integer, + lore bytea, + archieved boolean DEFAULT false NOT NULL, + wingsactive integer DEFAULT '-1'::integer NOT NULL, + cosmetic1 integer, + cosmetic2 integer, + cosmetic3 integer, + cosmetic4 integer, + craftitem1 integer, + craftitem2 integer, + craftitem3 integer, + craftitem4 integer, + craftitem5 integer, + bigportalkey integer, + leorikkey integer, + horadrica1 integer, + horadrica2 integer, + horadrica3 integer, + horadrica4 integer, + horadrica5 integer +); + + +ALTER TABLE public.toons OWNER TO postgres; + +-- +-- TOC entry 246 (class 1259 OID 25322) +-- Name: toons_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.toons_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.toons_seq OWNER TO postgres; + +-- +-- TOC entry 3257 (class 2604 OID 25323) +-- Name: DRLG_Container id; Type: DEFAULT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public."DRLG_Container" ALTER COLUMN id SET DEFAULT nextval('public."DRLG_Container_id_seq"'::regclass); + + +-- +-- TOC entry 3258 (class 2604 OID 25324) +-- Name: DRLG_Tile id; Type: DEFAULT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public."DRLG_Tile" ALTER COLUMN id SET DEFAULT nextval('public."DRLG_Tile_id_seq"'::regclass); + + +-- +-- TOC entry 3503 (class 0 OID 25184) +-- Dependencies: 209 +-- Data for Name: DRLG_Container; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +INSERT INTO public."DRLG_Container" VALUES (6, 452991, 240, NULL); +INSERT INTO public."DRLG_Container" VALUES (7, 452996, 240, NULL); +INSERT INTO public."DRLG_Container" VALUES (11, 288823, 200, NULL); +INSERT INTO public."DRLG_Container" VALUES (16, 331263, 240, NULL); +INSERT INTO public."DRLG_Container" VALUES (17, 360797, 240, NULL); +INSERT INTO public."DRLG_Container" VALUES (18, 452721, 240, NULL); +INSERT INTO public."DRLG_Container" VALUES (19, 452922, 240, NULL); +INSERT INTO public."DRLG_Container" VALUES (20, 452984, 240, NULL); +INSERT INTO public."DRLG_Container" VALUES (21, 452985, 240, NULL); +INSERT INTO public."DRLG_Container" VALUES (22, 452997, 240, NULL); +INSERT INTO public."DRLG_Container" VALUES (23, 452998, 240, NULL); +INSERT INTO public."DRLG_Container" VALUES (24, 288454, 240, NULL); +INSERT INTO public."DRLG_Container" VALUES (1, 0, 240, 50579); +INSERT INTO public."DRLG_Container" VALUES (2, 0, 240, 263494); +INSERT INTO public."DRLG_Container" VALUES (4, 0, 240, 82370); +INSERT INTO public."DRLG_Container" VALUES (5, 0, 240, 82371); +INSERT INTO public."DRLG_Container" VALUES (8, 0, 240, 72636); +INSERT INTO public."DRLG_Container" VALUES (9, 0, 240, 72637); +INSERT INTO public."DRLG_Container" VALUES (10, 0, 240, 154587); +INSERT INTO public."DRLG_Container" VALUES (12, 0, 240, 211471); +INSERT INTO public."DRLG_Container" VALUES (13, 0, 240, 161961); +INSERT INTO public."DRLG_Container" VALUES (14, 0, 240, 50582); +INSERT INTO public."DRLG_Container" VALUES (3, 0, 240, 230288); +INSERT INTO public."DRLG_Container" VALUES (15, 275921, 240, NULL); +INSERT INTO public."DRLG_Container" VALUES (25, 288843, 240, NULL); +INSERT INTO public."DRLG_Container" VALUES (26, 331389, 240, NULL); +INSERT INTO public."DRLG_Container" VALUES (27, 275960, 240, NULL); +INSERT INTO public."DRLG_Container" VALUES (28, 275946, 240, NULL); +INSERT INTO public."DRLG_Container" VALUES (29, 275926, 240, NULL); + + +-- +-- TOC entry 3505 (class 0 OID 25188) +-- Dependencies: 211 +-- Data for Name: DRLG_Tile; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +INSERT INTO public."DRLG_Tile" VALUES (1, 1, 0, 32990, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (2, 1, 1, 174633, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (3, 1, 1, 174643, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (4, 1, 1, 174657, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (5, 1, 1, 174663, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (6, 1, 2, 32939, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (7, 1, 2, 32941, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (8, 1, 2, 32951, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (9, 1, 2, 32952, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (10, 1, 2, 32954, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (11, 1, 2, 32955, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (12, 1, 2, 32958, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (13, 1, 2, 32960, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (14, 1, 2, 32961, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (15, 1, 2, 32963, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (16, 1, 2, 32979, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (17, 1, 2, 32981, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (18, 1, 2, 32982, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (19, 1, 2, 32983, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (20, 1, 2, 32985, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (21, 1, 2, 66589, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (22, 1, 2, 66919, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (23, 1, 2, 66925, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (24, 1, 2, 67021, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (25, 1, 2, 32986, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (26, 1, 2, 32987, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (27, 1, 3, 32938, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (28, 1, 3, 32969, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (29, 1, 3, 32970, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (30, 1, 3, 32989, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (31, 1, 3, 1886, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (32, 1, 3, 32943, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (33, 1, 3, 32971, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (34, 1, 3, 32991, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (35, 1, 3, 32999, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (41, 2, 0, 250881, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (42, 2, 0, 250882, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (43, 2, 0, 250883, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (44, 2, 0, 250884, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (45, 2, 1, 250881, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (46, 2, 1, 250882, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (47, 2, 1, 250883, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (48, 2, 1, 250884, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (49, 2, 2, 252804, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (50, 2, 2, 253156, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (51, 2, 2, 289062, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (52, 2, 2, 289135, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (53, 2, 2, 289146, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (54, 2, 2, 253322, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (55, 2, 2, 253395, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (56, 2, 2, 242155, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (57, 2, 2, 242190, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (58, 2, 2, 242272, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (59, 2, 2, 242295, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (60, 2, 2, 242312, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (61, 2, 2, 242326, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (62, 2, 2, 242847, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (63, 2, 2, 242678, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (64, 2, 2, 242711, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (65, 2, 2, 242801, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (66, 2, 2, 242881, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (67, 2, 2, 242935, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (68, 2, 2, 243101, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (69, 2, 2, 243923, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (70, 2, 2, 243990, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (71, 2, 2, 244026, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (72, 2, 2, 244152, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (73, 2, 2, 244271, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (74, 2, 2, 244575, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (75, 2, 2, 244617, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (76, 2, 2, 244655, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (77, 2, 2, 244673, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (78, 2, 2, 244706, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (79, 2, 2, 244722, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (80, 2, 2, 244743, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (81, 2, 2, 244800, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (82, 2, 2, 245024, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (83, 2, 2, 245078, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (84, 2, 2, 245132, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (85, 2, 2, 245192, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (86, 2, 2, 245204, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (87, 2, 2, 245365, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (88, 2, 2, 245507, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (89, 2, 2, 245644, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (90, 2, 3, 244921, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (91, 2, 3, 243005, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (92, 2, 3, 243895, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (93, 2, 3, 243905, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (94, 2, 3, 243954, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (95, 2, 3, 243970, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (96, 2, 3, 244132, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (97, 2, 3, 244230, 263493, -1, 315939); +INSERT INTO public."DRLG_Tile" VALUES (98, 4, 0, 478085, 82372, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (99, 4, 0, 77876, 82372, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (100, 4, 1, 478079, 82372, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (101, 4, 1, 33034, 82372, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (102, 4, 1, 33016, 82372, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (103, 4, 1, 33041, 82372, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (104, 4, 2, 33011, 82372, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (105, 4, 2, 33024, 82372, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (106, 4, 2, 33025, 82372, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (107, 4, 2, 33026, 82372, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (108, 4, 2, 33027, 82372, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (109, 4, 2, 33029, 82372, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (110, 4, 2, 33030, 82372, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (111, 4, 2, 33031, 82372, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (112, 4, 2, 33037, 82372, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (113, 4, 2, 33038, 82372, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (114, 4, 3, 33044, 82372, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (115, 4, 3, 33039, 82372, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (116, 4, 3, 33032, 82372, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (117, 4, 3, 33014, 82372, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (118, 5, 0, 33040, 82373, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (119, 5, 0, 33033, 82373, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (120, 5, 1, 33039, 82373, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (121, 5, 1, 33044, 82373, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (122, 5, 1, 33046, 82373, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (123, 5, 1, 33032, 82373, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (124, 5, 2, 33011, 82373, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (125, 5, 2, 33024, 82373, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (126, 5, 2, 33025, 82373, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (127, 5, 2, 33026, 82372, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (128, 5, 2, 33027, 82373, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (129, 5, 2, 33029, 82373, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (130, 5, 2, 33030, 82373, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (131, 5, 2, 33031, 82373, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (132, 5, 2, 33037, 82373, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (133, 5, 2, 33038, 82373, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (136, 5, 2, 478081, 82373, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (137, 5, 2, 478083, 82373, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (138, 5, 3, 478082, 82373, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (139, 5, 3, 478084, 82373, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (140, 5, 3, 33032, 82373, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (141, 5, 3, 33039, 82373, -1, 86469); +INSERT INTO public."DRLG_Tile" VALUES (142, 6, 0, 456189, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (143, 6, 0, 456192, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (144, 6, 0, 456195, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (145, 6, 0, 456197, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (146, 6, 1, 456202, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (147, 6, 1, 456205, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (148, 6, 1, 456208, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (149, 6, 1, 456211, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (150, 6, 2, 456219, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (151, 6, 2, 456222, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (152, 6, 2, 456228, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (153, 6, 2, 456231, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (154, 6, 2, 456233, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (155, 6, 2, 456236, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (156, 6, 2, 456239, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (157, 6, 2, 456242, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (158, 6, 2, 456245, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (159, 6, 2, 456247, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (160, 6, 2, 456250, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (161, 6, 2, 456252, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (162, 6, 2, 456255, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (163, 6, 2, 456258, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (164, 6, 2, 456263, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (165, 6, 2, 456269, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (166, 6, 2, 456273, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (167, 6, 2, 456276, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (168, 6, 2, 456279, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (169, 6, 2, 456282, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (170, 6, 2, 456285, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (171, 6, 2, 456294, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (172, 6, 2, 456295, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (173, 6, 3, 456216, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (174, 6, 3, 456225, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (175, 6, 3, 456266, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (176, 6, 3, 456288, 452992, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (177, 7, 0, 456189, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (178, 7, 0, 456192, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (179, 7, 0, 456195, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (180, 7, 0, 456197, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (181, 7, 1, 456202, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (182, 7, 1, 456205, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (183, 7, 1, 456208, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (184, 7, 1, 456211, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (185, 7, 2, 456219, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (186, 7, 2, 456222, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (187, 7, 2, 456228, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (188, 7, 2, 456231, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (189, 7, 2, 456233, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (190, 7, 2, 456236, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (191, 7, 2, 456239, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (192, 7, 2, 456242, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (193, 7, 2, 456245, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (194, 7, 2, 456247, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (195, 7, 2, 456250, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (196, 7, 2, 456252, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (197, 7, 2, 456255, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (198, 7, 2, 456258, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (199, 7, 2, 456263, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (200, 7, 2, 456269, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (201, 7, 2, 456273, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (202, 7, 2, 456276, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (203, 7, 2, 456279, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (204, 7, 2, 456282, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (205, 7, 2, 456285, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (206, 7, 2, 456294, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (207, 7, 2, 456295, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (208, 7, 3, 456216, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (209, 7, 3, 456225, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (210, 7, 3, 456266, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (211, 7, 3, 456288, 452993, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (217, 8, 0, 33094, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (218, 8, 0, 33057, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (220, 8, 0, 33099, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (221, 8, 0, 61489, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (222, 8, 0, 61650, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (223, 8, 0, 61567, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (224, 8, 1, 84766, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (225, 8, 1, 84775, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (226, 8, 1, 84784, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (227, 8, 1, 84787, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (228, 8, 2, 33051, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (229, 8, 2, 33054, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (230, 8, 2, 33066, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (231, 8, 2, 33068, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (232, 8, 2, 33070, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (235, 8, 2, 33073, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (236, 8, 2, 33075, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (237, 8, 2, 33076, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (238, 8, 2, 33077, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (239, 8, 2, 33078, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (240, 8, 2, 33086, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (241, 8, 2, 33087, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (242, 8, 2, 33091, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (243, 8, 2, 33092, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (244, 8, 2, 1890, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (245, 8, 3, 61237, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (246, 8, 3, 61403, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (247, 8, 3, 61428, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (248, 8, 3, 61449, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (274, 1, 4, 32936, 19780, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (275, 12, 0, 211486, 211479, -1, 206287); +INSERT INTO public."DRLG_Tile" VALUES (276, 12, 0, 211488, 211479, -1, 206287); +INSERT INTO public."DRLG_Tile" VALUES (277, 12, 0, 211490, 211479, -1, 206287); +INSERT INTO public."DRLG_Tile" VALUES (278, 12, 0, 211492, 211479, -1, 206287); +INSERT INTO public."DRLG_Tile" VALUES (279, 12, 1, 343946, 211479, -1, 206287); +INSERT INTO public."DRLG_Tile" VALUES (280, 12, 1, 343947, 211479, -1, 206287); +INSERT INTO public."DRLG_Tile" VALUES (281, 12, 1, 343948, 211479, -1, 206287); +INSERT INTO public."DRLG_Tile" VALUES (282, 12, 1, 343949, 211479, -1, 206287); +INSERT INTO public."DRLG_Tile" VALUES (283, 12, 2, 209181, 211479, -1, 206287); +INSERT INTO public."DRLG_Tile" VALUES (284, 12, 2, 209225, 211479, -1, 206287); +INSERT INTO public."DRLG_Tile" VALUES (285, 12, 2, 204737, 211479, -1, 206287); +INSERT INTO public."DRLG_Tile" VALUES (286, 12, 2, 204745, 211479, -1, 206287); +INSERT INTO public."DRLG_Tile" VALUES (287, 12, 2, 204755, 211479, -1, 206287); +INSERT INTO public."DRLG_Tile" VALUES (288, 12, 2, 204765, 211479, -1, 206287); +INSERT INTO public."DRLG_Tile" VALUES (289, 12, 2, 204775, 211479, -1, 206287); +INSERT INTO public."DRLG_Tile" VALUES (290, 12, 3, 204624, 211479, -1, 206287); +INSERT INTO public."DRLG_Tile" VALUES (291, 12, 3, 204788, 211479, -1, 206287); +INSERT INTO public."DRLG_Tile" VALUES (292, 12, 3, 204804, 211479, -1, 206287); +INSERT INTO public."DRLG_Tile" VALUES (252, 11, 0, 31100, 312607, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (254, 11, 1, 31102, 312607, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (256, 11, 1, 31083, 312607, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (257, 11, 1, 31096, 312607, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (258, 11, 2, 31079, 312607, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (259, 11, 2, 31085, 312607, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (260, 11, 2, 31086, 312607, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (261, 11, 2, 31087, 312607, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (262, 11, 2, 31088, 312607, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (263, 11, 2, 31089, 312607, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (264, 11, 2, 31090, 312607, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (265, 11, 2, 31091, 312607, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (266, 11, 2, 31092, 312607, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (267, 11, 2, 31097, 312607, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (269, 11, 3, 31080, 312607, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (270, 11, 3, 31093, 312607, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (272, 11, 3, 31103, 312607, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (293, 12, 3, 204814, 211479, -1, 206287); +INSERT INTO public."DRLG_Tile" VALUES (294, 12, 4, 204614, 211479, -1, 206287); +INSERT INTO public."DRLG_Tile" VALUES (295, 13, 4, 154775, 161964, -1, 2809); +INSERT INTO public."DRLG_Tile" VALUES (296, 13, 3, 132203, 161964, -1, 2809); +INSERT INTO public."DRLG_Tile" VALUES (297, 13, 0, 132218, 161964, -1, 2809); +INSERT INTO public."DRLG_Tile" VALUES (298, 13, 3, 132263, 161964, -1, 2809); +INSERT INTO public."DRLG_Tile" VALUES (299, 13, 3, 132293, 161964, -1, 2809); +INSERT INTO public."DRLG_Tile" VALUES (300, 13, 2, 131902, 161964, -1, 2809); +INSERT INTO public."DRLG_Tile" VALUES (301, 15, 4, 32936, 19785, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (302, 15, 0, 32940, 19785, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (303, 15, 1, 32948, 19785, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (304, 15, 1, 32997, 19785, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (305, 15, 1, 33002, 19785, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (306, -1, 1, -1, 19785, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (307, 15, 3, 32999, 19785, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (308, 15, 3, 32971, 19785, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (309, 15, 3, 32991, 19785, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (310, 15, 3, 32943, 19785, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (311, 15, 2, 32981, 19785, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (312, 15, 2, 32985, 19785, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (313, 15, 2, 32982, 19785, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (314, 15, 2, 32983, 19785, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (315, 15, 2, 32965, 19785, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (316, 15, 2, 32967, 19785, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (317, 15, 2, 32951, 19785, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (318, 15, 2, 32952, 19785, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (319, 15, 2, 32939, 19785, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (320, 15, 2, 32941, 19785, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (321, 15, 2, 32961, 19785, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (322, 15, 2, 32963, 19785, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (323, 15, 2, 32954, 19785, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (324, 15, 2, 32958, 19785, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (325, 15, 2, 32979, 19785, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (326, 15, 2, 32960, 19785, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (327, 14, 4, 32936, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (328, 14, 0, 32944, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (329, 14, 0, 32972, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (330, 14, 0, 32992, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (331, 14, 0, 33000, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (332, 14, 1, 32976, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (333, 14, 1, 33001, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (334, 14, 1, 32946, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (335, 14, 3, 32999, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (336, 14, 3, 32971, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (337, 14, 3, 32991, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (338, 14, 3, 32943, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (339, 14, 2, 32981, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (340, 14, 2, 32985, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (341, 14, 2, 32982, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (342, 14, 2, 32983, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (343, 14, 2, 32965, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (344, 14, 2, 32967, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (345, 14, 2, 32951, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (346, 14, 2, 32952, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (347, 14, 2, 32939, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (348, 14, 2, 32941, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (349, 14, 2, 32961, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (350, 14, 2, 32963, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (351, 14, 2, 32954, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (352, 14, 2, 32958, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (353, 14, 2, 32979, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (354, 14, 2, 32960, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (355, 14, 2, 32984, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (356, 14, 2, 66589, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (357, 14, 2, 66919, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (358, 14, 2, 66925, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (359, 14, 2, 67021, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (360, 14, 2, 1883, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (361, 14, 2, 1884, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (362, 14, 2, 1885, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (363, 14, 1, 32993, 19783, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (445, 18, 4, 32936, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (446, 18, 0, 32944, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (447, 18, 0, 32972, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (448, 18, 0, 32992, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (449, 18, 0, 33000, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (450, 18, 1, 32976, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (451, 18, 1, 33001, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (452, 18, 1, 32946, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (414, 17, 0, 270859, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (415, 17, 0, 270960, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (417, 17, 1, 271019, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (418, 17, 1, 270973, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (419, 17, 1, 270873, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (420, 17, 1, 270931, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (421, 17, 3, 269281, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (422, 17, 3, 269240, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (423, 17, 3, 269253, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (424, 17, 3, 269271, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (425, 17, 2, 269081, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (411, 16, 2, 252804, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (365, 16, 0, 337235, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (366, 16, 0, 337236, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (368, 16, 0, 337238, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (369, 16, 1, 250892, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (371, 16, 1, 250894, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (372, 16, 1, 250895, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (373, 16, 3, 243005, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (374, 16, 3, 243895, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (410, 16, 2, 244271, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (409, 16, 2, 244026, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (408, 16, 2, 245204, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (407, 16, 2, 244800, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (406, 16, 2, 242155, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (405, 16, 2, 289062, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (404, 16, 2, 245132, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (403, 16, 2, 245024, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (402, 16, 2, 245078, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (401, 16, 2, 242295, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (398, 16, 2, 244152, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (397, 16, 2, 243101, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (396, 16, 2, 242801, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (375, 16, 3, 243905, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (376, 16, 3, 243954, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (377, 16, 3, 244132, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (378, 16, 3, 244230, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (379, 16, 2, 242678, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (380, 16, 2, 244673, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (381, 16, 2, 244743, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (383, 16, 2, 243990, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (384, 16, 2, 253156, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (385, 16, 2, 253322, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (386, 16, 2, 253395, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (388, 16, 2, 242312, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (389, 16, 2, 245192, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (390, 16, 2, 244617, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (391, 16, 2, 242272, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (392, 16, 2, 245365, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (393, 16, 2, 245507, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (394, 16, 2, 245644, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (395, 16, 2, 242190, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (453, 18, 3, 32999, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (454, 18, 3, 32971, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (455, 18, 3, 32991, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (456, 18, 3, 32943, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (457, 18, 2, 32981, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (458, 18, 2, 32985, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (459, 18, 2, 32982, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (460, 18, 2, 32983, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (461, 18, 2, 32965, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (462, 18, 2, 32967, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (463, 18, 2, 32951, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (464, 18, 2, 32952, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (465, 18, 2, 32939, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (466, 18, 2, 32941, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (467, 18, 2, 32961, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (468, 18, 2, 32963, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (469, 18, 2, 32954, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (470, 18, 2, 32958, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (471, 18, 2, 32979, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (472, 18, 2, 32960, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (473, 18, 2, 32984, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (474, 18, 2, 66589, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (475, 18, 2, 66919, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (476, 18, 2, 66925, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (477, 18, 2, 67021, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (478, 18, 2, 1883, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (479, 18, 2, 1884, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (480, 18, 2, 1885, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (481, 18, 1, 32993, 452986, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (482, 19, 4, 32936, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (483, 19, 0, 32944, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (484, 19, 0, 32972, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (485, 19, 0, 32992, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (486, 19, 0, 33000, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (487, 19, 1, 32976, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (488, 19, 1, 33001, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (489, 19, 1, 32946, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (490, 19, 3, 32999, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (491, 19, 3, 32971, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (492, 19, 3, 32991, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (493, 19, 3, 32943, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (494, 19, 2, 32981, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (495, 19, 2, 32985, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (496, 19, 2, 32982, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (497, 19, 2, 32983, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (498, 19, 2, 32965, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (499, 19, 2, 32967, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (500, 19, 2, 32951, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (501, 19, 2, 32952, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (502, 19, 2, 32939, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (503, 19, 2, 32941, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (504, 19, 2, 32961, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (505, 19, 2, 32963, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (506, 19, 2, 32954, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (507, 19, 2, 32958, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (508, 19, 2, 32979, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (509, 19, 2, 32960, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (510, 19, 2, 32984, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (511, 19, 2, 66589, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (512, 19, 2, 66919, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (513, 19, 2, 66925, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (514, 19, 2, 67021, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (515, 19, 2, 1883, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (516, 19, 2, 1884, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (517, 19, 2, 1885, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (518, 19, 1, 32993, 452988, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (519, 20, 0, 32944, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (520, 20, 0, 32972, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (521, 20, 0, 32992, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (522, 20, 0, 33000, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (523, 20, 1, 32976, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (524, 20, 1, 33001, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (525, 20, 1, 32946, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (526, 20, 3, 32999, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (527, 20, 3, 32971, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (528, 20, 3, 32991, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (529, 20, 3, 32943, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (530, 20, 2, 32981, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (531, 20, 2, 32985, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (532, 20, 2, 32982, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (533, 20, 2, 32983, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (534, 20, 2, 32965, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (535, 20, 2, 32967, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (536, 20, 2, 32951, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (537, 20, 2, 32952, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (538, 20, 2, 32939, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (539, 20, 2, 32941, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (540, 20, 2, 32961, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (541, 20, 2, 32963, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (542, 20, 2, 32954, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (543, 20, 2, 32958, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (544, 20, 2, 32979, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (545, 20, 2, 32960, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (546, 20, 2, 32984, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (547, 20, 2, 66589, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (548, 20, 2, 66919, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (549, 20, 2, 66925, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (550, 20, 2, 67021, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (551, 20, 2, 1883, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (552, 20, 2, 1884, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (553, 20, 2, 1885, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (554, 20, 1, 32993, 452989, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (555, 21, 0, 32944, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (556, 21, 0, 32972, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (557, 21, 0, 32992, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (558, 21, 0, 33000, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (559, 21, 1, 32976, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (560, 21, 1, 33001, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (561, 21, 1, 32946, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (562, 21, 3, 32999, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (563, 21, 3, 32971, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (564, 21, 3, 32991, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (565, 21, 3, 32943, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (566, 21, 2, 32981, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (567, 21, 2, 32985, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (568, 21, 2, 32982, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (569, 21, 2, 32983, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (570, 21, 2, 32965, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (571, 21, 2, 32967, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (572, 21, 2, 32951, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (428, 17, 2, 269427, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (429, 17, 2, 268554, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (442, 17, 2, 271661, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (440, 17, 2, 271842, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (439, 17, 2, 268682, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (438, 17, 2, 271696, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (437, 17, 2, 269047, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (436, 17, 2, 271571, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (435, 17, 2, 268943, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (434, 17, 2, 271760, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (433, 17, 2, 269204, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (430, 17, 2, 272180, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (431, 17, 2, 268617, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (432, 17, 2, 271995, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (573, 21, 2, 32952, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (574, 21, 2, 32939, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (575, 21, 2, 32941, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (576, 21, 2, 32961, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (577, 21, 2, 32963, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (578, 21, 2, 32954, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (579, 21, 2, 32958, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (580, 21, 2, 32979, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (581, 21, 2, 32960, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (582, 21, 2, 32984, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (583, 21, 2, 66589, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (584, 21, 2, 66919, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (585, 21, 2, 66925, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (586, 21, 2, 67021, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (587, 21, 2, 1883, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (588, 21, 2, 1884, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (589, 21, 2, 1885, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (590, 21, 1, 32993, 452990, -1, 50535); +INSERT INTO public."DRLG_Tile" VALUES (591, 22, 0, 456189, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (592, 22, 0, 456192, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (593, 22, 0, 456195, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (594, 22, 0, 456197, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (595, 22, 1, 456202, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (596, 22, 1, 456205, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (597, 22, 1, 456208, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (598, 22, 1, 456211, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (599, 22, 2, 456219, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (600, 22, 2, 456222, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (601, 22, 2, 456228, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (602, 22, 2, 456231, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (603, 22, 2, 456233, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (604, 22, 2, 456236, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (605, 22, 2, 456239, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (606, 22, 2, 456242, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (607, 22, 2, 456245, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (608, 22, 2, 456247, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (609, 22, 2, 456250, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (610, 22, 2, 456252, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (611, 22, 2, 456255, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (612, 22, 2, 456258, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (613, 22, 2, 456263, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (614, 22, 2, 456269, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (615, 22, 2, 456273, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (616, 22, 2, 456276, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (617, 22, 2, 456279, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (618, 22, 2, 456282, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (619, 22, 2, 456285, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (620, 22, 2, 456294, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (621, 22, 2, 456295, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (622, 22, 3, 456216, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (623, 22, 3, 456225, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (624, 22, 3, 456266, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (625, 22, 3, 456288, 452994, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (626, 23, 0, 456189, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (627, 23, 0, 456192, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (628, 23, 0, 456195, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (629, 23, 0, 456197, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (630, 23, 1, 456202, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (631, 23, 1, 456205, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (632, 23, 1, 456208, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (633, 23, 1, 456211, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (634, 23, 2, 456219, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (635, 23, 2, 456222, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (636, 23, 2, 456228, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (637, 23, 2, 456231, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (638, 23, 2, 456233, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (639, 23, 2, 456236, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (640, 23, 2, 456239, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (641, 23, 2, 456242, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (642, 23, 2, 456245, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (643, 23, 2, 456247, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (644, 23, 2, 456250, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (645, 23, 2, 456252, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (646, 23, 2, 456255, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (647, 23, 2, 456258, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (648, 23, 2, 456263, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (649, 23, 2, 456269, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (650, 23, 2, 456273, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (651, 23, 2, 456276, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (652, 23, 2, 456279, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (653, 23, 2, 456282, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (654, 23, 2, 456285, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (655, 23, 2, 456294, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (656, 23, 2, 456295, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (657, 23, 3, 456216, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (658, 23, 3, 456225, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (659, 23, 3, 456266, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (660, 23, 3, 456288, 452995, -1, 453221); +INSERT INTO public."DRLG_Tile" VALUES (661, 10, 4, 33060, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (662, 10, 0, 33094, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (663, 10, 0, 33099, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (664, -1, 0, 33057, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (665, -1, 0, 61489, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (666, -1, 0, 61567, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (667, -1, 0, 61650, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (669, 10, 1, 84766, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (670, 10, 1, 84775, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (671, 10, 1, 84784, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (672, 10, 1, 84787, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (673, 10, 2, 1890, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (674, 10, 2, 33066, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (675, 10, 2, 33068, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (676, 10, 2, 33070, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (677, 10, 2, 33071, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (678, 10, 2, 33072, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (679, 10, 2, 33073, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (680, 10, 2, 33075, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (681, 10, 2, 33076, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (682, 10, 2, 33077, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (683, 10, 2, 33078, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (684, 10, 2, 33086, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (685, 10, 2, 33087, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (686, 10, 2, 33091, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (687, 10, 2, 33092, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (688, 10, 3, 61237, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (689, 10, 3, 61403, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (690, 10, 3, 61428, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (691, 10, 3, 61449, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (692, 24, 0, 151979, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (693, 24, 0, 154056, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (694, 24, 0, 154731, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (695, 24, 0, 154821, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (696, 24, 1, 155325, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (697, 24, 1, 154066, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (698, 24, 1, 156637, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (699, 24, 1, 156649, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (700, 24, 2, 221307, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (701, 24, 2, 151143, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (702, 24, 2, 151319, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (703, 24, 2, 151698, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (704, 24, 2, 133974, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (705, 24, 2, 152038, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (706, 24, 2, 152562, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (707, 24, 2, 152610, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (708, 24, 2, 152935, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (709, 24, 2, 153112, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (710, 24, 2, 153250, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (711, 24, 2, 153287, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (712, 24, 2, 154118, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (713, 24, 2, 154189, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (714, 24, 2, 154223, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (715, 24, 2, 154639, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (716, 24, 2, 460991, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (717, 24, 2, 464560, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (718, 24, 3, 151655, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (719, 24, 3, 154038, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (720, 24, 3, 154687, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (721, 24, 3, 154791, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (722, 24, 3, 460986, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (723, 24, 4, 154952, 288482, -1, 214225); +INSERT INTO public."DRLG_Tile" VALUES (724, 9, 0, 33094, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (725, 9, 0, 33057, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (726, 9, 0, 33099, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (727, 9, 0, 61489, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (728, 9, 0, 61650, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (729, 9, 0, 61567, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (730, 9, 1, 84766, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (731, 9, 1, 84775, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (732, 9, 1, 84784, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (733, 9, 1, 84787, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (734, 9, 2, 33051, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (735, 9, 2, 33054, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (736, 9, 2, 33066, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (737, 9, 2, 33068, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (738, 9, 2, 33070, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (739, 9, 2, 33073, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (740, 9, 2, 33075, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (741, 9, 2, 33076, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (742, 9, 2, 33077, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (743, 9, 2, 33078, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (744, 9, 2, 33086, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (745, 9, 2, 33087, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (746, 9, 2, 33091, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (747, 9, 2, 33092, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (748, 9, 2, 1890, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (749, 9, 3, 61237, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (750, 9, 3, 61403, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (751, 9, 3, 61428, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (752, 9, 3, 61449, 154588, -1, 50542); +INSERT INTO public."DRLG_Tile" VALUES (412, 17, 4, 269728, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (413, 17, 0, 270898, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (416, 17, 0, 271005, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (426, 17, 2, 271684, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (427, 17, 2, 269063, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (444, 17, 2, 271724, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (443, 17, 2, 269227, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (441, 17, 2, 269183, 333758, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (364, 16, 4, 313270, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (367, 16, 0, 337237, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (370, 16, 1, 250893, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (400, 16, 2, 242711, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (399, 16, 2, 244575, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (382, 16, 2, 242326, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (762, 26, 2, 292833, 352719, -1, 461364); +INSERT INTO public."DRLG_Tile" VALUES (763, 26, 2, 292969, 352719, -1, 461364); +INSERT INTO public."DRLG_Tile" VALUES (764, 26, 2, 271073, 352719, -1, 461364); +INSERT INTO public."DRLG_Tile" VALUES (765, 26, 2, 293035, 352719, -1, 461364); +INSERT INTO public."DRLG_Tile" VALUES (766, 26, 2, 293233, 352719, -1, 461364); +INSERT INTO public."DRLG_Tile" VALUES (767, 26, 2, 293329, 352719, -1, 461364); +INSERT INTO public."DRLG_Tile" VALUES (768, 26, 2, 294284, 352719, -1, 461364); +INSERT INTO public."DRLG_Tile" VALUES (387, 16, 2, 289135, 331264, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (806, 28, 3, 61237, 276150, -1, 339913); +INSERT INTO public."DRLG_Tile" VALUES (789, 27, 2, 188872, 276230, -1, 188757); +INSERT INTO public."DRLG_Tile" VALUES (790, 27, 2, 188884, 276230, -1, 188757); +INSERT INTO public."DRLG_Tile" VALUES (791, 27, 2, 188896, 276230, -1, 188757); +INSERT INTO public."DRLG_Tile" VALUES (792, 27, 2, 188909, 276230, -1, 188757); +INSERT INTO public."DRLG_Tile" VALUES (793, 27, 2, 188926, 276230, -1, 188757); +INSERT INTO public."DRLG_Tile" VALUES (794, 27, 2, 188940, 276230, -1, 188757); +INSERT INTO public."DRLG_Tile" VALUES (777, 27, 4, 188860, 276230, -1, 188757); +INSERT INTO public."DRLG_Tile" VALUES (769, 26, 3, 288966, 352719, -1, 461364); +INSERT INTO public."DRLG_Tile" VALUES (770, 26, 3, 289231, 352719, -1, 461364); +INSERT INTO public."DRLG_Tile" VALUES (771, 26, 3, 292911, 352719, -1, 461364); +INSERT INTO public."DRLG_Tile" VALUES (761, 26, 4, 288276, 352719, -1, 461364); +INSERT INTO public."DRLG_Tile" VALUES (753, 26, 0, 293459, 352719, -1, 461364); +INSERT INTO public."DRLG_Tile" VALUES (754, 26, 0, 293469, 352719, -1, 461364); +INSERT INTO public."DRLG_Tile" VALUES (755, 26, 0, 293479, 352719, -1, 461364); +INSERT INTO public."DRLG_Tile" VALUES (756, 26, 0, 293500, 352719, -1, 461364); +INSERT INTO public."DRLG_Tile" VALUES (757, 26, 1, 293489, 352719, -1, 461364); +INSERT INTO public."DRLG_Tile" VALUES (758, 26, 1, 293512, 352719, -1, 461364); +INSERT INTO public."DRLG_Tile" VALUES (759, 26, 1, 293522, 352719, -1, 461364); +INSERT INTO public."DRLG_Tile" VALUES (760, 26, 1, 293540, 352719, -1, 461364); +INSERT INTO public."DRLG_Tile" VALUES (797, 27, 2, 189028, 276230, -1, 188757); +INSERT INTO public."DRLG_Tile" VALUES (782, 27, 3, 188842, 276230, -1, 188757); +INSERT INTO public."DRLG_Tile" VALUES (773, 27, 0, 188973, 276230, -1, 188757); +INSERT INTO public."DRLG_Tile" VALUES (774, 27, 0, 189120, 276230, -1, 188757); +INSERT INTO public."DRLG_Tile" VALUES (775, 27, 0, 189152, 276230, -1, 188757); +INSERT INTO public."DRLG_Tile" VALUES (772, 26, 3, 292957, 352719, -1, 461364); +INSERT INTO public."DRLG_Tile" VALUES (250, 11, 0, 31081, 312607, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (251, 11, 0, 31094, 312607, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (253, 11, 0, 31105, 312607, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (255, 11, 1, 31107, 312607, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (268, 11, 2, 31098, 312607, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (271, 11, 3, 31099, 312607, -1, -1); +INSERT INTO public."DRLG_Tile" VALUES (776, 27, 0, 188852, 276230, -1, 188757); +INSERT INTO public."DRLG_Tile" VALUES (778, 27, 1, 189312, 276230, -1, 188757); +INSERT INTO public."DRLG_Tile" VALUES (779, 27, 1, 189323, 276230, -1, 188757); +INSERT INTO public."DRLG_Tile" VALUES (780, 27, 1, 189324, 276230, -1, 188757); +INSERT INTO public."DRLG_Tile" VALUES (781, 27, 1, 189325, 276230, -1, 188757); +INSERT INTO public."DRLG_Tile" VALUES (783, 27, 3, 188957, 276230, -1, 188757); +INSERT INTO public."DRLG_Tile" VALUES (784, 27, 3, 189089, 276230, -1, 188757); +INSERT INTO public."DRLG_Tile" VALUES (785, 27, 3, 189137, 276230, -1, 188757); +INSERT INTO public."DRLG_Tile" VALUES (786, 27, 2, 188753, 276230, -1, 188757); +INSERT INTO public."DRLG_Tile" VALUES (787, 27, 2, 189322, 276230, -1, 188757); +INSERT INTO public."DRLG_Tile" VALUES (795, 27, 2, 189003, 276230, -1, 188757); +INSERT INTO public."DRLG_Tile" VALUES (796, 27, 2, 189016, 276230, -1, 188757); +INSERT INTO public."DRLG_Tile" VALUES (804, 28, 1, 175020, 276150, -1, 339913); +INSERT INTO public."DRLG_Tile" VALUES (799, 28, 0, 33082, 276150, -1, 339913); +INSERT INTO public."DRLG_Tile" VALUES (805, 28, 1, 175021, 276150, -1, 339913); +INSERT INTO public."DRLG_Tile" VALUES (788, 27, 2, 188826, 276230, -1, 188757); +INSERT INTO public."DRLG_Tile" VALUES (809, 28, 3, 61449, 276150, -1, 339913); +INSERT INTO public."DRLG_Tile" VALUES (800, 28, 0, 33094, 276150, -1, 339913); +INSERT INTO public."DRLG_Tile" VALUES (807, 28, 3, 61403, 276150, -1, 339913); +INSERT INTO public."DRLG_Tile" VALUES (811, 28, 2, 33071, 276150, -1, 339913); +INSERT INTO public."DRLG_Tile" VALUES (813, 28, 2, 33073, 276150, -1, 339913); +INSERT INTO public."DRLG_Tile" VALUES (808, 28, 3, 61428, 276150, -1, 339913); +INSERT INTO public."DRLG_Tile" VALUES (812, 28, 2, 33066, 276150, -1, 339913); +INSERT INTO public."DRLG_Tile" VALUES (814, 28, 2, 33068, 276150, -1, 339913); +INSERT INTO public."DRLG_Tile" VALUES (815, 28, 2, 33070, 276150, -1, 339913); +INSERT INTO public."DRLG_Tile" VALUES (816, 28, 2, 33051, 276150, -1, 339913); +INSERT INTO public."DRLG_Tile" VALUES (818, 28, 2, 33075, 276150, -1, 339913); +INSERT INTO public."DRLG_Tile" VALUES (819, 28, 2, 33076, 276150, -1, 339913); +INSERT INTO public."DRLG_Tile" VALUES (820, 28, 2, 33077, 276150, -1, 339913); +INSERT INTO public."DRLG_Tile" VALUES (798, 28, 0, 33057, 276150, -1, 339913); +INSERT INTO public."DRLG_Tile" VALUES (801, 28, 0, 33099, 276150, -1, 339913); +INSERT INTO public."DRLG_Tile" VALUES (802, 28, 1, 175016, 276150, -1, 339913); +INSERT INTO public."DRLG_Tile" VALUES (846, 29, 2, 153112, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (847, 29, 2, 153250, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (848, 29, 2, 153287, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (849, 29, 2, 154118, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (850, 29, 2, 154189, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (851, 29, 2, 154223, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (852, 29, 2, 154639, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (853, 29, 2, 151698, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (854, 29, 3, 154791, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (855, 29, 3, 154687, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (856, 29, 3, 154038, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (857, 29, 3, 151655, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (858, 29, 4, 154952, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (803, 28, 1, 175018, 276150, -1, 339913); +INSERT INTO public."DRLG_Tile" VALUES (810, 28, 4, 33060, 276150, -1, 339913); +INSERT INTO public."DRLG_Tile" VALUES (817, 28, 2, 33054, 276150, -1, 339913); +INSERT INTO public."DRLG_Tile" VALUES (821, 28, 2, 33078, 276150, -1, 339913); +INSERT INTO public."DRLG_Tile" VALUES (822, 28, 2, 33068, 276150, -1, 339913); +INSERT INTO public."DRLG_Tile" VALUES (823, 28, 2, 33087, 276150, -1, 339913); +INSERT INTO public."DRLG_Tile" VALUES (824, 28, 2, 33091, 276150, -1, 339913); +INSERT INTO public."DRLG_Tile" VALUES (825, 28, 2, 33092, 276150, -1, 339913); +INSERT INTO public."DRLG_Tile" VALUES (859, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO public."DRLG_Tile" VALUES (826, 29, 0, 151979, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (827, 29, 0, 154056, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (828, 29, 0, 154731, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (829, 29, 0, 154821, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (830, 29, 1, 261453, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (831, 29, 1, 261454, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (832, 29, 1, 261455, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (833, 29, 1, 261456, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (834, 29, 2, 220797, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (835, 29, 2, 221307, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (836, 29, 2, 151143, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (837, 29, 2, 151319, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (860, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO public."DRLG_Tile" VALUES (861, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO public."DRLG_Tile" VALUES (838, 29, 2, 133974, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (839, 29, 2, 152038, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (840, 29, 2, 223742, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (841, 29, 2, 223766, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (842, 29, 2, 152562, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (843, 29, 2, 152610, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (844, 29, 2, 152935, 275929, -1, 339488); +INSERT INTO public."DRLG_Tile" VALUES (845, 29, 2, 224644, 275929, -1, 339488); + + +-- +-- TOC entry 3507 (class 0 OID 25192) +-- Dependencies: 213 +-- Data for Name: account_relations; Type: TABLE DATA; Schema: public; Owner: postgres +-- + + + +-- +-- TOC entry 3509 (class 0 OID 25197) +-- Dependencies: 215 +-- Data for Name: accounts; Type: TABLE DATA; Schema: public; Owner: postgres +-- + + + +-- +-- TOC entry 3511 (class 0 OID 25207) +-- Dependencies: 217 +-- Data for Name: achievements; Type: TABLE DATA; Schema: public; Owner: postgres +-- + + + +-- +-- TOC entry 3513 (class 0 OID 25215) +-- Dependencies: 219 +-- Data for Name: collection_editions; Type: TABLE DATA; Schema: public; Owner: postgres +-- + + + +-- +-- TOC entry 3515 (class 0 OID 25221) +-- Dependencies: 221 +-- Data for Name: craft_data; Type: TABLE DATA; Schema: public; Owner: postgres +-- + + + +-- +-- TOC entry 3517 (class 0 OID 25227) +-- Dependencies: 223 +-- Data for Name: game_accounts; Type: TABLE DATA; Schema: public; Owner: postgres +-- + + + +-- +-- TOC entry 3519 (class 0 OID 25235) +-- Dependencies: 225 +-- Data for Name: global_params; Type: TABLE DATA; Schema: public; Owner: postgres +-- + + + +-- +-- TOC entry 3521 (class 0 OID 25239) +-- Dependencies: 227 +-- Data for Name: guild_members; Type: TABLE DATA; Schema: public; Owner: postgres +-- + + + +-- +-- TOC entry 3522 (class 0 OID 25242) +-- Dependencies: 228 +-- Data for Name: guild_news; Type: TABLE DATA; Schema: public; Owner: postgres +-- + + + +-- +-- TOC entry 3525 (class 0 OID 25249) +-- Dependencies: 231 +-- Data for Name: guilds; Type: TABLE DATA; Schema: public; Owner: postgres +-- + + + +-- +-- TOC entry 3527 (class 0 OID 25255) +-- Dependencies: 233 +-- Data for Name: hireling_data; Type: TABLE DATA; Schema: public; Owner: postgres +-- + + + +-- +-- TOC entry 3529 (class 0 OID 25263) +-- Dependencies: 235 +-- Data for Name: items; Type: TABLE DATA; Schema: public; Owner: postgres +-- + + + +-- +-- TOC entry 3531 (class 0 OID 25284) +-- Dependencies: 237 +-- Data for Name: mail; Type: TABLE DATA; Schema: public; Owner: postgres +-- + + + +-- +-- TOC entry 3533 (class 0 OID 25290) +-- Dependencies: 239 +-- Data for Name: quests; Type: TABLE DATA; Schema: public; Owner: postgres +-- + + + +-- +-- TOC entry 3535 (class 0 OID 25295) +-- Dependencies: 241 +-- Data for Name: reports; Type: TABLE DATA; Schema: public; Owner: postgres +-- + + + +-- +-- TOC entry 3537 (class 0 OID 25301) +-- Dependencies: 243 +-- Data for Name: skills; Type: TABLE DATA; Schema: public; Owner: postgres +-- + + + +-- +-- TOC entry 3539 (class 0 OID 25307) +-- Dependencies: 245 +-- Data for Name: toons; Type: TABLE DATA; Schema: public; Owner: postgres +-- + + + +-- +-- TOC entry 3550 (class 0 OID 0) +-- Dependencies: 210 +-- Name: DRLG_Container_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public."DRLG_Container_id_seq"', 1, false); + + +-- +-- TOC entry 3551 (class 0 OID 0) +-- Dependencies: 212 +-- Name: DRLG_Tile_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public."DRLG_Tile_id_seq"', 1, false); + + +-- +-- TOC entry 3552 (class 0 OID 0) +-- Dependencies: 214 +-- Name: account_relations_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.account_relations_seq', 1, false); + + +-- +-- TOC entry 3553 (class 0 OID 0) +-- Dependencies: 216 +-- Name: accounts_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.accounts_seq', 1, false); + + +-- +-- TOC entry 3554 (class 0 OID 0) +-- Dependencies: 218 +-- Name: achievements_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.achievements_seq', 1, false); + + +-- +-- TOC entry 3555 (class 0 OID 0) +-- Dependencies: 220 +-- Name: collection_editions_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.collection_editions_seq', 1, false); + + +-- +-- TOC entry 3556 (class 0 OID 0) +-- Dependencies: 222 +-- Name: craft_data_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.craft_data_seq', 1, false); + + +-- +-- TOC entry 3557 (class 0 OID 0) +-- Dependencies: 224 +-- Name: game_accounts_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.game_accounts_seq', 1, false); + + +-- +-- TOC entry 3558 (class 0 OID 0) +-- Dependencies: 226 +-- Name: global_params_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.global_params_seq', 1, false); + + +-- +-- TOC entry 3559 (class 0 OID 0) +-- Dependencies: 229 +-- Name: guildmembers_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.guildmembers_seq', 1, false); + + +-- +-- TOC entry 3560 (class 0 OID 0) +-- Dependencies: 230 +-- Name: guildnews_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.guildnews_seq', 1, false); + + +-- +-- TOC entry 3561 (class 0 OID 0) +-- Dependencies: 232 +-- Name: guilds_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.guilds_seq', 1, false); + + +-- +-- TOC entry 3562 (class 0 OID 0) +-- Dependencies: 234 +-- Name: hireling_data_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.hireling_data_seq', 1, false); + + +-- +-- TOC entry 3563 (class 0 OID 0) +-- Dependencies: 236 +-- Name: items_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.items_seq', 1, false); + + +-- +-- TOC entry 3564 (class 0 OID 0) +-- Dependencies: 238 +-- Name: mail_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.mail_seq', 1, false); + + +-- +-- TOC entry 3565 (class 0 OID 0) +-- Dependencies: 240 +-- Name: quests_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.quests_seq', 1, false); + + +-- +-- TOC entry 3566 (class 0 OID 0) +-- Dependencies: 242 +-- Name: reports_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.reports_seq', 1, false); + + +-- +-- TOC entry 3567 (class 0 OID 0) +-- Dependencies: 244 +-- Name: skills_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.skills_seq', 1, false); + + +-- +-- TOC entry 3568 (class 0 OID 0) +-- Dependencies: 246 +-- Name: toons_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('public.toons_seq', 1, false); + + +-- +-- TOC entry 3303 (class 2606 OID 25326) +-- Name: DRLG_Container DRLG_Container_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public."DRLG_Container" + ADD CONSTRAINT "DRLG_Container_pkey" PRIMARY KEY (id); + + +-- +-- TOC entry 3305 (class 2606 OID 25328) +-- Name: DRLG_Tile DRLG_Tile_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public."DRLG_Tile" + ADD CONSTRAINT "DRLG_Tile_pkey" PRIMARY KEY (id); + + +-- +-- TOC entry 3307 (class 2606 OID 25330) +-- Name: account_relations account_relations_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.account_relations + ADD CONSTRAINT account_relations_pkey PRIMARY KEY (id); + + +-- +-- TOC entry 3309 (class 2606 OID 25332) +-- Name: accounts accounts_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.accounts + ADD CONSTRAINT accounts_pkey PRIMARY KEY (id); + + +-- +-- TOC entry 3311 (class 2606 OID 25334) +-- Name: achievements achievements_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.achievements + ADD CONSTRAINT achievements_pkey PRIMARY KEY (id); + + +-- +-- TOC entry 3313 (class 2606 OID 25336) +-- Name: collection_editions collection_editions_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.collection_editions + ADD CONSTRAINT collection_editions_pkey PRIMARY KEY (id); + + +-- +-- TOC entry 3315 (class 2606 OID 25338) +-- Name: craft_data craft_data_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.craft_data + ADD CONSTRAINT craft_data_pkey PRIMARY KEY (id); + + +-- +-- TOC entry 3317 (class 2606 OID 25340) +-- Name: game_accounts game_accounts_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.game_accounts + ADD CONSTRAINT game_accounts_pkey PRIMARY KEY (id); + + +-- +-- TOC entry 3319 (class 2606 OID 25342) +-- Name: global_params global_params_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.global_params + ADD CONSTRAINT global_params_pkey PRIMARY KEY (id); + + +-- +-- TOC entry 3321 (class 2606 OID 25344) +-- Name: guild_members guild_members_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.guild_members + ADD CONSTRAINT guild_members_pkey PRIMARY KEY (id); + + +-- +-- TOC entry 3323 (class 2606 OID 25346) +-- Name: guild_news guild_news_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.guild_news + ADD CONSTRAINT guild_news_pkey PRIMARY KEY (id); + + +-- +-- TOC entry 3325 (class 2606 OID 25348) +-- Name: guilds guilds_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.guilds + ADD CONSTRAINT guilds_pkey PRIMARY KEY (id); + + +-- +-- TOC entry 3327 (class 2606 OID 25350) +-- Name: hireling_data hireling_data_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.hireling_data + ADD CONSTRAINT hireling_data_pkey PRIMARY KEY (id); + + +-- +-- TOC entry 3329 (class 2606 OID 25352) +-- Name: items items_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.items + ADD CONSTRAINT items_pkey PRIMARY KEY (id); + + +-- +-- TOC entry 3331 (class 2606 OID 25354) +-- Name: mail mail_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.mail + ADD CONSTRAINT mail_pkey PRIMARY KEY (id); + + +-- +-- TOC entry 3333 (class 2606 OID 25356) +-- Name: quests quests_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.quests + ADD CONSTRAINT quests_pkey PRIMARY KEY (id); + + +-- +-- TOC entry 3335 (class 2606 OID 25358) +-- Name: reports reports_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.reports + ADD CONSTRAINT reports_pkey PRIMARY KEY (id); + + +-- +-- TOC entry 3337 (class 2606 OID 25360) +-- Name: skills skills_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.skills + ADD CONSTRAINT skills_pkey PRIMARY KEY (id); + + +-- +-- TOC entry 3339 (class 2606 OID 25362) +-- Name: toons toons_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.toons + ADD CONSTRAINT toons_pkey PRIMARY KEY (id); + + +-- +-- TOC entry 3362 (class 2606 OID 25363) +-- Name: skills fk_13ada7d3; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.skills + ADD CONSTRAINT fk_13ada7d3 FOREIGN KEY (dbtoon_id) REFERENCES public.toons(id); + + +-- +-- TOC entry 3343 (class 2606 OID 25368) +-- Name: achievements fk_18070981; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.achievements + ADD CONSTRAINT fk_18070981 FOREIGN KEY (dbgameaccount_id) REFERENCES public.game_accounts(id); + + +-- +-- TOC entry 3359 (class 2606 OID 25373) +-- Name: reports fk_1e0edf25; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.reports + ADD CONSTRAINT fk_1e0edf25 FOREIGN KEY (sender_id) REFERENCES public.game_accounts(id); + + +-- +-- TOC entry 3360 (class 2606 OID 25378) +-- Name: reports fk_2e7cba8c; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.reports + ADD CONSTRAINT fk_2e7cba8c FOREIGN KEY (dbgameaccount_id) REFERENCES public.game_accounts(id); + + +-- +-- TOC entry 3355 (class 2606 OID 25383) +-- Name: items fk_30a35cbe; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.items + ADD CONSTRAINT fk_30a35cbe FOREIGN KEY (dbtoon_id) REFERENCES public.toons(id); + + +-- +-- TOC entry 3346 (class 2606 OID 25388) +-- Name: craft_data fk_3b963ff3; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.craft_data + ADD CONSTRAINT fk_3b963ff3 FOREIGN KEY (dbgameaccount_id) REFERENCES public.game_accounts(id); + + +-- +-- TOC entry 3351 (class 2606 OID 25393) +-- Name: guild_news fk_514446fe; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.guild_news + ADD CONSTRAINT fk_514446fe FOREIGN KEY (dbguild_id) REFERENCES public.guilds(id); + + +-- +-- TOC entry 3354 (class 2606 OID 25398) +-- Name: hireling_data fk_5fc5407c; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.hireling_data + ADD CONSTRAINT fk_5fc5407c FOREIGN KEY (dbtoon_id) REFERENCES public.toons(id); + + +-- +-- TOC entry 3361 (class 2606 OID 25403) +-- Name: reports fk_6a424906; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.reports + ADD CONSTRAINT fk_6a424906 FOREIGN KEY (dbtoon_id) REFERENCES public.toons(id); + + +-- +-- TOC entry 3347 (class 2606 OID 25408) +-- Name: game_accounts fk_6a4a92e7; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.game_accounts + ADD CONSTRAINT fk_6a4a92e7 FOREIGN KEY (lastplayedhero_id) REFERENCES public.toons(id); + + +-- +-- TOC entry 3357 (class 2606 OID 25413) +-- Name: mail fk_731b838f; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.mail + ADD CONSTRAINT fk_731b838f FOREIGN KEY (dbtoon_id) REFERENCES public.toons(id); + + +-- +-- TOC entry 3358 (class 2606 OID 25418) +-- Name: quests fk_87f0b0fa; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.quests + ADD CONSTRAINT fk_87f0b0fa FOREIGN KEY (dbtoon_id) REFERENCES public.toons(id); + + +-- +-- TOC entry 3349 (class 2606 OID 25423) +-- Name: guild_members fk_8da26c16; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.guild_members + ADD CONSTRAINT fk_8da26c16 FOREIGN KEY (dbgameaccount_id) REFERENCES public.game_accounts(id); + + +-- +-- TOC entry 3340 (class 2606 OID 25428) +-- Name: account_relations fk_90774aff; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.account_relations + ADD CONSTRAINT fk_90774aff FOREIGN KEY (listtarget_id) REFERENCES public.accounts(id); + + +-- +-- TOC entry 3344 (class 2606 OID 25433) +-- Name: collection_editions fk_99f1c08; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.collection_editions + ADD CONSTRAINT fk_99f1c08 FOREIGN KEY (dbaccount_id) REFERENCES public.accounts(id); + + +-- +-- TOC entry 3353 (class 2606 OID 25438) +-- Name: guilds fk_9f1b0c33; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.guilds + ADD CONSTRAINT fk_9f1b0c33 FOREIGN KEY (creator_id) REFERENCES public.game_accounts(id); + + +-- +-- TOC entry 3352 (class 2606 OID 25443) +-- Name: guild_news fk_ab47ab3b; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.guild_news + ADD CONSTRAINT fk_ab47ab3b FOREIGN KEY (dbgameaccount_id) REFERENCES public.game_accounts(id); + + +-- +-- TOC entry 3356 (class 2606 OID 25448) +-- Name: items fk_b1c0d926; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.items + ADD CONSTRAINT fk_b1c0d926 FOREIGN KEY (dbgameaccount_id) REFERENCES public.game_accounts(id); + + +-- +-- TOC entry 3345 (class 2606 OID 25453) +-- Name: collection_editions fk_bd7cdba7; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.collection_editions + ADD CONSTRAINT fk_bd7cdba7 FOREIGN KEY (claimedtoon_id) REFERENCES public.toons(id); + + +-- +-- TOC entry 3341 (class 2606 OID 25458) +-- Name: account_relations fk_c49249a1; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.account_relations + ADD CONSTRAINT fk_c49249a1 FOREIGN KEY (listowner_id) REFERENCES public.accounts(id); + + +-- +-- TOC entry 3350 (class 2606 OID 25463) +-- Name: guild_members fk_d675c298; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.guild_members + ADD CONSTRAINT fk_d675c298 FOREIGN KEY (dbguild_id) REFERENCES public.guilds(id); + + +-- +-- TOC entry 3363 (class 2606 OID 25468) +-- Name: toons fk_e9da060c; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.toons + ADD CONSTRAINT fk_e9da060c FOREIGN KEY (dbgameaccount_id) REFERENCES public.game_accounts(id); + + +-- +-- TOC entry 3342 (class 2606 OID 25473) +-- Name: accounts fk_eac13c47; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.accounts + ADD CONSTRAINT fk_eac13c47 FOREIGN KEY (inviteeaccount_id) REFERENCES public.accounts(id); + + +-- +-- TOC entry 3348 (class 2606 OID 25478) +-- Name: game_accounts fk_edbee460; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.game_accounts + ADD CONSTRAINT fk_edbee460 FOREIGN KEY (dbaccount_id) REFERENCES public.accounts(id); + + +-- +-- TOC entry 3547 (class 0 OID 0) +-- Dependencies: 5 +-- Name: SCHEMA public; Type: ACL; Schema: -; Owner: postgres +-- + +GRANT ALL ON SCHEMA public TO PUBLIC; + + +-- Completed on 2022-08-18 16:47:30 UTC + +-- +-- PostgreSQL database dump complete +-- + diff --git a/db/pgadmin/pgpass b/db/pgadmin/pgpass new file mode 100644 index 0000000..5e1d645 --- /dev/null +++ b/db/pgadmin/pgpass @@ -0,0 +1 @@ +postgres:5432:postgres:postgres:postgres \ No newline at end of file diff --git a/db/servers.json b/db/servers.json new file mode 100644 index 0000000..bd116df --- /dev/null +++ b/db/servers.json @@ -0,0 +1,14 @@ +{ + "Servers": { + "1": { + "Name": "postgres", + "Group": "Servers", + "Host": "postgres", + "Port": 5432, + "MaintenanceDB": "postgres", + "Username": "postgres", + "SSLMode": "prefer", + "PassFile": "/var/lib/pgadmin/pgpass" + } + } +} From 267d087142cdc562d9aeba221c710e75ca8c38da Mon Sep 17 00:00:00 2001 From: Gitea Date: Sun, 21 Aug 2022 11:39:59 +1000 Subject: [PATCH 2/5] =?UTF-8?q?+=20=D0=A3=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=B1=D0=BE=D0=BB=D1=8C=D1=88=D0=B0=D1=8F=20=D1=87?= =?UTF-8?q?=D0=B0=D1=81=D1=82=D1=8C=20Warnings.=20+=20=D0=9F=D1=80=D0=B8?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=BE=20=D0=B8=D1=81=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B4=D0=B5=D1=81?= =?UTF-8?q?=D0=BF=D0=B0=D1=83=D0=BD=D0=B0=20=D0=93=D0=BE=D0=BB=D0=B5=D0=BC?= =?UTF-8?q?=D0=BE=D0=B2=20=D0=BF=D1=80=D0=B8=20=D0=B8=D1=85=20=D0=B2=D0=B7?= =?UTF-8?q?=D1=80=D1=8B=D0=B2=D0=B5=20-=20fix=20from=20DeKaN=20+=20=D0=94?= =?UTF-8?q?=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=20=D0=BF=D0=B0=D1=82?= =?UTF-8?q?=D1=87=20=D0=B4=D0=BB=D1=8F=20=D0=BF=D0=BE=D1=80=D1=82=D0=B0?= =?UTF-8?q?=D0=BB=D0=B0=20=D0=B2=20=D0=BD=D0=BE=D0=B2=D1=8B=D0=B9=20=D1=82?= =?UTF-8?q?=D1=80=D0=B8=D1=81=D1=82=D1=80=D0=B0=D0=BC=20=D1=81=D0=BE=20?= =?UTF-8?q?=D1=81=D1=82=D0=BE=D1=80=D0=BE=D0=BD=D1=8B=20=D0=9B=D0=BE=D1=89?= =?UTF-8?q?=D0=B8=D0=BD=D1=8B=20=D0=A1=D1=82=D0=B5=D0=BD=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B9.=20+=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=BD=D0=BE=D0=B2=D0=B0=D1=8F=20=D0=BF=D0=BE=D0=B4?= =?UTF-8?q?=D1=81=D0=B8=D1=81=D1=82=D0=B5=D0=BC=D0=B0=20"=D0=94=D1=80?= =?UTF-8?q?=D1=83=D0=B7=D1=8C=D1=8F".=20+=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D0=B7=D0=B2=D1=83=D0=BA=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=B4=D0=B0=D0=B6=D0=B8=20=D0=BF=D1=80=D0=B5=D0=B4=D0=BC?= =?UTF-8?q?=D0=B5=D1=82=D0=BE=D0=B2=20!=D0=92=D0=BD=D0=B8=D0=BC=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D1=82=D0=B5=D0=BC=20=D0=BA=D1=82=D0=BE=20?= =?UTF-8?q?=D1=82=D0=B5=D1=81=D1=82=D0=B8=D1=80=D1=83=D0=B5=D1=82=20-=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D0=BF=D0=BE=D0=B8=D1=81=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=D1=87=D0=B8=D0=BD=D1=8B=20=D0=B1=D0=B0=D0=B3?= =?UTF-8?q?=D0=B0,=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=B2=20=D0=BA=D0=BE=D0=BD=D1=81=D0=BE=D0=BB=D1=8C=20?= =?UTF-8?q?=D0=B8=D0=BD=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=86=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B8=20Waypoint.=20=D0=95=D1=81?= =?UTF-8?q?=D0=BB=D0=B8=20=D0=B2=D0=B0=D1=81=20=D1=82=D0=B5=D0=BB=D0=B5?= =?UTF-8?q?=D0=BF=D0=BE=D1=80=D1=82=D0=B8=D1=80=D1=83=D0=B5=D1=82=20=D0=BD?= =?UTF-8?q?=D0=B5=20=D0=B2=20=D0=BD=D1=83=D0=B6=D0=BD=D1=83=D1=8E=20=D0=BB?= =?UTF-8?q?=D0=BE=D0=BA=D0=B0=D1=86=D0=B8=D1=8E,=20=D1=81=D0=BA=D0=BE?= =?UTF-8?q?=D0=BF=D0=B8=D1=80=D1=83=D0=B9=D1=82=D0=B5=20=D0=BE=D1=82=20?= =?UTF-8?q?=D1=82=D1=83=D0=B4=D0=B0=20=D1=82=D0=B5=D0=BA=D1=81=D1=82=20---?= =?UTF-8?q?Waypoint=20Debug---.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BGS-Server/FriendsSystem/FriendManager.cs | 233 ++++++++++++++++- .../BGS-Server/GamesSystem/GameDescriptor.cs | 4 +- .../ServicesSystem/Services/FriendService.cs | 237 +++++++++++++++--- .../Services/GameRequestService.cs | 1 - .../Services/GameUtilitiesService.cs | 181 ------------- .../Core/Extensions/ObjectExtensions.cs | 3 +- src/DiIiS-NA/Core/MPQ/Data.cs | 13 +- .../D3-GameServer/ClientSystem/GameClient.cs | 4 +- .../GSSystem/ActorSystem/Actor.cs | 22 +- .../Hirelings/MalthaelHireling.cs | 4 +- .../ActorSystem/Implementations/NPC/Humans.cs | 3 - .../ScriptObjects/trDun_Crypt_2floor.cs | 2 - .../ActorSystem/Implementations/Vendor.cs | 3 +- .../GSSystem/ActorSystem/InteractiveNPC.cs | 4 +- .../GSSystem/ActorSystem/Minion.cs | 23 -- .../GSSystem/ActorSystem/Portal.cs | 5 + .../GeneratorsSystem/WorldGenerator.cs | 1 - .../GSSystem/ItemsSystem/Item.cs | 2 - .../ObjectsSystem/GameAttributeMap.cs | 18 +- .../GSSystem/ObjectsSystem/WorldObject.cs | 2 +- .../PlayerSystem/ConversationManager.cs | 1 - .../GSSystem/PlayerSystem/Inventory.cs | 5 +- .../GSSystem/PlayerSystem/Player.cs | 74 ++---- .../GSSystem/PowerSystem/ChanneledSkill.cs | 2 +- .../GSSystem/PowerSystem/EffectActor.cs | 2 +- .../Implementations/HeroSkills/Barbarian.cs | 12 +- .../Implementations/HeroSkills/DemonHunter.cs | 2 - .../Implementations/HeroSkills/Necromancer.cs | 11 +- .../PowerSystem/Payloads/DeathPayload.cs | 16 +- .../LaunchConversationWithCutScene.cs | 2 +- .../GSSystem/QuestSystem/QuestProgress.cs | 2 - .../Definitions/Effect/PlayEffectMessage.cs | 2 - src/DiIiS-NA/Program.cs | 1 - src/DiIiS-NA/REST/Manager/SocketManager.cs | 2 +- src/DiIiS-NA/REST/Networking/AsyncAcceptor.cs | 2 +- src/DiIiS-NA/REST/Networking/NetworkThread.cs | 2 - src/DiIiSNet/bgs/protocol/InvitationTypes.cs | 2 - .../channel/v1/ChannelInvitationTypes.cs | 1 - .../bgs/protocol/channel/v1/ChannelService.cs | 3 - 39 files changed, 502 insertions(+), 407 deletions(-) diff --git a/src/DiIiS-NA/BGS-Server/FriendsSystem/FriendManager.cs b/src/DiIiS-NA/BGS-Server/FriendsSystem/FriendManager.cs index 981b66b..75f6012 100644 --- a/src/DiIiS-NA/BGS-Server/FriendsSystem/FriendManager.cs +++ b/src/DiIiS-NA/BGS-Server/FriendsSystem/FriendManager.cs @@ -27,6 +27,7 @@ namespace DiIiS_NA.LoginServer.FriendsSystem private static readonly FriendManager _instance = new FriendManager(); public static FriendManager Instance { get { return _instance; } } + public static readonly Dictionary OnGoingInvitations = new Dictionary(); @@ -37,27 +38,247 @@ namespace DiIiS_NA.LoginServer.FriendsSystem _instance.BnetEntityId = bgs.protocol.EntityId.CreateBuilder().SetHigh((ulong)EntityIdHelper.HighIdType.Unknown).SetLow(0x0000000110000000L + 1).Build(); } - - public static void HandleIgnore(BattleClient client, bgs.protocol.friends.v1.IgnoreInvitationRequest request) + + public static bool AreFriends(Account account1, Account account2) { - + + foreach (ulong friendId in account1.FriendsIds) + { + if (friendId == account2.PersistentID) return true; + } + return false; } + public static bool InvitationExists(Account inviter, Account invitee) + { + foreach (var invitation in OnGoingInvitations.Values) + { + if ((invitation.InviterIdentity.AccountId == inviter.BnetEntityId) && (invitation.InviteeIdentity.AccountId == invitee.BnetEntityId)) + return true; + } + return false; + } + //Done + public static void HandleInvitation(BattleClient client, bgs.protocol.friends.v1.ReceivedInvitation invitation) + { + var invitee = AccountManager.GetAccountByPersistentID(invitation.InviteeIdentity.AccountId.Low); + if (invitee == null) return; + + if (OnGoingInvitations.Values.Any(oldInvite => (oldInvite.InviteeIdentity.AccountId == invitation.InviteeIdentity.AccountId) && (oldInvite.InviterIdentity.AccountId == invitation.InviterIdentity.AccountId))) + return; + + OnGoingInvitations.Add(invitation.Id, invitation); // track ongoing invitations so we can tranport it forth and back. + + if (invitee.IsOnline) + { + var inviter = AccountManager.GetAccountByPersistentID(invitation.InviterIdentity.AccountId.Low); + + var notification = bgs.protocol.friends.v1.InvitationNotification.CreateBuilder() + .SetInvitation(invitation) + .SetAccountId(invitee.BnetEntityId); + + invitee.GameAccount.LoggedInClient.MakeTargetedRPC(FriendManager.Instance, (lid) => + bgs.protocol.friends.v1.FriendsListener.CreateStub(invitee.GameAccount.LoggedInClient).OnReceivedInvitationAdded(new HandlerController() { ListenerId = lid }, notification.Build(), callback => + { + })); + } + } + //Done + public static void HandleIgnore(BattleClient client, bgs.protocol.friends.v1.IgnoreInvitationRequest request) + { + var invitation = OnGoingInvitations[request.InvitationId]; + + var inviter = AccountManager.GetAccountByPersistentID(invitation.InviterIdentity.AccountId.Low); + var invitee = AccountManager.GetAccountByPersistentID(invitation.InviteeIdentity.AccountId.Low); + + + var declinedNotification = bgs.protocol.friends.v1.InvitationNotification.CreateBuilder() + .SetInvitation(invitation) + .SetAccountId(invitee.BnetEntityId) + .SetReason((uint)InvitationRemoveReason.Ignored).Build(); + + if (inviter.GameAccount.IsOnline) + { + inviter.GameAccount.LoggedInClient.MakeTargetedRPC(FriendManager.Instance, (lid) => + bgs.protocol.friends.v1.FriendsListener.CreateStub(inviter.GameAccount.LoggedInClient).OnReceivedInvitationRemoved(new HandlerController() { ListenerId = lid }, declinedNotification, callback => { })); + } + + if (invitee.GameAccount.IsOnline) + { + invitee.GameAccount.LoggedInClient.MakeTargetedRPC(FriendManager.Instance, (lid) => + bgs.protocol.friends.v1.FriendsListener.CreateStub(invitee.GameAccount.LoggedInClient).OnReceivedInvitationRemoved(new HandlerController() { ListenerId = lid }, declinedNotification, callback => { })); + } + + OnGoingInvitations.Remove(request.InvitationId); + } + //Done public static void HandleAccept(BattleClient client, bgs.protocol.friends.v1.AcceptInvitationRequest request) { - + if (!OnGoingInvitations.ContainsKey(request.InvitationId)) return; + var invitation = OnGoingInvitations[request.InvitationId]; + + var inviter = AccountManager.GetAccountByPersistentID(invitation.InviterIdentity.AccountId.Low); + var invitee = AccountManager.GetAccountByPersistentID(invitation.InviteeIdentity.AccountId.Low); + var inviteeAsFriend = bgs.protocol.friends.v1.Friend.CreateBuilder() + .SetAccountId(invitation.InviteeIdentity.AccountId) + .AddRole(2) + .SetPrivileges(3) + .Build(); + var inviterAsFriend = bgs.protocol.friends.v1.Friend.CreateBuilder() + .SetAccountId(invitation.InviterIdentity.AccountId) + .AddRole(2) + .SetPrivileges(3) + .Build(); + + var notificationToInviter = bgs.protocol.friends.v1.InvitationNotification.CreateBuilder() + .SetAccountId(inviter.BnetEntityId) + .SetInvitation(invitation) + .SetReason((uint)InvitationRemoveReason.Accepted) + .Build(); + + var notificationToInvitee = bgs.protocol.friends.v1.InvitationNotification.CreateBuilder() + .SetAccountId(invitee.BnetEntityId) + .SetInvitation(invitation) + .SetReason((uint)InvitationRemoveReason.Accepted) + .Build(); + + if (!inviter.FriendsIds.Contains(invitee.PersistentID)) + inviter.FriendsIds.Add(invitee.PersistentID); + AddFriendshipToDB(inviter, invitee); + + // send friend added notifications + var friendAddedNotificationToInviter = bgs.protocol.friends.v1.FriendNotification.CreateBuilder() + .SetTarget(inviteeAsFriend).SetAccountId(inviter.BnetEntityId).Build(); + var friendAddedNotificationToInvitee = bgs.protocol.friends.v1.FriendNotification.CreateBuilder() + .SetTarget(inviterAsFriend).SetAccountId(invitee.BnetEntityId).Build(); + + if (inviter.GameAccount.IsOnline) + { + inviter.GameAccount.LoggedInClient.MakeTargetedRPC(FriendManager.Instance, (lid) => + bgs.protocol.friends.v1.FriendsListener.CreateStub(inviter.GameAccount.LoggedInClient).OnReceivedInvitationRemoved(new HandlerController() { ListenerId = lid }, notificationToInviter, callback => { })); + + inviter.GameAccount.LoggedInClient.MakeTargetedRPC(FriendManager.Instance, (lid) => + bgs.protocol.friends.v1.FriendsListener.CreateStub(inviter.GameAccount.LoggedInClient).OnFriendAdded(new HandlerController() { ListenerId = lid }, friendAddedNotificationToInviter, callback => { })); + } + + if (invitee.GameAccount.IsOnline) + { + invitee.GameAccount.LoggedInClient.MakeTargetedRPC(FriendManager.Instance, (lid) => + bgs.protocol.friends.v1.FriendsListener.CreateStub(invitee.GameAccount.LoggedInClient).OnFriendAdded(new HandlerController() { ListenerId = lid }, friendAddedNotificationToInvitee, callback => { })); + + invitee.GameAccount.LoggedInClient.MakeTargetedRPC(FriendManager.Instance, (lid) => + bgs.protocol.friends.v1.FriendsListener.CreateStub(invitee.GameAccount.LoggedInClient).OnReceivedInvitationRemoved(new HandlerController() { ListenerId = lid }, notificationToInvitee, callback => { })); + } + + OnGoingInvitations.Remove(request.InvitationId); } public static void HandleDecline(BattleClient client, bgs.protocol.friends.v1.DeclineInvitationRequest request) { - + if (!OnGoingInvitations.ContainsKey(request.InvitationId)) return; + var invitation = OnGoingInvitations[request.InvitationId]; + + var inviter = AccountManager.GetAccountByPersistentID(invitation.InviterIdentity.AccountId.Low); + var invitee = AccountManager.GetAccountByPersistentID(invitation.InviteeIdentity.AccountId.Low); + + var declinedNotification = bgs.protocol.friends.v1.InvitationNotification.CreateBuilder() + .SetInvitation(invitation) + .SetReason((uint)InvitationRemoveReason.Declined).Build(); + + if (inviter.GameAccount.IsOnline) + { + inviter.GameAccount.LoggedInClient.MakeTargetedRPC(FriendManager.Instance, (lid) => + bgs.protocol.friends.v1.FriendsListener.CreateStub(inviter.GameAccount.LoggedInClient).OnReceivedInvitationRemoved(new HandlerController() { ListenerId = lid }, declinedNotification, callback => { })); + } + + if (invitee.GameAccount.IsOnline) + { + invitee.GameAccount.LoggedInClient.MakeTargetedRPC(FriendManager.Instance, (lid) => + bgs.protocol.friends.v1.FriendsListener.CreateStub(invitee.GameAccount.LoggedInClient).OnReceivedInvitationRemoved(new HandlerController() { ListenerId = lid }, declinedNotification, callback => { })); + } + + OnGoingInvitations.Remove(request.InvitationId); } public static void HandleRemove(BattleClient client, bgs.protocol.friends.v1.RemoveFriendRequest request) { - + var removee = AccountManager.GetAccountByPersistentID(request.TargetId.Low); + var remover = client.Account; + + var removeeAsFriend = bgs.protocol.friends.v1.Friend.CreateBuilder() + .SetAccountId(removee.BnetEntityId) + .SetPrivileges(1) + .AddRole(1) + .Build(); + var removerAsFriend = bgs.protocol.friends.v1.Friend.CreateBuilder() + .SetAccountId(remover.BnetEntityId) + .SetPrivileges(1) + .AddRole(1) + .Build(); + + if (remover.FriendsIds.Contains(removee.PersistentID)) + remover.FriendsIds.Remove(removee.PersistentID); + RemoveFriendshipFromDB(remover, removee); + + var notifyRemover = bgs.protocol.friends.v1.FriendNotification.CreateBuilder() + .SetTarget(removeeAsFriend) + .SetAccountId(remover.BnetEntityId) + .Build(); + + client.MakeTargetedRPC(FriendManager.Instance, (lid) => + bgs.protocol.friends.v1.FriendsListener.CreateStub(client).OnFriendRemoved(new HandlerController() { ListenerId = lid }, notifyRemover, callback => { })); + + if (removee.GameAccount.IsOnline) + { + var notifyRemovee = bgs.protocol.friends.v1.FriendNotification.CreateBuilder().SetTarget(removerAsFriend).SetAccountId(removee.BnetEntityId).Build(); + removee.GameAccount.LoggedInClient.MakeTargetedRPC(FriendManager.Instance, (lid) => bgs.protocol.friends.v1.FriendsListener.CreateStub(removee.GameAccount.LoggedInClient).OnFriendRemoved(new HandlerController() { ListenerId = lid }, notifyRemovee, callback => { })); + } } + private static void AddFriendshipToDB(Account inviter, Account invitee) + { + try + { + var inviterRecord = new DBAccountLists + { + ListOwner = inviter.DBAccount, + ListTarget = invitee.DBAccount, + Type = "FRIEND" + }; + DBSessions.SessionSave(inviterRecord); + + var inviteeRecord = new DBAccountLists + { + ListOwner = invitee.DBAccount, + ListTarget = inviter.DBAccount, + Type = "FRIEND" + }; + DBSessions.SessionSave(inviteeRecord); + + } + catch (Exception e) + { + Logger.ErrorException(e, "FriendManager.AddFriendshipToDB()"); + } + } + + private static void RemoveFriendshipFromDB(Account remover, Account removee) + { + try + { + var removerRecords = DBSessions.SessionQueryWhere(dbl => dbl.ListOwner.Id == remover.PersistentID && dbl.ListTarget.Id == removee.PersistentID && dbl.Type == "FRIEND"); + foreach (var rec in removerRecords) + DBSessions.SessionDelete(rec); + + var removeeRecords = DBSessions.SessionQueryWhere(dbl => dbl.ListOwner.Id == removee.PersistentID && dbl.ListTarget.Id == remover.PersistentID && dbl.Type == "FRIEND"); + foreach (var rec in removeeRecords) + DBSessions.SessionDelete(rec); + } + catch (Exception e) + { + Logger.ErrorException(e, "FriendManager.RemoveFriendshipFromDB()"); + } + } } diff --git a/src/DiIiS-NA/BGS-Server/GamesSystem/GameDescriptor.cs b/src/DiIiS-NA/BGS-Server/GamesSystem/GameDescriptor.cs index 4da18cb..1bf3477 100644 --- a/src/DiIiS-NA/BGS-Server/GamesSystem/GameDescriptor.cs +++ b/src/DiIiS-NA/BGS-Server/GamesSystem/GameDescriptor.cs @@ -73,9 +73,7 @@ namespace DiIiS_NA.LoginServer.GamesSystem foreach (bgs.protocol.v2.Attribute attribute in request.MatchmakerFilter.AttributeList) { - if (attribute.Name != "version") - ; - else + if (attribute.Name == "version") this.Version = attribute.Value.StringValue; } } diff --git a/src/DiIiS-NA/BGS-Server/ServicesSystem/Services/FriendService.cs b/src/DiIiS-NA/BGS-Server/ServicesSystem/Services/FriendService.cs index 5b6b122..31a494e 100644 --- a/src/DiIiS-NA/BGS-Server/ServicesSystem/Services/FriendService.cs +++ b/src/DiIiS-NA/BGS-Server/ServicesSystem/Services/FriendService.cs @@ -1,45 +1,230 @@ -//Blizzless Project 2022 -//Blizzless Project 2022 +//Blizzless Project 2022 using bgs.protocol; //Blizzless Project 2022 using bgs.protocol.friends.v1; //Blizzless Project 2022 +using DiIiS_NA.Core.Extensions; +//Blizzless Project 2022 using DiIiS_NA.Core.Logging; //Blizzless Project 2022 +using DiIiS_NA.LoginServer.AccountsSystem; +//Blizzless Project 2022 +using DiIiS_NA.LoginServer.Base; +//Blizzless Project 2022 +using DiIiS_NA.LoginServer.FriendsSystem; +//Blizzless Project 2022 +using DiIiS_NA.LoginServer.Helpers; +//Blizzless Project 2022 using Google.ProtocolBuffers; //Blizzless Project 2022 using System; +//Blizzless Project 2022 +using System.Collections.Generic; namespace DiIiS_NA.LoginServer.ServicesSystem.Services { [Service(serviceID: 0x36, serviceName: "bnet.protocol.friends.FriendsService")] - public class FriendService : bgs.protocol.friends.v1.FriendsService, IServerService + public class FriendService : FriendsService, IServerService { private static readonly Logger Logger = LogManager.CreateLogger(); + public override void Subscribe(IRpcController controller, SubscribeRequest request, Action done) + { + Logger.Trace("Subscribe() {0}", ((controller as HandlerController).Client)); - public override void AcceptInvitation(IRpcController controller, AcceptInvitationRequest request, Action done) + FriendManager.Instance.AddSubscriber(((controller as HandlerController).Client), request.ObjectId); + + var builder = SubscribeResponse.CreateBuilder() + .SetMaxFriends(127) + .SetMaxReceivedInvitations(127) + .SetMaxSentInvitations(127) + .AddRole(Role.CreateBuilder().SetId(1).SetName("battle_tag_friend").Build()) + .AddRole(Role.CreateBuilder().SetId(2).SetName("real_id_friend").Build()); + + var friendsIDs = ((controller as HandlerController).Client).Account.FriendsIds; + foreach (var dbidFriend in friendsIDs) // send friends list. + { + var resp = Friend.CreateBuilder() + .SetAccountId(EntityId.CreateBuilder().SetHigh((ulong)EntityIdHelper.HighIdType.AccountId).SetLow(dbidFriend)) + .SetPrivileges(384) + + .AddRole(1); + builder.AddFriends(resp.Build()); + } + + var invitations = new List(); + + foreach (var invitation in FriendManager.OnGoingInvitations.Values) + { + if (invitation.InviteeIdentity.AccountId == ((controller as HandlerController).Client).Account.BnetEntityId && !friendsIDs.Contains(invitation.InviterIdentity.AccountId.Low)) + { + invitations.Add(invitation); + } + } + + if (invitations.Count > 0) + builder.AddRangeReceivedInvitations(invitations); + + done(builder.Build()); + } + public override void SendInvitation(IRpcController controller, SendInvitationRequest request, Action done) + { + var extensionBytes = request.Params.UnknownFields.FieldDictionary[103].LengthDelimitedList[0].ToByteArray(); + var friendRequest = FriendInvitationParams.ParseFrom(extensionBytes); + + var response = NoData.CreateBuilder(); + + if (friendRequest.TargetEmail.ToLower() == ((controller as HandlerController).Client).Account.Email.ToLower()) + { + ((controller as HandlerController).Status) = 317202; + done(response.Build()); + return; + } + + if (friendRequest.TargetBattleTag == ((controller as HandlerController).Client).Account.BattleTag) + { + ((controller as HandlerController).Status) = 317202; + done(response.Build()); + return; + } + + Account invitee; + + Logger.Trace("Friend request body: {0}", friendRequest.ToString()); + + if (friendRequest.HasTargetEmail) + invitee = AccountManager.GetAccountByEmail(friendRequest.TargetEmail); + else + invitee = AccountManager.GetAccountByBattletag(friendRequest.TargetBattleTag); + + if (invitee == null) + { + if (friendRequest.HasTargetEmail) + ((controller as HandlerController).Status) = 4; + else + ((controller as HandlerController).Status) = 317203; + done(response.Build()); + return; + } + else if (FriendManager.AreFriends(((controller as HandlerController).Client).Account, invitee)) + { + if (friendRequest.HasTargetEmail) + ((controller as HandlerController).Status) = 317201; + else + ((controller as HandlerController).Status) = 5003; + done(response.Build()); + return; + } + else if (FriendManager.InvitationExists(((controller as HandlerController).Client).Account, invitee)) + { + if (friendRequest.HasTargetEmail) + ((controller as HandlerController).Status) = 317200; + else + ((controller as HandlerController).Status) = 5005; + done(response.Build()); + return; + } + else if (invitee.IgnoreIds.Contains((controller as HandlerController).Client.Account.PersistentID)) + { + ((controller as HandlerController).Status) = 5006; + done(response.Build()); + return; + } + + Logger.Trace("{0} sent {1} friend invitation.", ((controller as HandlerController).Client).Account, invitee); + + var invitation = ReceivedInvitation.CreateBuilder() + .SetId(FriendManager.InvitationIdCounter++) // we may actually need to store invitation ids in database with the actual invitation there. /raist. + .SetInviterIdentity(Identity.CreateBuilder().SetAccountId(((controller as HandlerController).Client).Account.BnetEntityId)) + .SetInviteeIdentity(Identity.CreateBuilder().SetAccountId(invitee.BnetEntityId)) + .SetInviterName(((controller as HandlerController).Client).Account.BattleTagName) + .SetInviteeName(invitee.BattleTagName) + .SetCreationTime(DateTime.Now.ToUnixTime()) + .SetUnknownFields(UnknownFieldSet.CreateBuilder() + .AddField(9, UnknownField.CreateBuilder().AddFixed32(17459).Build()) + .AddField(103, UnknownField.CreateBuilder().AddLengthDelimited(request.Params.UnknownFields.FieldDictionary[103].LengthDelimitedList[0]).Build()) + .Build()); + + done(response.Build()); + + // notify the invitee on invitation. + FriendManager.HandleInvitation(((controller as HandlerController).Client), invitation.Build()); + FriendManager.Instance.NotifyUpdate(); + (controller as HandlerController).Client.Account.NotifyUpdate(); + (controller as HandlerController).Client.Account.GameAccount.NotifyUpdate(); + } + public override void AcceptInvitation(IRpcController controller, AcceptInvitationRequest request, Action done) + { + Logger.Trace("{0} accepted friend invitation.", ((controller as HandlerController).Client).Account); + + var response = bgs.protocol.NoData.CreateBuilder(); + done(response.Build()); + + FriendManager.HandleAccept(((controller as HandlerController).Client), request); + } + public override void RevokeInvitation(IRpcController controller, RevokeInvitationRequest request, Action done) { throw new NotImplementedException(); } - public override void CreateFriendship(IRpcController controller, CreateFriendshipRequest request, Action done) + public override void DeclineInvitation(IRpcController controller, DeclineInvitationRequest request, Action done) { - throw new NotImplementedException(); + Logger.Trace("{0} declined friend invitation.", ((controller as HandlerController).Client).Account); + + var response = bgs.protocol.NoData.CreateBuilder(); + done(response.Build()); + + FriendManager.HandleDecline(((controller as HandlerController).Client), request); } - public override void DeclineInvitation(IRpcController controller, DeclineInvitationRequest request, Action done) + public override void IgnoreInvitation(IRpcController controller, IgnoreInvitationRequest request, Action done) { - throw new NotImplementedException(); - } - public override void GetFriendList(IRpcController controller, GetFriendListRequest request, Action done) - { - throw new NotImplementedException(); - } - public override void IgnoreInvitation(IRpcController controller, IgnoreInvitationRequest request, Action done) - { - throw new NotImplementedException(); + + //throw new NotImplementedException(); + var response = bgs.protocol.NoData.CreateBuilder(); + done(response.Build()); + + FriendManager.HandleIgnore(((controller as HandlerController).Client), request); + } public override void RemoveFriend(IRpcController controller, RemoveFriendRequest request, Action done) + { + Logger.Trace("{0} removed friend with id {1}.", ((controller as HandlerController).Client).Account, request.TargetId); + + + done(NoData.DefaultInstance); + + FriendManager.HandleRemove(((controller as HandlerController).Client), request); + FriendManager.Instance.NotifyUpdate(); + (controller as HandlerController).Client.Account.NotifyUpdate(); + (controller as HandlerController).Client.Account.GameAccount.NotifyUpdate(); + + } + public override void ViewFriends(IRpcController controller, ViewFriendsRequest request, Action done) + { + Logger.Trace("ViewFriends(): {0}.", request.ToString()); + + var builder = ViewFriendsResponse.CreateBuilder(); + var friendsIDs = AccountManager.GetAccountByPersistentID(request.TargetId.Low).FriendsIds; + foreach (var dbidFriend in friendsIDs) // send friends list. + { + var friend = AccountManager.GetAccountByPersistentID(dbidFriend); + var resp = FriendOfFriend.CreateBuilder() + .SetAccountId(EntityId.CreateBuilder().SetHigh((ulong)EntityIdHelper.HighIdType.AccountId).SetLow(dbidFriend)) + .SetBattleTag(friend.BattleTag) + .SetFullName(friend.BattleTagName) + .SetPrivileges(384) + .AddRole(1); + builder.AddFriends(resp.Build()); + } + done(builder.Build()); + } + public override void UpdateFriendState(IRpcController controller, UpdateFriendStateRequest request, Action done) + { + Logger.Trace("UpdateFriendState(): {0}.", request.ToString()); + + done(NoData.CreateBuilder().Build()); + } + public override void Unsubscribe(IRpcController controller, UnsubscribeRequest request, Action done) { throw new NotImplementedException(); } @@ -47,11 +232,11 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services { throw new NotImplementedException(); } - public override void RevokeInvitation(IRpcController controller, RevokeInvitationRequest request, Action done) + public override void GetFriendList(IRpcController controller, GetFriendListRequest request, Action done) { throw new NotImplementedException(); } - public override void SendInvitation(IRpcController controller, SendInvitationRequest request, Action done) + public override void CreateFriendship(IRpcController controller, CreateFriendshipRequest request, Action done) { throw new NotImplementedException(); } @@ -59,22 +244,6 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services { throw new NotImplementedException(); } - public override void Subscribe(IRpcController controller, SubscribeRequest request, Action done) - { - throw new NotImplementedException(); - } - public override void Unsubscribe(IRpcController controller, UnsubscribeRequest request, Action done) - { - throw new NotImplementedException(); - } - public override void UpdateFriendState(IRpcController controller, UpdateFriendStateRequest request, Action done) - { - throw new NotImplementedException(); - } - public override void ViewFriends(IRpcController controller, ViewFriendsRequest request, Action done) - { - throw new NotImplementedException(); - } } diff --git a/src/DiIiS-NA/BGS-Server/ServicesSystem/Services/GameRequestService.cs b/src/DiIiS-NA/BGS-Server/ServicesSystem/Services/GameRequestService.cs index 39a7097..a48958b 100644 --- a/src/DiIiS-NA/BGS-Server/ServicesSystem/Services/GameRequestService.cs +++ b/src/DiIiS-NA/BGS-Server/ServicesSystem/Services/GameRequestService.cs @@ -51,7 +51,6 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services int CurrentAct = 0; int CurrentQuest = 0; int CurrentStep = 0; - string GameTag = ""; foreach (var attr in request.Options.CreationProperties.AttributeList) { switch (attr.Name) diff --git a/src/DiIiS-NA/BGS-Server/ServicesSystem/Services/GameUtilitiesService.cs b/src/DiIiS-NA/BGS-Server/ServicesSystem/Services/GameUtilitiesService.cs index 270c8c8..86dc78b 100644 --- a/src/DiIiS-NA/BGS-Server/ServicesSystem/Services/GameUtilitiesService.cs +++ b/src/DiIiS-NA/BGS-Server/ServicesSystem/Services/GameUtilitiesService.cs @@ -585,7 +585,6 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services foreach (var item in Hero.Profile.Equipment.ItemsList) { int pos = 0; - int a = 8; switch ((item.ItemSlot - 272) / 16) { case 1: pos = 0; break; //0 - Шлем @@ -1354,188 +1353,9 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services uint countofTravels = 0; if (criteria.CriteriaId32AndFlags8 == 3367569) countofTravels++; - //else - snapshot.AddCriteriaSnapshot(criteria); } - - - foreach (var Achievement in AchievementManager.GetAllAchievements) - { - //ToonClass.Wizard: GrantAchievement(client, 74987243307581); - //Четвертая глава - if (Achievement.Id == 74987248297399) - { - var criterias = AchievementManager.GetCriterias(Achievement.Id); - //snapshot.AddCriteriaSnapshot(D3.Achievements.CriteriaUpdateRecord.CreateBuilder().SetCriteriaId32AndFlags8(unchecked((uint)74987244572493)).SetQuantity32(1)); - // - //{criteria_id: 74987244038688 parent_achievement_id: 74987248297399 advance_event { id: 200 comparand: 74987250791778 } necessary_quantity: 1 order_hint: 12 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:Learn_5_Jewelcrafting_Recipies_Title_Tag" } } - // - //{criteria_id: 74987244572493 parent_achievement_id: 74987248297399 advance_event { id: 200 comparand: 74987244692586 } necessary_quantity: 1 order_hint: 5 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:SeasonJourney_XahRithKeywardenT1_Title_Tag_4" } } - // - //{criteria_id: 74987245130342 parent_achievement_id: 74987248297399 advance_event { id: 200 comparand: 74987247265988 } necessary_quantity: 1 evalutation_class: 1144211309 flags: 1536 attributes { key: ":title:" value: "Achievements:SeasonJourneyMainPartII_Title_Tag_28" } } - // - //{criteria_id: 74987245723942 parent_achievement_id: 74987248297399 advance_event { id: 200 comparand: 74987243712360 } necessary_quantity: 1 order_hint: 1 evalutation_class: 1144211309 flags: 1024 attributes {key: ":title:" value: "Achievements:MaxLevelNephalemRift_T12Minutes_Title_Tag"} } - // - //{criteria_id: 74987245863958 parent_achievement_id: 74987248297399 advance_event { id: 200 comparand: 74987246565133 } necessary_quantity: 1 order_hint: 10 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:SeasonJourneyObjectivesAchievement274_Title_Tag" }} - // - //{criteria_id: 74987247667055 parent_achievement_id: 74987248297399 advance_event { id: 200 comparand: 74987258323927 } necessary_quantity: 1 order_hint: 11 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:Learn_5_Blacksmith_Recipies_Title_Tag" }} - // - //{criteria_id: 74987247674914 parent_achievement_id: 74987248297399 advance_event { id: 200 comparand: 74987243333398 } necessary_quantity: 1 order_hint: 4 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:SeasonJourney_SokahrKeywardenT1_Title_Tag_4" }} - // - //{criteria_id: 74987250762680 parent_achievement_id: 74987248297399 advance_event { id: 200 comparand: 74987247015305 } necessary_quantity: 1 order_hint: 6 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:SeasonJourney_NekaratKeywardenT1_Title_Tag_4" }} - // - //{criteria_id: 74987252164114 parent_achievement_id: 74987248297399 advance_event { id: 200 comparand: 74987254930175 } necessary_quantity: 1 order_hint: 7 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:SeasonJourneyObjectivesKillBelialT2_Title_Tag" }} - // - //{criteria_id: 74987253329205 parent_achievement_id: 74987248297399 advance_event { id: 200 comparand: 74987256362609 } necessary_quantity: 1 order_hint: 3 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:SeasonJourney_OdegKeywardenT1omplete4Bounties_Title_Tag_4" }} - // - //{criteria_id: 74987255999493 parent_achievement_id: 74987248297399 advance_event { id: 200 comparand: 74987252937364 } necessary_quantity: 1 order_hint: 8 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:SeasonJourneyObjectivesKillGhomT4_Title_Tag" }} - // - //{criteria_id: 74987256952350 parent_achievement_id: 74987248297399 advance_event { id: 200 comparand: 74987258699516 } necessary_quantity: 1 order_hint: 2 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:SeasonJourneyObjectivesAchievement273_Title_Tag" }} - // - //{criteria_id: 74987257331078 parent_achievement_id: 74987248297399 advance_event { id: 200 comparand: 74987245627492 } necessary_quantity: 1 order_hint: 9 evalutation_class: 1144211309 flags: 1024 attributes {key: ":title:" value: "Achievements:SeasonGreaterRifts10Solo_Title_Tag" }} - } - if (Achievement.Id == 74987247265988) - { - var criterias = AchievementManager.GetCriterias(Achievement.Id); - //snapshot.AddCriteriaSnapshot(D3.Achievements.CriteriaUpdateRecord.CreateBuilder().SetCriteriaId32AndFlags8(unchecked((uint)74987258962046)).SetQuantity32(1)); - //Мастер - //{criteria_id: 74987248395427 parent_achievement_id: 74987247265988 advance_event { id: 200 comparand: 74987255801934 } necessary_quantity: 1 order_hint: 1 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:MASTER_Title_Tag" }} - //Камень - //{criteria_id: 74987245885431 parent_achievement_id: 74987247265988 advance_event { id: 200 comparand: 74987243963733 } necessary_quantity: 1 order_hint: 2 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:SeasonJourney_ImperialGem_Title_Tag" }} - //Привет Кадала - //{criteria_id: 74987248526596 parent_achievement_id: 74987247265988 advance_event { id: 200 comparand: 74987254870297 } necessary_quantity: 1 order_hint: 3 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:SeasonJourneyObjectivesKadala_Title_Tag" }} - //Я становлюсь Звездой - //{criteria_id: 74987252384014 parent_achievement_id: 74987247265988 advance_event { id: 200 comparand: 74987249059532 } necessary_quantity: 1 order_hint: 4 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:SeasonJourneyObjectivesKillAdriaMaster_Title_Tag" }} - //Сделай свой выбор - //{criteria_id: 74987246511881 parent_achievement_id: 74987247265988 advance_event { id: 200 comparand: 74987251648219 } necessary_quantity: 1 order_hint: 5 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:SeasonJourneyObjectivesKillSiegebreakerMaster_Title_Tag" }} - //Разыскивается в Тристраме - //{criteria_id: 74987258781748 parent_achievement_id: 74987247265988 advance_event { id: 200 comparand: 74987255156784 } necessary_quantity: 1 order_hint: 6 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:SeasonJourneyObjectivesAchievement280_Title_Tag" }} - //Разыскивается в Калдее - //{criteria_id: 74987247833299 parent_achievement_id: 74987247265988 advance_event { id: 200 comparand: 74987259347561 } necessary_quantity: 1 order_hint: 7 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:SeasonJourneyObjectivesAchievement280_Title_Tag_1" }} - //Разыскивается на Арреате - //{criteria_id: 74987248811185 parent_achievement_id: 74987247265988 advance_event { id: 200 comparand: 74987255614468 } necessary_quantity: 1 order_hint: 8 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:SeasonJourneyObjectivesAchievement280_Title_Tag_2" }} - //Разыскивается на Небесах - //{criteria_id: 74987256262166 parent_achievement_id: 74987247265988 advance_event { id: 200 comparand: 74987254301166 } necessary_quantity: 1 order_hint: 9 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:SeasonJourneyObjectivesAchievement280_Title_Tag_3" }} - //Разыскивается в Вестмарше - //{criteria_id: 74987249495955 parent_achievement_id: 74987247265988 advance_event { id: 200 comparand: 74987248936002 } necessary_quantity: 1 order_hint: 10 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:SeasonJourneyObjectivesAchievement280_Title_Tag_4" }} - //Сезонный кубист - //{criteria_id: 74987245494264 parent_achievement_id: 74987247265988 advance_event { id: 200 comparand: 74987254169957 } necessary_quantity: 1 order_hint: 11 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:CraftingKanaisCubeExtractPower1_Title_Tag_2" }} - - - // - //{criteria_id: 74987258962046 parent_achievement_id: 74987247265988 advance_event { id: 200 comparand: 74987254626662 } necessary_quantity: 1 evalutation_class: 1144211309 flags: 1536 attributes { key: ":title:" value: "Achievements:SeasonJourneyMainPartII_Title_Tag_27" }} - } - //Вторая глава - if (Achievement.Id == 74987254626662) - { - var criterias = AchievementManager.GetCriterias(Achievement.Id); - - //Эксперт - //{ criteria_id: 74987250579270 advance_event { id: 200 comparand: 74987259480511 } necessary_quantity: 1 order_hint: 1 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:SeasonJourneyObjectivesAchievement267_Title_Tag" } } - //Как закалять сталь - //{ criteria_id: 74987254004798 advance_event { id: 200 comparand: 74987256755434 } necessary_quantity: 1 order_hint: 2 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:SeasonJourneyObjectivesAchievement264_Title_Tag" } } - //Лучшие друзья - //{ criteria_id: 74987246031286 advance_event { id: 200 comparand: 74987252641760 } necessary_quantity: 1 order_hint: 3 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:SeasonJourney_EquipFollower_Title_Tag" } - //Максимальная эффективность - //{ criteria_id: 74987249993545 advance_event { id: 200 comparand: 74987244456174 } necessary_quantity: 1 order_hint: 4 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:SeasonJourneyObjectivesAchievement263_Title_Tag" } } - //Невероятные приключения Канаи - //{ criteria_id: 74987252674266 advance_event { id: 200 comparand: 74987243457910 } necessary_quantity: 1 order_hint: 5 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:CraftingKanaisCubeExtractPower1_Title_Tag_1" } } - //Все выше и выше - //{ criteria_id: 74987254853541 advance_event { id: 200 comparand: 74987257058411 } necessary_quantity: 1 order_hint: 6 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:Level_10_Title_Tag_6" } } - //Оставь надежду - //{ criteria_id: 74987254022737 advance_event { id: 200 comparand: 74987253273237 } necessary_quantity: 1 order_hint: 7 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:SeasonJourneyObjectivesKillRakanothHard_Title_Tag" } } - //Сущий ад - //{ criteria_id: 74987252582955 advance_event { id: 200 comparand: 74987259900862 } necessary_quantity: 1 order_hint: 8 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:SeasonJourneyObjectivesKillSKHard_Title_Tag" } } - //Приятные мелочи - //{ criteria_id: 74987254245219 advance_event { id: 200 comparand: 74987243791733 } necessary_quantity: 1 order_hint: 9 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:SeasonJourneyObjectivesAchievement265_Title_Tag" } } - //Очаровательные чары - //{ criteria_id: 74987255495718 advance_event { id: 200 comparand: 74987243946801 } necessary_quantity: 1 order_hint: 10 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:SeasonJourney_EnchantAnItem_Title_Tag" } } - //Новый гардероб - //{ criteria_id: 74987253143400 advance_event { id: 200 comparand: 74987255480628 } necessary_quantity: 1 order_hint: 11 evalutation_class: 1144211309 flags: 1024 attributes { key: ":title:" value: "Achievements:SeasonJourney_TransmogrifyAnItem_Title_Tag" } } - } - //Первая глава - if (Achievement.Id == 74987254816831) - { - var criterias = AchievementManager.GetCriterias(Achievement.Id); - //3367569 - Количество приключений -// snapshot.AddCriteriaSnapshot(D3.Achievements.CriteriaUpdateRecord.CreateBuilder().SetCriteriaId32AndFlags8(3367569).SetQuantity32(5)); - //snapshot.AddCriteriaSnapshot(D3.Achievements.CriteriaUpdateRecord.CreateBuilder().SetCriteriaId32AndFlags8(unchecked((uint)74987254401623)).SetQuantity32(1)); - //snapshot.AddCriteriaSnapshot(D3.Achievements.CriteriaUpdateRecord.CreateBuilder().SetCriteriaId32AndFlags8(unchecked((uint)74987246353740)).SetQuantity32(0)); - //{id: 200 - //comparand: 74987256867455 - - /* - Глава Первая - TODO: Критерии первой главы - {criteria_id: 74987243379080 advance_event { id: 200 comparand: 74987247751174 } necessary_quantity: 1 attributes { key: ":title:" value: "Achievements:Complete4Bounties_Title_Tag_2" } } - {criteria_id: 74987246353740 advance_event { id: 200 comparand: 74987256867455 } necessary_quantity: 1 order_hint: 1 attributes { key: ":title:" value: "Achievements:Complete4Bounties_Title_Tag_1" } } - //{id: 200 comparand: 74987256867455} - ---{criteria_id: 74987254401623 advance_event { id: 200 comparand: 74987259370936 } necessary_quantity: 1 order_hint: 2 attributes { key: ":title:" value: "Achievements:Socket_5_Gems_Title_Tag" } } - - Готово: - {criteria_id: 74987249071497 advance_event { id: 200 comparand: 74987250124925 } necessary_quantity: 1 order_hint: 3 attributes { key: ":title:" value: "Achievements:Level_10_Blacksmith_Title_Tag_2" } } - {criteria_id: 74987245845978 advance_event { id: 200 comparand: 74987255697859 } necessary_quantity: 1 order_hint: 4 attributes { key: ":title:" value: "Achievements:Level_10_Jeweler_Title_Tag_2" } } - {criteria_id: 74987259424359 advance_event { id: 200 comparand: 74987255324210 } necessary_quantity: 1 order_hint: 5 attributes { key: ":title:" value: "Achievements:Level_10_Mystic_Title_Tag_1" } } - {criteria_id: 74987250915380 advance_event { id: 200 comparand: 74987258964574 } necessary_quantity: 1 order_hint: 6 attributes { key: ":title:" value: "Achievements:SeasonJourneyObjectivesKillDiabloNormal_Title_Tag" } } - {criteria_id: 74987249642121 advance_event { id: 200 comparand: 74987247606809 } necessary_quantity: 1 order_hint: 7 attributes { key: ":title:" value: "Achievements:SeasonJourneyObjectivesKillIzualNormal_Title_Tag" } } - {criteria_id: 74987250038929 advance_event { id: 200 comparand: 74987251848215 } necessary_quantity: 1 order_hint: 8 attributes { key: ":title:" value: "Achievements:Level_50_Title_Tag_1" } } - */ - } - if (Achievement.AttributesList[0].Value.Contains("Kanai")) - { - //Logger.Info(Achievement.AttributesList[0].Value); - } - if (Achievement.AttributesList[0].Value.Contains("Season")) - { - //Logger.Info(Achievement.AttributesList[0].Value); - } - if (Achievement.AttributesList[0].Value.Contains("SeasonJourney")) - { - //"Achievements:SeasonJourney_SokahrKeywardenT1_Title_Tag_4" - //"Achievements:Level_10_Blacksmith_Title_Tag_2" - //"Achievements:SeasonJourney_SokahrKeywardenT1_Title_Tag_4" - //"Achievements:Kill_AncientBeasts_ActV_SeasonOnly_Title_Tag" - //"Achievements:SeasonJourneyObjectivesFollowerLegendary_Title_Tag" - string Name = ""; - foreach (var attr in Achievement.AttributesList) - { - switch (attr.Key) - { - case ":title:": Name = attr.Value; break; - case "Partition": - if (attr.Value == "1") //Сезон - { - //Logger.Warn("Name: {0}, Partition: {1}", Name, attr.Value); - if (Achievement.CategoryId == 5548889 - || - Achievement.CategoryId == 5519843 //> 4 главы - //|| - //Achievement.CategoryId == 5518623 - ) ; - //snapshot.AddAchievementSnapshot(D3.Achievements.AchievementUpdateRecord.CreateBuilder().SetAchievementId(Achievement.Id).SetCompletion(1)); - else - { - //snapshot.AddAchievementSnapshot(D3.Achievements.AchievementUpdateRecord.CreateBuilder().SetAchievementId(Achievement.Id).SetCompletion(1)); - //Logger.Warn("Name: {0}, Partition: {1}, ID: {2}", Name, attr.Value, Achievement.Id); - } - } - //Logger.Warn("Partition: {0}", attr.Value); - break; - } - // if(attr) - } - //Achievements:SeasonJourneyObjectivesFollowerLegendary_Description_Tag - } - //snapshot.AddAchievementSnapshot(D3.Achievements.AchievementUpdateRecord.CreateBuilder().SetAchievementId(Achievement.Id).SetCompletion(1)); - } - - //Name: Achievements: SeasonJourneyMainPartII_Title_Tag_29, Partition: 1, ID: 74987248297399 - Четвертая глава - //Name: Achievements: SeasonJourneyMainPartII_Title_Tag_28, Partition: 1, ID: 74987247265988 - Третья глава - //Name: Achievements: SeasonJourneyMainPartII_Title_Tag_27, Partition: 1, ID: 74987254626662 - Вторая глава - //Name: Achievements: SeasonJourneyMainPartI_Title_Tag_9, Partition: 1, ID: 74987254816831 - Первая глава - return AchievementsSnapshot.CreateBuilder().SetErrorCode(0).SetGameAccountId(request.GameAccountId).SetSnapshot(snapshot).Build().ToByteString(); } @@ -2402,7 +2222,6 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services var response = MatchmakingGetStatsResponse.CreateBuilder().AddStatsBucket(back); return response.Build().ToByteString(); - return ByteString.Empty; } #endregion diff --git a/src/DiIiS-NA/Core/Extensions/ObjectExtensions.cs b/src/DiIiS-NA/Core/Extensions/ObjectExtensions.cs index 6fb3a26..19e356f 100644 --- a/src/DiIiS-NA/Core/Extensions/ObjectExtensions.cs +++ b/src/DiIiS-NA/Core/Extensions/ObjectExtensions.cs @@ -10,8 +10,7 @@ namespace DiIiS_NA.Core.Extensions { public static T DeepClone(T obj) { - //Blizzless Project 2022 -using (var ms = new MemoryStream()) + using (var ms = new MemoryStream()) { var formatter = new BinaryFormatter(); formatter.Serialize(ms, obj); diff --git a/src/DiIiS-NA/Core/MPQ/Data.cs b/src/DiIiS-NA/Core/MPQ/Data.cs index ccb4b46..173b7d3 100644 --- a/src/DiIiS-NA/Core/MPQ/Data.cs +++ b/src/DiIiS-NA/Core/MPQ/Data.cs @@ -68,7 +68,7 @@ namespace DiIiS_NA.Core.MPQ #endregion - private static readonly Logger Logger = LogManager.CreateLogger("DataBaseWorker"); + private static new readonly Logger Logger = LogManager.CreateLogger("DataBaseWorker"); public Data() //: base(0, new List { "CoreData.mpq", "ClientData.mpq" }, "/base/d3-update-base-(?.*?).mpq") @@ -230,29 +230,24 @@ using (StreamWriter sw = new StreamWriter(writePath, false, System.Text.Encoding var timerStart = DateTime.Now; - // read all assets from the catalog first and process them (ie. find the parser if any available). while (stream.Position < stream.Length) { stream.Position += 8; var group = (SNOGroup)stream.ReadValueS32(); var snoId = stream.ReadValueS32(); var name = stream.ReadString(128, true); - if (group == SNOGroup.SkillKit) - ; - if (groupsToLoad != null && !groupsToLoad.Contains(group)) // if we're handled groups to load, just ignore the ones not in the list. + if (groupsToLoad != null && !groupsToLoad.Contains(group)) continue; var asset = new MPQAsset(group, snoId, name); - asset.MpqFile = this.GetFile(asset.FileName, PatchExceptions.Contains(asset.Group)); // get the file. note: if file is in any of the groups in PatchExceptions it'll from load the original version - the reason is that assets in those groups got patched to 0 bytes. /raist. + asset.MpqFile = this.GetFile(asset.FileName, PatchExceptions.Contains(asset.Group)); if (asset.MpqFile != null) this.ProcessAsset(asset); // process the asset. } stream.Close(); - - // Run the parsers for assets (that have a parser). - + if (this._tasks.Count > 0) // if we're running in tasked mode, run the parser tasks. { foreach (var task in this._tasks) diff --git a/src/DiIiS-NA/D3-GameServer/ClientSystem/GameClient.cs b/src/DiIiS-NA/D3-GameServer/ClientSystem/GameClient.cs index 8137e25..7978424 100644 --- a/src/DiIiS-NA/D3-GameServer/ClientSystem/GameClient.cs +++ b/src/DiIiS-NA/D3-GameServer/ClientSystem/GameClient.cs @@ -110,8 +110,8 @@ namespace DiIiS_NA.GameServer.ClientSystem } else if (message is ISelfHandler) (message as ISelfHandler).Handle(this); // if message is able to handle itself, let it do so. - else if (message.Id == 217) ; - else Logger.Warn("{0} - ID:{1} has no consumer or self-handler.", message.GetType(), message.Id); + else if (message.Id != 217) + Logger.Warn("{0} - ID:{1} has no consumer or self-handler.", message.GetType(), message.Id); } catch (NotImplementedException) diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/Actor.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/Actor.cs index 673bfa6..7c2c343 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/Actor.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/Actor.cs @@ -120,9 +120,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem /// The angle in radians. public void SetFacingRotation(float facingAngle) { - if (this.Spawner) - ; - else + if (!this.Spawner) { Quaternion q = Quaternion.FacingRotation(facingAngle); this.RotationW = q.W; @@ -450,10 +448,6 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem if (this is Player) { (this as Player).BetweenWorlds = true; - /*(this as Player).InGameClient.SendMessage(new FreezeGameMessage - { - Field0 = true - });*/ (this as Player).InGameClient.SendMessage(new ACDTranslateSyncMessage() { ActorId = this.DynamicID(this as Player), @@ -476,10 +470,6 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem if (this is Player) { (this as Player).BetweenWorlds = false; - /*(this as Player).InGameClient.SendMessage(new FreezeGameMessage - { - Field0 = false - });*/ } if (this is Player) @@ -490,7 +480,6 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem (hireling as Hireling).Brain.DeActivate(); hireling.Position = position; (hireling as Hireling).Brain.Activate(); - //(this as Player).ActiveHireling = hireling; } var questhireling = (this as Player).SetQuestHireling; if (questhireling != null) @@ -498,7 +487,6 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem (questhireling as Hireling).Brain.DeActivate(); questhireling.Position = position; (questhireling as Hireling).Brain.Activate(); - //(this as Player).ActiveHireling = hireling; } foreach (var fol in (this as Player).Followers) { @@ -517,6 +505,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem this.Attributes[GameAttribute.Looping_Animation_End_Time] = -1; this.Attributes.BroadcastChangedIfRevealed(); //Refresh Inventory + (this as Player).Inventory.RefreshInventoryToClient(); } } @@ -530,9 +519,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem this.SetFacingRotation(facingAngle); if (this.World == null) return; - if (Spawner) - ; - else + if (!Spawner) this.World.BroadcastIfRevealed(plr => new ACDTranslateFacingMessage { ActorId = DynamicID(plr), @@ -861,10 +848,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem { lock (player.RevealedObjects) { - if (this.ActorSNO.Id == 3205) - ; if (this.Hidden || this.Dead || !this.Visible || this.World == null) return false; - //Leave Miriam in Crypt if (this.ActorSNO.Id == 175310) diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/Implementations/Hirelings/MalthaelHireling.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/Implementations/Hirelings/MalthaelHireling.cs index f703eb8..755033f 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/Implementations/Hirelings/MalthaelHireling.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/Implementations/Hirelings/MalthaelHireling.cs @@ -112,9 +112,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings public override bool Reveal(Player player) { return false; - - - return base.Reveal(player); + //return base.Reveal(player); } } } diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/Implementations/NPC/Humans.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/Implementations/NPC/Humans.cs index abb7bc4..ee98b8a 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/Implementations/NPC/Humans.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/Implementations/NPC/Humans.cs @@ -46,9 +46,6 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations switch (this.ActorSNO.Id) { case 308474: - //[311433][Conversation] X1_westm_Intro_FirstRunnerFromDeath - - //{[Actor] [Type: Monster] SNOId:308474 GlobalId: 1017300800 Position: x:1443.9391 y:439.9689 z:14.999992 Name: X1_WestM_Intro_Human_Male} - Actor IntroMan = null; if (this.Position.X > 1440) StartConversation(this.World, 311433); else diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/Implementations/ScriptObjects/trDun_Crypt_2floor.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/Implementations/ScriptObjects/trDun_Crypt_2floor.cs index 4da9547..88f40b7 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/Implementations/ScriptObjects/trDun_Crypt_2floor.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/Implementations/ScriptObjects/trDun_Crypt_2floor.cs @@ -33,8 +33,6 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.ScriptObjects if (player.Position.DistanceSquared(ref _position) < ActorData.Sphere.Radius * ActorData.Sphere.Radius * 3f * this.Scale && !_collapsed) { _collapsed = true; - int duration = 500; // ticks - this.PlayAnimation(5, 116098); //- Разлом this.World.SpawnMonster(76953, this.Position); } diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/Implementations/Vendor.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/Implementations/Vendor.cs index 15e4ac7..5e36768 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/Implementations/Vendor.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/Implementations/Vendor.cs @@ -150,8 +150,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations public override void OnTargeted(Player player, TargetMessage message) { base.OnTargeted(player, message); - player.InGameClient.SendMessage(new OpenTradeWindowMessage((int)this.DynamicID(player))); + //player.RefreshReveal(); _vendorGrid.Reveal(player); + player.InGameClient.SendMessage(new OpenTradeWindowMessage((int)this.DynamicID(player))); } public virtual void OnRequestBuyItem(PlayerSystem.Player player, uint itemId) diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/InteractiveNPC.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/InteractiveNPC.cs index 58f787a..56222fa 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/InteractiveNPC.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/InteractiveNPC.cs @@ -299,7 +299,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem NPCInteraction[] npcInters = new NPCInteraction[count]; - bool HaveWithTitles = false; + //bool HaveWithTitles = false; var it = 0; foreach (var conv in Conversations) { @@ -311,7 +311,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem { npcInters[it] = conv.AsNPCInteraction(this, player); it++; - HaveWithTitles = true; + //HaveWithTitles = true; } } diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/Minion.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/Minion.cs index 07188c8..45f3663 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/Minion.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/Minion.cs @@ -246,29 +246,6 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem PetId = this.DynamicID(player), }); } - else - { - int TypeID = 7; - int PlusIndex = 0; - bool isGolem = false; - if (this is BaseGolem || - this is IceGolem || - this is BoneGolem || - this is DecayGolem || - this is ConsumeFleshGolem || - this is BloodGolem) - { - TypeID = 27; - isGolem = false; - } - if (this is SkeletalMage) - { - PlusIndex += 10; - TypeID = 9; - } - if (this is NecromancerSkeleton_A) - TypeID = 28; - } return true; } diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/Portal.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/Portal.cs index 9291a09..a748439 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/Portal.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/ActorSystem/Portal.cs @@ -99,6 +99,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem this.Destination = SmartExitGenerate(); } + else if (this.World.WorldSNO.Id == 62751) //portal Adria's Hut this.Destination = new ResolvedPortalDestination { @@ -1290,6 +1291,10 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem if (this.Destination.DestLevelAreaSNO == 81178) return false; if (this.Destination.DestLevelAreaSNO == 210451 && !(this.World.Game.CurrentQuest == 121792 || this.World.Game.CurrentQuest == 57339)) return false; if (this.Destination.DestLevelAreaSNO == 19789 && this.World.WorldSNO.Id == 50585) return false; + if (this.Destination.WorldSNO == 332336 && this.Destination.StartingPointActorTag == 483 && this.World.WorldSNO.Id == 71150) + { + this.Destination.WorldSNO = 71150; this.Destination.StartingPointActorTag = 338; + } } if (this.World.WorldSNO.Id == 80763 && this.Destination.WorldSNO == 85201) //Tower of the Damned lvl2 diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/GeneratorsSystem/WorldGenerator.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/GeneratorsSystem/WorldGenerator.cs index 07a943a..fd56877 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/GeneratorsSystem/WorldGenerator.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/GeneratorsSystem/WorldGenerator.cs @@ -687,7 +687,6 @@ namespace DiIiS_NA.GameServer.GSSystem.GeneratorsSystem if (waypoints.Count > 1) { int RandomPoint = RandomHelper.Next(0, waypoints.Count - 1); - int pos = 0; for (int i = 0; i < waypoints.Count; i++) { if (i != RandomPoint) diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/ItemsSystem/Item.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/ItemsSystem/Item.cs index e02d999..84d2885 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/ItemsSystem/Item.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/ItemsSystem/Item.cs @@ -435,8 +435,6 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem if (IsWeapon(this.ItemType)) { - if (Attributes[GameAttribute.Attacks_Per_Second_Item] == 0) - ; if (Attributes[GameAttribute.Damage_Weapon_Min, 0] == 0) Attributes[GameAttribute.Damage_Weapon_Min, 0] = 34; if (Attributes[GameAttribute.Damage_Weapon_Delta, 0] == 0) diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/ObjectsSystem/GameAttributeMap.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/ObjectsSystem/GameAttributeMap.cs index f58f49b..9170464 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/ObjectsSystem/GameAttributeMap.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/ObjectsSystem/GameAttributeMap.cs @@ -288,23 +288,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ObjectsSystem foreach (var attr in attributes.Where(a => GameAttribute.Attributes[a.Id].Id == 408).ToList()) if (_parent is Item) attributes.Remove(attr); - - foreach (var attr in attributes.Where(a => !this.Replicateable(GameAttribute.Attributes[a.Id])).ToList()) - if (_parent is Item) - ;// attributes.Remove(attr); - - if (this._parent.World != null && this._parent.World.IsPvP) - { - if (this._parent == client.Player || (this._parent is Minion && (this._parent as Minion).Master == client.Player)) - ;// attributes.RemoveWhere(a => a.Id == 104); - } - - if (!(this._parent is Living && !(this._parent is NPC)) && !(this._parent is Player && (this._parent as Player) == client.Player)) - { - foreach (var attr in attributes.Where(a => ((_attributeValues[a].Value == GameAttribute.Attributes[a.Id]._DefaultValue.Value) && (_attributeValues[a].ValueF == GameAttribute.Attributes[a.Id]._DefaultValue.ValueF))).ToList()) - ;// attributes.Remove(attr); - } - //*/ + var ids = attributes.GetEnumerator(); bool level = attributes.Contains(new KeyId() { Id = GameAttribute.Level.Id }); diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/ObjectsSystem/WorldObject.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/ObjectsSystem/WorldObject.cs index 2805f9d..9419bd6 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/ObjectsSystem/WorldObject.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/ObjectsSystem/WorldObject.cs @@ -39,7 +39,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ObjectsSystem set { _position = value; - if (_position == null || this.Size == null) return; + if (_position == null) return; this.Bounds = new RectangleF(this.Position.X, this.Position.Y, this.Size.Width, this.Size.Height); var handler = PositionChanged; if (handler != null) handler(this, EventArgs.Empty); diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/PlayerSystem/ConversationManager.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/PlayerSystem/ConversationManager.cs index e955a76..c525c45 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/PlayerSystem/ConversationManager.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/PlayerSystem/ConversationManager.cs @@ -728,7 +728,6 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem foreach (var ghost in cryptwrld.GetActorsBySNO(5360)) ghost.Destroy(); break; - break; #endregion #region A1-Q4 Event_DoK case 139823: //Event_DoK_Kill.cnv diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/PlayerSystem/Inventory.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/PlayerSystem/Inventory.cs index f94d03c..c6a67f1 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/PlayerSystem/Inventory.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/PlayerSystem/Inventory.cs @@ -348,6 +348,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem item.Unreveal(_owner); this.AddGoldAmount(cost); (vendor as Vendor).AddBuybackItem(item, _owner); + _owner.PlayEffect(Effect.Sound, 36744); } public bool CheckItemSlots(Item target_item, int destination_slot) @@ -602,9 +603,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem var addedItem = destGrid.GetItem(item.InvLoc(_owner).Row + 1, item.InvLoc(_owner).Column); if (addedItem != null) { - if (sourceGrid.GetItemInventorySize(addedItem).Height == 2) - ; - else + if (sourceGrid.GetItemInventorySize(addedItem).Height != 2) { ChangeItemSlotDB(request.Location.EquipmentSlot, addedItem); ChangeItemLocationDB(old_x, old_y + 1, addedItem); diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/PlayerSystem/Player.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/PlayerSystem/Player.cs index b5f44e6..5b0777b 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/PlayerSystem/Player.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/PlayerSystem/Player.cs @@ -1604,7 +1604,6 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem Actor NStone = null; Portal portal = null; int map = -1; - int x = 0; int[] Maps = new int[] { @@ -2293,32 +2292,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem { this.Attributes.BroadcastChangedIfRevealed(); var a = this.GetActorsInRange(15f); - ; - //2896 2968 - - //this.World.SpawnRandomLegOrSetEquip(this, this); - //this.World.SpawnRandomEquip(this, this - // , RandomHelper.Next(3, 8)); - //this.GrantCriteria(74987249495955); - // foreach (var actor in World.GetActorsInGroup(-1248096796)) - //actor.PlayActionAnimation(11514); - //for (int i = 0; i < 20; i++) - //0 - хз - //1 - Инвентарь - //2 - Скиллы - //3 - Парагон скиллы - //4,5,6 - краш - //7 - пустая карта - //8 - Задания - //9 - Тайник - //10 - Соратник - //11,12,15 - ? - //13 - Админка - //14 - Мини карта - //16 - Почта - //17,18,19,20,21,22,23 - разрыв соединения - // this.InGameClient.SendMessage(new UIElementMessage() { Element = 13, Action = true }); - + #region //UpdateExp(5000000); /* @@ -2529,10 +2503,9 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem private void OnTryWaypoint(GameClient client, TryWaypointMessage tryWaypointMessage) { - //{[World] SNOId: 460587 GlobalId: 117440518 Name: lost_souls_prototype_v5} var wpWorld = this.World.Game.GetWayPointWorldById(tryWaypointMessage.nWaypoint); var wayPoint = wpWorld.GetWayPointById(tryWaypointMessage.nWaypoint); - + Logger.Warn("---Waypoint Debug---"); var proximity = new RectangleF(wayPoint.Position.X - 1f, wayPoint.Position.Y - 1f, 2f, 2f); var scenes = wpWorld.QuadTree.Query(proximity); if (scenes.Count == 0) return; // cork (is it real?) @@ -2546,21 +2519,15 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem } var levelArea = scene.Specification.SNOLevelAreas[0]; - Logger.Trace("OnTryWaypoint: Id: {0}, WorldId: {1}, levelArea: {2}", tryWaypointMessage.nWaypoint, wpWorld.WorldSNO.Id, levelArea); + Logger.Warn($"OnTryWaypoint: Id: {tryWaypointMessage.nWaypoint}, WorldId: {wpWorld.WorldSNO.Id}, levelArea: {levelArea}"); if (wayPoint == null) return; - + Logger.Warn($"WpWorld: {wpWorld}, wayPoint: {wayPoint}"); InGameClient.SendMessage(new SimpleMessage(Opcodes.LoadingWarping)); if (wpWorld == this.World) this.Teleport(wayPoint.Position); else this.ChangeWorld(wpWorld, wayPoint.Position); - /*this.Attributes[GameAttribute.Hidden] = false; - this.Attributes[GameAttribute.Loading] = false; - this.Attributes[GameAttribute.Disabled] = false; - this.Attributes[GameAttribute.CantStartDisplayedPowers] = false; - this.Attributes.BroadcastChangedIfRevealed();*/ - //handling quest triggers if (this.World.Game.QuestProgress.QuestTriggers.ContainsKey(levelArea)) //EnterLevelArea { @@ -2585,8 +2552,21 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem PlayerIndex = this.PlayerIndex, LevelAreaSNO = levelArea }); + Logger.Warn("---Waypoint Debug End---"); } + public void RefreshReveal() + { + float Range = 200f; + if (this.InGameClient.Game.CurrentEncounter.activated) + Range = 360f; + List actors_around = this.GetActorsInRange(Range); + + foreach (var actor in actors_around) + if (actor is not Player) + actor.Unreveal(this); + RevealActorsToPlayer(); + } private void OnRequestBuyItem(GameClient client, RequestBuyItemMessage requestBuyItemMessage) { var vendor = this.SelectedNPC as Vendor; @@ -2722,7 +2702,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem if (!this.Inventory.HaveEnough(ingr.ItemsGBID, ingr.Count)) { haveEnoughIngredients = false; break; } //if havent enough then exit } - //if (!haveEnoughIngredients) return; + if (!haveEnoughIngredients) return; this.Inventory.RemoveGoldAmount(recipeDefinition.Gold); foreach (var ingr in recipeDefinition.Ingredients) //second loop (getting) @@ -2790,7 +2770,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem if (!this.Inventory.HaveEnough(ingr.ItemsGBID, ingr.Count)) { haveEnoughIngredients = false; break; } //if havent enough then exit } - //if (!haveEnoughIngredients) return; + if (!haveEnoughIngredients) return; this.Inventory.RemoveGoldAmount(recipeDefinition.Gold); foreach (var ingr in recipeDefinition.Ingredients) //second loop (getting) @@ -2855,7 +2835,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem if (!this.Inventory.HaveEnough(ingr.ItemsGBID, ingr.Count)) { haveEnoughIngredients = false; break; } //if havent enough then exit } - //if (!haveEnoughIngredients) return; + if (!haveEnoughIngredients) return; this.Inventory.RemoveGoldAmount(recipeDefinition.Gold); foreach (var ingr in recipeDefinition.Ingredients) //second loop (getting) @@ -3399,8 +3379,6 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem { actor.Reveal(this); } - else - ; } foreach (var actor in this.World.Actors.Values) // unreveal far actors @@ -3606,12 +3584,12 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem if (this == player) // only send this when player's own actor being is revealed. /raist. { - player.InGameClient.SendMessage(new PlayerWarpedMessage() - { - WarpReason = 9, - WarpFadeInSecods = 0f, - }); - } + player.InGameClient.SendMessage(new PlayerWarpedMessage() + { + WarpReason = 9, + WarpFadeInSecods = 0f, + }); + } if (this.SkillSet.HasSkill(460757)) foreach (var skill in this.SkillSet.ActiveSkills) diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/ChanneledSkill.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/ChanneledSkill.cs index 3386691..a4b6fee 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/ChanneledSkill.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/ChanneledSkill.cs @@ -18,7 +18,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem public bool IsChannelOpen = false; public float EffectsPerSecond = 1.0f; public bool WaitForSpawn = false; - public float WaitSeconds = 1.0f; + public new float WaitSeconds = 1.0f; public virtual void OnChannelOpen() { } public virtual void OnChannelClose() { } diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/EffectActor.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/EffectActor.cs index 2c9a04b..094d4d7 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/EffectActor.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/EffectActor.cs @@ -47,7 +47,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem this.Position = position; // copy in important effect params from user - if (context.PowerSNO != null) + if (context != null) if (context.PowerSNO != 0) { this.Attributes[GameAttribute.Rune_A, context.PowerSNO] = context.User.Attributes[GameAttribute.Rune_A, context.PowerSNO]; diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/Implementations/HeroSkills/Barbarian.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/Implementations/HeroSkills/Barbarian.cs index 3dff62a..44b22cf 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/Implementations/HeroSkills/Barbarian.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/Implementations/HeroSkills/Barbarian.cs @@ -39,7 +39,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations bool hitAnything = false; var ShockWavePos = PowerMath.TranslateDirection2D(User.Position, TargetPosition, User.Position, - ScriptFormula(23)); + 10.0f); var maxHits = 1; for (int i = 0; i < maxHits; ++i) { @@ -56,7 +56,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations hitAnything = true; if (Rune_D > 0) { - GeneratePrimaryResource(ScriptFormula(10)); + GeneratePrimaryResource(6.0f); } if (Rune_B > 0) { @@ -68,18 +68,16 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations } else if (Rune_C > 0) { - if (Rand.NextDouble() < ScriptFormula(14)) - AddBuff(hitPayload.Target, new DebuffStunned(WaitSeconds(ScriptFormula(15)))); + if (Rand.NextDouble() < 0.5) + AddBuff(hitPayload.Target, new DebuffStunned(WaitSeconds(1.5f))); } else { - if (Rand.NextDouble() < ScriptFormula(0)) + if (Rand.NextDouble() < 0.1) Knockback(hitPayload.Target, 0.8f, 2, -0.03f); } }; attack.Apply(); - yield return WaitSeconds(0.5f); - if (hitAnything) GeneratePrimaryResource(EvalTag(PowerKeys.ResourceGainedOnFirstHit)); } diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/Implementations/HeroSkills/DemonHunter.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/Implementations/HeroSkills/DemonHunter.cs index 5440c07..b174dda 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/Implementations/HeroSkills/DemonHunter.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/Implementations/HeroSkills/DemonHunter.cs @@ -2097,8 +2097,6 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations WeaponDamage(hit, ScriptFormula(0), RuneSelect(DamageType.Physical, DamageType.Fire, DamageType.Lightning, DamageType.Poison, DamageType.Physical, DamageType.Physical)); }; } - var a = 0; - } yield break; } diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/Implementations/HeroSkills/Necromancer.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/Implementations/HeroSkills/Necromancer.cs index 9f6e012..9ecea3c 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/Implementations/HeroSkills/Necromancer.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/Implementations/HeroSkills/Necromancer.cs @@ -98,7 +98,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations { WeaponDamage(Targets, 1.50f, DamageType.Cold); EffectActor Explosion1 = SpawnEffect(defaultEff, TargetPosition, 0, WaitSeconds(2f)); - Explosion.PlayEffect(Effect.PlayEffectGroup, 471410); + Explosion1.PlayEffect(Effect.PlayEffectGroup, 471410); foreach (var Target in Targets.Actors) AddBuff(Target, new DebuffChilled(0.4f, WaitSeconds(0.5f))); } @@ -304,7 +304,6 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations { var PowerData = (DiIiS_NA.Core.MPQ.FileFormats.Power)MPQStorage.Data.Assets[SNOGroup.Power][this.PowerSNO].Data; - bool hitAnything = false; TargetPosition = PowerMath.TranslateDirection2D(User.Position, TargetPosition, User.Position, 7f); DamageType DType = DamageType.Physical; if (Rune_E > 0) DType = DamageType.Poison; @@ -573,8 +572,6 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations attack.AddWeaponDamage(3f, DType); attack.OnHit = hit => { - int baseEffectSkill = 467461; - Effect = SpawnProxy(hit.Target.Position); Effect.AddComplexEffect(RuneSelect(467461, 467557, 467500, 467643, 469460, 469275), _beamEnd); //Effect.AddComplexEffect(baseEffectSkill, _beamEnd); @@ -805,8 +802,8 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations projectile.OnUpdate = () => { - if (!User.World.CheckLocationForFlag(projectile.Position, DiIiS_NA.Core.MPQ.FileFormats.Scene.NavCellFlags.AllowProjectile)) - ;// projectile.Destroy(); + //if (!User.World.CheckLocationForFlag(projectile.Position, DiIiS_NA.Core.MPQ.FileFormats.Scene.NavCellFlags.AllowProjectile)) + // projectile.Destroy(); }; yield return WaitSeconds(5f); @@ -1886,8 +1883,6 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations if (Rune_B > 0) (User as PlayerSystem.Player).AddPercentageHP(-3); - int Count = 0; - Proxy.PlayEffectGroup(RuneSelect(465009, 465021, 465016, 465027, 465011, 465026)); foreach (var act in Flesh) { diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/Payloads/DeathPayload.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/Payloads/DeathPayload.cs index 6c27381..3d989a0 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/Payloads/DeathPayload.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/PowerSystem/Payloads/DeathPayload.cs @@ -152,18 +152,18 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads }); ((this.Target as NecromancerSkeleton_A).Master as Player).NecroSkeletons.Remove(this.Target); } - if (this is BaseGolem || - this is IceGolem || - this is BoneGolem || - this is DecayGolem || - this is ConsumeFleshGolem || - this is BloodGolem) + if (this.Target is BaseGolem || + this.Target is IceGolem || + this.Target is BoneGolem || + this.Target is DecayGolem || + this.Target is ConsumeFleshGolem || + this.Target is BloodGolem) { - ((this.Target as NecromancerSkeleton_A).Master as Player).InGameClient.SendMessage(new MessageSystem.Message.Definitions.Pet.PetDetachMessage() + ((this.Target as Minion).Master as Player).InGameClient.SendMessage(new MessageSystem.Message.Definitions.Pet.PetDetachMessage() { PetId = this.Target.DynamicID(((this.Target as Minion).Master as Player)) }); - ((this.Target as NecromancerSkeleton_A).Master as Player).ActiveGolem = null; + ((this.Target as Minion).Master as Player).ActiveGolem = null; } if (this.Target is Player) { diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/QuestSystem/QuestEvents/LaunchConversationWithCutScene.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/QuestSystem/QuestEvents/LaunchConversationWithCutScene.cs index fa67911..3fe7fd9 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/QuestSystem/QuestEvents/LaunchConversationWithCutScene.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/QuestSystem/QuestEvents/LaunchConversationWithCutScene.cs @@ -33,7 +33,7 @@ namespace DiIiS_NA.GameServer.GSSystem.QuestSystem.QuestEvents if (ActorSNO != -1) plr.InGameClient.SendMessage(new MessageSystem.Message.Definitions.Camera.CameraFocusMessage() { ActorID = (int)world.GetActorBySNO(ActorSNO).DynamicID(plr), Duration = 1f, Snap = false }); foreach (var actor in world.Actors.Values) - if (actor !is ActorSystem.Gizmo) + if (actor is not ActorSystem.Gizmo) actor.Reveal(plr); } } diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/QuestSystem/QuestProgress.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/QuestSystem/QuestProgress.cs index 910dcf6..d600b4d 100644 --- a/src/DiIiS-NA/D3-GameServer/GSSystem/QuestSystem/QuestProgress.cs +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/QuestSystem/QuestProgress.cs @@ -386,8 +386,6 @@ namespace DiIiS_NA.GameServer.GSSystem.QuestSystem NPC.ForceConversationSNO = conversation; } } - else - ;// Logger.Warn("Не удалось присвоить диалог для NPC."); } diff --git a/src/DiIiS-NA/D3-GameServer/MessageSystem/Message/Definitions/Effect/PlayEffectMessage.cs b/src/DiIiS-NA/D3-GameServer/MessageSystem/Message/Definitions/Effect/PlayEffectMessage.cs index 05ad8fe..9576415 100644 --- a/src/DiIiS-NA/D3-GameServer/MessageSystem/Message/Definitions/Effect/PlayEffectMessage.cs +++ b/src/DiIiS-NA/D3-GameServer/MessageSystem/Message/Definitions/Effect/PlayEffectMessage.cs @@ -37,8 +37,6 @@ namespace DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Effect public override void Encode(GameBitBuffer buffer) { - if (Effect == Effect.ParagonLevelUp) - ; buffer.WriteUInt(32, ActorId); buffer.WriteInt(7, (int)Effect - (-1)); buffer.WriteBool(OptionalParameter.HasValue); diff --git a/src/DiIiS-NA/Program.cs b/src/DiIiS-NA/Program.cs index 0cd166a..2dea975 100644 --- a/src/DiIiS-NA/Program.cs +++ b/src/DiIiS-NA/Program.cs @@ -189,7 +189,6 @@ namespace DiIiS_NA var line = Console.ReadLine(); CommandManager.Parse(line); } - await boundChannel.CloseAsync(); } catch (Exception e) { diff --git a/src/DiIiS-NA/REST/Manager/SocketManager.cs b/src/DiIiS-NA/REST/Manager/SocketManager.cs index e90fde4..5d4a6ae 100644 --- a/src/DiIiS-NA/REST/Manager/SocketManager.cs +++ b/src/DiIiS-NA/REST/Manager/SocketManager.cs @@ -64,7 +64,7 @@ namespace DiIiS_NA.REST.Manager _threads[SelectThreadWithMinConnections()].AddSocket(newSocket); } - catch (Exception err) + catch { } diff --git a/src/DiIiS-NA/REST/Networking/AsyncAcceptor.cs b/src/DiIiS-NA/REST/Networking/AsyncAcceptor.cs index 70dfe41..c2ba38a 100644 --- a/src/DiIiS-NA/REST/Networking/AsyncAcceptor.cs +++ b/src/DiIiS-NA/REST/Networking/AsyncAcceptor.cs @@ -32,7 +32,7 @@ namespace DiIiS_NA.REST.Networking _listener = new TcpListener(bindIP, port); _listener.Start(); } - catch (SocketException ex) + catch { return false; } diff --git a/src/DiIiS-NA/REST/Networking/NetworkThread.cs b/src/DiIiS-NA/REST/Networking/NetworkThread.cs index 23aaa1e..a83ab74 100644 --- a/src/DiIiS-NA/REST/Networking/NetworkThread.cs +++ b/src/DiIiS-NA/REST/Networking/NetworkThread.cs @@ -76,8 +76,6 @@ namespace DiIiS_NA.REST.Networking { Thread.Sleep(sleepTime); - uint tickStart = 0; - AddNewSockets(); for (var i = 0; i < _Sockets.Count; ++i) diff --git a/src/DiIiSNet/bgs/protocol/InvitationTypes.cs b/src/DiIiSNet/bgs/protocol/InvitationTypes.cs index 6a6e6b2..ed8e2d5 100644 --- a/src/DiIiSNet/bgs/protocol/InvitationTypes.cs +++ b/src/DiIiSNet/bgs/protocol/InvitationTypes.cs @@ -935,12 +935,10 @@ namespace bgs.protocol public const int InvitationMessageFieldNumber = 1; private bool hasInvitationMessage; private string invitationMessage_ = ""; - [global::System.ObsoleteAttribute()] public bool HasInvitationMessage { get { return hasInvitationMessage; } } - [global::System.ObsoleteAttribute()] public string InvitationMessage { get { return invitationMessage_; } diff --git a/src/DiIiSNet/bgs/protocol/channel/v1/ChannelInvitationTypes.cs b/src/DiIiSNet/bgs/protocol/channel/v1/ChannelInvitationTypes.cs index fdb600f..275908a 100644 --- a/src/DiIiSNet/bgs/protocol/channel/v1/ChannelInvitationTypes.cs +++ b/src/DiIiSNet/bgs/protocol/channel/v1/ChannelInvitationTypes.cs @@ -373,7 +373,6 @@ namespace bgs.protocol.channel.v1 { get { return result.ServiceType; } set { SetServiceType(value); } } - [global::System.ObsoleteAttribute()] public Builder SetServiceType(uint value) { PrepareBuilder(); result.hasServiceType = true; diff --git a/src/DiIiSNet/bgs/protocol/channel/v1/ChannelService.cs b/src/DiIiSNet/bgs/protocol/channel/v1/ChannelService.cs index 8c23a0a..0f60a53 100644 --- a/src/DiIiSNet/bgs/protocol/channel/v1/ChannelService.cs +++ b/src/DiIiSNet/bgs/protocol/channel/v1/ChannelService.cs @@ -2439,7 +2439,6 @@ namespace bgs.protocol.channel.v1 { get { return result.MemberId; } set { SetMemberId(value); } } - [global::System.ObsoleteAttribute()] public Builder SetMemberId(global::bgs.protocol.EntityId value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); @@ -2447,7 +2446,6 @@ namespace bgs.protocol.channel.v1 { result.memberId_ = value; return this; } - [global::System.ObsoleteAttribute()] public Builder SetMemberId(global::bgs.protocol.EntityId.Builder builderForValue) { pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); PrepareBuilder(); @@ -2455,7 +2453,6 @@ namespace bgs.protocol.channel.v1 { result.memberId_ = builderForValue.Build(); return this; } - [global::System.ObsoleteAttribute()] public Builder MergeMemberId(global::bgs.protocol.EntityId value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); From 29a8c4f0b928d3729d19acb37d872ad87782ee16 Mon Sep 17 00:00:00 2001 From: Gitea Date: Sun, 21 Aug 2022 13:31:51 +1000 Subject: [PATCH 3/5] =?UTF-8?q?=D1=84=D0=B8=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/AuthenticationService.cs | 2 +- .../CommandManager/AccountCommands.cs | 19 ------------------- 2 files changed, 1 insertion(+), 20 deletions(-) diff --git a/src/DiIiS-NA/BGS-Server/ServicesSystem/Services/AuthenticationService.cs b/src/DiIiS-NA/BGS-Server/ServicesSystem/Services/AuthenticationService.cs index c8c1c7d..0ea801b 100644 --- a/src/DiIiS-NA/BGS-Server/ServicesSystem/Services/AuthenticationService.cs +++ b/src/DiIiS-NA/BGS-Server/ServicesSystem/Services/AuthenticationService.cs @@ -92,7 +92,7 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services if (request.Program.ToLower() == "d3") if (request.ApplicationVersion != VersionRetail & request.ApplicationVersion != VersionPTR) { - Logger.Error("Подключение не правильной версии клиента!"); + //Logger.Error("Подключение не правильной версии клиента!"); var ercomplete = LogonResult.CreateBuilder().SetErrorCode(28); //(controller as HandlerController).Client.MakeRPC((lid) => AuthenticationListener.CreateStub((controller as HandlerController).Client).OnLogonComplete(controller, ercomplete.Build(), callback => { })); } diff --git a/src/DiIiS-NA/D3-GameServer/CommandManager/AccountCommands.cs b/src/DiIiS-NA/D3-GameServer/CommandManager/AccountCommands.cs index af89db7..c001157 100644 --- a/src/DiIiS-NA/D3-GameServer/CommandManager/AccountCommands.cs +++ b/src/DiIiS-NA/D3-GameServer/CommandManager/AccountCommands.cs @@ -133,25 +133,6 @@ namespace DiIiS_NA.GameServer.CommandManager return string.Format("Updated battle tag for account {0}.", email); } - [Command("sendmail", "Allows you to send the collection edition's mail for toon\nUsage: account sendmail ", Account.UserLevels.GM)] - public string SendMail(string[] @params, BattleClient invokerClient) - { - if (@params.Count() < 2) - return "Invalid arguments. Type 'help account sendmail' to get help."; - - var toonId = 0; - Int32.TryParse(@params[0], out toonId); - int setid = 0; - Int32.TryParse(@params[1], out setid); - - var toon = ToonManager.GetToonByLowID((ulong)toonId); - - if (toon == null) - return string.Format("No toon with id '{0}' exists.", toonId); - - return string.Format("Sent item in mail {0} for toon {1}.", setid, toonId); - } - [Command("setuserlevel", "Allows you to set a new user level for account\nUsage: account setuserlevel .\nAvailable user levels: owner, admin, gm, user.", Account.UserLevels.GM)] public string SetLevel(string[] @params, BattleClient invokerClient) { From 754e296789c6da55e1b742cd9208ff53409904db Mon Sep 17 00:00:00 2001 From: pr701 Date: Sun, 21 Aug 2022 08:02:33 +0300 Subject: [PATCH 4/5] update docs - update readme - add commands list --- README.md | 121 ++++++++++++++++++++++++++++-------------- docs/commands-list.md | 41 ++++++++++++++ docs/report-form.md | 23 ++++++++ 3 files changed, 144 insertions(+), 41 deletions(-) create mode 100644 docs/commands-list.md create mode 100644 docs/report-form.md diff --git a/README.md b/README.md index 60cf190..40e2442 100644 --- a/README.md +++ b/README.md @@ -4,75 +4,114 @@ # DiIiS Project -DiIiS is a fully-functional open-source local server for [Diablo III: Reaper of Souls](https://eu.diablo3.blizzard.com) +DiIiS is a fully-functional open-source local server for [Diablo III: Reaper of Souls](https://eu.diablo3.blizzard.com). ## Features - Implemented account creation system, authorization and lobby. -- Fully implemented chat system. +- Implemented Necromancer class mechanics. +- Fully implemented chat system and friends. - Fully implemented clan system. -- Opened all cosmetics in the in-game store. -- Implemented basic DRLG. +- Implemented basic DRLG (dungeon generator). - Implemented item generator with in-game affixes. - Implemented the basic mechanics of almost all active abilities for all classes. - Implemented a system of set items. - Implemented all main scripts for all story quests 5 acts. - Implemented basic scripts and generator for "Adventure Mode". -- Created the basis for the "Challenge Nephalem Rifts" mode. +- Implemented the basis for the "Challenge Nephalem Rifts" mode. - Implemented artificial intelligence for 80% of minions. - Implemented personal artificial intelligence for 40% of all monsters. - Implemented personal artificial intelligence for half of the Bosses. - Implemented LAN + +## Restrictions + +- Donate Store implementation is removed. - NAT support is hidden, but possible ;) -## Installation +# Installation + +## Supported Clients + +Each version of the client includes changes to structures, opcodes and attributes. + +The currently supported version of the client: **2.7.3.82785** + +## Server Deploying -### General steps 1. Install [PostgreSQL 9.5.25](https://www.enterprisedb.com/downloads/postgres-postgresql-downloads). -2. Create databases in PostgreSQL: `diiis` and `worlds` -3. Change you account and password in `database.Account.config` and `database.Worlds.conifg` -4. Restore `worlds.backup` to `worlds` database -5. Compile by [VS 2019/2022](https://visualstudio.microsoft.com/) -6. Launch wait until server start, it creates a hierarchy. -7. Create account using console: `!account add Login Password Tag` -8. Install certificate `bnetserver.p12`, password - `123` (the game verifies the CA root certificates). -9. Use Client Diablo 3 `2.7.3.82785`. -9. Add redirects to the `hosts` file (`%WinDir%\System32\drivers\etc\hosts`): - `127.0.0.1 us.actual.battle.net` - `127.0.0.1 eu.actual.battle.net` -11. Launch client (`x64` or `x86`) with arguments `"Diablo III64.exe" -launch -uid diablo3_engb` -10. Login to the game using your credentials =) +2. Create databases in PostgreSQL: `diiis` and `worlds`. +3. Change you account and password in `database.Account.config` and `database.Worlds.conifg`. +4. Restore `worlds.backup` to `worlds` database. +5. Compile by [VS 2019/2022](https://visualstudio.microsoft.com/). +6. [Skip this stage for local game] Copy the [config.ini](configs/config.ini) file to the server folder (It overwrites the default settings): + - Update the parameter entries with your IP record on the network: `BindIP` and `PublicIP`. +7. Launch wait until server start, it creates a hierarchy. +8. Create user account(s) using console: `!account add Login Password Tag` -### Using Docker -Run `docker-compose up` inside `db` folder and continue from the 5th step in section above +## Prepare Client -## Playing with friends +Do this for each client connecting to the server. -1. Create new accounts using the console command: - `!account add Login Password Tag` -2. Copy the [config.ini](configs/config.ini) file to the server folder (It overwrites the default settings) -3. In the IP fields - write your IP within the network. Update the parameter entries: `BindIP` and `PublicIP`. -4. Other players must specify your IP address in the `hosts` file (`%WinDir%\System32\drivers\etc\hosts`). - `192.168.1.1 us.actual.battle.net` - `192.168.1.1 eu.actual.battle.net` -5. Launch client (`x64` or `x86`) with arguments `"Diablo III64.exe" -launch -uid diablo3_engb` -6. Login to the game using your credentials -7. After that, when creating a game (in client), indicate the creation of a public game. -7. Other players, when connecting, must also indicate a public game, and at the start they will connect to you. +1. Get [supported client](#supported-clients) Diablo 3. -## Flexible configuration +2. Install certificate [bnetserver.p12](src/DiIiS-NA/bnetserver.p12), password - `123` (the game verifies the CA root certificates). + +3. Setting up redirects client to your server: + + **Method #1 - Hosts** + + Add redirects to the `hosts` file (`%WinDir%\System32\drivers\etc\hosts`): + `127.0.0.1 us.actual.battle.net` + `127.0.0.1 eu.actual.battle.net` + + !After the modification the official Battle.Net application will not be able to connect to the server! + + **Method #2 - Modify main executable file** + + ```c + // Find null-terminated string enum and rewrite with HexEditor to your IP server. + eu.actual.battle.net/ + us.actual.battle.net/ + cn.actual.battle.net/ + kr.actual.battle.net/ + ``` + +4. Launch client (`x64` or `x86`) with arguments `"Diablo III64.exe" -launch` + +5. Login to the game using your credentials. + +6. [Skip this stage for local game] After that, when creating a game (in client), indicate the creation of a public game. Other players, when connecting, must also indicate a public game, and at the start they will connect to you. + +7. You're in the game world! + +## Using Docker + +Run `docker-compose up` inside [db](db) folder and continue from the 5th step in section [server](#server-deploying). + +# Server Configuration + +## Global configuration Using the configuration file you can easily override the [global world parameters](docs/game-world-settings.md). -## Minimum system requirements +## Command system -Minimum system requirements for server +The command system allows you to get control of the game world if you have rights. A list of commands is available [here](docs/commands-list.md). -- CPU: Xeon E5-2620V3 (2.40 GHz and 6 cores) -- RAM: 4GB -- HDD/SSD: 500MB +# Issues -## Screenshots +Check the [report form](docs/report-form.md) before submitting issue, this will help people save time! + +# System requirements + +| | **Entry-level** | **Mid-range** | **High-end** | +| ---------- | ---------------------------- | ---------------------------- | ---------------------------- | +| **CPU** | Intel Core i5 or AMD Ryzen 5 | Intel Core i7 or AMD Ryzen 7 | Intel Core i9 or AMD Ryzen 9 | +| **Memory** | 4 GB RAM | 16 GB RAM | 64 GB RAM | +| **Disk** | 500 MB | 1 GB | 1 GB | + +# Screenshots You can see more screenshots [here](SCREENSHOTS.md) diff --git a/docs/commands-list.md b/docs/commands-list.md new file mode 100644 index 0000000..999ed42 --- /dev/null +++ b/docs/commands-list.md @@ -0,0 +1,41 @@ +# Server Commands List + +## Account Commands + +| Command Group | Command | Example | Description | +| -------------- | -------------- | ----------------------------------- | ---------------------------------------------- | +| Account Group | `show` | `!account show test@` | Shows information about given account | +| | `add` | `!account add test@ 123456 test` | Allows you to add a new user account | +| | `setpassword` | `!account setpassword test@ 123654` | Allows you to set a new password for account | +| | `setbtag` | `!account setbtag test@ NonTest` | Allows you to change battle tag for account | +| | `setuserlevel` | `!account setuserlevel admin` | Allows you to set a new user level for account | +| Mute Command | `mute` | `!mute test@` | Disable chat functions for user | + +## Game Commands + +| Command Group | Command | Example | Description | +| ----------------------- | ----------- | ------------------------ | ------------------------------------------------------------ | +| Spawn command | `spawn` | `!spawn 6632` | Spawn a mob by ID | +| Level up command | `levelup` | `!levelup 2` | Levels you character | +| Unlock Artisans command | `unlockart` | `!unlockart` | Unlock all artisans for you in Campaign | +| Platinum command | `platinum` | `!platinum 100` | Platinum for you | +| Gold command | `gold` | `!gold 100` | Gold for you? | +| Item command | `item` | `!item p71_ethereal_10` | Get any Item by Name | +| Teleport command | `tp` | `!tp 71150` | Teleport character to World by ID | +| SpeedHack command | `speed` | `!speed 2` | Increase you speed character | +| Lookup Command | `lookup` | `!lookup item axe` | Display all founded in game objects with entered text in Name | +| | | `!lookup world Tristram` | | +| | | `!lookup actor zombie` | | +| | | `!lookup power Punch` | | + +# Item List + +You can use the official website to search items: https://eu.diablo3.blizzard.com/en-us/item/ + +```c +// Sample: Firebird's Breast +// Url: https://eu.diablo3.blizzard.com/en-us/item/firebirds-breast-Unique_Chest_Set_06_x1 +// Name: Unique_Chest_Set_06_x1 +``` + +You can also access the elements created for testing during game development :) diff --git a/docs/report-form.md b/docs/report-form.md new file mode 100644 index 0000000..957e797 --- /dev/null +++ b/docs/report-form.md @@ -0,0 +1,23 @@ +# Issue report form + +## Report form related to server deployment problem + +1. Brief description of the problem. +2. Operating system (version, architecture). +3. Client version and architecture. +4. Sequence of actions. + +## Report form related to critical errors and crashes + +1. Brief description of the problem. +2. Operating system (version, architecture). +3. Client version and architecture. +4. **Server log** before the crash (if possible). +5. Crash address and callstack (if possible). + +## Report form related to the logic of the game world + +1. Brief description of the problem. +2. Operating system (version, architecture). +3. Client version and architecture. +5. Recent **server log**. From c2763dc901c051908c52aee8f9e9d945f619adbf Mon Sep 17 00:00:00 2001 From: pr701 Date: Sun, 21 Aug 2022 08:06:12 +0300 Subject: [PATCH 5/5] update readme formating --- README.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 40e2442..5924c06 100644 --- a/README.md +++ b/README.md @@ -59,23 +59,23 @@ Do this for each client connecting to the server. 3. Setting up redirects client to your server: - **Method #1 - Hosts** + **Method #1 - Hosts** - Add redirects to the `hosts` file (`%WinDir%\System32\drivers\etc\hosts`): - `127.0.0.1 us.actual.battle.net` - `127.0.0.1 eu.actual.battle.net` + Add redirects to the `hosts` file (`%WinDir%\System32\drivers\etc\hosts`): + `127.0.0.1 us.actual.battle.net` + `127.0.0.1 eu.actual.battle.net` - !After the modification the official Battle.Net application will not be able to connect to the server! + !After the modification the official Battle.Net application will not be able to connect to the server! - **Method #2 - Modify main executable file** + **Method #2 - Modify main executable file** - ```c - // Find null-terminated string enum and rewrite with HexEditor to your IP server. - eu.actual.battle.net/ - us.actual.battle.net/ - cn.actual.battle.net/ - kr.actual.battle.net/ - ``` + ```c + // Find null-terminated string enum and rewrite with HexEditor to your IP server. + eu.actual.battle.net/ + us.actual.battle.net/ + cn.actual.battle.net/ + kr.actual.battle.net/ + ``` 4. Launch client (`x64` or `x86`) with arguments `"Diablo III64.exe" -launch`