Files
odinsea-elixir/priv/repo/migrations/20260215000007_create_game_data_tables.exs
2026-02-14 23:58:01 -07:00

256 lines
10 KiB
Elixir

defmodule Odinsea.Repo.Migrations.CreateGameDataTables do
use Ecto.Migration
def up do
# ============================================================================
# DROP DATA
# ============================================================================
create table(:drop_data) do
add :dropperid, :integer, null: false
add :itemid, :integer, null: false, default: 0
add :minimum_quantity, :integer, null: false, default: 1
add :maximum_quantity, :integer, null: false, default: 1
add :questid, :integer, null: false, default: 0
add :chance, :integer, null: false, default: 0
end
create index(:drop_data, [:dropperid], name: :mobid)
create table(:drop_data_global) do
add :continent, :integer, null: false
add :droptype, :integer, null: false, default: 0
add :itemid, :integer, null: false, default: 0
add :minimum_quantity, :integer, null: false, default: 1
add :maximum_quantity, :integer, null: false, default: 1
add :questid, :integer, null: false, default: 0
add :chance, :integer, null: false, default: 0
add :comments, :string, size: 45
end
create index(:drop_data_global, [:continent], name: :mobid_global)
create table(:reactordrops) do
add :reactorid, :integer, null: false
add :itemid, :integer, null: false
add :chance, :integer, null: false
add :questid, :integer, null: false, default: -1
end
create index(:reactordrops, [:reactorid])
# ============================================================================
# SHOP DATA
# ============================================================================
create table(:shops) do
add :npcid, :integer, default: 0
end
create table(:shopitems) do
add :shopid, :integer, null: false, default: 0
add :itemid, :integer, null: false, default: 0
add :price, :integer, null: false, default: 0
add :position, :integer, null: false, default: 0
add :reqitem, :integer, null: false, default: 0
add :reqitemq, :integer, null: false, default: 0
add :rank, :integer, null: false, default: 0
end
create index(:shopitems, [:shopid])
create table(:shopranks) do
add :shopid, :integer, null: false, default: 0
add :rank, :integer, null: false, default: 0
add :name, :string, size: 255, null: false, default: ""
add :itemid, :integer, null: false, default: 0
end
# ============================================================================
# WZ DATA TABLES (GAME DATA)
# ============================================================================
create table(:wz_itemdata) do
add :itemid, :integer, null: false, primary_key: true
add :name, :string, size: 255
add :msg, :string, size: 4096
add :desc, :string, size: 4096
add :slotmax, :integer, null: false, default: 1
add :price, :string, size: 255, null: false, default: "-1.0"
add :wholeprice, :integer, null: false, default: -1
add :statechange, :integer, null: false, default: 0
add :flags, :integer, null: false, default: 0
add :karma, :boolean, null: false, default: false
add :meso, :integer, null: false, default: 0
add :monsterbook, :integer, null: false, default: 0
add :itemmakelevel, :integer, null: false, default: 0
add :questid, :integer, null: false, default: 0
add :scrollreqs, :string, size: 255
add :consumeitem, :string, size: 255
add :totalprob, :integer, null: false, default: 0
add :incskill, :string, size: 255, null: false, default: ""
add :replaceid, :integer, null: false, default: 0
add :replacemsg, :string, size: 255, null: false, default: ""
add :create, :integer, null: false, default: 0
add :afterimage, :string, size: 255, null: false, default: ""
end
create table(:wz_itemadddata) do
add :itemid, :integer, null: false
add :key, :string, size: 30, null: false
add :value1, :integer, null: false, default: 0
add :value2, :integer, null: false, default: 0
end
create table(:wz_itemequipdata) do
add :itemid, :integer, null: false
add :itemlevel, :integer, null: false, default: -1
add :key, :string, size: 30, null: false
add :value, :integer, null: false, default: 0
end
create table(:wz_itemrewarddata) do
add :itemid, :integer, null: false
add :item, :integer, null: false
add :prob, :integer, null: false, default: 0
add :quantity, :integer, null: false, default: 0
add :period, :integer, null: false, default: -1
add :worldmsg, :string, size: 255, null: false, default: ""
add :effect, :string, size: 255, null: false, default: ""
end
create table(:wz_questdata) do
add :questid, :integer, null: false, primary_key: true
add :name, :string, size: 1024, null: false, default: ""
add :autostart, :boolean, null: false, default: false
add :autoprecomplete, :boolean, null: false, default: false
add :viewmedalitem, :integer, null: false, default: 0
add :selectedskillid, :integer, null: false, default: 0
add :blocked, :boolean, null: false, default: false
add :autoaccept, :boolean, null: false, default: false
add :autocomplete, :boolean, null: false, default: false
end
create table(:wz_questactdata) do
add :questid, :integer, null: false, default: 0
add :name, :string, size: 127, null: false, default: ""
add :type, :integer, null: false, default: 0
add :intstore, :integer, null: false, default: 0
add :applicablejobs, :string, size: 1024, null: false, default: ""
add :uniqueid, :integer, null: false, default: 0
end
create index(:wz_questactdata, [:questid], name: :wz_questactdata_questid_index)
create table(:wz_questactitemdata) do
add :itemid, :integer, null: false, default: 0
add :count, :integer, null: false, default: 0
add :period, :integer, null: false, default: 0
add :gender, :integer, null: false, default: 2
add :job, :integer, null: false, default: -1
add :jobex, :integer, null: false, default: -1
add :prop, :integer, null: false, default: -1
add :uniqueid, :integer, null: false, default: 0
end
create table(:wz_questactquestdata) do
add :quest, :integer, null: false, default: 0
add :state, :integer, null: false, default: 2
add :uniqueid, :integer, null: false, default: 0
end
create table(:wz_questactskilldata) do
add :skillid, :integer, null: false, default: 0
add :skilllevel, :integer, null: false, default: -1
add :masterlevel, :integer, null: false, default: -1
add :uniqueid, :integer, null: false, default: 0
end
create table(:wz_questreqdata) do
add :questid, :integer, null: false, default: 0
add :name, :string, size: 127, null: false, default: ""
add :type, :integer, null: false, default: 0
add :stringstore, :string, size: 1024, null: false, default: ""
add :intstoresfirst, :string, size: 1024, null: false, default: ""
add :intstoressecond, :string, size: 1024, null: false, default: ""
end
create index(:wz_questreqdata, [:questid], name: :wz_questreqdata_questid_index)
create table(:wz_questpartydata) do
add :questid, :integer, null: false, default: 0
add :rank, :string, size: 1, null: false, default: ""
add :mode, :string, size: 13, null: false, default: ""
add :property, :string, size: 255, null: false, default: ""
add :value, :integer, null: false, default: 0
end
create index(:wz_questpartydata, [:questid], name: :wz_questpartydata_questid_index)
create table(:wz_mobskilldata) do
add :skillid, :integer, null: false
add :level, :integer, null: false
add :hp, :integer, null: false, default: 100
add :mpcon, :integer, null: false, default: 0
add :x, :integer, null: false, default: 1
add :y, :integer, null: false, default: 1
add :time, :integer, null: false, default: 0
add :prop, :integer, null: false, default: 100
add :limit, :integer, null: false, default: 0
add :spawneffect, :integer, null: false, default: 0
add :interval, :integer, null: false, default: 0
add :summons, :string, size: 1024, null: false, default: ""
add :ltx, :integer, null: false, default: 0
add :lty, :integer, null: false, default: 0
add :rbx, :integer, null: false, default: 0
add :rby, :integer, null: false, default: 0
add :once, :boolean, null: false, default: false
end
create table(:wz_oxdata) do
add :questionset, :integer, null: false, default: 0
add :questionid, :integer, null: false, default: 0
add :question, :string, size: 200, null: false, default: ""
add :display, :string, size: 200, null: false, default: ""
add :answer, :string, size: 1, null: false
end
create unique_index(:wz_oxdata, [:questionset, :questionid])
# ============================================================================
# SERVER CONFIG
# ============================================================================
create table(:auth_server_channel_ip) do
add :channelid, :integer, null: false, default: 0
add :name, :string, size: 255, null: false
add :value, :string, size: 255, null: false
end
create index(:auth_server_channel_ip, [:channelid])
end
def down do
drop table(:auth_server_channel_ip)
drop table(:wz_oxdata)
drop table(:wz_mobskilldata)
drop table(:wz_questpartydata)
drop table(:wz_questreqdata)
drop table(:wz_questactskilldata)
drop table(:wz_questactquestdata)
drop table(:wz_questactitemdata)
drop table(:wz_questactdata)
drop table(:wz_questdata)
drop table(:wz_itemrewarddata)
drop table(:wz_itemequipdata)
drop table(:wz_itemadddata)
drop table(:wz_itemdata)
drop table(:shopranks)
drop table(:shopitems)
drop table(:shops)
drop table(:reactordrops)
drop table(:drop_data_global)
drop table(:drop_data)
end
end