94 lines
3.6 KiB
Go
94 lines
3.6 KiB
Go
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);
|
|
`)
|
|
}
|