package common import ( "zombiezen.com/go/sqlite" "zombiezen.com/go/sqlite/sqlitex" ) // Represents a zone in the game. type Zone struct { ID int64 `db:"id"` ExpansionID int8 `db:"expansion_id"` Name string `db:"name"` File string `db:"file"` Description string `db:"description"` SafeX float64 `db:"safe_x"` SafeY float64 `db:"safe_y"` SafeZ float64 `db:"safe_z"` SafeHeading float64 `db:"safe_heading"` Underworld float64 `db:"underworld"` XPModifier float64 `db:"xp_modifier"` MinRecommended int8 `db:"min_recommended"` MaxRecommended int8 `db:"max_recommended"` ZoneType *string `db:"zone_type"` AlwaysLoaded bool `db:"always_loaded"` CityZone bool `db:"city_zone"` WeatherAllowed bool `db:"weather_allowed"` MinStatus int32 `db:"min_status"` MinLevel int32 `db:"min_level"` MaxLevel int32 `db:"max_level"` StartZone bool `db:"start_zone"` InstanceType string `db:"instance_type"` DefaultReenterTime int32 `db:"default_reenter_time"` DefaultResetTime int32 `db:"default_reset_time"` DefaultLockoutTime int32 `db:"default_lockout_time"` ForceGroupToZone int16 `db:"force_group_to_zone"` LuaScript *string `db:"lua_script"` ShutdownTimer int32 `db:"shutdown_timer"` ZoneMOTD *string `db:"zone_motd"` RulesetID int32 `db:"ruleset_id"` LoginChecksum int32 `db:"login_checksum"` SkyFile string `db:"sky_file"` CanBind *int32 `db:"can_bind"` CanGate *int32 `db:"can_gate"` CanEvac *int32 `db:"can_evac"` PeerPriority int16 `db:"peer_priority"` } // Creates the zones table if it does not exist. func CreateZonesTable(conn *sqlite.Conn) error { return sqlitex.ExecScript(conn, ` CREATE TABLE IF NOT EXISTS zones ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, expansion_id INTEGER NOT NULL DEFAULT 0, name TEXT NOT NULL UNIQUE DEFAULT '', file TEXT NOT NULL DEFAULT '', description TEXT NOT NULL DEFAULT 'Describe me in the zones table! :)', safe_x REAL NOT NULL DEFAULT 0, safe_y REAL NOT NULL DEFAULT 0, safe_z REAL NOT NULL DEFAULT 0, safe_heading REAL NOT NULL DEFAULT 0, underworld REAL NOT NULL DEFAULT -1000000, xp_modifier REAL NOT NULL DEFAULT 0, min_recommended INTEGER NOT NULL DEFAULT 0, max_recommended INTEGER NOT NULL DEFAULT 0, zone_type TEXT DEFAULT '', always_loaded INTEGER NOT NULL DEFAULT 0, city_zone INTEGER NOT NULL DEFAULT 0, weather_allowed INTEGER NOT NULL DEFAULT 0, min_status INTEGER NOT NULL DEFAULT 0, min_level INTEGER NOT NULL DEFAULT 0, max_level INTEGER NOT NULL DEFAULT 0, start_zone INTEGER NOT NULL DEFAULT 0, instance_type TEXT NOT NULL DEFAULT 'NONE', default_reenter_time INTEGER NOT NULL DEFAULT 0, default_reset_time INTEGER NOT NULL DEFAULT 0, default_lockout_time INTEGER NOT NULL DEFAULT 0, force_group_to_zone INTEGER NOT NULL DEFAULT 0, lua_script TEXT DEFAULT '', shutdown_timer INTEGER NOT NULL DEFAULT 300, zone_motd TEXT DEFAULT '', ruleset_id INTEGER NOT NULL DEFAULT 0, login_checksum INTEGER NOT NULL DEFAULT 0, sky_file TEXT NOT NULL DEFAULT '', can_bind INTEGER DEFAULT 0, can_gate INTEGER DEFAULT 1, can_evac INTEGER DEFAULT 1, peer_priority INTEGER NOT NULL DEFAULT 0 ); CREATE INDEX IF NOT EXISTS ZoneDescIDX ON zones(description); CREATE INDEX IF NOT EXISTS ZoneFileIDX ON zones(file); `) }