add sql data, work on npc integration
This commit is contained in:
parent
75a7f8b49e
commit
80e3bf39b4
@ -1 +0,0 @@
|
||||
Need to implement
|
@ -241,6 +241,69 @@ func (d *Database) initSchema() error {
|
||||
FOREIGN KEY(prefix_title_id) REFERENCES titles(title_id) ON DELETE SET NULL,
|
||||
FOREIGN KEY(suffix_title_id) REFERENCES titles(title_id) ON DELETE SET NULL
|
||||
)`,
|
||||
|
||||
// NPC tables
|
||||
`CREATE TABLE IF NOT EXISTS npcs (
|
||||
id INTEGER PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
level INTEGER DEFAULT 1,
|
||||
max_level INTEGER DEFAULT 1,
|
||||
race INTEGER DEFAULT 0,
|
||||
model_type INTEGER DEFAULT 0,
|
||||
size INTEGER DEFAULT 32,
|
||||
hp INTEGER DEFAULT 100,
|
||||
power INTEGER DEFAULT 100,
|
||||
x REAL DEFAULT 0,
|
||||
y REAL DEFAULT 0,
|
||||
z REAL DEFAULT 0,
|
||||
heading REAL DEFAULT 0,
|
||||
respawn_time INTEGER DEFAULT 300,
|
||||
zone_id INTEGER DEFAULT 0,
|
||||
aggro_radius REAL DEFAULT 10,
|
||||
ai_strategy INTEGER DEFAULT 0,
|
||||
loot_table_id INTEGER DEFAULT 0,
|
||||
merchant_type INTEGER DEFAULT 0,
|
||||
randomize_appearance INTEGER DEFAULT 0,
|
||||
show_name INTEGER DEFAULT 1,
|
||||
show_level INTEGER DEFAULT 1,
|
||||
targetable INTEGER DEFAULT 1,
|
||||
show_command_icon INTEGER DEFAULT 1,
|
||||
display_hand_icon INTEGER DEFAULT 0,
|
||||
faction_id INTEGER DEFAULT 0,
|
||||
created_date INTEGER,
|
||||
last_modified INTEGER
|
||||
)`,
|
||||
|
||||
`CREATE TABLE IF NOT EXISTS npc_spells (
|
||||
npc_id INTEGER NOT NULL,
|
||||
spell_id INTEGER NOT NULL,
|
||||
tier INTEGER DEFAULT 1,
|
||||
hp_percentage INTEGER DEFAULT 100,
|
||||
priority INTEGER DEFAULT 1,
|
||||
cast_type INTEGER DEFAULT 0,
|
||||
recast_delay INTEGER DEFAULT 5,
|
||||
PRIMARY KEY(npc_id, spell_id),
|
||||
FOREIGN KEY(npc_id) REFERENCES npcs(id) ON DELETE CASCADE
|
||||
)`,
|
||||
|
||||
`CREATE TABLE IF NOT EXISTS npc_skills (
|
||||
npc_id INTEGER NOT NULL,
|
||||
skill_name TEXT NOT NULL,
|
||||
skill_value INTEGER DEFAULT 0,
|
||||
max_value INTEGER DEFAULT 0,
|
||||
PRIMARY KEY(npc_id, skill_name),
|
||||
FOREIGN KEY(npc_id) REFERENCES npcs(id) ON DELETE CASCADE
|
||||
)`,
|
||||
|
||||
`CREATE TABLE IF NOT EXISTS npc_loot (
|
||||
npc_id INTEGER NOT NULL,
|
||||
item_id INTEGER NOT NULL,
|
||||
probability REAL DEFAULT 100.0,
|
||||
min_level INTEGER DEFAULT 0,
|
||||
max_level INTEGER DEFAULT 100,
|
||||
PRIMARY KEY(npc_id, item_id),
|
||||
FOREIGN KEY(npc_id) REFERENCES npcs(id) ON DELETE CASCADE
|
||||
)`,
|
||||
}
|
||||
|
||||
for _, schema := range schemas {
|
||||
|
@ -74,6 +74,13 @@ const (
|
||||
OP_CharacterTitles
|
||||
OP_SetActiveTitleMsg
|
||||
|
||||
// NPC system
|
||||
OP_NPCAttackMsg
|
||||
OP_NPCTargetMsg
|
||||
OP_NPCInfoMsg
|
||||
OP_NPCSpellCastMsg
|
||||
OP_NPCMovementMsg
|
||||
|
||||
// EverQuest specific commands - Core
|
||||
OP_EqHearChatCmd
|
||||
OP_EqDisplayTextCmd
|
||||
@ -131,6 +138,11 @@ var OpcodeNames = map[InternalOpcode]string{
|
||||
OP_TitleUpdateMsg: "OP_TitleUpdateMsg",
|
||||
OP_CharacterTitles: "OP_CharacterTitles",
|
||||
OP_SetActiveTitleMsg: "OP_SetActiveTitleMsg",
|
||||
OP_NPCAttackMsg: "OP_NPCAttackMsg",
|
||||
OP_NPCTargetMsg: "OP_NPCTargetMsg",
|
||||
OP_NPCInfoMsg: "OP_NPCInfoMsg",
|
||||
OP_NPCSpellCastMsg: "OP_NPCSpellCastMsg",
|
||||
OP_NPCMovementMsg: "OP_NPCMovementMsg",
|
||||
OP_EqHearChatCmd: "OP_EqHearChatCmd",
|
||||
OP_EqDisplayTextCmd: "OP_EqDisplayTextCmd",
|
||||
OP_EqCreateGhostCmd: "OP_EqCreateGhostCmd",
|
||||
|
794
internal/world/npc_manager.go
Normal file
794
internal/world/npc_manager.go
Normal file
@ -0,0 +1,794 @@
|
||||
package world
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sync"
|
||||
|
||||
"eq2emu/internal/npc"
|
||||
"eq2emu/internal/npc/ai"
|
||||
"eq2emu/internal/database"
|
||||
)
|
||||
|
||||
// NPCManager manages NPCs for the world server
|
||||
type NPCManager struct {
|
||||
npcManager *npc.Manager
|
||||
aiManager *ai.AIManager
|
||||
database *database.Database
|
||||
world *World // Reference to world server
|
||||
|
||||
// World-specific NPC tracking
|
||||
npcsByZone map[int32][]*npc.NPC // Zone ID -> NPCs
|
||||
activeCombat map[int32]bool // NPC ID -> in combat
|
||||
|
||||
mutex sync.RWMutex
|
||||
}
|
||||
|
||||
// NewNPCManager creates a new NPC manager for the world server
|
||||
func NewNPCManager(db *database.Database) *NPCManager {
|
||||
// Create adapters for the NPC system
|
||||
dbAdapter := &WorldNPCDatabaseAdapter{db: db}
|
||||
logAdapter := &WorldNPCLoggerAdapter{}
|
||||
|
||||
// Create core NPC manager
|
||||
npcMgr := npc.NewManager(dbAdapter, logAdapter)
|
||||
|
||||
// Create AI manager with logger
|
||||
aiMgr := ai.NewAIManager(logAdapter, nil) // No Lua interface for now
|
||||
|
||||
return &NPCManager{
|
||||
npcManager: npcMgr,
|
||||
aiManager: aiMgr,
|
||||
database: db,
|
||||
npcsByZone: make(map[int32][]*npc.NPC),
|
||||
activeCombat: make(map[int32]bool),
|
||||
}
|
||||
}
|
||||
|
||||
// SetWorld sets the world server reference
|
||||
func (nm *NPCManager) SetWorld(world *World) {
|
||||
nm.world = world
|
||||
}
|
||||
|
||||
// LoadNPCs loads all NPCs from database
|
||||
func (nm *NPCManager) LoadNPCs() error {
|
||||
fmt.Println("Loading NPC data...")
|
||||
|
||||
// Initialize the NPC manager
|
||||
err := nm.npcManager.Initialize()
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to initialize NPC manager: %w", err)
|
||||
}
|
||||
|
||||
// Load NPCs from database
|
||||
dbAdapter := &WorldNPCDatabaseAdapter{db: nm.database}
|
||||
dbNPCs, err := dbAdapter.LoadAllNPCs()
|
||||
if err != nil {
|
||||
fmt.Printf("Warning: Failed to load NPCs from database: %v\n", err)
|
||||
// Continue with test NPCs
|
||||
} else {
|
||||
// Add loaded NPCs to zone tracking and AI management
|
||||
for _, npc := range dbNPCs {
|
||||
if npc != nil {
|
||||
// Add to zone tracking (using zone ID from database or default)
|
||||
zoneID := int32(1) // TODO: Get actual zone ID from NPC
|
||||
nm.AddNPCToZone(zoneID, npc)
|
||||
|
||||
// Create AI brain for this NPC (skip for now due to interface incompatibility)
|
||||
// TODO: Create proper NPC-to-AI adapter or implement missing methods
|
||||
// err := nm.aiManager.CreateBrainForNPC(npc, ai.BrainTypeDefault)
|
||||
// if err != nil {
|
||||
// fmt.Printf("Warning: Failed to create AI brain for NPC %s: %v\n", npc.GetName(), err)
|
||||
// }
|
||||
}
|
||||
}
|
||||
fmt.Printf("Loaded %d NPCs from database\n", len(dbNPCs))
|
||||
}
|
||||
|
||||
// Setup default/test NPCs for development
|
||||
err = nm.createTestNPCs()
|
||||
if err != nil {
|
||||
fmt.Printf("Warning: Failed to create test NPCs: %v\n", err)
|
||||
}
|
||||
|
||||
stats := nm.npcManager.GetStatistics()
|
||||
fmt.Printf("Total NPCs loaded: %d\n", stats.TotalNPCs)
|
||||
return nil
|
||||
}
|
||||
|
||||
// createTestNPCs creates some test NPCs for development
|
||||
func (nm *NPCManager) createTestNPCs() error {
|
||||
fmt.Println("Creating test NPCs for development...")
|
||||
|
||||
// Create a few test NPCs using npc.NewNPC()
|
||||
testNPCs := []struct {
|
||||
id int32
|
||||
name string
|
||||
level int8
|
||||
zoneID int32
|
||||
}{
|
||||
{1001, "Test Goblin Scout", 5, 1},
|
||||
{1002, "Test Orc Warrior", 10, 1},
|
||||
{1003, "Test Forest Bear", 15, 2},
|
||||
{1004, "Test Fire Elemental", 20, 3},
|
||||
}
|
||||
|
||||
for _, testData := range testNPCs {
|
||||
// Create new NPC instance
|
||||
newNPC := npc.NewNPC()
|
||||
if newNPC == nil {
|
||||
return fmt.Errorf("failed to create NPC %s", testData.name)
|
||||
}
|
||||
|
||||
// Set basic NPC properties
|
||||
newNPC.SetID(testData.id)
|
||||
newNPC.SetName(testData.name)
|
||||
newNPC.SetLevel(int16(testData.level))
|
||||
|
||||
// Set some default stats based on level
|
||||
baseHP := int32(testData.level) * 50
|
||||
newNPC.SetTotalHP(baseHP)
|
||||
newNPC.SetHP(baseHP)
|
||||
|
||||
// Set position (placeholder coordinates)
|
||||
x := float32(100 + testData.id)
|
||||
y := float32(100 + testData.id)
|
||||
z := float32(50)
|
||||
newNPC.SetX(x)
|
||||
newNPC.SetY(y, false) // SetY takes bool parameter
|
||||
newNPC.SetZ(z)
|
||||
newNPC.SetHeadingFromFloat(0.0)
|
||||
|
||||
// Add to zone tracking
|
||||
nm.AddNPCToZone(testData.zoneID, newNPC)
|
||||
|
||||
// Create an AI brain for this NPC (skip for now due to interface incompatibility)
|
||||
// TODO: Create proper NPC-to-AI adapter or implement missing methods
|
||||
// err := nm.aiManager.CreateBrainForNPC(newNPC, ai.BrainTypeDefault)
|
||||
// if err != nil {
|
||||
// fmt.Printf("Warning: Failed to create AI brain for NPC %s: %v\n", testData.name, err)
|
||||
// }
|
||||
|
||||
fmt.Printf("Created test NPC: %s (ID: %d, Level: %d, Zone: %d)\n",
|
||||
testData.name, testData.id, testData.level, testData.zoneID)
|
||||
}
|
||||
|
||||
fmt.Printf("Successfully created %d test NPCs\n", len(testNPCs))
|
||||
return nil
|
||||
}
|
||||
|
||||
// ProcessNPCs processes all NPCs for one tick
|
||||
func (nm *NPCManager) ProcessNPCs() {
|
||||
nm.mutex.RLock()
|
||||
defer nm.mutex.RUnlock()
|
||||
|
||||
// Process AI for all NPCs
|
||||
nm.aiManager.ProcessAllBrains()
|
||||
|
||||
// Process NPC-specific logic
|
||||
stats := nm.npcManager.GetStatistics()
|
||||
if stats.NPCsInCombat > 0 {
|
||||
// Process combat NPCs
|
||||
nm.processCombatNPCs()
|
||||
}
|
||||
}
|
||||
|
||||
// processCombatNPCs handles NPCs currently in combat
|
||||
func (nm *NPCManager) processCombatNPCs() {
|
||||
nm.mutex.RLock()
|
||||
defer nm.mutex.RUnlock()
|
||||
|
||||
// Process each NPC that's in combat
|
||||
for npcID, inCombat := range nm.activeCombat {
|
||||
if !inCombat {
|
||||
continue
|
||||
}
|
||||
|
||||
// Find the NPC in our zone tracking
|
||||
var combatNPC *npc.NPC
|
||||
for _, npcs := range nm.npcsByZone {
|
||||
for _, npc := range npcs {
|
||||
if npc != nil && npc.GetID() == npcID {
|
||||
combatNPC = npc
|
||||
break
|
||||
}
|
||||
}
|
||||
if combatNPC != nil {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if combatNPC == nil {
|
||||
// NPC not found, remove from combat tracking
|
||||
delete(nm.activeCombat, npcID)
|
||||
continue
|
||||
}
|
||||
|
||||
// Skip if NPC is dead or incapacitated
|
||||
if !combatNPC.IsAlive() {
|
||||
delete(nm.activeCombat, npcID)
|
||||
continue
|
||||
}
|
||||
|
||||
// Process combat AI
|
||||
nm.processCombatNPC(combatNPC)
|
||||
}
|
||||
}
|
||||
|
||||
// processCombatNPC processes a single NPC in combat
|
||||
func (nm *NPCManager) processCombatNPC(npc *npc.NPC) {
|
||||
if npc == nil {
|
||||
return
|
||||
}
|
||||
|
||||
npcID := npc.GetID()
|
||||
// TODO: Implement proper target system - GetTarget() returns int32 not Entity
|
||||
// For now, simulate combat without target validation
|
||||
|
||||
// Check if NPC should still be in combat (placeholder logic)
|
||||
if !npc.IsAlive() {
|
||||
npc.InCombat(false)
|
||||
delete(nm.activeCombat, npcID)
|
||||
return
|
||||
}
|
||||
|
||||
// Simplified combat processing (placeholder until target system is implemented)
|
||||
fmt.Printf("NPC %s (%d) processing combat AI (simplified)\n", npc.GetName(), npcID)
|
||||
|
||||
// For now, just simulate combat for a few seconds then exit combat
|
||||
// TODO: Implement proper combat mechanics with target system
|
||||
// This is a placeholder to test the basic NPC system
|
||||
}
|
||||
|
||||
// TODO: Combat helper methods commented out due to interface incompatibilities
|
||||
// These will be re-implemented once proper target system and interfaces are resolved
|
||||
|
||||
// processCombatSpell handles NPC spell casting in combat
|
||||
// func (nm *NPCManager) processCombatSpell(npc *npc.NPC, target entity.Entity, spell Spell, distance float32) {
|
||||
// // Implementation deferred until interface issues are resolved
|
||||
// }
|
||||
|
||||
// processCombatMelee handles NPC melee combat
|
||||
// func (nm *NPCManager) processCombatMelee(npc *npc.NPC, target entity.Entity, distance float32) {
|
||||
// // Implementation deferred until interface issues are resolved
|
||||
// }
|
||||
|
||||
// processCombatMovement handles NPC movement in combat
|
||||
// func (nm *NPCManager) processCombatMovement(npc *npc.NPC, target entity.Entity, distance float32) {
|
||||
// // Implementation deferred until interface issues are resolved
|
||||
// }
|
||||
|
||||
// OnNPCKilled handles when an NPC is killed
|
||||
func (nm *NPCManager) OnNPCKilled(npcID int32, killerCharacterID int32) {
|
||||
nm.mutex.Lock()
|
||||
delete(nm.activeCombat, npcID)
|
||||
nm.mutex.Unlock()
|
||||
|
||||
// Trigger achievement events
|
||||
if nm.world != nil && nm.world.achievementMgr != nil {
|
||||
// Get NPC info
|
||||
npcInfo := nm.GetNPCInfo(npcID)
|
||||
if npcInfo != nil {
|
||||
// Trigger NPC kill event for achievements
|
||||
nm.world.OnNPCKill(killerCharacterID, npcID, int32(npcInfo.Level))
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Printf("NPC %d killed by character %d\n", npcID, killerCharacterID)
|
||||
}
|
||||
|
||||
// OnNPCEnteredCombat handles when an NPC enters combat
|
||||
func (nm *NPCManager) OnNPCEnteredCombat(npcID int32, targetID int32) {
|
||||
nm.mutex.Lock()
|
||||
nm.activeCombat[npcID] = true
|
||||
nm.mutex.Unlock()
|
||||
|
||||
fmt.Printf("NPC %d entered combat with target %d\n", npcID, targetID)
|
||||
}
|
||||
|
||||
// OnNPCLeftCombat handles when an NPC leaves combat
|
||||
func (nm *NPCManager) OnNPCLeftCombat(npcID int32) {
|
||||
nm.mutex.Lock()
|
||||
delete(nm.activeCombat, npcID)
|
||||
nm.mutex.Unlock()
|
||||
|
||||
fmt.Printf("NPC %d left combat\n", npcID)
|
||||
}
|
||||
|
||||
// GetNPCInfo gets basic info about an NPC
|
||||
func (nm *NPCManager) GetNPCInfo(npcID int32) *NPCInfo {
|
||||
nm.mutex.RLock()
|
||||
defer nm.mutex.RUnlock()
|
||||
|
||||
// First, check if we have the NPC in memory
|
||||
for _, npcs := range nm.npcsByZone {
|
||||
for _, npc := range npcs {
|
||||
if npc != nil && npc.GetID() == npcID {
|
||||
return &NPCInfo{
|
||||
ID: npc.GetID(),
|
||||
Name: npc.GetName(),
|
||||
Level: npc.GetLevel(),
|
||||
ZoneID: 0, // TODO: Get zone ID from NPC or tracking
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If not in memory, try to load from database
|
||||
row := nm.database.QueryRow(`
|
||||
SELECT id, name, level, zone_id
|
||||
FROM npcs
|
||||
WHERE id = ?
|
||||
`, npcID)
|
||||
|
||||
var id, zoneID int32
|
||||
var level int8
|
||||
var name string
|
||||
|
||||
err := row.Scan(&id, &name, &level, &zoneID)
|
||||
if err != nil {
|
||||
// NPC not found in database either, return default info
|
||||
return &NPCInfo{
|
||||
ID: npcID,
|
||||
Level: 1,
|
||||
Name: fmt.Sprintf("Unknown_NPC_%d", npcID),
|
||||
ZoneID: 0,
|
||||
}
|
||||
}
|
||||
|
||||
return &NPCInfo{
|
||||
ID: id,
|
||||
Name: name,
|
||||
Level: level,
|
||||
ZoneID: zoneID,
|
||||
}
|
||||
}
|
||||
|
||||
// GetNPCsByZone gets all NPCs in a zone
|
||||
func (nm *NPCManager) GetNPCsByZone(zoneID int32) []*npc.NPC {
|
||||
nm.mutex.RLock()
|
||||
defer nm.mutex.RUnlock()
|
||||
|
||||
if npcs, exists := nm.npcsByZone[zoneID]; exists {
|
||||
// Return a copy to avoid concurrent modification
|
||||
result := make([]*npc.NPC, len(npcs))
|
||||
copy(result, npcs)
|
||||
return result
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// AddNPCToZone adds an NPC to a zone's tracking
|
||||
func (nm *NPCManager) AddNPCToZone(zoneID int32, npc *npc.NPC) {
|
||||
nm.mutex.Lock()
|
||||
defer nm.mutex.Unlock()
|
||||
|
||||
nm.npcsByZone[zoneID] = append(nm.npcsByZone[zoneID], npc)
|
||||
}
|
||||
|
||||
// RemoveNPCFromZone removes an NPC from zone tracking
|
||||
func (nm *NPCManager) RemoveNPCFromZone(zoneID int32, npcID int32) {
|
||||
nm.mutex.Lock()
|
||||
defer nm.mutex.Unlock()
|
||||
|
||||
if npcs, exists := nm.npcsByZone[zoneID]; exists {
|
||||
for i, npc := range npcs {
|
||||
if npc != nil && npc.GetID() == npcID {
|
||||
// Remove NPC from slice
|
||||
nm.npcsByZone[zoneID] = append(npcs[:i], npcs[i+1:]...)
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// GetStatistics returns NPC system statistics
|
||||
func (nm *NPCManager) GetStatistics() map[string]interface{} {
|
||||
nm.mutex.RLock()
|
||||
defer nm.mutex.RUnlock()
|
||||
|
||||
// Get base statistics from NPC manager
|
||||
stats := nm.npcManager.GetStatistics()
|
||||
|
||||
// Add world-specific statistics
|
||||
totalZones := len(nm.npcsByZone)
|
||||
totalInCombat := len(nm.activeCombat)
|
||||
|
||||
result := map[string]interface{}{
|
||||
"total_npcs": stats.TotalNPCs,
|
||||
"npcs_in_combat": stats.NPCsInCombat,
|
||||
"npcs_with_spells": stats.NPCsWithSpells,
|
||||
"npcs_with_skills": stats.NPCsWithSkills,
|
||||
"spell_cast_count": stats.SpellCastCount,
|
||||
"skill_usage_count": stats.SkillUsageCount,
|
||||
"runback_count": stats.RunbackCount,
|
||||
"average_aggro_radius": stats.AverageAggroRadius,
|
||||
"ai_strategy_counts": stats.AIStrategyCounts,
|
||||
"zones_with_npcs": totalZones,
|
||||
"world_npcs_in_combat": totalInCombat,
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
// Shutdown gracefully shuts down the NPC manager
|
||||
func (nm *NPCManager) Shutdown() {
|
||||
fmt.Println("Shutting down NPC manager...")
|
||||
|
||||
nm.mutex.Lock()
|
||||
defer nm.mutex.Unlock()
|
||||
|
||||
// Clear all tracking
|
||||
nm.npcsByZone = make(map[int32][]*npc.NPC)
|
||||
nm.activeCombat = make(map[int32]bool)
|
||||
|
||||
// TODO: Shutdown AI manager when shutdown method is available
|
||||
// nm.aiManager.Shutdown()
|
||||
|
||||
fmt.Println("NPC manager shutdown complete")
|
||||
}
|
||||
|
||||
// NPCInfo represents basic information about an NPC
|
||||
type NPCInfo struct {
|
||||
ID int32
|
||||
Name string
|
||||
Level int8
|
||||
ZoneID int32
|
||||
}
|
||||
|
||||
// WorldNPCDatabaseAdapter adapts the world database for NPC use
|
||||
type WorldNPCDatabaseAdapter struct {
|
||||
db *database.Database
|
||||
}
|
||||
|
||||
// LoadAllNPCs implements npc.Database interface
|
||||
func (wdb *WorldNPCDatabaseAdapter) LoadAllNPCs() ([]*npc.NPC, error) {
|
||||
fmt.Println("Loading NPCs from database...")
|
||||
|
||||
rows, err := wdb.db.Query(`
|
||||
SELECT id, name, level, max_level, race, model_type, size, hp, power,
|
||||
x, y, z, heading, respawn_time, zone_id, aggro_radius, ai_strategy,
|
||||
loot_table_id, merchant_type, randomize_appearance, show_name,
|
||||
show_level, targetable, show_command_icon, display_hand_icon, faction_id
|
||||
FROM npcs
|
||||
ORDER BY zone_id, id
|
||||
`)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to query NPCs: %w", err)
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
var npcs []*npc.NPC
|
||||
|
||||
for rows.Next() {
|
||||
newNPC := npc.NewNPC()
|
||||
if newNPC == nil {
|
||||
continue // Skip if we can't create NPC
|
||||
}
|
||||
|
||||
var id, maxLevel, race, modelType, size, hp, power int32
|
||||
var x, y, z, heading, aggroRadius float32
|
||||
var respawnTime, zoneID, aiStrategy, lootTableID, merchantType int32
|
||||
var randomizeAppearance, showName, showLevel, targetable, showCommandIcon, displayHandIcon, factionID int32
|
||||
var name string
|
||||
var level int8
|
||||
|
||||
err := rows.Scan(&id, &name, &level, &maxLevel, &race, &modelType, &size,
|
||||
&hp, &power, &x, &y, &z, &heading, &respawnTime, &zoneID,
|
||||
&aggroRadius, &aiStrategy, &lootTableID, &merchantType,
|
||||
&randomizeAppearance, &showName, &showLevel, &targetable,
|
||||
&showCommandIcon, &displayHandIcon, &factionID)
|
||||
if err != nil {
|
||||
fmt.Printf("Error scanning NPC row: %v\n", err)
|
||||
continue
|
||||
}
|
||||
|
||||
// Set NPC properties
|
||||
newNPC.SetID(id)
|
||||
newNPC.SetName(name)
|
||||
newNPC.SetLevel(int16(level))
|
||||
newNPC.SetTotalHP(hp)
|
||||
newNPC.SetHP(hp)
|
||||
newNPC.SetX(x)
|
||||
newNPC.SetY(y, false)
|
||||
newNPC.SetZ(z)
|
||||
newNPC.SetHeadingFromFloat(heading)
|
||||
|
||||
// Set additional properties if the NPC supports them
|
||||
// TODO: Set additional properties like race, model type, etc.
|
||||
// This would require checking what methods are available on the NPC type
|
||||
|
||||
npcs = append(npcs, newNPC)
|
||||
|
||||
fmt.Printf("Loaded NPC: %s (ID: %d, Level: %d, Zone: %d)\n",
|
||||
name, id, level, zoneID)
|
||||
}
|
||||
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, fmt.Errorf("error iterating NPC rows: %w", err)
|
||||
}
|
||||
|
||||
fmt.Printf("Successfully loaded %d NPCs from database\n", len(npcs))
|
||||
return npcs, nil
|
||||
}
|
||||
|
||||
// SaveNPC implements npc.Database interface
|
||||
func (wdb *WorldNPCDatabaseAdapter) SaveNPC(npcEntity *npc.NPC) error {
|
||||
if npcEntity == nil {
|
||||
return fmt.Errorf("cannot save nil NPC")
|
||||
}
|
||||
|
||||
// Extract NPC properties for saving
|
||||
id := npcEntity.GetID()
|
||||
name := npcEntity.GetName()
|
||||
level := npcEntity.GetLevel()
|
||||
hp := npcEntity.GetTotalHP()
|
||||
x := npcEntity.GetX()
|
||||
y := npcEntity.GetY()
|
||||
z := npcEntity.GetZ()
|
||||
heading := npcEntity.GetHeading()
|
||||
|
||||
// Insert or update NPC in database
|
||||
_, err := wdb.db.Exec(`
|
||||
INSERT OR REPLACE INTO npcs
|
||||
(id, name, level, max_level, race, model_type, size, hp, power,
|
||||
x, y, z, heading, respawn_time, zone_id, aggro_radius, ai_strategy,
|
||||
loot_table_id, merchant_type, randomize_appearance, show_name,
|
||||
show_level, targetable, show_command_icon, display_hand_icon, faction_id,
|
||||
created_date, last_modified)
|
||||
VALUES
|
||||
(?, ?, ?, ?, 0, 0, 32, ?, ?, ?, ?, ?, ?, 300, 0, 10.0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0,
|
||||
strftime('%s', 'now'), strftime('%s', 'now'))
|
||||
`, id, name, level, level, hp, hp, x, y, z, heading)
|
||||
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to save NPC %d: %w", id, err)
|
||||
}
|
||||
|
||||
fmt.Printf("Saved NPC: %s (ID: %d) to database\n", name, id)
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeleteNPC implements npc.Database interface
|
||||
func (wdb *WorldNPCDatabaseAdapter) DeleteNPC(npcID int32) error {
|
||||
// Start transaction to delete NPC and related data
|
||||
tx, err := wdb.db.Begin()
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to begin transaction: %w", err)
|
||||
}
|
||||
defer tx.Rollback()
|
||||
|
||||
// Delete related data first (due to foreign key constraints)
|
||||
_, err = tx.Exec("DELETE FROM npc_spells WHERE npc_id = ?", npcID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to delete NPC spells: %w", err)
|
||||
}
|
||||
|
||||
_, err = tx.Exec("DELETE FROM npc_skills WHERE npc_id = ?", npcID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to delete NPC skills: %w", err)
|
||||
}
|
||||
|
||||
_, err = tx.Exec("DELETE FROM npc_loot WHERE npc_id = ?", npcID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to delete NPC loot: %w", err)
|
||||
}
|
||||
|
||||
// Delete the NPC itself
|
||||
result, err := tx.Exec("DELETE FROM npcs WHERE id = ?", npcID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to delete NPC: %w", err)
|
||||
}
|
||||
|
||||
// Check if NPC was actually deleted
|
||||
rowsAffected, err := result.RowsAffected()
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to check rows affected: %w", err)
|
||||
}
|
||||
|
||||
if rowsAffected == 0 {
|
||||
return fmt.Errorf("NPC %d not found", npcID)
|
||||
}
|
||||
|
||||
// Commit transaction
|
||||
if err := tx.Commit(); err != nil {
|
||||
return fmt.Errorf("failed to commit transaction: %w", err)
|
||||
}
|
||||
|
||||
fmt.Printf("Deleted NPC %d from database\n", npcID)
|
||||
return nil
|
||||
}
|
||||
|
||||
// LoadNPCSpells implements npc.Database interface
|
||||
func (wdb *WorldNPCDatabaseAdapter) LoadNPCSpells(npcID int32) ([]*npc.NPCSpell, error) {
|
||||
rows, err := wdb.db.Query(`
|
||||
SELECT npc_id, spell_id, tier, hp_percentage, priority, cast_type, recast_delay
|
||||
FROM npc_spells
|
||||
WHERE npc_id = ?
|
||||
ORDER BY priority DESC, hp_percentage DESC
|
||||
`, npcID)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to query NPC spells: %w", err)
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
var spells []*npc.NPCSpell
|
||||
|
||||
for rows.Next() {
|
||||
spell := npc.NewNPCSpell()
|
||||
var npcIDDB, spellID, tier, hpPercentage, priority, castType, recastDelay int32
|
||||
|
||||
err := rows.Scan(&npcIDDB, &spellID, &tier, &hpPercentage, &priority, &castType, &recastDelay)
|
||||
if err != nil {
|
||||
fmt.Printf("Error scanning NPC spell row: %v\n", err)
|
||||
continue
|
||||
}
|
||||
|
||||
// Set spell properties (using available methods from NPCSpell)
|
||||
// TODO: Set spell properties based on what methods are available
|
||||
// spell.SetSpellID(spellID)
|
||||
// spell.SetTier(tier)
|
||||
// spell.SetHPPercentage(hpPercentage)
|
||||
// spell.SetPriority(priority)
|
||||
// spell.SetCastType(castType)
|
||||
// spell.SetRecastDelay(recastDelay)
|
||||
|
||||
spells = append(spells, spell)
|
||||
}
|
||||
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, fmt.Errorf("error iterating NPC spell rows: %w", err)
|
||||
}
|
||||
|
||||
return spells, nil
|
||||
}
|
||||
|
||||
// SaveNPCSpells implements npc.Database interface
|
||||
func (wdb *WorldNPCDatabaseAdapter) SaveNPCSpells(npcID int32, spells []*npc.NPCSpell) error {
|
||||
// Start transaction
|
||||
tx, err := wdb.db.Begin()
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to begin transaction: %w", err)
|
||||
}
|
||||
defer tx.Rollback()
|
||||
|
||||
// Delete existing spells for this NPC
|
||||
_, err = tx.Exec("DELETE FROM npc_spells WHERE npc_id = ?", npcID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to delete existing NPC spells: %w", err)
|
||||
}
|
||||
|
||||
// Insert new spells
|
||||
for _, spell := range spells {
|
||||
if spell == nil {
|
||||
continue
|
||||
}
|
||||
|
||||
// TODO: Get spell properties from NPCSpell object
|
||||
// For now, use placeholder values
|
||||
_, err = tx.Exec(`
|
||||
INSERT INTO npc_spells
|
||||
(npc_id, spell_id, tier, hp_percentage, priority, cast_type, recast_delay)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?)
|
||||
`, npcID, 1, 1, 100, 1, 0, 5) // Placeholder values
|
||||
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to save NPC spell: %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
// Commit transaction
|
||||
if err := tx.Commit(); err != nil {
|
||||
return fmt.Errorf("failed to commit transaction: %w", err)
|
||||
}
|
||||
|
||||
fmt.Printf("Saved %d spells for NPC %d\n", len(spells), npcID)
|
||||
return nil
|
||||
}
|
||||
|
||||
// LoadNPCSkills implements npc.Database interface
|
||||
func (wdb *WorldNPCDatabaseAdapter) LoadNPCSkills(npcID int32) (map[string]*npc.Skill, error) {
|
||||
rows, err := wdb.db.Query(`
|
||||
SELECT npc_id, skill_name, skill_value, max_value
|
||||
FROM npc_skills
|
||||
WHERE npc_id = ?
|
||||
ORDER BY skill_name
|
||||
`, npcID)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to query NPC skills: %w", err)
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
skills := make(map[string]*npc.Skill)
|
||||
|
||||
for rows.Next() {
|
||||
var npcIDDB, skillValue, maxValue int32
|
||||
var skillName string
|
||||
|
||||
err := rows.Scan(&npcIDDB, &skillName, &skillValue, &maxValue)
|
||||
if err != nil {
|
||||
fmt.Printf("Error scanning NPC skill row: %v\n", err)
|
||||
continue
|
||||
}
|
||||
|
||||
// Create skill object
|
||||
skill := npc.NewSkill(0, skillName, int16(skillValue), int16(maxValue))
|
||||
|
||||
skills[skillName] = skill
|
||||
}
|
||||
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, fmt.Errorf("error iterating NPC skill rows: %w", err)
|
||||
}
|
||||
|
||||
return skills, nil
|
||||
}
|
||||
|
||||
// SaveNPCSkills implements npc.Database interface
|
||||
func (wdb *WorldNPCDatabaseAdapter) SaveNPCSkills(npcID int32, skills map[string]*npc.Skill) error {
|
||||
// Start transaction
|
||||
tx, err := wdb.db.Begin()
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to begin transaction: %w", err)
|
||||
}
|
||||
defer tx.Rollback()
|
||||
|
||||
// Delete existing skills for this NPC
|
||||
_, err = tx.Exec("DELETE FROM npc_skills WHERE npc_id = ?", npcID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to delete existing NPC skills: %w", err)
|
||||
}
|
||||
|
||||
// Insert new skills
|
||||
for skillName, skill := range skills {
|
||||
if skill == nil {
|
||||
continue
|
||||
}
|
||||
|
||||
// Get skill values (need to access directly since GetMaxVal doesn't exist)
|
||||
currentVal := skill.GetCurrentVal()
|
||||
// TODO: Add GetMaxVal method to Skill struct or access MaxVal field
|
||||
maxVal := int16(100) // Placeholder - should be skill.MaxVal when accessible
|
||||
|
||||
_, err = tx.Exec(`
|
||||
INSERT INTO npc_skills
|
||||
(npc_id, skill_name, skill_value, max_value)
|
||||
VALUES (?, ?, ?, ?)
|
||||
`, npcID, skillName, currentVal, maxVal)
|
||||
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to save NPC skill %s: %w", skillName, err)
|
||||
}
|
||||
}
|
||||
|
||||
// Commit transaction
|
||||
if err := tx.Commit(); err != nil {
|
||||
return fmt.Errorf("failed to commit transaction: %w", err)
|
||||
}
|
||||
|
||||
fmt.Printf("Saved %d skills for NPC %d\n", len(skills), npcID)
|
||||
return nil
|
||||
}
|
||||
|
||||
// WorldNPCLoggerAdapter adapts world logging for NPC use
|
||||
type WorldNPCLoggerAdapter struct{}
|
||||
|
||||
// LogInfo implements npc.Logger interface
|
||||
func (wl *WorldNPCLoggerAdapter) LogInfo(message string, args ...any) {
|
||||
fmt.Printf("[NPC] INFO: "+message+"\n", args...)
|
||||
}
|
||||
|
||||
// LogError implements npc.Logger interface
|
||||
func (wl *WorldNPCLoggerAdapter) LogError(message string, args ...any) {
|
||||
fmt.Printf("[NPC] ERROR: "+message+"\n", args...)
|
||||
}
|
||||
|
||||
// LogDebug implements npc.Logger interface
|
||||
func (wl *WorldNPCLoggerAdapter) LogDebug(message string, args ...any) {
|
||||
fmt.Printf("[NPC] DEBUG: "+message+"\n", args...)
|
||||
}
|
||||
|
||||
// LogWarning implements npc.Logger interface
|
||||
func (wl *WorldNPCLoggerAdapter) LogWarning(message string, args ...any) {
|
||||
fmt.Printf("[NPC] WARNING: "+message+"\n", args...)
|
||||
}
|
@ -42,7 +42,14 @@ func (w *World) RegisterPacketHandlers() {
|
||||
packets.RegisterGlobalHandler(packets.OP_CharacterTitles, w.HandleCharacterTitles)
|
||||
packets.RegisterGlobalHandler(packets.OP_SetActiveTitleMsg, w.HandleSetActiveTitle)
|
||||
|
||||
fmt.Printf("Registered %d packet handlers\n", 16)
|
||||
// NPC system
|
||||
packets.RegisterGlobalHandler(packets.OP_NPCAttackMsg, w.HandleNPCAttack)
|
||||
packets.RegisterGlobalHandler(packets.OP_NPCTargetMsg, w.HandleNPCTarget)
|
||||
packets.RegisterGlobalHandler(packets.OP_NPCInfoMsg, w.HandleNPCInfo)
|
||||
packets.RegisterGlobalHandler(packets.OP_NPCSpellCastMsg, w.HandleNPCSpellCast)
|
||||
packets.RegisterGlobalHandler(packets.OP_NPCMovementMsg, w.HandleNPCMovement)
|
||||
|
||||
fmt.Printf("Registered %d packet handlers\n", 21)
|
||||
}
|
||||
|
||||
// HandleDoneLoadingZoneResources handles when client finishes loading zone resources
|
||||
@ -430,6 +437,158 @@ func (w *World) SendCharacterTitles(client *Client) {
|
||||
titleCount, totalTitles, formattedName))
|
||||
}
|
||||
|
||||
// NPC Packet Handlers
|
||||
|
||||
// HandleNPCAttack handles NPC attack packets from clients
|
||||
func (w *World) HandleNPCAttack(ctx *packets.PacketContext, packet *packets.PacketData) error {
|
||||
fmt.Printf("Client %s sent NPC attack packet\n", ctx.Client.GetCharacterName())
|
||||
|
||||
client := w.clients.GetByCharacterID(ctx.Client.GetCharacterID())
|
||||
if client != nil {
|
||||
client.UpdateActivity()
|
||||
|
||||
// TODO: Parse NPC ID and attack type from packet data
|
||||
// TODO: Validate player can attack NPC
|
||||
// TODO: Process attack through combat system
|
||||
// TODO: Send attack result to client and nearby players
|
||||
|
||||
// For now, just trigger a test NPC kill event for achievement testing
|
||||
if w.npcMgr != nil {
|
||||
testNPCID := int32(1001)
|
||||
w.npcMgr.OnNPCKilled(testNPCID, ctx.Client.GetCharacterID())
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// HandleNPCTarget handles NPC targeting packets from clients
|
||||
func (w *World) HandleNPCTarget(ctx *packets.PacketContext, packet *packets.PacketData) error {
|
||||
fmt.Printf("Client %s sent NPC target packet\n", ctx.Client.GetCharacterName())
|
||||
|
||||
client := w.clients.GetByCharacterID(ctx.Client.GetCharacterID())
|
||||
if client != nil {
|
||||
client.UpdateActivity()
|
||||
|
||||
// TODO: Parse NPC ID from packet data
|
||||
// TODO: Validate NPC exists and is targetable
|
||||
// TODO: Set player's target
|
||||
// TODO: Send targeting confirmation to client
|
||||
|
||||
// For testing, send NPC info for any targeting
|
||||
w.SendNPCInfo(client, 1001) // Test NPC
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// HandleNPCInfo handles NPC info requests from clients
|
||||
func (w *World) HandleNPCInfo(ctx *packets.PacketContext, packet *packets.PacketData) error {
|
||||
fmt.Printf("Client %s requested NPC info\n", ctx.Client.GetCharacterName())
|
||||
|
||||
client := w.clients.GetByCharacterID(ctx.Client.GetCharacterID())
|
||||
if client != nil {
|
||||
client.UpdateActivity()
|
||||
|
||||
// TODO: Parse NPC ID from packet data
|
||||
// TODO: Send NPC information to client
|
||||
|
||||
// For testing, send test NPC info
|
||||
w.SendNPCInfo(client, 1001)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// HandleNPCSpellCast handles NPC spell cast notifications
|
||||
func (w *World) HandleNPCSpellCast(ctx *packets.PacketContext, packet *packets.PacketData) error {
|
||||
fmt.Printf("Client %s received NPC spell cast notification\n", ctx.Client.GetCharacterName())
|
||||
|
||||
client := w.clients.GetByCharacterID(ctx.Client.GetCharacterID())
|
||||
if client != nil {
|
||||
client.UpdateActivity()
|
||||
|
||||
// TODO: Parse spell cast data from packet
|
||||
// TODO: Process spell effects
|
||||
// TODO: Update client state based on spell effects
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// HandleNPCMovement handles NPC movement updates
|
||||
func (w *World) HandleNPCMovement(ctx *packets.PacketContext, packet *packets.PacketData) error {
|
||||
// NPC movement updates can be frequent, so only log occasionally
|
||||
client := w.clients.GetByCharacterID(ctx.Client.GetCharacterID())
|
||||
if client != nil {
|
||||
client.UpdateActivity()
|
||||
|
||||
// TODO: Parse NPC movement data from packet
|
||||
// TODO: Update NPC position in world
|
||||
// TODO: Send movement update to other clients in range
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// SendNPCInfo sends NPC information to a client
|
||||
func (w *World) SendNPCInfo(client *Client, npcID int32) {
|
||||
if w.npcMgr == nil {
|
||||
return
|
||||
}
|
||||
|
||||
// Get NPC information
|
||||
npcInfo := w.npcMgr.GetNPCInfo(npcID)
|
||||
if npcInfo == nil {
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Printf("Sending NPC info to %s: NPC %d (%s) Level %d\n",
|
||||
client.CharacterName, npcInfo.ID, npcInfo.Name, npcInfo.Level)
|
||||
|
||||
// Get NPC statistics for additional info
|
||||
stats := w.npcMgr.GetStatistics()
|
||||
|
||||
// Create NPC info packet (placeholder)
|
||||
client.SendSimpleMessage(fmt.Sprintf("NPC Info: %s (ID: %d, Level: %d) - %v total NPCs active",
|
||||
npcInfo.Name, npcInfo.ID, npcInfo.Level, stats["total_npcs"]))
|
||||
}
|
||||
|
||||
// SendNPCUpdate sends NPC update to clients in range
|
||||
func (w *World) SendNPCUpdate(npcID int32, updateType string, data map[string]interface{}) {
|
||||
// TODO: Implement NPC update broadcasting
|
||||
// This would send updates to all clients in range of the NPC
|
||||
|
||||
fmt.Printf("NPC Update: NPC %d - %s: %v\n", npcID, updateType, data)
|
||||
|
||||
// Get all clients and send update (placeholder)
|
||||
clients := w.clients.GetAll()
|
||||
for _, client := range clients {
|
||||
if client.CurrentZone != nil {
|
||||
// TODO: Check if client is in range of NPC
|
||||
client.SendSimpleMessage(fmt.Sprintf("NPC Update: %s for NPC %d", updateType, npcID))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// SendNPCCombatUpdate sends combat-related NPC updates to clients
|
||||
func (w *World) SendNPCCombatUpdate(npcID int32, targetID int32, combatType string, damage int32) {
|
||||
// TODO: Implement NPC combat update broadcasting
|
||||
|
||||
fmt.Printf("NPC Combat Update: NPC %d -> Target %d, %s for %d damage\n",
|
||||
npcID, targetID, combatType, damage)
|
||||
|
||||
// Send to relevant clients (placeholder)
|
||||
clients := w.clients.GetAll()
|
||||
for _, client := range clients {
|
||||
if client.CurrentZone != nil && (client.CharacterID == targetID ||
|
||||
client.CharacterID == npcID) { // TODO: Proper range check
|
||||
client.SendSimpleMessage(fmt.Sprintf("Combat: NPC %d %s target %d for %d damage",
|
||||
npcID, combatType, targetID, damage))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// WorldDatabaseAdapter adapts the World's database for packet handlers
|
||||
type WorldDatabaseAdapter struct {
|
||||
world *World
|
||||
|
@ -41,6 +41,9 @@ type World struct {
|
||||
// Title system
|
||||
titleMgr *TitleManager
|
||||
|
||||
// NPC system
|
||||
npcMgr *NPCManager
|
||||
|
||||
// Master lists (singletons)
|
||||
masterSpells interface{} // TODO: implement spell manager
|
||||
masterItems interface{} // TODO: implement item manager
|
||||
@ -153,6 +156,9 @@ func NewWorld(config *WorldConfig) (*World, error) {
|
||||
// Initialize title manager
|
||||
titleMgr := NewTitleManager(db)
|
||||
|
||||
// Initialize NPC manager
|
||||
npcMgr := NewNPCManager(db)
|
||||
|
||||
// Create context
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
|
||||
@ -162,6 +168,7 @@ func NewWorld(config *WorldConfig) (*World, error) {
|
||||
rulesManager: rulesManager,
|
||||
achievementMgr: achievementMgr,
|
||||
titleMgr: titleMgr,
|
||||
npcMgr: npcMgr,
|
||||
config: config,
|
||||
startTime: time.Now(),
|
||||
worldTime: &WorldTime{Year: 3721, Month: 1, Day: 1, Hour: 12, Minute: 0},
|
||||
@ -176,6 +183,7 @@ func NewWorld(config *WorldConfig) (*World, error) {
|
||||
|
||||
// Set world references for cross-system communication
|
||||
achievementMgr.SetWorld(w)
|
||||
npcMgr.SetWorld(w)
|
||||
|
||||
// Load server data from database
|
||||
if err := w.loadServerData(); err != nil {
|
||||
@ -255,6 +263,11 @@ func (w *World) Stop() error {
|
||||
w.titleMgr.Shutdown()
|
||||
}
|
||||
|
||||
// Shutdown NPC manager
|
||||
if w.npcMgr != nil {
|
||||
w.npcMgr.Shutdown()
|
||||
}
|
||||
|
||||
// Close database
|
||||
if w.db != nil {
|
||||
w.db.Close()
|
||||
@ -287,6 +300,9 @@ func (w *World) processFrame() {
|
||||
// Process clients
|
||||
w.clients.ProcessAll()
|
||||
|
||||
// Process NPCs
|
||||
w.npcMgr.ProcessNPCs()
|
||||
|
||||
// Check for scheduled shutdown
|
||||
w.checkShutdown()
|
||||
|
||||
@ -414,6 +430,12 @@ func (w *World) loadServerData() error {
|
||||
// Don't fail startup if titles don't load - server can still run
|
||||
}
|
||||
|
||||
// Load NPCs
|
||||
if err := w.npcMgr.LoadNPCs(); err != nil {
|
||||
fmt.Printf("Warning: Failed to load NPCs: %v\n", err)
|
||||
// Don't fail startup if NPCs don't load - server can still run
|
||||
}
|
||||
|
||||
// Setup title and achievement integration
|
||||
w.setupTitleAchievementIntegration()
|
||||
|
||||
@ -525,6 +547,11 @@ func (w *World) GetTitleManager() *TitleManager {
|
||||
return w.titleMgr
|
||||
}
|
||||
|
||||
// GetNPCManager returns the NPC manager
|
||||
func (w *World) GetNPCManager() *NPCManager {
|
||||
return w.npcMgr
|
||||
}
|
||||
|
||||
// loadSampleOpcodeMappings loads sample opcode mappings for testing
|
||||
func (w *World) loadSampleOpcodeMappings() {
|
||||
fmt.Println("Loading sample opcode mappings...")
|
||||
@ -573,6 +600,11 @@ func (w *World) loadSampleOpcodeMappings() {
|
||||
"OP_TitleUpdateMsg": 0x0092,
|
||||
"OP_CharacterTitles": 0x0093,
|
||||
"OP_SetActiveTitleMsg": 0x0094,
|
||||
"OP_NPCAttackMsg": 0x0095,
|
||||
"OP_NPCTargetMsg": 0x0096,
|
||||
"OP_NPCInfoMsg": 0x0097,
|
||||
"OP_NPCSpellCastMsg": 0x0098,
|
||||
"OP_NPCMovementMsg": 0x0099,
|
||||
"OP_EqHearChatCmd": 0x1000,
|
||||
"OP_EqDisplayTextCmd": 0x1001,
|
||||
"OP_EqCreateGhostCmd": 0x1002,
|
||||
|
14
sql/account.sql
Executable file
14
sql/account.sql
Executable file
@ -0,0 +1,14 @@
|
||||
DROP TABLE IF EXISTS accounts;
|
||||
CREATE TABLE IF NOT EXISTS accounts (
|
||||
id INTEGER PRIMARY KEY,
|
||||
name TEXT NOT NULL UNIQUE,
|
||||
password TEXT NOT NULL,
|
||||
ip_address TEXT NOT NULL DEFAULT '0',
|
||||
email_address TEXT NOT NULL DEFAULT 'Unknown',
|
||||
created_date INTEGER NOT NULL DEFAULT 0,
|
||||
key1 TEXT NOT NULL DEFAULT '0',
|
||||
last_update INTEGER NOT NULL DEFAULT (strftime('%s', 'now')),
|
||||
hack_count INTEGER NOT NULL DEFAULT 0,
|
||||
last_client_version INTEGER NOT NULL DEFAULT 0,
|
||||
account_enabled INTEGER NOT NULL DEFAULT 1
|
||||
);
|
9
sql/account_reset.sql
Executable file
9
sql/account_reset.sql
Executable file
@ -0,0 +1,9 @@
|
||||
DROP TABLE IF EXISTS account_reset;
|
||||
CREATE TABLE account_reset (
|
||||
id INTEGER PRIMARY KEY,
|
||||
account_id INTEGER NOT NULL,
|
||||
token TEXT NOT NULL UNIQUE,
|
||||
ip TEXT NOT NULL,
|
||||
expires INTEGER NOT NULL
|
||||
);
|
||||
CREATE INDEX idx_account_id ON account_reset(account_id);
|
8
sql/account_reset_request.sql
Executable file
8
sql/account_reset_request.sql
Executable file
@ -0,0 +1,8 @@
|
||||
DROP TABLE IF EXISTS account_reset_request;
|
||||
CREATE TABLE account_reset_request (
|
||||
id INTEGER PRIMARY KEY,
|
||||
email TEXT NOT NULL,
|
||||
token TEXT NOT NULL UNIQUE,
|
||||
expires INTEGER NOT NULL,
|
||||
ip TEXT NOT NULL
|
||||
);
|
10
sql/account_verify.sql
Executable file
10
sql/account_verify.sql
Executable file
@ -0,0 +1,10 @@
|
||||
DROP TABLE IF EXISTS account_verify;
|
||||
CREATE TABLE account_verify (
|
||||
id INTEGER PRIMARY KEY,
|
||||
account_id INTEGER NOT NULL,
|
||||
token TEXT NOT NULL UNIQUE,
|
||||
email TEXT NOT NULL,
|
||||
ip TEXT NOT NULL,
|
||||
expires INTEGER NOT NULL
|
||||
);
|
||||
CREATE INDEX idx_account_verify_account_id ON account_verify(account_id);
|
1189
sql/achievements.sql
Executable file
1189
sql/achievements.sql
Executable file
File diff suppressed because it is too large
Load Diff
1765
sql/achievements_requirements.sql
Executable file
1765
sql/achievements_requirements.sql
Executable file
File diff suppressed because it is too large
Load Diff
112
sql/achievements_rewards.sql
Executable file
112
sql/achievements_rewards.sql
Executable file
@ -0,0 +1,112 @@
|
||||
DROP TABLE IF EXISTS achievements_rewards;
|
||||
CREATE TABLE achievements_rewards (
|
||||
id INTEGER PRIMARY KEY,
|
||||
achievement_id INTEGER NOT NULL DEFAULT 0,
|
||||
reward TEXT DEFAULT '"',
|
||||
UNIQUE(achievement_id, reward),
|
||||
FOREIGN KEY (achievement_id) REFERENCES achievements(achievement_id) ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
INSERT INTO achievements_rewards VALUES
|
||||
(1,46246467,'Suffix Title: , Destroyer of Ravasect'),
|
||||
(2,54497657,'Suffix Title: , Slayer of Bugbears'),
|
||||
(3,94506724,'Suffix Title: , Destroyer of Undead'),
|
||||
(4,110495019,'Suffix Title: , Destroyer of Brownies'),
|
||||
(5,221450394,'Suffix Title: , Hunter of Satyrs'),
|
||||
(6,256313295,'Suffix Title: , Destroyer of Cyclops'),
|
||||
(7,279550421,'Suffix Title: , Hunter of Harpies'),
|
||||
(8,306821810,'\\aITEM 1623770183 399104622:Shadow Achievements Armor Crate\\/a'),
|
||||
(9,368728538,'Suffix Title: , Hunter of Droag'),
|
||||
(10,407089006,'Suffix Title: , Destroyer of Clockworks'),
|
||||
(11,468420891,'Suffix Title: , Slayer of Frogloks'),
|
||||
(12,477094014,'\\aITEM 1412312483 -758187389:Finely Crafted World Device Pack\\/a'),
|
||||
(13,489542105,'Suffix Title: the Dragon Slayer'),
|
||||
(14,494075014,'Suffix Title: the Festive Spirit'),
|
||||
(15,494075014,'\\aITEM -2124062948 -10636300:Bauble of Holidays Past\\/a'),
|
||||
(16,533795521,'Suffix Title: the Patient'),
|
||||
(17,573571278,'Suffix Title: , Destroyer of Kobolds'),
|
||||
(18,593223332,'Suffix Title: , Slayer of Ravasect'),
|
||||
(19,624072410,'Suffix Title: , Hunter of Djinn'),
|
||||
(20,677130434,'\\aITEM -569363189 385709162:Kunark Achievements Armor Crate\\/a'),
|
||||
(21,702815562,'Prefix Title: Agent'),
|
||||
(22,720964386,'\\aITEM -1342625052 1596038975:Overrealm Achievements Plate Armor Crate\\/a'),
|
||||
(23,729017197,'\\aITEM 2043263597 -824510996:mystical Trakanon plushie\\/a'),
|
||||
(24,758866080,'Suffix Title: , Slayer of Undead'),
|
||||
(25,790211199,'Suffix Title: , Hunter of Drolvarg'),
|
||||
(26,794237718,'\\aITEM 1868948853 497650008:Overrealm Achievements Leather Armor Crate\\/a'),
|
||||
(27,824348949,'Suffix Title: , Hunter of Orcs'),
|
||||
(28,898156960,'Suffix Title: , Hunter of Werewolves'),
|
||||
(29,906918374,'Suffix Title: , Slayer of Satyrs'),
|
||||
(30,926346121,'Suffix Title: , Slayer of Yha-lei'),
|
||||
(31,965684687,'Suffix Title: , Hunter of Undead'),
|
||||
(32,1000677114,'Suffix Title: , Hunter of Clockworks'),
|
||||
(33,1067182952,'Prefix Title: Secret Agent'),
|
||||
(34,1077521985,'\\aITEM -250663756 -874167495:Perceptive Title\\/a'),
|
||||
(35,1084249066,'Suffix Title: , Destroyer of Werewolves'),
|
||||
(36,1087041855,'Suffix Title: , Slayer of Droag'),
|
||||
(37,1090140656,'Suffix Title: , Slayer of Djinn'),
|
||||
(38,1122163347,'\\aITEM 1171117000 1739086518:Ro Achievements Robe Crate\\/a'),
|
||||
(39,1152701171,'\\aITEM -686936604 2141934958:Collector Title\\/a'),
|
||||
(40,1164965067,'Suffix Title: the Urgent'),
|
||||
(41,1191877379,'Suffix Title: , Destroyer of Yha-lei'),
|
||||
(42,1195727451,'Suffix Title: , Destroyer of Fairies'),
|
||||
(43,1252172427,'Suffix Title: , Slayer of Aviaks'),
|
||||
(44,1261827798,'Suffix Title: , Slayer of Orcs'),
|
||||
(45,1262333442,'Suffix Title: , Hunter of Cyclops'),
|
||||
(46,1329682798,'Suffix Title: , Slayer of Elementals'),
|
||||
(47,1362383246,'Prefix Title: Master Crafter'),
|
||||
(48,1396477565,'\\aITEM 424243545 1161731314:mystical Nayad plushie\\/a'),
|
||||
(49,1434752622,'\\aITEM -1852270823 100933566:Shadow Achievements Robe Crate\\/a'),
|
||||
(50,1477261292,'Suffix Title: , Destroyer of Gnolls'),
|
||||
(51,1495774217,'Suffix Title: , Destroyer of Frogloks'),
|
||||
(52,1702850976,'Suffix Title: , Destroyer of Droag'),
|
||||
(53,1856282185,'Suffix Title: , Destroyer of Djinn'),
|
||||
(54,1878227188,'Prefix Title: Beastmaster'),
|
||||
(55,1886984256,'\\aITEM 1360800669 -613940747:mystical Wuoshi plushie\\/a'),
|
||||
(56,2029499273,'Suffix Title: , Slayer of Fairies'),
|
||||
(57,2031917930,'Suffix Title: , Destroyer of Elementals'),
|
||||
(58,2036159145,'\\aITEM 282702922 312528747:Cloak of Shimmering Faith\\/a'),
|
||||
(59,2038672012,'Suffix Title: , Destroyer of Harpies'),
|
||||
(60,2072678064,'Suffix Title: , Slayer of Clockworks'),
|
||||
(61,2097662548,'Suffix Title: , Hunter of Aviaks'),
|
||||
(62,2113513978,'Suffix Title: , Slayer of Di''Zok'),
|
||||
(63,2154756287,'\\aITEM -700538692 427032089:Ro Achievements Armor Crate\\/a'),
|
||||
(64,2190151282,'Suffix Title: , Hunter of Vampires'),
|
||||
(65,2193169351,'Suffix Title: , Hunter of Ravasect'),
|
||||
(66,2306045362,'Suffix Title: , Hunter of Bugbears'),
|
||||
(67,2365434921,'Suffix Title: the Time Traveler'),
|
||||
(68,2371825149,'\\aITEM 1115278187 -371515905:Kunark Achievements Robe Crate\\/a'),
|
||||
(69,2387375303,'Suffix Title: , Destroyer of Di''Zok'),
|
||||
(70,2419239653,'Suffix Title: of the Deepwater Circle'),
|
||||
(71,2419239653,'\\aITEM 2121311715 1995827758:The Deepwater Circle\\/a'),
|
||||
(72,2461769801,'Suffix Title: , Destroyer of Drolvarg'),
|
||||
(73,2555423666,'Suffix Title: , Slayer of Vampires'),
|
||||
(74,2584141656,'Suffix Title: , Destroyer of Satyrs'),
|
||||
(75,2621884060,'\\aITEM 889431940 1172028990:a captured void portal\\/a'),
|
||||
(76,2662022291,'Suffix Title: , Hunter of Elementals'),
|
||||
(77,2843307622,'Suffix Title: , Destroyer of Aviaks'),
|
||||
(78,2949817122,'Suffix Title: , Slayer of Brownies'),
|
||||
(79,3164787835,'Suffix Title: , Destroyer of Orcs'),
|
||||
(80,3178553553,'Suffix Title: , Slayer of Kobolds'),
|
||||
(81,3365694510,'Suffix Title: , Slayer of Cyclops'),
|
||||
(82,3372817765,'\\aITEM -911338391 -1096015247:Faydwer Achievements Robe Crate\\/a'),
|
||||
(83,3373452736,'Suffix Title: , Hunter of Kobolds'),
|
||||
(84,3393354036,'Suffix Title: , Slayer of Goblins'),
|
||||
(85,3425526708,'Suffix Title: , Hunter of Gnolls'),
|
||||
(86,3497049966,'Suffix Title: , Slayer of Harpies'),
|
||||
(87,3545000591,'\\aITEM 166730967 -1819609580:Shroud of the Shattering\\/a'),
|
||||
(88,3625907740,'\\aITEM 1516070685 480947570:Faydwer Achievements Armor Crate\\/a'),
|
||||
(89,3635965593,'Suffix Title: , Hunter of Brownies'),
|
||||
(90,3863758251,'Suffix Title: , Slayer of Drolvarg'),
|
||||
(91,3927534170,'Suffix Title: , Slayer of Gnolls'),
|
||||
(92,3928776805,'Suffix Title: , Hunter of Frogloks'),
|
||||
(93,4006640091,'Suffix Title: , Hunter of Yha-lei'),
|
||||
(94,4030339981,'Suffix Title: , Slayer of Werewolves'),
|
||||
(95,4034538360,'Suffix Title: , Hunter of Fairies'),
|
||||
(96,4062650528,'Suffix Title: , Destroyer of Goblins'),
|
||||
(97,4138603623,'Suffix Title: , Destroyer of Vampires'),
|
||||
(98,4172952623,'Suffix Title: the Flawless'),
|
||||
(99,4173053633,'Suffix Title: , Hunter of Goblins'),
|
||||
(100,4202913893,'Suffix Title: , Destroyer of Bugbears'),
|
||||
(101,4248681780,'Suffix Title: the Vindicator'),
|
||||
(102,4265036735,'Suffix Title: , Hunter of Di''Zok');
|
36826
sql/appearances.sql
Executable file
36826
sql/appearances.sql
Executable file
File diff suppressed because it is too large
Load Diff
5
sql/banned_ips.sql
Executable file
5
sql/banned_ips.sql
Executable file
@ -0,0 +1,5 @@
|
||||
DROP TABLE IF EXISTS banned_ips;
|
||||
CREATE TABLE banned_ips (
|
||||
id INTEGER PRIMARY KEY,
|
||||
ip TEXT NOT NULL DEFAULT ''
|
||||
);
|
12
sql/bot_appearance.sql
Executable file
12
sql/bot_appearance.sql
Executable file
@ -0,0 +1,12 @@
|
||||
DROP TABLE IF EXISTS bot_appearance;
|
||||
CREATE TABLE bot_appearance (
|
||||
id INTEGER PRIMARY KEY,
|
||||
bot_id INTEGER NOT NULL,
|
||||
signed_value INTEGER NOT NULL DEFAULT 0,
|
||||
type TEXT NOT NULL,
|
||||
red INTEGER NOT NULL DEFAULT 0,
|
||||
green INTEGER NOT NULL DEFAULT 0,
|
||||
blue INTEGER NOT NULL DEFAULT 0,
|
||||
UNIQUE(bot_id, type),
|
||||
FOREIGN KEY (bot_id) REFERENCES bots(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
119
sql/bot_equipment.sql
Executable file
119
sql/bot_equipment.sql
Executable file
@ -0,0 +1,119 @@
|
||||
DROP TABLE IF EXISTS bot_equipment;
|
||||
CREATE TABLE bot_equipment (
|
||||
id INTEGER PRIMARY KEY,
|
||||
bot_id INTEGER NOT NULL,
|
||||
slot INTEGER NOT NULL,
|
||||
item_id INTEGER NOT NULL,
|
||||
UNIQUE(bot_id, slot),
|
||||
FOREIGN KEY (bot_id) REFERENCES bots(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
INSERT INTO bot_equipment VALUES
|
||||
(503,125,16,43528),
|
||||
(504,125,17,20527),
|
||||
(505,128,3,140141),
|
||||
(506,128,8,140142),
|
||||
(507,128,7,140143),
|
||||
(508,128,0,73663),
|
||||
(511,132,3,140141),
|
||||
(512,132,8,140142),
|
||||
(513,132,7,140143),
|
||||
(514,132,0,73663),
|
||||
(515,133,3,140141),
|
||||
(516,133,8,140142),
|
||||
(517,133,7,140143),
|
||||
(518,133,0,73663),
|
||||
(530,140,3,157226),
|
||||
(531,140,7,157229),
|
||||
(532,140,8,157225),
|
||||
(533,140,0,79782),
|
||||
(534,140,1,52601),
|
||||
(535,140,16,43528),
|
||||
(536,140,17,20527),
|
||||
(537,141,3,184887),
|
||||
(538,141,7,184889),
|
||||
(539,141,8,184886),
|
||||
(540,141,0,88905),
|
||||
(541,142,8,186964),
|
||||
(542,142,0,89436),
|
||||
(543,142,16,43528),
|
||||
(544,142,17,20527),
|
||||
(552,145,16,43534),
|
||||
(553,145,17,20535),
|
||||
(554,145,20,47836),
|
||||
(555,145,0,77326),
|
||||
(556,145,5,140253),
|
||||
(557,145,6,134665),
|
||||
(558,145,3,178528),
|
||||
(559,147,16,43534),
|
||||
(560,147,17,20535),
|
||||
(561,147,20,47836),
|
||||
(562,147,0,89094),
|
||||
(563,146,5,175339),
|
||||
(564,147,3,178528),
|
||||
(565,148,3,184887),
|
||||
(566,148,7,184889),
|
||||
(567,148,8,184886),
|
||||
(568,148,0,88905),
|
||||
(569,149,3,144517),
|
||||
(570,149,7,144519),
|
||||
(571,149,8,144516),
|
||||
(572,149,0,75509),
|
||||
(573,149,16,43528),
|
||||
(574,149,17,20527),
|
||||
(575,150,7,160641),
|
||||
(576,150,8,160638),
|
||||
(577,150,0,83260),
|
||||
(578,150,3,160639),
|
||||
(579,151,3,165457),
|
||||
(580,151,8,165458),
|
||||
(581,151,7,165459),
|
||||
(582,151,0,84367),
|
||||
(583,152,3,154403),
|
||||
(584,152,7,154402),
|
||||
(585,152,8,154401),
|
||||
(586,152,0,79258),
|
||||
(587,155,16,43528),
|
||||
(588,155,17,20527),
|
||||
(589,156,16,43528),
|
||||
(590,156,17,20527),
|
||||
(591,157,22,36685),
|
||||
(592,157,23,36213),
|
||||
(593,157,1,50658),
|
||||
(594,157,2,184261),
|
||||
(595,157,11,148373),
|
||||
(596,157,12,148373),
|
||||
(597,157,9,140906),
|
||||
(598,157,10,140906),
|
||||
(599,159,0,86297),
|
||||
(600,159,3,176518),
|
||||
(601,159,7,176519),
|
||||
(602,159,8,176520),
|
||||
(603,159,1,54189),
|
||||
(604,159,16,43528),
|
||||
(605,159,17,20527),
|
||||
(614,162,7,160641),
|
||||
(615,162,8,160638),
|
||||
(616,162,0,83260),
|
||||
(617,162,3,160639),
|
||||
(618,163,3,154403),
|
||||
(619,163,7,154402),
|
||||
(620,163,8,154401),
|
||||
(621,163,0,79258),
|
||||
(622,164,3,144517),
|
||||
(623,164,7,144519),
|
||||
(624,164,8,144516),
|
||||
(625,164,0,75509),
|
||||
(626,164,16,43528),
|
||||
(627,164,17,20527),
|
||||
(628,165,3,158994),
|
||||
(629,165,7,158995),
|
||||
(630,165,8,158996),
|
||||
(631,165,0,80159),
|
||||
(632,166,16,43534),
|
||||
(633,166,17,20535),
|
||||
(634,166,20,47836),
|
||||
(635,166,8,137128),
|
||||
(636,166,7,137129),
|
||||
(637,166,3,137130),
|
||||
(638,166,0,72648);
|
61
sql/bots.sql
Executable file
61
sql/bots.sql
Executable file
@ -0,0 +1,61 @@
|
||||
DROP TABLE IF EXISTS bots;
|
||||
CREATE TABLE bots (
|
||||
id INTEGER PRIMARY KEY,
|
||||
char_id INTEGER NOT NULL,
|
||||
bot_id INTEGER NOT NULL,
|
||||
name TEXT NOT NULL,
|
||||
race INTEGER NOT NULL DEFAULT 0,
|
||||
class INTEGER NOT NULL DEFAULT 0,
|
||||
gender INTEGER NOT NULL DEFAULT 0,
|
||||
model_type INTEGER NOT NULL DEFAULT 0,
|
||||
hair_type INTEGER NOT NULL DEFAULT 0,
|
||||
face_type INTEGER NOT NULL DEFAULT 0,
|
||||
wing_type INTEGER NOT NULL DEFAULT 0,
|
||||
chest_type INTEGER NOT NULL DEFAULT 0,
|
||||
legs_type INTEGER NOT NULL DEFAULT 0,
|
||||
soga_model_type INTEGER NOT NULL DEFAULT 0,
|
||||
soga_hair_type INTEGER NOT NULL DEFAULT 0,
|
||||
soga_face_type INTEGER NOT NULL DEFAULT 0,
|
||||
UNIQUE(char_id, bot_id),
|
||||
FOREIGN KEY (char_id) REFERENCES characters(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
INSERT INTO bots VALUES
|
||||
(125,2748,1,'Braldur',2,2,1,110,0,0,0,0,0,0,0,0),
|
||||
(126,2956,1,'Serena',1,11,1,115,0,0,0,0,0,0,0,0),
|
||||
(127,2956,2,'Debbie',1,11,1,115,0,0,0,0,0,0,0,0),
|
||||
(128,2969,1,'Conjo',5,29,1,121,0,0,0,0,0,0,0,0),
|
||||
(130,2969,3,'Clary',0,12,1,112,0,0,0,0,0,0,0,0),
|
||||
(131,2969,4,'Clerice',0,11,2,111,0,0,0,0,0,0,0,0),
|
||||
(132,2969,5,'Conjita',0,29,2,111,0,0,0,0,0,0,0,0),
|
||||
(133,2969,6,'Conjurella',8,29,2,135,0,0,0,0,0,0,0,0),
|
||||
(134,2969,7,'Clerito',5,12,1,121,0,0,0,0,0,0,0,0),
|
||||
(135,3013,1,'Fahuhu',4,11,0,76,0,0,0,0,0,0,0,0),
|
||||
(137,3027,1,'Ectemp',13,0,13,54,0,0,0,0,0,0,0,0),
|
||||
(138,3027,2,'Ectgrd',13,1,3,54,0,0,0,0,0,0,0,0),
|
||||
(140,3160,1,'Gutt',1,3,2,116,0,0,0,0,0,0,0,0),
|
||||
(141,3160,2,'Gimm',8,13,0,135,0,0,0,0,0,0,0,0),
|
||||
(142,3160,3,'Gapp',8,36,2,135,0,0,0,0,0,0,0,0),
|
||||
(144,3457,1,'Sslowzz',10,18,2,104,0,0,0,0,0,0,0,0),
|
||||
(145,3457,2,'Stabzz',10,32,1,103,0,0,0,0,0,0,0,0),
|
||||
(146,3462,1,'Babayaga',7,18,2,107,0,0,0,0,0,0,0,0),
|
||||
(147,3462,2,'Slicer',7,32,2,107,0,0,0,0,0,0,0,0),
|
||||
(148,3472,1,'Whack',10,13,1,103,0,0,0,0,0,0,0,0),
|
||||
(149,3472,2,'Vile',10,37,2,104,0,0,0,0,0,0,0,0),
|
||||
(150,3472,3,'Bonkheal',10,14,2,104,0,0,0,0,0,0,0,0),
|
||||
(151,3472,4,'Bonkmage',10,30,2,104,0,0,0,0,0,0,0,0),
|
||||
(152,3472,5,'Bonknature',10,17,2,104,0,0,0,0,0,0,0,0),
|
||||
(153,3473,1,'Bandaid',1,1,11,116,0,0,0,0,0,0,0,0),
|
||||
(154,3473,2,'Healsy',1,11,1,115,0,0,0,0,0,0,0,0),
|
||||
(155,3519,1,'Edward',2,2,11,109,0,0,0,0,0,0,0,0),
|
||||
(156,3519,2,'Eddy',2,2,11,109,0,0,0,0,0,0,0,0),
|
||||
(157,3534,1,'Patty',8,11,1,136,0,0,0,0,0,0,0,0),
|
||||
(158,3534,2,'Putty',1,1,1,115,0,0,0,0,0,0,0,0),
|
||||
(159,3534,3,'Petty',1,9,1,115,0,0,0,0,0,0,0,0),
|
||||
(162,3407,1,'Helperone',1,14,1,115,0,0,0,0,0,0,0,0),
|
||||
(163,3407,2,'Helpertwo',1,17,1,115,0,0,0,0,0,0,0,0),
|
||||
(164,3407,3,'Helperthree',1,37,1,115,0,0,0,0,0,0,0,0),
|
||||
(165,3407,4,'Helperfour',1,26,1,115,0,0,0,0,0,0,0,0),
|
||||
(166,3407,5,'Helperfive',1,34,1,115,0,0,0,0,0,0,0,0),
|
||||
(167,3407,6,'Helper',1,15,1,115,0,0,0,0,0,0,0,0),
|
||||
(168,3407,7,'Helperz',1,15,1,115,0,0,0,0,0,0,0,0);
|
43
sql/broker_item_map.sql
Executable file
43
sql/broker_item_map.sql
Executable file
@ -0,0 +1,43 @@
|
||||
DROP TABLE IF EXISTS broker_item_map;
|
||||
CREATE TABLE broker_item_map (
|
||||
version_range1 INTEGER NOT NULL DEFAULT 0,
|
||||
version_range2 INTEGER NOT NULL DEFAULT 0,
|
||||
client_bitmask INTEGER NOT NULL DEFAULT 0,
|
||||
server_bitmask INTEGER NOT NULL DEFAULT 0
|
||||
);
|
||||
|
||||
INSERT INTO broker_item_map VALUES
|
||||
(60085,60116,1,2),
|
||||
(60085,60116,2,4),
|
||||
(60085,60116,4,8),
|
||||
(60085,60116,8,16),
|
||||
(60085,60116,16,32),
|
||||
(60085,60116,32,64),
|
||||
(60085,60116,64,128),
|
||||
(60085,60116,128,256),
|
||||
(60085,60116,256,512),
|
||||
(60085,60116,512,2048),
|
||||
(60085,60116,1024,16384),
|
||||
(60085,60116,2048,4096),
|
||||
(60085,60116,4096,65536),
|
||||
(60085,60116,8192,131072),
|
||||
(60085,60116,16384,262144),
|
||||
(60085,60116,65536,2097152),
|
||||
(60085,60116,131072,4194304),
|
||||
(60085,60116,8589934592,8388608),
|
||||
(60085,60116,524288,16777216),
|
||||
(60085,60116,2097152,33554432),
|
||||
(60085,60116,8388608,67108864),
|
||||
(60085,60116,4194304,134217728),
|
||||
(60085,60116,32768,268435456),
|
||||
(60085,60116,134217728,536870912),
|
||||
(60085,60116,268435456,1073741824),
|
||||
(60085,60116,4294967296,2147483648),
|
||||
(60085,60116,1048576,8589934592),
|
||||
(60085,60116,16777216,17179869184),
|
||||
(60085,60116,33554432,34359738368),
|
||||
(60085,60116,67108864,137438953472),
|
||||
(60085,60116,262144,274877906944),
|
||||
(60085,60116,536870912,549755813888),
|
||||
(60085,60116,1073741824,68719476736),
|
||||
(60085,60116,2147483648,4294967296);
|
9
sql/bug_notes.sql
Executable file
9
sql/bug_notes.sql
Executable file
@ -0,0 +1,9 @@
|
||||
DROP TABLE IF EXISTS bug_notes;
|
||||
CREATE TABLE bug_notes (
|
||||
id INTEGER PRIMARY KEY,
|
||||
bug_id INTEGER NOT NULL DEFAULT 0,
|
||||
note TEXT,
|
||||
author TEXT NOT NULL DEFAULT '',
|
||||
note_date INTEGER NOT NULL DEFAULT 0
|
||||
);
|
||||
CREATE INDEX idx_bug_notes_bug_id ON bug_notes(bug_id);
|
75
sql/bugs.sql
Executable file
75
sql/bugs.sql
Executable file
@ -0,0 +1,75 @@
|
||||
DROP TABLE IF EXISTS bugs;
|
||||
CREATE TABLE bugs (
|
||||
id INTEGER PRIMARY KEY,
|
||||
status TEXT NOT NULL DEFAULT 'New',
|
||||
world_id INTEGER NOT NULL DEFAULT 0,
|
||||
account_id INTEGER NOT NULL DEFAULT 0,
|
||||
player TEXT NOT NULL DEFAULT ' ',
|
||||
category TEXT NOT NULL DEFAULT ' ',
|
||||
subcategory TEXT NOT NULL DEFAULT ' ',
|
||||
causes_crash TEXT NOT NULL DEFAULT '',
|
||||
reproducible TEXT NOT NULL DEFAULT '',
|
||||
summary TEXT NOT NULL DEFAULT ' ',
|
||||
description TEXT NOT NULL,
|
||||
version TEXT NOT NULL DEFAULT '',
|
||||
spawn_name TEXT NOT NULL DEFAULT 'N/A',
|
||||
spawn_id INTEGER NOT NULL DEFAULT 0,
|
||||
bug_datetime INTEGER NOT NULL DEFAULT (strftime('%s', 'now')),
|
||||
zone_id INTEGER NOT NULL DEFAULT 0,
|
||||
assign_to_forum_id INTEGER DEFAULT 0,
|
||||
fixed_by_forum_id INTEGER NOT NULL DEFAULT 0,
|
||||
forum_id INTEGER NOT NULL DEFAULT 0,
|
||||
post_id INTEGER NOT NULL DEFAULT 0,
|
||||
priority INTEGER NOT NULL DEFAULT 0,
|
||||
bug_updated INTEGER NOT NULL DEFAULT 0,
|
||||
bug_type INTEGER NOT NULL DEFAULT 0,
|
||||
copied INTEGER NOT NULL DEFAULT 0,
|
||||
dbversion INTEGER NOT NULL DEFAULT 0,
|
||||
worldversion TEXT NOT NULL DEFAULT ''
|
||||
);
|
||||
|
||||
INSERT INTO bugs VALUES
|
||||
(975,'New',27,1780,'Stracaibeam','Mechanics','Items','Affects gameplay','Always Happens','weakened barracuda tooth ','cant be activated it seems or im going about it wrong.',' 546','N/A',0,1748193368,325,0,0,0,0,0,0,0,0,0,''),
|
||||
(976,'New',27,1787,'Omolu','AutoBug','AutoGenerate','N','Y','SpellCasted without proper spell range set Gimble''s Shocking Burst ID','SpellCasted without proper spell range set Gimble''s Shocking Burst ID','CUR','a thresh bat',330023,1748572880,33,0,0,0,0,0,0,0,0,0,''),
|
||||
(977,'New',27,1771,'Vixen','AutoBug','AutoGenerate','N','Y','SpellCasted without proper spell range set Gimble''s Shocking Burst ID','SpellCasted without proper spell range set Gimble''s Shocking Burst ID','CUR','an undead fighter',8390022,1748614303,839,0,0,0,0,0,0,0,0,0,''),
|
||||
(978,'New',27,1798,'Enpoint','Content','Non-Player Character','Affects gameplay','Sometimes Happens','Ingrid doesn''t respond to hails.','If I move to middle of boat, where she should be, she responds. I think she is suppsoed to move?',' 546','Ingrid',270001,1749844637,27,0,0,0,0,0,0,0,0,0,''),
|
||||
(979,'New',27,1798,'Tryshield','Art','Collision','Affects gameplay','Always Happens','Can''t Teleport to Temple of Life','I end up here, if I move fall and die. and Reset in south qeynos entrance.',' 546','N/A',0,1749855198,222,0,0,0,0,0,0,0,0,0,''),
|
||||
(980,'New',27,1798,'Tryshield','Mechanics','Skills','Affects gameplay','Always Happens','Theron''s Hearting Call','Doesn''t seem to do anything currently. Missing duration maybe?',' 546','N/A',0,1749856102,827,0,0,0,0,0,0,0,0,0,''),
|
||||
(981,'New',27,1795,'Meen','Interface','User Interface','Affects gameplay','Always Happens','slashing skill not showing up in skills window','the Slashing skill is not showing up under combat on the skills tab or anywhere else. ',' 546','N/A',0,1749886802,325,0,0,0,0,0,0,0,0,0,''),
|
||||
(982,'New',27,1798,'Tryshield','Mechanics','Items','Affects gameplay','Sometimes Happens','Belt Pouch','Can be equiped in ammo slot, can''t open. Takes damage? Also appears while equiped in bag slot. Can''t move inventory "copy" but if I put back in bag. Only one version remains in inventory.',' 546','Banker Caroline Copperstone',2330017,1749892520,233,0,0,0,0,0,0,0,0,0,''),
|
||||
(983,'New',27,1798,'Tryshield','Content','Quest Related','Cosmetic','Sometimes Happens','Darkpaw Encroachment','City task, doesn''t show quest feather above NPCs, I think other Guild tasks are also not showing feather right now.',' 546','Amren Talbot',2310071,1749894753,231,0,0,0,0,0,0,0,0,0,''),
|
||||
(984,'New',27,1798,'Tryshield','Mechanics','Items','Affects gameplay','Sometimes Happens','Status Items Don''t Award Status','Sold Coral Scrying stone to Pupil ADept Wazzlefop, didn''t get any Status. Did similar with priest(?) status item in Temple of Life.',' 546','Pupil Adept Wazzlefop',2310070,1749894882,231,0,0,0,0,0,0,0,0,0,''),
|
||||
(985,'New',27,1798,'Tryshield','AutoBug','AutoGenerate','N','Y','ConsumeFoodDrink missing proper item script set jumjum beer ID 36405','ConsumeFoodDrink missing proper item script set jumjum beer ID 36405','CUR','a lowland viper',120068,1749895848,12,0,0,0,0,0,0,0,0,0,''),
|
||||
(986,'New',27,1798,'Tryshield','Mechanics','Items','Affects gameplay','Always Happens','jumjum bear can''t consume','Gives message, server bug, no item script. ',' 546','N/A',0,1749895918,12,0,0,0,0,0,0,0,0,0,''),
|
||||
(987,'New',27,1798,'Tryshield','Content','Quest Related','Affects gameplay','Always Happens','Tree within a Tree','Quest from Oracle Ulinara, offered but missing all information.',' 546','Oracle Ulinara',120018,1749897804,12,0,0,0,0,0,0,0,0,0,''),
|
||||
(988,'New',27,1798,'Tryshield','Content','Quest Related','Cosmetic','Always Happens','Welcome to Qeynos, Citizen! stuck on step','Stuck on step I''ve one last page to read in my citizenship book. Clicking on book and reading through to last page, has no effect. Changing zone doesn''t seem to change it. Item was in my bank, I took it out and still no change.',' 546','temp',2230783,1749898576,223,0,0,0,0,0,0,0,0,0,''),
|
||||
(989,'New',27,1798,'Tryshield','AutoBug','AutoGenerate','N','Y','ConsumeFoodDrink missing proper item script set lemonade ID 36459 ','ConsumeFoodDrink missing proper item script set lemonade ID 36459 ','CUR','N/A',0,1749899549,834,0,0,0,0,0,0,0,0,0,''),
|
||||
(990,'New',27,1798,'Tryshield','AutoBug','AutoGenerate','N','Y','ConsumeFoodDrink missing proper item script set Lendel''s Grand Lager ID','ConsumeFoodDrink missing proper item script set Lendel''s Grand Lager ID','CUR','N/A',0,1749899560,834,0,0,0,0,0,0,0,0,0,''),
|
||||
(991,'New',27,1798,'Tryshield','Mechanics','Items','Affects gameplay','Always Happens','Lendel''s Grand Lager Can''t Drink.','When you try to consume says Server bug, item script not assigned.',' 546','N/A',0,1749899612,834,0,0,0,0,0,0,0,0,0,''),
|
||||
(992,'New',27,1798,'Tryshield','Content','Quest Related','Cosmetic','Always Happens','An Intriguing Eye','Quest Journal text says Qeynos Province district, so text is from after revamp.',' 546','Scholar Obidudyn',2340034,1749979795,234,0,0,0,0,0,0,0,0,0,''),
|
||||
(993,'New',27,1798,'Tryshield','AutoBug','AutoGenerate','N','Y','ConsumeFoodDrink missing proper item script set jumjum beer ID 36405','ConsumeFoodDrink missing proper item script set jumjum beer ID 36405','CUR','N/A',0,1749980305,234,0,0,0,0,0,0,0,0,0,''),
|
||||
(994,'New',27,1798,'Tryshield','AutoBug','AutoGenerate','N','Y','ConsumeFoodDrink missing proper item script set Lendel''s Grand Lager ID','ConsumeFoodDrink missing proper item script set Lendel''s Grand Lager ID','CUR','N/A',0,1749980310,234,0,0,0,0,0,0,0,0,0,''),
|
||||
(995,'New',27,1798,'Tryshield','AutoBug','AutoGenerate','N','Y','ConsumeFoodDrink missing proper item script set sliced orange ID 37205','ConsumeFoodDrink missing proper item script set sliced orange ID 37205','CUR','Merchant Flores',120087,1750015918,12,0,0,0,0,0,0,0,0,0,''),
|
||||
(996,'New',27,1798,'Tryshield','AutoBug','AutoGenerate','N','Y','ConsumeFoodDrink missing proper item script set traditional halfling pie ID','ConsumeFoodDrink missing proper item script set traditional halfling pie ID','CUR','Tanen Danos',120289,1750023876,12,0,0,0,0,0,0,0,0,0,''),
|
||||
(997,'New',27,1798,'Tryshield','Content','Quest Related','Affects gameplay','Always Happens','A Tour of Antonica - Archer''s wood step.','Step doesn''t seem to update.\n/waypoint -658.64, -7.87, 509.16 is listed on wiki, only from 2008 edit for some reason.\nExplored alot of the wood and could''nt get it to update.',' 546','N/A',0,1750102147,12,0,0,0,0,0,0,0,0,0,''),
|
||||
(998,'New',27,1798,'Tryshield','Interface','Inventory','Affects gameplay','Sometimes Happens','Shared Bank Item Duplication','If I take an item eg Lightning Burst adept out of shared bank. And learn it straight away. It will be gone from shared bank. On an alt it will remain. And if I go back to 1st character it will be there again. If I take it out and don''t use I won''t get a second copy.',' 546','Jason Walton',2310039,1750112348,231,0,0,0,0,0,0,0,0,0,''),
|
||||
(999,'New',27,1798,'Tryshield','AutoBug','AutoGenerate','N','Y','ConsumeFoodDrink missing proper item script set lemonade ID 36459 ','ConsumeFoodDrink missing proper item script set lemonade ID 36459 ','CUR','N/A',0,1750113492,222,0,0,0,0,0,0,0,0,0,''),
|
||||
(1000,'New',27,1798,'Tryshield','AutoBug','AutoGenerate','N','Y','ConsumeFoodDrink missing proper item script set traditional halfling pie ID','ConsumeFoodDrink missing proper item script set traditional halfling pie ID','CUR','Priest of Discord',120225,1750120806,12,0,0,0,0,0,0,0,0,0,''),
|
||||
(1001,'New',27,1798,'Tryshield','AutoBug','AutoGenerate','N','Y','ConsumeFoodDrink missing proper item script set Lendel''s Grand Lager ID','ConsumeFoodDrink missing proper item script set Lendel''s Grand Lager ID','CUR','Priest of Discord',120225,1750120811,12,0,0,0,0,0,0,0,0,0,''),
|
||||
(1002,'New',27,1798,'Tryshield','Content','Non-Player Character','Cosmetic','Sometimes Happens','2 Yuri''s','npc Yuri seems to be spawned nice, in right place.',' 546','Yuri',121480,1750190809,12,0,0,0,0,0,0,0,0,0,''),
|
||||
(1003,'New',27,1798,'Tryshield','AutoBug','AutoGenerate','N','Y','ConsumeFoodDrink missing proper item script set traditional halfling pie ID','ConsumeFoodDrink missing proper item script set traditional halfling pie ID','CUR','a giant bat',120174,1750357939,12,0,0,0,0,0,0,0,0,0,''),
|
||||
(1004,'New',27,1798,'Tryshield','Content','Non-Player Character','Cosmetic','Sometimes Happens','A Coldwind Pike','Poor thing has got stuck on the riverbank.',' 546','a coldwind pike',120094,1750358245,12,0,0,0,0,0,0,0,0,0,''),
|
||||
(1005,'New',27,1798,'Tryshield','Content','Non-Player Character','Cosmetic','Always Happens','Captain Beltho when hailed','I say ur player history is not nil. weird.',' 546','Captain Beltho',120400,1750358834,12,0,0,0,0,0,0,0,0,0,''),
|
||||
(1006,'New',27,1798,'Tryshield','AutoBug','AutoGenerate','N','Y','ConsumeFoodDrink missing proper item script set Coldwind chowder ID 35732','ConsumeFoodDrink missing proper item script set Coldwind chowder ID 35732','CUR','N/A',0,1750381605,12,0,0,0,0,0,0,0,0,0,''),
|
||||
(1007,'New',27,1798,'Tryshield','Mechanics','Items','Affects gameplay','Always Happens','Antler Handled Axe','Lists Crusader (13) as able to use, but says I don''t have the skill.',' 546','N/A',0,1750508550,12,0,0,0,0,0,0,0,0,0,''),
|
||||
(1008,'New',27,1798,'Tryshield','AutoBug','AutoGenerate','N','Y','ConsumeFoodDrink missing proper item script set Coldwind chowder ID 35732','ConsumeFoodDrink missing proper item script set Coldwind chowder ID 35732','CUR','a giant bat',120174,1750510024,12,0,0,0,0,0,0,0,0,0,''),
|
||||
(1009,'New',27,1795,'Oada','Content','Quest Related','Affects gameplay','Always Happens','Isle of refuge quests auto removal','The Isle of refuge quests are undeleteable and are supposed to drop after you leave the isle ... but it is not doing that ',' 546','N/A',0,1750582810,829,0,0,0,0,0,0,0,0,0,''),
|
||||
(1010,'New',27,1798,'Tryshield','AutoBug','AutoGenerate','N','Y','ConsumeFoodDrink missing proper item script set Coldwind chowder ID 35732','ConsumeFoodDrink missing proper item script set Coldwind chowder ID 35732','CUR','a mutated rat',120176,1750597887,12,0,0,0,0,0,0,0,0,0,''),
|
||||
(1011,'New',27,1798,'Tryshield','AutoBug','AutoGenerate','N','Y','ConsumeFoodDrink missing proper item script set traditional halfling pie ID','ConsumeFoodDrink missing proper item script set traditional halfling pie ID','CUR','a mutated rat',120176,1750597892,12,0,0,0,0,0,0,0,0,0,''),
|
||||
(1012,'New',27,1798,'Tryshield','AutoBug','AutoGenerate','N','Y','ConsumeFoodDrink missing proper item script set Lendel''s Grand Lager ID','ConsumeFoodDrink missing proper item script set Lendel''s Grand Lager ID','CUR','N/A',0,1750627134,12,0,0,0,0,0,0,0,0,0,''),
|
||||
(1013,'New',27,1798,'Tryshield','AutoBug','AutoGenerate','N','Y','ConsumeFoodDrink missing proper item script set Coldwind chowder ID 35732','ConsumeFoodDrink missing proper item script set Coldwind chowder ID 35732','CUR','N/A',0,1750627136,12,0,0,0,0,0,0,0,0,0,''),
|
||||
(1014,'New',27,1798,'Tryshield','AutoBug','AutoGenerate','N','Y','ConsumeFoodDrink missing proper item script set traditional halfling pie ID','ConsumeFoodDrink missing proper item script set traditional halfling pie ID','CUR','N/A',0,1750627153,12,0,0,0,0,0,0,0,0,0,''),
|
||||
(1015,'New',27,1798,'Tryshield','Mechanics','Items','Affects gameplay','Sometimes Happens','Grey Acrylia Crescent Axe','Lists crusader as class usable but can''t equip.',' 546','N/A',0,1750791311,12,0,0,0,0,0,0,0,0,0,''),
|
||||
(1016,'New',27,1798,'Tryshield','Mechanics','Items','Affects gameplay','Sometimes Happens','Canteent of pond water','Duration seems wrong, lasted a minute~?',' 546','a Broken Skull deathbringer',4380002,1750802346,438,0,0,0,0,0,0,0,0,0,''),
|
||||
(1017,'New',27,1798,'Tryshield','Content','Quest Related','Affects gameplay','Sometimes Happens','An Intriguing Eye','Last step Find the hand statue doesn''t seem to trigger at location.',' 546','N/A',0,1750819841,834,0,0,0,0,0,0,0,0,0,''),
|
||||
(1018,'New',27,1820,'Gnifty','Content','Other','Affects gameplay','Happened Once','Adept book','Circular Strike (Adept 1) book lists classes as "All"',' 546','N/A',0,1751352092,827,0,0,0,0,0,0,0,0,0,'');
|
70
sql/channels.sql
Executable file
70
sql/channels.sql
Executable file
@ -0,0 +1,70 @@
|
||||
DROP TABLE IF EXISTS channels;
|
||||
CREATE TABLE channels (
|
||||
id INTEGER PRIMARY KEY,
|
||||
name TEXT NOT NULL UNIQUE,
|
||||
password TEXT,
|
||||
level_restriction INTEGER NOT NULL DEFAULT 0,
|
||||
classes INTEGER NOT NULL DEFAULT 0,
|
||||
races INTEGER NOT NULL DEFAULT 0
|
||||
);
|
||||
|
||||
INSERT INTO channels VALUES
|
||||
(1,'EQ2Emu','',0,0,0),
|
||||
(2,'Newbie','',0,0,0),
|
||||
(3,'General','',1,0,0),
|
||||
(11,'High_Level','',50,0,0),
|
||||
(12,'Barbarian','',0,0,1),
|
||||
(13,'Dark Elf','',0,0,2),
|
||||
(14,'Dwarf','',0,0,4),
|
||||
(15,'Erudite','',0,0,8),
|
||||
(16,'Froglok','',0,0,16),
|
||||
(17,'Gnome','',0,0,32),
|
||||
(18,'Half Elf','',0,0,64),
|
||||
(19,'Halfling','',0,0,128),
|
||||
(20,'High Elf','',0,0,256),
|
||||
(21,'Human','',0,0,512),
|
||||
(22,'Iksar','',0,0,1024),
|
||||
(23,'Kerra','',0,0,2048),
|
||||
(24,'Ogre','',0,0,4096),
|
||||
(25,'Ratonga','',0,0,8192),
|
||||
(26,'Troll','',0,0,16384),
|
||||
(27,'Wood Elf','',0,0,32768),
|
||||
(28,'Fae','',0,0,65536),
|
||||
(29,'Arasai','',0,0,131072),
|
||||
(30,'Sarnak','',0,0,262144),
|
||||
(31,'Vampire','',0,0,524288),
|
||||
(32,'Guardian','',0,8,0),
|
||||
(33,'Berserker','',0,16,0),
|
||||
(34,'Monk','',0,64,0),
|
||||
(35,'Bruiser','',0,128,0),
|
||||
(36,'Shadowknight','',0,512,0),
|
||||
(37,'Paladin','',0,1024,0),
|
||||
(38,'Templar','',0,8192,0),
|
||||
(39,'Inquisitor','',0,16384,0),
|
||||
(40,'Warden','',0,65536,0),
|
||||
(41,'Fury','',0,131072,0),
|
||||
(42,'Mystic','',0,524288,0),
|
||||
(43,'Defiler','',0,1048576,0),
|
||||
(44,'Wizard','',0,8388608,0),
|
||||
(45,'Warlock','',0,16777216,0),
|
||||
(46,'Illusionist','',0,67108864,0),
|
||||
(47,'Coercer','',0,134217728,0),
|
||||
(48,'Conjuror','',0,536870912,0),
|
||||
(49,'Necromancer','',0,1073741824,0),
|
||||
(50,'Swashbuckler','',0,8589934592,0),
|
||||
(51,'Brigand','',0,17179869184,0),
|
||||
(52,'Troubador','',0,68719476736,0),
|
||||
(53,'Dirge','',0,137438953472,0),
|
||||
(54,'Ranger','',0,549755813888,0),
|
||||
(55,'Assasin','',0,1099511627776,0),
|
||||
(56,'Beastlord','',0,4398046511104,0),
|
||||
(57,'Channeler','',0,17592186044416,0),
|
||||
(58,'Auction','',0,0,0),
|
||||
(59,'Crafting','',0,0,0),
|
||||
(60,'Help','',0,0,0),
|
||||
(61,'Traders','',0,0,0),
|
||||
(62,'LFG','',0,0,0),
|
||||
(63,'Good','',0,0,0),
|
||||
(64,'Evil','',0,0,0),
|
||||
(65,'Neutral','',0,0,0),
|
||||
(66,'Discord',NULL,0,0,0);
|
11
sql/char_colors.sql
Executable file
11
sql/char_colors.sql
Executable file
@ -0,0 +1,11 @@
|
||||
DROP TABLE IF EXISTS char_colors;
|
||||
CREATE TABLE char_colors (
|
||||
id INTEGER PRIMARY KEY,
|
||||
char_id INTEGER NOT NULL,
|
||||
signed_value INTEGER NOT NULL DEFAULT 0,
|
||||
type TEXT NOT NULL,
|
||||
red INTEGER NOT NULL DEFAULT 0,
|
||||
green INTEGER NOT NULL DEFAULT 0,
|
||||
blue INTEGER NOT NULL DEFAULT 0,
|
||||
FOREIGN KEY (char_id) REFERENCES characters(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
12
sql/character_aa.sql
Executable file
12
sql/character_aa.sql
Executable file
@ -0,0 +1,12 @@
|
||||
DROP TABLE IF EXISTS character_aa;
|
||||
CREATE TABLE character_aa (
|
||||
id INTEGER PRIMARY KEY,
|
||||
char_id INTEGER NOT NULL,
|
||||
template_id INTEGER NOT NULL,
|
||||
tab_id INTEGER NOT NULL,
|
||||
aa_id INTEGER NOT NULL,
|
||||
order INTEGER NOT NULL,
|
||||
treeid INTEGER NOT NULL,
|
||||
FOREIGN KEY (char_id) REFERENCES characters(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
CREATE INDEX idx_character_aa_char_id ON character_aa(char_id);
|
10
sql/character_aa_defaults.sql
Executable file
10
sql/character_aa_defaults.sql
Executable file
@ -0,0 +1,10 @@
|
||||
DROP TABLE IF EXISTS character_aa_defaults;
|
||||
CREATE TABLE character_aa_defaults (
|
||||
id INTEGER PRIMARY KEY,
|
||||
class INTEGER NOT NULL,
|
||||
template_id INTEGER NOT NULL,
|
||||
tab_id INTEGER NOT NULL,
|
||||
aa_id INTEGER NOT NULL,
|
||||
order INTEGER NOT NULL,
|
||||
treeid INTEGER NOT NULL
|
||||
);
|
9
sql/character_achievements.sql
Executable file
9
sql/character_achievements.sql
Executable file
@ -0,0 +1,9 @@
|
||||
DROP TABLE IF EXISTS character_achievements;
|
||||
CREATE TABLE character_achievements (
|
||||
id INTEGER PRIMARY KEY,
|
||||
char_id INTEGER NOT NULL DEFAULT 0,
|
||||
achievement_id INTEGER NOT NULL DEFAULT 0,
|
||||
completed_date INTEGER NOT NULL DEFAULT 0,
|
||||
FOREIGN KEY (char_id) REFERENCES characters(id) ON UPDATE CASCADE
|
||||
);
|
||||
CREATE INDEX idx_character_achievements_char_id ON character_achievements(char_id);
|
7
sql/character_achievements_items.sql
Executable file
7
sql/character_achievements_items.sql
Executable file
@ -0,0 +1,7 @@
|
||||
DROP TABLE IF EXISTS character_achievements_items;
|
||||
CREATE TABLE character_achievements_items (
|
||||
id INTEGER PRIMARY KEY,
|
||||
char_id INTEGER NOT NULL DEFAULT 0,
|
||||
achievement_id INTEGER NOT NULL DEFAULT 0,
|
||||
items INTEGER NOT NULL DEFAULT 0
|
||||
);
|
10
sql/character_buyback.sql
Executable file
10
sql/character_buyback.sql
Executable file
@ -0,0 +1,10 @@
|
||||
DROP TABLE IF EXISTS character_buyback;
|
||||
CREATE TABLE character_buyback (
|
||||
id INTEGER PRIMARY KEY,
|
||||
char_id INTEGER NOT NULL DEFAULT 0,
|
||||
item_id INTEGER NOT NULL DEFAULT 0,
|
||||
quantity INTEGER NOT NULL DEFAULT 1,
|
||||
price INTEGER NOT NULL DEFAULT 0,
|
||||
FOREIGN KEY (char_id) REFERENCES characters(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
CREATE INDEX idx_character_buyback_char_id ON character_buyback(char_id);
|
12
sql/character_claim_items.sql
Executable file
12
sql/character_claim_items.sql
Executable file
@ -0,0 +1,12 @@
|
||||
DROP TABLE IF EXISTS character_claim_items;
|
||||
CREATE TABLE character_claim_items (
|
||||
id INTEGER PRIMARY KEY,
|
||||
char_id INTEGER DEFAULT 0,
|
||||
account_id INTEGER DEFAULT 0,
|
||||
item_id INTEGER DEFAULT 0,
|
||||
max_claim INTEGER DEFAULT 0,
|
||||
curr_claim INTEGER DEFAULT 0,
|
||||
one_per_char INTEGER DEFAULT 0,
|
||||
last_claim INTEGER DEFAULT 0,
|
||||
veteran_reward_time INTEGER DEFAULT 0
|
||||
);
|
505
sql/character_collection_items.sql
Executable file
505
sql/character_collection_items.sql
Executable file
@ -0,0 +1,505 @@
|
||||
DROP TABLE IF EXISTS character_collection_items;
|
||||
CREATE TABLE character_collection_items (
|
||||
id INTEGER PRIMARY KEY,
|
||||
char_id INTEGER NOT NULL,
|
||||
collection_id INTEGER NOT NULL,
|
||||
collection_item_id INTEGER NOT NULL,
|
||||
UNIQUE(char_id, collection_id, collection_item_id),
|
||||
FOREIGN KEY (char_id) REFERENCES characters(id) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
FOREIGN KEY (collection_id) REFERENCES collections(id) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
FOREIGN KEY (collection_item_id) REFERENCES items(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
CREATE INDEX idx_character_collection_items_collection_id ON character_collection_items(collection_id);
|
||||
CREATE INDEX idx_character_collection_items_collection_item_id ON character_collection_items(collection_item_id);
|
||||
|
||||
INSERT INTO character_collection_items VALUES
|
||||
(18690,3723,545,6612),
|
||||
(18689,3723,551,3280),
|
||||
(18725,3724,545,7024),
|
||||
(18724,3724,545,13156),
|
||||
(18692,3724,551,5470),
|
||||
(18691,3724,551,9948),
|
||||
(18696,3726,545,6612),
|
||||
(18695,3726,545,6645),
|
||||
(18700,3726,545,7024),
|
||||
(18704,3726,545,8061),
|
||||
(18709,3726,545,13156),
|
||||
(18705,3726,551,9948),
|
||||
(18719,3727,545,6612),
|
||||
(18716,3727,545,6645),
|
||||
(18718,3727,545,8061),
|
||||
(18717,3727,545,13156),
|
||||
(18723,3738,545,6645),
|
||||
(18820,3742,412,4959),
|
||||
(18795,3742,416,4960),
|
||||
(18817,3742,418,12649),
|
||||
(18818,3742,421,12652),
|
||||
(18819,3742,424,12655),
|
||||
(18762,3742,544,4957),
|
||||
(18797,3742,544,4958),
|
||||
(18769,3742,544,4959),
|
||||
(18781,3742,544,4960),
|
||||
(18730,3742,545,6612),
|
||||
(18731,3742,545,6645),
|
||||
(18753,3742,545,7024),
|
||||
(18750,3742,545,8061),
|
||||
(18746,3742,545,13156),
|
||||
(18800,3742,550,12619),
|
||||
(18782,3742,550,12645),
|
||||
(18763,3742,550,12646),
|
||||
(18771,3742,550,12649),
|
||||
(18776,3742,550,12650),
|
||||
(18792,3742,550,12652),
|
||||
(18814,3742,550,12655),
|
||||
(18766,3742,550,12658),
|
||||
(18761,3742,550,12672),
|
||||
(18732,3742,551,3280),
|
||||
(18741,3742,551,5038),
|
||||
(18727,3742,551,5470),
|
||||
(18738,3742,551,9948),
|
||||
(18729,3742,551,14749),
|
||||
(18848,3768,545,8061),
|
||||
(18849,3768,551,3280),
|
||||
(18821,3768,551,9948),
|
||||
(18822,3770,551,3280),
|
||||
(18869,3771,545,6612),
|
||||
(18833,3771,545,6645),
|
||||
(18836,3771,545,7024),
|
||||
(18824,3771,545,8061),
|
||||
(18841,3771,545,13156),
|
||||
(19060,3771,550,12672),
|
||||
(18879,3771,551,3280),
|
||||
(18825,3771,551,5038),
|
||||
(18884,3771,551,5470),
|
||||
(18827,3771,551,9948),
|
||||
(18867,3771,551,14749),
|
||||
(18843,3772,545,6612),
|
||||
(18838,3772,545,6645),
|
||||
(18847,3772,545,7024),
|
||||
(18860,3772,545,13156),
|
||||
(18853,3772,551,3280),
|
||||
(18828,3772,551,5038),
|
||||
(18830,3772,551,5470),
|
||||
(18823,3772,551,9948),
|
||||
(18864,3772,551,14749),
|
||||
(18851,3773,545,6612),
|
||||
(18852,3773,551,3280),
|
||||
(19487,3774,405,4956),
|
||||
(19515,3774,406,5531),
|
||||
(18969,3774,408,4957),
|
||||
(18964,3774,411,5564),
|
||||
(18958,3774,414,5565),
|
||||
(19462,3774,416,4960),
|
||||
(19002,3774,416,12032),
|
||||
(18962,3774,417,12648),
|
||||
(19007,3774,418,5571),
|
||||
(19508,3774,419,5572),
|
||||
(18963,3774,419,12650),
|
||||
(18967,3774,422,5575),
|
||||
(19497,3774,422,12653),
|
||||
(19498,3774,423,12654),
|
||||
(18965,3774,424,12655),
|
||||
(18961,3774,425,12656),
|
||||
(18966,3774,429,5588),
|
||||
(18982,3774,431,12664),
|
||||
(19540,3774,438,5628),
|
||||
(18960,3774,438,12672),
|
||||
(18992,3774,518,5531),
|
||||
(19433,3774,518,5564),
|
||||
(18976,3774,518,5565),
|
||||
(18984,3774,518,5567),
|
||||
(19520,3774,518,5570),
|
||||
(18988,3774,518,5571),
|
||||
(19012,3774,518,5572),
|
||||
(19438,3774,518,5575),
|
||||
(19483,3774,518,5583),
|
||||
(18978,3774,518,5588),
|
||||
(19020,3774,518,5591),
|
||||
(19461,3774,518,5628),
|
||||
(18970,3774,530,12030),
|
||||
(19022,3774,530,12031),
|
||||
(18998,3774,530,12032),
|
||||
(19510,3774,544,4955),
|
||||
(18971,3774,544,4956),
|
||||
(18968,3774,544,4957),
|
||||
(18981,3774,544,4960),
|
||||
(18899,3774,545,6612),
|
||||
(18894,3774,545,6645),
|
||||
(18893,3774,545,7024),
|
||||
(18905,3774,545,8061),
|
||||
(18909,3774,545,13156),
|
||||
(19475,3774,548,10422),
|
||||
(19555,3774,548,10424),
|
||||
(19528,3774,550,12619),
|
||||
(19544,3774,550,12643),
|
||||
(19499,3774,550,12645),
|
||||
(19003,3774,550,12648),
|
||||
(19489,3774,550,12653),
|
||||
(19465,3774,550,12654),
|
||||
(18973,3774,550,12655),
|
||||
(19443,3774,550,12656),
|
||||
(19000,3774,550,12662),
|
||||
(19450,3774,550,12663),
|
||||
(18975,3774,550,12664),
|
||||
(18949,3774,551,3280),
|
||||
(18896,3774,551,5038),
|
||||
(18911,3774,551,5470),
|
||||
(18898,3774,551,9948),
|
||||
(19471,3774,552,13262),
|
||||
(19472,3774,553,13458),
|
||||
(18959,3774,553,13471),
|
||||
(18991,3774,553,13495),
|
||||
(18923,3777,235,7875),
|
||||
(18924,3777,477,6306),
|
||||
(18917,3777,477,7397),
|
||||
(18936,3777,483,3853),
|
||||
(18944,3777,483,5584),
|
||||
(18918,3777,483,6489),
|
||||
(18942,3777,483,12659),
|
||||
(18920,3777,506,10106),
|
||||
(18947,3777,514,7862),
|
||||
(18929,3777,514,12018),
|
||||
(18938,3777,518,5571),
|
||||
(18915,3777,518,5574),
|
||||
(18916,3777,519,5055),
|
||||
(18932,3777,523,7085),
|
||||
(18921,3777,523,7950),
|
||||
(18919,3777,523,13248),
|
||||
(18928,3777,523,13484),
|
||||
(18914,3777,546,7840),
|
||||
(18931,3777,546,10462),
|
||||
(19024,3786,551,3280),
|
||||
(19036,3786,551,5038),
|
||||
(19031,3786,551,5470),
|
||||
(19029,3786,551,9948),
|
||||
(19026,3786,551,14749),
|
||||
(19213,3788,500,10968),
|
||||
(19051,3788,545,6612),
|
||||
(19046,3788,545,6645),
|
||||
(19049,3788,545,7024),
|
||||
(19059,3788,545,8061),
|
||||
(19045,3788,545,13156),
|
||||
(19102,3788,550,12648),
|
||||
(19090,3788,551,3280),
|
||||
(19099,3788,551,5038),
|
||||
(19094,3788,551,5470),
|
||||
(19044,3788,551,9948),
|
||||
(19083,3788,551,14749),
|
||||
(19074,3792,545,6612),
|
||||
(19067,3792,545,6645),
|
||||
(19068,3792,545,13156),
|
||||
(19063,3792,551,3280),
|
||||
(19064,3792,551,5038),
|
||||
(19070,3792,551,5470),
|
||||
(19062,3792,551,9948),
|
||||
(19061,3792,551,14749),
|
||||
(19140,3806,406,12619),
|
||||
(19333,3806,408,12029),
|
||||
(19278,3806,409,4958),
|
||||
(19188,3806,411,5564),
|
||||
(19168,3806,414,5565),
|
||||
(19145,3806,414,12645),
|
||||
(19147,3806,415,5567),
|
||||
(19146,3806,415,12646),
|
||||
(19171,3806,416,12032),
|
||||
(19170,3806,417,5570),
|
||||
(19177,3806,417,12648),
|
||||
(19141,3806,418,5571),
|
||||
(19309,3806,418,12649),
|
||||
(19138,3806,421,12652),
|
||||
(19252,3806,422,5575),
|
||||
(19178,3806,423,5579),
|
||||
(19338,3806,424,12655),
|
||||
(19396,3806,425,5581),
|
||||
(19263,3806,425,12656),
|
||||
(19339,3806,427,12658),
|
||||
(19175,3806,429,5588),
|
||||
(19270,3806,429,12662),
|
||||
(19157,3806,437,12669),
|
||||
(19191,3806,518,5564),
|
||||
(19189,3806,518,5565),
|
||||
(19167,3806,518,5571),
|
||||
(19313,3806,518,5572),
|
||||
(19285,3806,518,5574),
|
||||
(19231,3806,518,5575),
|
||||
(19304,3806,518,5581),
|
||||
(19358,3806,518,5583),
|
||||
(19243,3806,518,5588),
|
||||
(19276,3806,518,5589),
|
||||
(19204,3806,518,5628),
|
||||
(19362,3806,526,4543),
|
||||
(19152,3806,530,12027),
|
||||
(19265,3806,530,12029),
|
||||
(19155,3806,530,12030),
|
||||
(19196,3806,530,12031),
|
||||
(19151,3806,530,12032),
|
||||
(19253,3806,544,4955),
|
||||
(19413,3806,544,4956),
|
||||
(19179,3806,544,4958),
|
||||
(19281,3806,544,4959),
|
||||
(19115,3806,545,6612),
|
||||
(19104,3806,545,6645),
|
||||
(19103,3806,545,7024),
|
||||
(19127,3806,545,8061),
|
||||
(19111,3806,545,13156),
|
||||
(19139,3806,548,10404),
|
||||
(19183,3806,548,10422),
|
||||
(19322,3806,548,10424),
|
||||
(19255,3806,550,12619),
|
||||
(19324,3806,550,12643),
|
||||
(19158,3806,550,12646),
|
||||
(19246,3806,550,12649),
|
||||
(19143,3806,550,12652),
|
||||
(19235,3806,550,12653),
|
||||
(19295,3806,550,12655),
|
||||
(19166,3806,550,12656),
|
||||
(19187,3806,550,12658),
|
||||
(19349,3806,550,12662),
|
||||
(19381,3806,550,12663),
|
||||
(19394,3806,550,12664),
|
||||
(19209,3806,550,12669),
|
||||
(19107,3806,551,3280),
|
||||
(19120,3806,551,5038),
|
||||
(19134,3806,551,5470),
|
||||
(19106,3806,551,9948),
|
||||
(19113,3806,551,14749),
|
||||
(19149,3806,552,13221),
|
||||
(19173,3806,552,13234),
|
||||
(19144,3806,552,13260),
|
||||
(19370,3806,552,13262),
|
||||
(19334,3806,553,13458),
|
||||
(19160,3806,553,13471),
|
||||
(19199,3806,553,13493),
|
||||
(19142,3806,553,13495),
|
||||
(19677,3808,409,4958),
|
||||
(19660,3808,418,12649),
|
||||
(19674,3808,421,12652),
|
||||
(19661,3808,422,12653),
|
||||
(19424,3808,424,12655),
|
||||
(19430,3808,500,10968),
|
||||
(19676,3808,500,10971),
|
||||
(19684,3808,500,10973),
|
||||
(19678,3808,518,5575),
|
||||
(19701,3808,518,5580),
|
||||
(19681,3808,530,12028),
|
||||
(19688,3808,530,12030),
|
||||
(19685,3808,532,3900),
|
||||
(19431,3808,532,3901),
|
||||
(19704,3808,532,3902),
|
||||
(19429,3808,535,5051),
|
||||
(19679,3808,537,10427),
|
||||
(19705,3808,538,13227),
|
||||
(19609,3808,544,4955),
|
||||
(19416,3808,544,4958),
|
||||
(19603,3808,544,4959),
|
||||
(19673,3808,544,4960),
|
||||
(19210,3808,545,6612),
|
||||
(19163,3808,545,6645),
|
||||
(19181,3808,545,7024),
|
||||
(19217,3808,545,8061),
|
||||
(19221,3808,545,13156),
|
||||
(19680,3808,549,11381),
|
||||
(19662,3808,550,12619),
|
||||
(19425,3808,550,12645),
|
||||
(19420,3808,550,12649),
|
||||
(19620,3808,550,12650),
|
||||
(19606,3808,550,12652),
|
||||
(19615,3808,550,12653),
|
||||
(19418,3808,550,12655),
|
||||
(19417,3808,550,12658),
|
||||
(19697,3808,550,12664),
|
||||
(19698,3808,550,12669),
|
||||
(19699,3808,550,12672),
|
||||
(19407,3808,551,3280),
|
||||
(19400,3808,551,5038),
|
||||
(19403,3808,551,5470),
|
||||
(19162,3808,551,9948),
|
||||
(19398,3808,551,14749),
|
||||
(19561,3810,545,6612),
|
||||
(19558,3810,545,6645),
|
||||
(19542,3810,545,7024),
|
||||
(19576,3810,545,8061),
|
||||
(19557,3810,545,13156),
|
||||
(19565,3810,551,3280),
|
||||
(19538,3810,551,5038),
|
||||
(19598,3810,551,5470),
|
||||
(19514,3810,551,9948),
|
||||
(19570,3810,551,14749),
|
||||
(19646,3817,545,6612),
|
||||
(19651,3817,545,6645),
|
||||
(19635,3817,545,7024),
|
||||
(19637,3817,545,8061),
|
||||
(19639,3817,545,13156),
|
||||
(19641,3817,551,3280),
|
||||
(19628,3817,551,5038),
|
||||
(19631,3817,551,5470),
|
||||
(19625,3817,551,9948),
|
||||
(19626,3817,551,14749),
|
||||
(19706,3825,551,5038),
|
||||
(19709,3825,551,5470),
|
||||
(19708,3825,551,9948),
|
||||
(19712,3826,545,8061),
|
||||
(19920,3827,403,4955),
|
||||
(19999,3827,403,10968),
|
||||
(19845,3827,403,12027),
|
||||
(19801,3827,405,4956),
|
||||
(20028,3827,405,10969),
|
||||
(19965,3827,405,12028),
|
||||
(20017,3827,406,5531),
|
||||
(19795,3827,406,12619),
|
||||
(19798,3827,408,4957),
|
||||
(20011,3827,408,10970),
|
||||
(19864,3827,408,12029),
|
||||
(19790,3827,409,4958),
|
||||
(19828,3827,409,10971),
|
||||
(20091,3827,409,12030),
|
||||
(19787,3827,412,4959),
|
||||
(20040,3827,412,10972),
|
||||
(19869,3827,412,12031),
|
||||
(19939,3827,414,5565),
|
||||
(19796,3827,414,12645),
|
||||
(19846,3827,415,5567),
|
||||
(19791,3827,415,12646),
|
||||
(19789,3827,416,4960),
|
||||
(19874,3827,416,10973),
|
||||
(19867,3827,417,5570),
|
||||
(19923,3827,417,12648),
|
||||
(20002,3827,418,5571),
|
||||
(19797,3827,418,12649),
|
||||
(19843,3827,419,5572),
|
||||
(19788,3827,419,12650),
|
||||
(19871,3827,421,5574),
|
||||
(19799,3827,421,12652),
|
||||
(20030,3827,422,5575),
|
||||
(19784,3827,422,12653),
|
||||
(20025,3827,423,5579),
|
||||
(19800,3827,423,12654),
|
||||
(19829,3827,424,5580),
|
||||
(19822,3827,424,12655),
|
||||
(19866,3827,425,5581),
|
||||
(19984,3827,425,12656),
|
||||
(19841,3827,427,5583),
|
||||
(19785,3827,427,12658),
|
||||
(19877,3827,429,5588),
|
||||
(19996,3827,429,12662),
|
||||
(19870,3827,430,5589),
|
||||
(19875,3827,431,12664),
|
||||
(20037,3827,437,5603),
|
||||
(19786,3827,438,12672),
|
||||
(20134,3827,500,10971),
|
||||
(20038,3827,500,10973),
|
||||
(20092,3827,518,5565),
|
||||
(20013,3827,518,5570),
|
||||
(19956,3827,518,5574),
|
||||
(20054,3827,518,5579),
|
||||
(20005,3827,518,5580),
|
||||
(20022,3827,518,5583),
|
||||
(19941,3827,518,5589),
|
||||
(20044,3827,530,12027),
|
||||
(20032,3827,530,12028),
|
||||
(20042,3827,532,3900),
|
||||
(19865,3827,532,3901),
|
||||
(20087,3827,532,3903),
|
||||
(20080,3827,532,3905),
|
||||
(20144,3827,532,3906),
|
||||
(20007,3827,535,4295),
|
||||
(19954,3827,535,5051),
|
||||
(19942,3827,535,11327),
|
||||
(20033,3827,537,10407),
|
||||
(19905,3827,537,10427),
|
||||
(19958,3827,538,13227),
|
||||
(19876,3827,538,13253),
|
||||
(20138,3827,538,13261),
|
||||
(20084,3827,538,13265),
|
||||
(20035,3827,539,13464),
|
||||
(20024,3827,539,13486),
|
||||
(19934,3827,544,4955),
|
||||
(19809,3827,544,4956),
|
||||
(19804,3827,544,4957),
|
||||
(19802,3827,544,4958),
|
||||
(19970,3827,544,4959),
|
||||
(20051,3827,544,4960),
|
||||
(19719,3827,545,6612),
|
||||
(19723,3827,545,6645),
|
||||
(19717,3827,545,7024),
|
||||
(19716,3827,545,8061),
|
||||
(19729,3827,545,13156),
|
||||
(20081,3827,549,11380),
|
||||
(19831,3827,550,12619),
|
||||
(19944,3827,550,12645),
|
||||
(19816,3827,550,12646),
|
||||
(19926,3827,550,12648),
|
||||
(19850,3827,550,12649),
|
||||
(19812,3827,550,12650),
|
||||
(19977,3827,550,12652),
|
||||
(19793,3827,550,12653),
|
||||
(19807,3827,550,12654),
|
||||
(19861,3827,550,12655),
|
||||
(19903,3827,550,12658),
|
||||
(19792,3827,550,12672),
|
||||
(19736,3827,551,3280),
|
||||
(19714,3827,551,5038),
|
||||
(19744,3827,551,5470),
|
||||
(19713,3827,551,9948),
|
||||
(19741,3827,551,14749),
|
||||
(19774,3830,545,6612),
|
||||
(19765,3830,545,6645),
|
||||
(19768,3830,545,7024),
|
||||
(19755,3830,545,8061),
|
||||
(19772,3830,545,13156),
|
||||
(19756,3830,551,3280),
|
||||
(19750,3830,551,5038),
|
||||
(19748,3830,551,5470),
|
||||
(19754,3830,551,9948),
|
||||
(19763,3830,551,14749),
|
||||
(19751,3831,551,5470),
|
||||
(19823,3833,545,6612),
|
||||
(19911,3833,545,6645),
|
||||
(19821,3833,545,7024),
|
||||
(19909,3833,545,8061),
|
||||
(19908,3833,545,13156),
|
||||
(19837,3833,551,3280),
|
||||
(19803,3833,551,5038),
|
||||
(19838,3833,551,5470),
|
||||
(19826,3833,551,9948),
|
||||
(19918,3833,551,14749),
|
||||
(19881,3841,545,6612),
|
||||
(19892,3841,545,6645),
|
||||
(19883,3841,545,7024),
|
||||
(19890,3841,545,8061),
|
||||
(19886,3841,545,13156),
|
||||
(19992,3841,551,3280),
|
||||
(19879,3841,551,5038),
|
||||
(19878,3841,551,9948),
|
||||
(19960,3842,539,13486),
|
||||
(19938,3846,551,5038),
|
||||
(19961,3848,551,5470),
|
||||
(19963,3848,551,14749),
|
||||
(19997,3862,551,9948),
|
||||
(20001,3874,551,5038),
|
||||
(20150,3878,403,4955),
|
||||
(20151,3878,406,12619),
|
||||
(20152,3878,409,4958),
|
||||
(20153,3878,423,12654),
|
||||
(20154,3878,544,4955),
|
||||
(20103,3878,545,6612),
|
||||
(20099,3878,545,7024),
|
||||
(20123,3878,545,8061),
|
||||
(20102,3878,545,13156),
|
||||
(20130,3878,551,5038),
|
||||
(20124,3878,551,9948),
|
||||
(20133,3883,544,4960),
|
||||
(20100,3883,545,6612),
|
||||
(20109,3883,545,6645),
|
||||
(20105,3883,545,7024),
|
||||
(20119,3883,545,8061),
|
||||
(20114,3883,545,13156),
|
||||
(20132,3883,550,12652),
|
||||
(20061,3883,551,3280),
|
||||
(20065,3883,551,5038),
|
||||
(20069,3883,551,5470),
|
||||
(20058,3883,551,9948),
|
||||
(20059,3883,551,14749),
|
||||
(20148,3886,545,6612),
|
||||
(20147,3886,545,13156),
|
||||
(20145,3886,551,9948);
|
11
sql/character_collections.sql
Executable file
11
sql/character_collections.sql
Executable file
@ -0,0 +1,11 @@
|
||||
DROP TABLE IF EXISTS character_collections;
|
||||
CREATE TABLE character_collections (
|
||||
id INTEGER PRIMARY KEY,
|
||||
char_id INTEGER NOT NULL,
|
||||
collection_id INTEGER NOT NULL,
|
||||
completed INTEGER NOT NULL DEFAULT 0,
|
||||
UNIQUE(char_id, collection_id),
|
||||
FOREIGN KEY (char_id) REFERENCES characters(id) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
FOREIGN KEY (collection_id) REFERENCES collections(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
CREATE INDEX idx_character_collections_collection_id ON character_collections(collection_id);
|
9
sql/character_custom_spell_data.sql
Executable file
9
sql/character_custom_spell_data.sql
Executable file
@ -0,0 +1,9 @@
|
||||
DROP TABLE IF EXISTS character_custom_spell_data;
|
||||
CREATE TABLE character_custom_spell_data (
|
||||
charid INTEGER NOT NULL,
|
||||
spell_id INTEGER NOT NULL,
|
||||
field TEXT NOT NULL,
|
||||
type TEXT NOT NULL,
|
||||
value TEXT NOT NULL,
|
||||
PRIMARY KEY (charid, spell_id, field)
|
||||
);
|
10
sql/character_custom_spell_dataindex.sql
Executable file
10
sql/character_custom_spell_dataindex.sql
Executable file
@ -0,0 +1,10 @@
|
||||
DROP TABLE IF EXISTS character_custom_spell_dataindex;
|
||||
CREATE TABLE character_custom_spell_dataindex (
|
||||
charid INTEGER NOT NULL,
|
||||
spell_id INTEGER NOT NULL,
|
||||
idx INTEGER NOT NULL,
|
||||
type TEXT NOT NULL,
|
||||
value1 TEXT,
|
||||
value2 TEXT,
|
||||
PRIMARY KEY (charid, spell_id, idx)
|
||||
);
|
9
sql/character_custom_spell_display.sql
Executable file
9
sql/character_custom_spell_display.sql
Executable file
@ -0,0 +1,9 @@
|
||||
DROP TABLE IF EXISTS character_custom_spell_display;
|
||||
CREATE TABLE character_custom_spell_display (
|
||||
charid INTEGER NOT NULL,
|
||||
spell_id INTEGER NOT NULL,
|
||||
idx INTEGER NOT NULL,
|
||||
field TEXT NOT NULL,
|
||||
value TEXT,
|
||||
PRIMARY KEY (charid, spell_id, idx, field)
|
||||
);
|
77
sql/character_details.sql
Executable file
77
sql/character_details.sql
Executable file
@ -0,0 +1,77 @@
|
||||
DROP TABLE IF EXISTS character_details;
|
||||
CREATE TABLE character_details (
|
||||
id INTEGER PRIMARY KEY,
|
||||
char_id INTEGER NOT NULL DEFAULT 0 UNIQUE,
|
||||
hp INTEGER NOT NULL DEFAULT 0,
|
||||
power INTEGER NOT NULL DEFAULT 0,
|
||||
savagery INTEGER NOT NULL DEFAULT 0,
|
||||
dissonance INTEGER NOT NULL DEFAULT 0,
|
||||
max_concentration INTEGER NOT NULL DEFAULT 0,
|
||||
attack INTEGER NOT NULL DEFAULT 0,
|
||||
mitigation INTEGER NOT NULL DEFAULT 0,
|
||||
avoidance INTEGER NOT NULL DEFAULT 0,
|
||||
parry INTEGER NOT NULL DEFAULT 0,
|
||||
deflection INTEGER NOT NULL DEFAULT 0,
|
||||
block INTEGER NOT NULL DEFAULT 0,
|
||||
str INTEGER NOT NULL DEFAULT 0,
|
||||
sta INTEGER NOT NULL DEFAULT 0,
|
||||
agi INTEGER NOT NULL DEFAULT 0,
|
||||
wis INTEGER NOT NULL DEFAULT 0,
|
||||
intel INTEGER NOT NULL DEFAULT 0,
|
||||
heat INTEGER NOT NULL DEFAULT 0,
|
||||
cold INTEGER NOT NULL DEFAULT 0,
|
||||
magic INTEGER NOT NULL DEFAULT 0,
|
||||
mental INTEGER NOT NULL DEFAULT 0,
|
||||
divine INTEGER NOT NULL DEFAULT 0,
|
||||
disease INTEGER NOT NULL DEFAULT 0,
|
||||
poison INTEGER NOT NULL DEFAULT 0,
|
||||
elemental INTEGER NOT NULL DEFAULT 0,
|
||||
arcane INTEGER NOT NULL DEFAULT 0,
|
||||
noxious INTEGER NOT NULL DEFAULT 0,
|
||||
coin_copper INTEGER NOT NULL DEFAULT 0,
|
||||
coin_silver INTEGER NOT NULL DEFAULT 0,
|
||||
coin_gold INTEGER NOT NULL DEFAULT 0,
|
||||
coin_plat INTEGER NOT NULL DEFAULT 0,
|
||||
pet_name TEXT NOT NULL DEFAULT 'No Pet',
|
||||
status_points INTEGER NOT NULL DEFAULT 0,
|
||||
max_power INTEGER NOT NULL DEFAULT 0,
|
||||
max_hp INTEGER NOT NULL DEFAULT 0,
|
||||
max_savagery INTEGER NOT NULL DEFAULT 0,
|
||||
max_dissonance INTEGER NOT NULL DEFAULT 0,
|
||||
xp INTEGER NOT NULL DEFAULT 0,
|
||||
xp_needed INTEGER NOT NULL DEFAULT 0,
|
||||
xp_debt REAL NOT NULL DEFAULT 0,
|
||||
xp_vitality REAL NOT NULL DEFAULT 0,
|
||||
tradeskill_xp INTEGER NOT NULL DEFAULT 0,
|
||||
tradeskill_xp_needed INTEGER NOT NULL DEFAULT 0,
|
||||
tradeskill_xp_debt INTEGER NOT NULL DEFAULT 0,
|
||||
tradeskill_xp_vitality REAL NOT NULL DEFAULT 0,
|
||||
bank_copper INTEGER NOT NULL DEFAULT 0,
|
||||
bank_silver INTEGER NOT NULL DEFAULT 0,
|
||||
bank_gold INTEGER NOT NULL DEFAULT 0,
|
||||
bank_plat INTEGER NOT NULL DEFAULT 0,
|
||||
bind_zone_id INTEGER NOT NULL DEFAULT 0,
|
||||
bind_x REAL NOT NULL DEFAULT 0,
|
||||
bind_y REAL NOT NULL DEFAULT 0,
|
||||
bind_z REAL NOT NULL DEFAULT 0,
|
||||
bind_heading REAL NOT NULL DEFAULT 0,
|
||||
house_zone_id INTEGER NOT NULL DEFAULT 0,
|
||||
combat_voice INTEGER NOT NULL DEFAULT 52,
|
||||
emote_voice INTEGER NOT NULL DEFAULT 1060,
|
||||
biography TEXT NOT NULL DEFAULT '',
|
||||
flags INTEGER NOT NULL DEFAULT 301465665,
|
||||
flags2 INTEGER NOT NULL DEFAULT 131112,
|
||||
prefix_title INTEGER NOT NULL DEFAULT -1,
|
||||
suffix_title INTEGER NOT NULL DEFAULT -1,
|
||||
current_language INTEGER NOT NULL DEFAULT 0,
|
||||
last_name TEXT NOT NULL DEFAULT '',
|
||||
assigned_aa INTEGER NOT NULL DEFAULT 0,
|
||||
unassigned_aa INTEGER NOT NULL DEFAULT 0,
|
||||
tradeskill_aa INTEGER NOT NULL DEFAULT 0,
|
||||
unassigned_tradeskill_aa INTEGER NOT NULL DEFAULT 0,
|
||||
prestige_aa INTEGER NOT NULL DEFAULT 0,
|
||||
unassigned_prestige_aa INTEGER NOT NULL DEFAULT 0,
|
||||
tradeskill_prestige_aa INTEGER NOT NULL DEFAULT 0,
|
||||
unassigned_tradeskill_prestige_aa INTEGER NOT NULL DEFAULT 0,
|
||||
FOREIGN KEY (char_id) REFERENCES characters(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
11
sql/character_factions.sql
Executable file
11
sql/character_factions.sql
Executable file
@ -0,0 +1,11 @@
|
||||
DROP TABLE IF EXISTS character_factions;
|
||||
CREATE TABLE character_factions (
|
||||
id INTEGER PRIMARY KEY,
|
||||
char_id INTEGER NOT NULL DEFAULT 0,
|
||||
faction_id INTEGER NOT NULL DEFAULT 0,
|
||||
faction_level INTEGER NOT NULL DEFAULT 0,
|
||||
UNIQUE(char_id, faction_id),
|
||||
FOREIGN KEY (char_id) REFERENCES characters(id) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
FOREIGN KEY (faction_id) REFERENCES factions(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
CREATE INDEX idx_character_factions_faction_id ON character_factions(faction_id);
|
15
sql/character_history.sql
Executable file
15
sql/character_history.sql
Executable file
@ -0,0 +1,15 @@
|
||||
DROP TABLE IF EXISTS character_history;
|
||||
CREATE TABLE character_history (
|
||||
id INTEGER PRIMARY KEY,
|
||||
char_id INTEGER NOT NULL DEFAULT 0,
|
||||
type TEXT NOT NULL DEFAULT 'None',
|
||||
subtype TEXT NOT NULL DEFAULT 'None',
|
||||
value INTEGER NOT NULL DEFAULT 0,
|
||||
value2 INTEGER NOT NULL DEFAULT 0,
|
||||
location TEXT DEFAULT '',
|
||||
event_id INTEGER NOT NULL DEFAULT 0,
|
||||
event_date INTEGER NOT NULL DEFAULT 0,
|
||||
UNIQUE(char_id, type, subtype, value),
|
||||
FOREIGN KEY (char_id) REFERENCES characters(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
CREATE INDEX idx_character_history_char_id_type_subtype ON character_history(char_id, type, subtype);
|
11
sql/character_house_deposits.sql
Executable file
11
sql/character_house_deposits.sql
Executable file
@ -0,0 +1,11 @@
|
||||
DROP TABLE IF EXISTS character_house_deposits;
|
||||
CREATE TABLE character_house_deposits (
|
||||
timestamp INTEGER NOT NULL DEFAULT 0,
|
||||
house_id INTEGER NOT NULL DEFAULT 0,
|
||||
instance_id INTEGER NOT NULL DEFAULT 0,
|
||||
name TEXT NOT NULL DEFAULT '',
|
||||
amount INTEGER NOT NULL DEFAULT 0,
|
||||
last_amount INTEGER NOT NULL DEFAULT 0,
|
||||
status INTEGER NOT NULL DEFAULT 0,
|
||||
last_status INTEGER NOT NULL DEFAULT 0
|
||||
);
|
11
sql/character_house_history.sql
Executable file
11
sql/character_house_history.sql
Executable file
@ -0,0 +1,11 @@
|
||||
DROP TABLE IF EXISTS character_house_history;
|
||||
CREATE TABLE character_house_history (
|
||||
timestamp INTEGER NOT NULL DEFAULT 0,
|
||||
house_id INTEGER NOT NULL DEFAULT 0,
|
||||
instance_id INTEGER NOT NULL DEFAULT 0,
|
||||
name TEXT NOT NULL DEFAULT '',
|
||||
reason TEXT NOT NULL DEFAULT '',
|
||||
amount INTEGER NOT NULL DEFAULT 0,
|
||||
status INTEGER NOT NULL DEFAULT 0,
|
||||
pos_flag INTEGER NOT NULL DEFAULT 0
|
||||
);
|
12
sql/character_houses.sql
Executable file
12
sql/character_houses.sql
Executable file
@ -0,0 +1,12 @@
|
||||
DROP TABLE IF EXISTS character_houses;
|
||||
CREATE TABLE character_houses (
|
||||
id INTEGER PRIMARY KEY,
|
||||
char_id INTEGER NOT NULL DEFAULT 0,
|
||||
house_id INTEGER NOT NULL DEFAULT 0,
|
||||
instance_id INTEGER NOT NULL DEFAULT 0,
|
||||
upkeep_due INTEGER NOT NULL DEFAULT 0,
|
||||
escrow_coins INTEGER NOT NULL DEFAULT 0,
|
||||
escrow_status INTEGER NOT NULL DEFAULT 0,
|
||||
FOREIGN KEY (char_id) REFERENCES characters(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
CREATE INDEX idx_character_houses_char_id ON character_houses(char_id);
|
14
sql/character_instances.sql
Executable file
14
sql/character_instances.sql
Executable file
@ -0,0 +1,14 @@
|
||||
DROP TABLE IF EXISTS character_instances;
|
||||
CREATE TABLE character_instances (
|
||||
id INTEGER PRIMARY KEY,
|
||||
char_id INTEGER NOT NULL DEFAULT 0,
|
||||
instance_id INTEGER NOT NULL DEFAULT 0,
|
||||
instance_zone_name TEXT NOT NULL,
|
||||
instance_type INTEGER NOT NULL DEFAULT 0,
|
||||
last_success_timestamp INTEGER NOT NULL DEFAULT 0,
|
||||
last_failure_timestamp INTEGER NOT NULL DEFAULT 0,
|
||||
success_lockout_time INTEGER NOT NULL DEFAULT 0,
|
||||
failure_lockout_time INTEGER NOT NULL DEFAULT 0
|
||||
);
|
||||
CREATE INDEX idx_character_instances_char_id ON character_instances(char_id);
|
||||
CREATE INDEX idx_character_instances_instance_zone_name ON character_instances(instance_zone_name);
|
36
sql/character_items.sql
Executable file
36
sql/character_items.sql
Executable file
@ -0,0 +1,36 @@
|
||||
DROP TABLE IF EXISTS character_items;
|
||||
CREATE TABLE character_items (
|
||||
id INTEGER PRIMARY KEY,
|
||||
type TEXT NOT NULL DEFAULT 'NOT-EQUIPPED',
|
||||
account_id INTEGER NOT NULL DEFAULT 0,
|
||||
char_id INTEGER NOT NULL DEFAULT 0,
|
||||
bag_id INTEGER NOT NULL DEFAULT 0,
|
||||
slot INTEGER NOT NULL DEFAULT 0,
|
||||
item_id INTEGER NOT NULL DEFAULT 0,
|
||||
creator TEXT NOT NULL DEFAULT '',
|
||||
condition_ INTEGER NOT NULL DEFAULT 100,
|
||||
attuned INTEGER NOT NULL DEFAULT 0,
|
||||
count INTEGER NOT NULL DEFAULT 1,
|
||||
max_sell_value INTEGER NOT NULL DEFAULT 0,
|
||||
login_checksum INTEGER NOT NULL DEFAULT 0,
|
||||
adorn0 INTEGER NOT NULL DEFAULT 0,
|
||||
adorn1 INTEGER NOT NULL DEFAULT 0,
|
||||
adorn2 INTEGER NOT NULL DEFAULT 0,
|
||||
adorn1_time INTEGER NOT NULL DEFAULT 0,
|
||||
adorn3 INTEGER NOT NULL DEFAULT 0,
|
||||
adorn4 INTEGER NOT NULL DEFAULT 0,
|
||||
adorn5 INTEGER NOT NULL DEFAULT 0,
|
||||
adorn6 INTEGER NOT NULL DEFAULT 0,
|
||||
adorn7 INTEGER NOT NULL DEFAULT 0,
|
||||
adorn8 INTEGER NOT NULL DEFAULT 0,
|
||||
adorn9 INTEGER NOT NULL DEFAULT 0,
|
||||
adorn10 INTEGER NOT NULL DEFAULT 0,
|
||||
no_sale INTEGER NOT NULL DEFAULT 0,
|
||||
last_saved INTEGER NOT NULL DEFAULT (strftime('%s', 'now')),
|
||||
created INTEGER NOT NULL DEFAULT (strftime('%s', 'now')),
|
||||
equip_slot INTEGER NOT NULL DEFAULT 0,
|
||||
UNIQUE(char_id, type, bag_id, slot),
|
||||
FOREIGN KEY (char_id) REFERENCES characters(id) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
FOREIGN KEY (item_id) REFERENCES items(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
CREATE INDEX idx_character_items_item_id ON character_items(item_id);
|
5
sql/character_items_group_members.sql
Executable file
5
sql/character_items_group_members.sql
Executable file
@ -0,0 +1,5 @@
|
||||
DROP TABLE IF EXISTS character_items_group_members;
|
||||
CREATE TABLE character_items_group_members (
|
||||
unique_id INTEGER NOT NULL DEFAULT 0,
|
||||
character_id INTEGER NOT NULL DEFAULT 0
|
||||
);
|
7
sql/character_languages.sql
Executable file
7
sql/character_languages.sql
Executable file
@ -0,0 +1,7 @@
|
||||
DROP TABLE IF EXISTS character_languages;
|
||||
CREATE TABLE character_languages (
|
||||
id INTEGER PRIMARY KEY,
|
||||
char_id INTEGER NOT NULL DEFAULT 0,
|
||||
language_id INTEGER NOT NULL DEFAULT 0
|
||||
);
|
||||
CREATE INDEX idx_character_languages_char_id ON character_languages(char_id);
|
9
sql/character_lua_history.sql
Executable file
9
sql/character_lua_history.sql
Executable file
@ -0,0 +1,9 @@
|
||||
DROP TABLE IF EXISTS character_lua_history;
|
||||
CREATE TABLE character_lua_history (
|
||||
id INTEGER PRIMARY KEY,
|
||||
char_id INTEGER NOT NULL DEFAULT 0,
|
||||
event_id INTEGER NOT NULL DEFAULT 0,
|
||||
value INTEGER NOT NULL DEFAULT 0,
|
||||
value2 INTEGER NOT NULL DEFAULT 0,
|
||||
UNIQUE(char_id, event_id)
|
||||
);
|
11
sql/character_macros.sql
Executable file
11
sql/character_macros.sql
Executable file
@ -0,0 +1,11 @@
|
||||
DROP TABLE IF EXISTS character_macros;
|
||||
CREATE TABLE character_macros (
|
||||
id INTEGER PRIMARY KEY,
|
||||
char_id INTEGER NOT NULL DEFAULT 0,
|
||||
macro_number INTEGER NOT NULL DEFAULT 0,
|
||||
macro_icon INTEGER NOT NULL DEFAULT 0,
|
||||
macro_name TEXT,
|
||||
macro_text TEXT,
|
||||
FOREIGN KEY (char_id) REFERENCES characters(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
CREATE INDEX idx_character_macros_char_id ON character_macros(char_id);
|
22
sql/character_mail.sql
Executable file
22
sql/character_mail.sql
Executable file
@ -0,0 +1,22 @@
|
||||
DROP TABLE IF EXISTS character_mail;
|
||||
CREATE TABLE character_mail (
|
||||
id INTEGER PRIMARY KEY,
|
||||
player_to_id INTEGER NOT NULL DEFAULT 0,
|
||||
player_from TEXT NOT NULL DEFAULT '',
|
||||
subject TEXT NOT NULL DEFAULT '',
|
||||
mail_body TEXT,
|
||||
already_read INTEGER NOT NULL DEFAULT 0,
|
||||
mail_type INTEGER NOT NULL DEFAULT 0,
|
||||
coin_copper INTEGER NOT NULL DEFAULT 0,
|
||||
coin_silver INTEGER NOT NULL DEFAULT 0,
|
||||
coin_gold INTEGER NOT NULL DEFAULT 0,
|
||||
coin_plat INTEGER NOT NULL DEFAULT 0,
|
||||
stack INTEGER NOT NULL DEFAULT 0,
|
||||
postage_cost INTEGER NOT NULL DEFAULT 0,
|
||||
attachment_cost INTEGER NOT NULL DEFAULT 0,
|
||||
char_item_id INTEGER NOT NULL DEFAULT 0,
|
||||
time_sent INTEGER NOT NULL DEFAULT 0,
|
||||
expire_time INTEGER NOT NULL DEFAULT 0,
|
||||
FOREIGN KEY (player_to_id) REFERENCES characters(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
CREATE INDEX idx_character_mail_player_to_id ON character_mail(player_to_id);
|
8
sql/character_pictures.sql
Executable file
8
sql/character_pictures.sql
Executable file
@ -0,0 +1,8 @@
|
||||
DROP TABLE IF EXISTS character_pictures;
|
||||
CREATE TABLE character_pictures (
|
||||
id INTEGER PRIMARY KEY,
|
||||
char_id INTEGER NOT NULL DEFAULT 0,
|
||||
pic_type INTEGER NOT NULL DEFAULT 0,
|
||||
picture TEXT NOT NULL,
|
||||
UNIQUE(char_id, pic_type)
|
||||
);
|
9
sql/character_pictures_login.sql
Executable file
9
sql/character_pictures_login.sql
Executable file
@ -0,0 +1,9 @@
|
||||
DROP TABLE IF EXISTS character_pictures;
|
||||
CREATE TABLE character_pictures (
|
||||
id INTEGER PRIMARY KEY,
|
||||
server_id INTEGER NOT NULL,
|
||||
account_id INTEGER NOT NULL,
|
||||
character_id INTEGER NOT NULL,
|
||||
picture TEXT NOT NULL,
|
||||
UNIQUE(character_id, server_id, account_id)
|
||||
);
|
6
sql/character_properties.sql
Executable file
6
sql/character_properties.sql
Executable file
@ -0,0 +1,6 @@
|
||||
DROP TABLE IF EXISTS character_properties;
|
||||
CREATE TABLE character_properties (
|
||||
char_id INTEGER NOT NULL DEFAULT 0,
|
||||
prop_name TEXT NOT NULL DEFAULT '',
|
||||
prop_value TEXT NOT NULL DEFAULT ''
|
||||
);
|
12
sql/character_quest_progress.sql
Executable file
12
sql/character_quest_progress.sql
Executable file
@ -0,0 +1,12 @@
|
||||
DROP TABLE IF EXISTS character_quest_progress;
|
||||
CREATE TABLE character_quest_progress (
|
||||
id INTEGER PRIMARY KEY,
|
||||
char_id INTEGER NOT NULL DEFAULT 0,
|
||||
quest_id INTEGER NOT NULL DEFAULT 0,
|
||||
step_id INTEGER NOT NULL DEFAULT 0,
|
||||
progress INTEGER NOT NULL DEFAULT 0,
|
||||
UNIQUE(char_id, quest_id, step_id),
|
||||
FOREIGN KEY (char_id) REFERENCES characters(id) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
FOREIGN KEY (quest_id) REFERENCES quests(quest_id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
CREATE INDEX idx_character_quest_progress_quest_id ON character_quest_progress(quest_id);
|
12
sql/character_quest_rewards.sql
Executable file
12
sql/character_quest_rewards.sql
Executable file
@ -0,0 +1,12 @@
|
||||
DROP TABLE IF EXISTS character_quest_rewards;
|
||||
CREATE TABLE character_quest_rewards (
|
||||
char_id INTEGER NOT NULL DEFAULT 0,
|
||||
quest_id INTEGER NOT NULL DEFAULT 0,
|
||||
indexed INTEGER NOT NULL DEFAULT 0,
|
||||
is_temporary INTEGER NOT NULL DEFAULT 0,
|
||||
is_collection INTEGER NOT NULL DEFAULT 0,
|
||||
has_displayed INTEGER NOT NULL DEFAULT 0,
|
||||
tmp_coin INTEGER NOT NULL DEFAULT 0,
|
||||
tmp_status INTEGER NOT NULL DEFAULT 0,
|
||||
description TEXT NOT NULL DEFAULT ''
|
||||
);
|
7
sql/character_quest_temporary_rewards.sql
Executable file
7
sql/character_quest_temporary_rewards.sql
Executable file
@ -0,0 +1,7 @@
|
||||
DROP TABLE IF EXISTS character_quest_temporary_rewards;
|
||||
CREATE TABLE character_quest_temporary_rewards (
|
||||
char_id INTEGER NOT NULL DEFAULT 0,
|
||||
quest_id INTEGER NOT NULL DEFAULT 0,
|
||||
item_id INTEGER NOT NULL DEFAULT 0,
|
||||
count INTEGER NOT NULL DEFAULT 0
|
||||
);
|
19
sql/character_quests.sql
Executable file
19
sql/character_quests.sql
Executable file
@ -0,0 +1,19 @@
|
||||
DROP TABLE IF EXISTS character_quests;
|
||||
CREATE TABLE character_quests (
|
||||
id INTEGER PRIMARY KEY,
|
||||
char_id INTEGER NOT NULL DEFAULT 0,
|
||||
quest_id INTEGER NOT NULL DEFAULT 0,
|
||||
quest_giver INTEGER NOT NULL DEFAULT 0,
|
||||
given_date INTEGER NOT NULL,
|
||||
completed_date INTEGER,
|
||||
current_quest INTEGER NOT NULL DEFAULT 0,
|
||||
tracked INTEGER NOT NULL DEFAULT 0,
|
||||
quest_flags INTEGER NOT NULL DEFAULT 0,
|
||||
hidden INTEGER NOT NULL DEFAULT 0,
|
||||
complete_count INTEGER NOT NULL DEFAULT 0,
|
||||
status_to_earn INTEGER NOT NULL DEFAULT 0,
|
||||
UNIQUE(char_id, quest_id),
|
||||
FOREIGN KEY (char_id) REFERENCES characters(id) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
FOREIGN KEY (quest_id) REFERENCES quests(quest_id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
CREATE INDEX idx_character_quests_quest_id ON character_quests(quest_id);
|
8
sql/character_recipe_books.sql
Executable file
8
sql/character_recipe_books.sql
Executable file
@ -0,0 +1,8 @@
|
||||
DROP TABLE IF EXISTS character_recipe_books;
|
||||
CREATE TABLE character_recipe_books (
|
||||
id INTEGER PRIMARY KEY,
|
||||
char_id INTEGER NOT NULL DEFAULT 0,
|
||||
recipebook_id INTEGER NOT NULL DEFAULT 0
|
||||
);
|
||||
CREATE INDEX idx_character_recipe_books_char_id ON character_recipe_books(char_id);
|
||||
CREATE INDEX idx_character_recipe_books_recipebook_id ON character_recipe_books(recipebook_id);
|
10
sql/character_recipes.sql
Executable file
10
sql/character_recipes.sql
Executable file
@ -0,0 +1,10 @@
|
||||
DROP TABLE IF EXISTS character_recipes;
|
||||
CREATE TABLE character_recipes (
|
||||
id INTEGER PRIMARY KEY,
|
||||
char_id INTEGER NOT NULL DEFAULT 0,
|
||||
recipe_id INTEGER NOT NULL DEFAULT 0,
|
||||
highest_stage INTEGER NOT NULL DEFAULT 0,
|
||||
FOREIGN KEY (char_id) REFERENCES characters(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
CREATE INDEX idx_character_recipes_char_id ON character_recipes(char_id);
|
||||
CREATE INDEX idx_character_recipes_recipe_id ON character_recipes(recipe_id);
|
14
sql/character_skillbar.sql
Executable file
14
sql/character_skillbar.sql
Executable file
@ -0,0 +1,14 @@
|
||||
DROP TABLE IF EXISTS character_skillbar;
|
||||
CREATE TABLE character_skillbar (
|
||||
id INTEGER PRIMARY KEY,
|
||||
char_id INTEGER NOT NULL DEFAULT 0,
|
||||
type INTEGER NOT NULL DEFAULT 1,
|
||||
hotbar INTEGER NOT NULL DEFAULT 0,
|
||||
spell_id INTEGER NOT NULL DEFAULT 0,
|
||||
tier INTEGER NOT NULL DEFAULT 1,
|
||||
slot INTEGER NOT NULL DEFAULT 0,
|
||||
text_val TEXT NOT NULL DEFAULT 'Unused',
|
||||
UNIQUE(hotbar, char_id, slot),
|
||||
FOREIGN KEY (char_id) REFERENCES characters(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
CREATE INDEX idx_character_skillbar_char_id ON character_skillbar(char_id);
|
3477
sql/character_skills.sql
Executable file
3477
sql/character_skills.sql
Executable file
File diff suppressed because it is too large
Load Diff
9
sql/character_social.sql
Executable file
9
sql/character_social.sql
Executable file
@ -0,0 +1,9 @@
|
||||
DROP TABLE IF EXISTS character_social;
|
||||
CREATE TABLE character_social (
|
||||
id INTEGER PRIMARY KEY,
|
||||
char_id INTEGER NOT NULL DEFAULT 0,
|
||||
name TEXT NOT NULL DEFAULT '',
|
||||
type TEXT NOT NULL DEFAULT 'FRIEND',
|
||||
UNIQUE(char_id, name, type),
|
||||
FOREIGN KEY (char_id) REFERENCES characters(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
10
sql/character_spell_effect_targets.sql
Executable file
10
sql/character_spell_effect_targets.sql
Executable file
@ -0,0 +1,10 @@
|
||||
DROP TABLE IF EXISTS character_spell_effect_targets;
|
||||
CREATE TABLE character_spell_effect_targets (
|
||||
caster_char_id INTEGER NOT NULL DEFAULT 0,
|
||||
target_char_id INTEGER NOT NULL DEFAULT 0,
|
||||
target_type INTEGER NOT NULL DEFAULT 0,
|
||||
db_effect_type INTEGER NOT NULL DEFAULT 0,
|
||||
spell_id INTEGER NOT NULL DEFAULT 0,
|
||||
effect_slot INTEGER NOT NULL DEFAULT 0,
|
||||
slot_pos INTEGER NOT NULL DEFAULT 0
|
||||
);
|
32
sql/character_spell_effects.sql
Executable file
32
sql/character_spell_effects.sql
Executable file
@ -0,0 +1,32 @@
|
||||
DROP TABLE IF EXISTS character_spell_effects;
|
||||
CREATE TABLE character_spell_effects (
|
||||
name TEXT NOT NULL DEFAULT '',
|
||||
caster_char_id INTEGER NOT NULL DEFAULT 0,
|
||||
target_char_id INTEGER NOT NULL DEFAULT 0,
|
||||
target_type INTEGER NOT NULL DEFAULT 0,
|
||||
db_effect_type INTEGER NOT NULL DEFAULT 0,
|
||||
spell_id INTEGER NOT NULL DEFAULT 0,
|
||||
effect_slot INTEGER NOT NULL DEFAULT 0,
|
||||
slot_pos INTEGER NOT NULL DEFAULT 0,
|
||||
icon INTEGER NOT NULL DEFAULT 0,
|
||||
icon_backdrop INTEGER NOT NULL DEFAULT 0,
|
||||
conc_used INTEGER NOT NULL DEFAULT 0,
|
||||
tier INTEGER NOT NULL DEFAULT 0,
|
||||
total_time REAL NOT NULL DEFAULT 0,
|
||||
expire_timestamp INTEGER NOT NULL DEFAULT 0,
|
||||
lua_file TEXT NOT NULL DEFAULT '',
|
||||
custom_spell INTEGER NOT NULL DEFAULT 0,
|
||||
charid INTEGER NOT NULL DEFAULT 0,
|
||||
damage_remaining INTEGER NOT NULL DEFAULT 0,
|
||||
effect_bitmask INTEGER NOT NULL DEFAULT 0,
|
||||
num_triggers INTEGER NOT NULL DEFAULT 0,
|
||||
had_triggers INTEGER NOT NULL DEFAULT 0,
|
||||
cancel_after_triggers INTEGER NOT NULL DEFAULT 0,
|
||||
crit INTEGER NOT NULL DEFAULT 0,
|
||||
last_spellattack_hit INTEGER NOT NULL DEFAULT 0,
|
||||
interrupted INTEGER NOT NULL DEFAULT 0,
|
||||
resisted INTEGER NOT NULL DEFAULT 0,
|
||||
has_damaged INTEGER NOT NULL DEFAULT 0,
|
||||
custom_function TEXT NOT NULL,
|
||||
caster_level INTEGER NOT NULL DEFAULT 0
|
||||
);
|
12
sql/character_spells.sql
Executable file
12
sql/character_spells.sql
Executable file
@ -0,0 +1,12 @@
|
||||
DROP TABLE IF EXISTS character_spells;
|
||||
CREATE TABLE character_spells (
|
||||
id INTEGER PRIMARY KEY,
|
||||
char_id INTEGER NOT NULL DEFAULT 0,
|
||||
spell_id INTEGER NOT NULL DEFAULT 0,
|
||||
tier INTEGER NOT NULL DEFAULT 1,
|
||||
knowledge_slot INTEGER NOT NULL DEFAULT -1,
|
||||
UNIQUE(char_id, spell_id, tier),
|
||||
FOREIGN KEY (char_id) REFERENCES characters(id) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
FOREIGN KEY (spell_id) REFERENCES spells(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
CREATE INDEX idx_character_spells_spell_id ON character_spells(spell_id);
|
40
sql/character_spirit_shards.sql
Executable file
40
sql/character_spirit_shards.sql
Executable file
@ -0,0 +1,40 @@
|
||||
DROP TABLE IF EXISTS character_spirit_shards;
|
||||
CREATE TABLE character_spirit_shards (
|
||||
id INTEGER PRIMARY KEY,
|
||||
timestamp INTEGER NOT NULL DEFAULT (strftime('%s', 'now')),
|
||||
name TEXT NOT NULL DEFAULT '',
|
||||
level INTEGER NOT NULL DEFAULT 0,
|
||||
race INTEGER NOT NULL DEFAULT 0,
|
||||
gender INTEGER NOT NULL DEFAULT 0,
|
||||
adventure_class INTEGER NOT NULL DEFAULT 0,
|
||||
model_type INTEGER NOT NULL DEFAULT 0,
|
||||
soga_model_type INTEGER NOT NULL DEFAULT 0,
|
||||
hair_type INTEGER NOT NULL DEFAULT 0,
|
||||
hair_face_type INTEGER NOT NULL DEFAULT 0,
|
||||
wing_type INTEGER NOT NULL DEFAULT 0,
|
||||
chest_type INTEGER NOT NULL DEFAULT 0,
|
||||
legs_type INTEGER NOT NULL DEFAULT 0,
|
||||
soga_hair_type INTEGER NOT NULL DEFAULT 0,
|
||||
soga_hair_face_type INTEGER NOT NULL DEFAULT 0,
|
||||
hide_hood INTEGER NOT NULL DEFAULT 0,
|
||||
size INTEGER NOT NULL DEFAULT 0,
|
||||
collision_radius INTEGER NOT NULL DEFAULT 0,
|
||||
action_state INTEGER NOT NULL DEFAULT 0,
|
||||
visual_state INTEGER NOT NULL DEFAULT 0,
|
||||
mood_state INTEGER NOT NULL DEFAULT 0,
|
||||
emote_state INTEGER NOT NULL DEFAULT 0,
|
||||
pos_state INTEGER NOT NULL DEFAULT 0,
|
||||
activity_status INTEGER NOT NULL DEFAULT 0,
|
||||
sub_title TEXT NOT NULL DEFAULT '',
|
||||
prefix_title TEXT NOT NULL DEFAULT '',
|
||||
suffix_title TEXT NOT NULL DEFAULT '',
|
||||
lastname TEXT NOT NULL DEFAULT '',
|
||||
x REAL NOT NULL DEFAULT 0,
|
||||
y REAL NOT NULL DEFAULT 0,
|
||||
z REAL NOT NULL DEFAULT 0,
|
||||
heading REAL NOT NULL DEFAULT 0,
|
||||
gridid INTEGER NOT NULL DEFAULT 0,
|
||||
zoneid INTEGER NOT NULL DEFAULT 0,
|
||||
instanceid INTEGER NOT NULL DEFAULT 0,
|
||||
charid INTEGER NOT NULL DEFAULT 0
|
||||
);
|
8
sql/character_titles.sql
Executable file
8
sql/character_titles.sql
Executable file
@ -0,0 +1,8 @@
|
||||
DROP TABLE IF EXISTS character_titles;
|
||||
CREATE TABLE character_titles (
|
||||
id INTEGER PRIMARY KEY,
|
||||
char_id INTEGER NOT NULL DEFAULT 0,
|
||||
title_id INTEGER NOT NULL DEFAULT 0,
|
||||
FOREIGN KEY (char_id) REFERENCES characters(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
CREATE INDEX idx_character_titles_char_id ON character_titles(char_id);
|
49
sql/characters.sql
Executable file
49
sql/characters.sql
Executable file
@ -0,0 +1,49 @@
|
||||
DROP TABLE IF EXISTS characters;
|
||||
CREATE TABLE characters (
|
||||
id INTEGER PRIMARY KEY,
|
||||
account_id INTEGER NOT NULL DEFAULT 0,
|
||||
server_id INTEGER NOT NULL DEFAULT 0,
|
||||
name TEXT NOT NULL DEFAULT '',
|
||||
race INTEGER NOT NULL DEFAULT 0,
|
||||
class INTEGER NOT NULL DEFAULT 0,
|
||||
gender INTEGER NOT NULL DEFAULT 0,
|
||||
deity INTEGER NOT NULL DEFAULT 0,
|
||||
body_size REAL NOT NULL DEFAULT 0,
|
||||
body_age REAL NOT NULL DEFAULT 0,
|
||||
current_zone_id INTEGER NOT NULL DEFAULT 253,
|
||||
level INTEGER NOT NULL DEFAULT 1,
|
||||
tradeskill_class INTEGER NOT NULL DEFAULT 0,
|
||||
tradeskill_level INTEGER NOT NULL DEFAULT 1,
|
||||
soga_wing_type INTEGER NOT NULL,
|
||||
soga_chest_type INTEGER NOT NULL,
|
||||
soga_legs_type INTEGER NOT NULL,
|
||||
soga_hair_type INTEGER NOT NULL,
|
||||
soga_facial_hair_type INTEGER NOT NULL DEFAULT 0,
|
||||
soga_model_type INTEGER NOT NULL,
|
||||
legs_type INTEGER NOT NULL,
|
||||
chest_type INTEGER NOT NULL,
|
||||
wing_type INTEGER NOT NULL,
|
||||
hair_type INTEGER NOT NULL,
|
||||
facial_hair_type INTEGER NOT NULL DEFAULT 0,
|
||||
model_type INTEGER NOT NULL,
|
||||
x REAL NOT NULL DEFAULT 0,
|
||||
y REAL NOT NULL DEFAULT 0,
|
||||
z REAL NOT NULL DEFAULT 0,
|
||||
heading REAL NOT NULL DEFAULT 0,
|
||||
instance_id INTEGER NOT NULL DEFAULT 0,
|
||||
starting_city INTEGER NOT NULL DEFAULT 1,
|
||||
deleted INTEGER NOT NULL DEFAULT 0,
|
||||
unix_timestamp INTEGER NOT NULL DEFAULT 0,
|
||||
created_date INTEGER NOT NULL DEFAULT 0,
|
||||
last_played INTEGER NOT NULL DEFAULT (strftime('%s', 'now')),
|
||||
last_saved INTEGER NOT NULL DEFAULT 0,
|
||||
admin_status INTEGER NOT NULL DEFAULT 0,
|
||||
is_online INTEGER NOT NULL DEFAULT 0,
|
||||
group_id INTEGER NOT NULL DEFAULT 0,
|
||||
alignment INTEGER NOT NULL DEFAULT 0,
|
||||
first_world_login INTEGER NOT NULL DEFAULT 0,
|
||||
zone_duplicating_id INTEGER NOT NULL DEFAULT 0
|
||||
);
|
||||
CREATE INDEX idx_characters_name ON characters(name);
|
||||
CREATE INDEX idx_characters_current_zone_id ON characters(current_zone_id);
|
||||
CREATE INDEX idx_characters_account_id ON characters(account_id);
|
9
sql/chest_traps.sql
Executable file
9
sql/chest_traps.sql
Executable file
@ -0,0 +1,9 @@
|
||||
DROP TABLE IF EXISTS chest_traps;
|
||||
CREATE TABLE chest_traps (
|
||||
id INTEGER PRIMARY KEY,
|
||||
applicable_zone_id INTEGER NOT NULL DEFAULT 0,
|
||||
chest_min_difficulty INTEGER NOT NULL DEFAULT 0,
|
||||
chest_max_difficulty INTEGER NOT NULL DEFAULT 0,
|
||||
spell_id INTEGER NOT NULL DEFAULT 0,
|
||||
spell_tier INTEGER NOT NULL DEFAULT 0
|
||||
);
|
29
sql/claim_items.sql
Executable file
29
sql/claim_items.sql
Executable file
@ -0,0 +1,29 @@
|
||||
DROP TABLE IF EXISTS claim_items;
|
||||
CREATE TABLE claim_items (
|
||||
id INTEGER PRIMARY KEY,
|
||||
item_id INTEGER NOT NULL DEFAULT 0,
|
||||
max_claim INTEGER NOT NULL DEFAULT 0,
|
||||
one_per_char INTEGER DEFAULT 0,
|
||||
veteran_reward_time INTEGER DEFAULT 0,
|
||||
comment TEXT
|
||||
);
|
||||
|
||||
INSERT INTO claim_items VALUES
|
||||
(1,1,10,0,0,NULL),
|
||||
(2,60606,10,0,0,NULL),
|
||||
(3,22461,10,0,0,NULL),
|
||||
(4,20628,10,0,0,NULL),
|
||||
(5,20614,10,0,0,NULL),
|
||||
(6,20612,10,0,86400,'1 day'),
|
||||
(7,22513,10,0,2630000,'1 month'),
|
||||
(8,22514,10,0,604800,'1 week'),
|
||||
(9,22515,10,0,31536000,'1 year'),
|
||||
(10,22516,10,0,47340000,'18 month'),
|
||||
(11,22517,10,0,63072000,'2 year'),
|
||||
(12,22518,10,0,7890000,'3 month'),
|
||||
(13,22519,10,0,94608000,'3 year'),
|
||||
(14,22520,10,0,126144000,'4 year'),
|
||||
(15,22521,10,0,157680000,'5 year'),
|
||||
(16,22522,10,0,15780000,'6 month'),
|
||||
(17,22523,10,0,189216000,'6 year'),
|
||||
(18,22524,10,0,252288000,'8 year');
|
3458
sql/collection_details.sql
Executable file
3458
sql/collection_details.sql
Executable file
File diff suppressed because it is too large
Load Diff
1399
sql/collection_rewards.sql
Executable file
1399
sql/collection_rewards.sql
Executable file
File diff suppressed because it is too large
Load Diff
562
sql/collections.sql
Executable file
562
sql/collections.sql
Executable file
@ -0,0 +1,562 @@
|
||||
DROP TABLE IF EXISTS collections;
|
||||
CREATE TABLE collections (
|
||||
id INTEGER PRIMARY KEY,
|
||||
collection_name TEXT NOT NULL DEFAULT 'Unknown',
|
||||
collection_category TEXT NOT NULL DEFAULT 'Unknown',
|
||||
level INTEGER NOT NULL DEFAULT 0
|
||||
);
|
||||
|
||||
INSERT INTO collections VALUES
|
||||
(1,'Erudite Glyph Stones','Sentinel''s Fate',95),
|
||||
(2,'Runes of Fate','Sentinel''s Fate',95),
|
||||
(3,'Stonebrunt Highlands: Kaborite Crystals','Sentinel''s Fate',95),
|
||||
(4,'Sundered Frontier: Kaborite Crystals','Sentinel''s Fate',95),
|
||||
(5,'The Deep and Dark Places: Geodes','Sentinel''s Fate',95),
|
||||
(6,'The Vigilant: Runed Scrolls','Sentinel''s Fate',92),
|
||||
(7,'Vigilant Crew Badges','Sentinel''s Fate',92),
|
||||
(8,'Vigilant Navigation Maps and Tools','Sentinel''s Fate',92),
|
||||
(9,'Weapons of the Tallonites','Sentinel''s Fate',92),
|
||||
(10,'Armor of the Rime','Destiny of Velious',90),
|
||||
(11,'Beam Handler Decoder Rings','Sentinel''s Fate',90),
|
||||
(12,'Clockwork Gazer Parts','Sentinel''s Fate',90),
|
||||
(13,'Clothing of the Kejek','Sentinel''s Fate',90),
|
||||
(14,'Coldain Relics','Destiny of Velious',90),
|
||||
(15,'Common Erudin Clothing','Sentinel''s Fate',90),
|
||||
(16,'Darkened Grimoires','Sentinel''s Fate',90),
|
||||
(17,'Erudin Book Minions','Sentinel''s Fate',90),
|
||||
(18,'Fearsome Weapons of the Gruengach','Sentinel''s Fate',90),
|
||||
(19,'Fearstalker Remains','Sentinel''s Fate',90),
|
||||
(20,'Flora of Velious','Destiny of Velious',90),
|
||||
(21,'Forgotten Trinkets','Destiny of Velious',90),
|
||||
(22,'Gardens of Erudin','Sentinel''s Fate',90),
|
||||
(23,'Glyphed Relics','Sentinel''s Fate',90),
|
||||
(24,'Iceshard Keep Soldier Symbols','Destiny of Velious',90),
|
||||
(25,'Kael Drakkel Workforce Signets','Destiny of Velious',90),
|
||||
(26,'Kromzek Medals Collection','Destiny of Velious',90),
|
||||
(27,'Kromzek War Relics','Destiny of Velious',90),
|
||||
(28,'Kromzek Warrior Badges','Destiny of Velious',90),
|
||||
(29,'Library of Erudin Murder Weapons','Sentinel''s Fate',90),
|
||||
(30,'Mammoth Fur Collection','Destiny of Velious',90),
|
||||
(31,'Masks of the Tallonites','Sentinel''s Fate',90),
|
||||
(32,'Memories of a Cursed Bride','Destiny of Velious',90),
|
||||
(33,'Memories of Velketor','Destiny of Velious',90),
|
||||
(34,'Ning Yun Beads','Sentinel''s Fate',90),
|
||||
(35,'Order of Rime Battle Relics','Destiny of Velious',90),
|
||||
(36,'Othmir Curios','Destiny of Velious',90),
|
||||
(37,'Quel''Ule Research Manuals','Sentinel''s Fate',90),
|
||||
(38,'Relics of the Battle of Thurgadin','Destiny of Velious',90),
|
||||
(39,'Rime Badges of Rank','Destiny of Velious',90),
|
||||
(40,'Ry''Gorr Rage Trophies','Destiny of Velious',90),
|
||||
(41,'Shadow-Marked Items','Sentinel''s Fate',90),
|
||||
(42,'Shadowy Gems','Destiny of Velious',90),
|
||||
(43,'Shards of the Ward-Golems','Destiny of Velious',90),
|
||||
(44,'Slobberjaw Relics','Sentinel''s Fate',90),
|
||||
(45,'Storm Giant Beard Collection','Destiny of Velious',90),
|
||||
(46,'Tabards of the Deepwater Knights','Sentinel''s Fate',90),
|
||||
(47,'Tales of Drunder','Destiny of Velious',90),
|
||||
(48,'Tales of Eastern Wastes','Destiny of Velious',90),
|
||||
(49,'Tales of Kael Drakkel','Destiny of Velious',90),
|
||||
(50,'Tales of the Great Divide','Destiny of Velious',90),
|
||||
(51,'Tales of the Kromzek','Destiny of Velious',90),
|
||||
(52,'Tales of the Tower','Destiny of Velious',90),
|
||||
(53,'Tales of Velketor''s Labrinth','',90),
|
||||
(54,'Tales of Velketor''s Labyrinth','Destiny of Velious',90),
|
||||
(55,'Temple of Rallos Zek Holy Symbols','Destiny of Velious',90),
|
||||
(56,'The Chronicles of Velious','Destiny of Velious',90),
|
||||
(57,'Thrael''Gorr Idols Collection','Destiny of Velious',90),
|
||||
(58,'Throne of Storms Oathstones','Destiny of Velious',90),
|
||||
(59,'Thurgadin Mementos','Tradeskill',90),
|
||||
(60,'Tizmak Trophies','Destiny of Velious',90),
|
||||
(61,'Tokens of the Eastern Wastes','Destiny of Velious',90),
|
||||
(62,'Tokens of the Great Divide','Destiny of Velious',90),
|
||||
(63,'Trinkets of the Ascent','Destiny of Velious',90),
|
||||
(64,'Trinkets of the Cursed','Destiny of Velious',90),
|
||||
(65,'Vestiges of Growth','Destiny of Velious',90),
|
||||
(66,'a graphometer fragment','Sentinel''s Fate',85),
|
||||
(67,'Ancient Erudite Crests','Sentinel''s Fate',85),
|
||||
(68,'Assorted Erudite Gardening Tools','Sentinel''s Fate',85),
|
||||
(69,'Battle Relics from Kejaan''s Rill','Sentinel''s Fate',85),
|
||||
(70,'Caertaxian Poison Ingredients','Sentinel''s Fate',85),
|
||||
(71,'Chokidai Collars','Kunark',85),
|
||||
(72,'Crageye Parts','Sentinel''s Fate',85),
|
||||
(73,'Elemental Cores','Sentinel''s Fate',85),
|
||||
(74,'Erudite Surgical Tools','Sentinel''s Fate',85),
|
||||
(75,'Flora and Fauna of The Vasty Deep','Sentinel''s Fate',85),
|
||||
(76,'Golem Parts','Sentinel''s Fate',85),
|
||||
(77,'Hua Mein Bamboo Items','Sentinel''s Fate',85),
|
||||
(78,'Kerran Toys','Sentinel''s Fate',85),
|
||||
(79,'Kunark Collections','Expert Recognition',85),
|
||||
(80,'Lowland Basin Goos and Gobs','Sentinel''s Fate',85),
|
||||
(81,'Necrotic Construct Parts','Sentinel''s Fate',85),
|
||||
(82,'Petrified Badlands Creature Remnants','Sentinel''s Fate',85),
|
||||
(83,'Reet Knight Armor','Kunark',85),
|
||||
(84,'Relics of the Ethernauts','Shadow Odyssey',85),
|
||||
(85,'Relics of the Ethernauts','Shadow Odyssey',85),
|
||||
(86,'Relics of the Fortress','Sentinel''s Fate',85),
|
||||
(87,'Relics of the Goblin Hero','Runnyeye: The Gathering',85),
|
||||
(88,'Relics of the Onaya','Sentinel''s Fate',85),
|
||||
(89,'Roekillik Weapons','Sentinel''s Fate',85),
|
||||
(90,'Rubble Items from Old Paineel','Sentinel''s Fate',85),
|
||||
(91,'Salts from Highland Salts','Sentinel''s Fate',85),
|
||||
(92,'Sebilisian Symbols','Kunark',85),
|
||||
(93,'Standards of the Goblin Tribes','Runnyeye: The Gathering',85),
|
||||
(94,'Toxxulian Flora','Sentinel''s Fate',85),
|
||||
(95,'Underfoot Anchor Components','Sentinel''s Fate',85),
|
||||
(96,'War Armor of the Ca''Na','Sentinel''s Fate',85),
|
||||
(97,'Danak Legion Medals','Kunark',82),
|
||||
(98,'Devourer Teeth','Kunark',82),
|
||||
(99,'Dirty Dingy Pages','Runnyeye: The Gathering',82),
|
||||
(100,'Goblin Do-Dads','Runnyeye: The Gathering',82),
|
||||
(101,'Idols of Lord Venril Sathir','Shadow Odyssey',82),
|
||||
(102,'Idols of Lord Venril Sathir','Shadow Odyssey Collections',82),
|
||||
(103,'Idols of the Tribes of Guk','Shadow Odyssey',82),
|
||||
(104,'Miragul''s Dress Robes','Shadow Odyssey',82),
|
||||
(105,'Mistmoore''s Artifacts','Shadow Odyssey',82),
|
||||
(106,'Najena''s Lab Equipment','Shadow Odyssey',82),
|
||||
(107,'Poked Out Peepers','Runnyeye: The Gathering',82),
|
||||
(108,'Possessions of Gynok Moltor','Shadow Odyssey',82),
|
||||
(109,'Talisman of the Great Anashti Sul','Shadow Odyssey',82),
|
||||
(110,'Abyssal Carpet Fragments','Kurn''s Tower',80),
|
||||
(111,'Ancient Bone Chips','Kurn''s Tower',80),
|
||||
(112,'Ancient Sathirian Volumes','Emperor''s Athenaeum',80),
|
||||
(113,'Anemone Arms','Shadow Odyssey',80),
|
||||
(114,'Artifacts of the Libant','Shadow Odyssey',80),
|
||||
(115,'Bar Glasses','Tradeskill',80),
|
||||
(116,'Blood Runes','Shadow Odyssey',80),
|
||||
(117,'Brokenskull Pirate Peglegs','Shadow Odyssey',80),
|
||||
(118,'Brokenskull Pirate Sashes','Shadow Odyssey',80),
|
||||
(119,'Burynai Eyes','Kurn''s Tower',80),
|
||||
(120,'Canvases of Mayong','Shadow Odyssey',80),
|
||||
(121,'Chart Fragments','Tradeskill',80),
|
||||
(122,'Crushed Skulls','Emperor''s Athenaeum',80),
|
||||
(123,'Darkened Void Weapons','Shadow Odyssey',80),
|
||||
(124,'Deathfist Forge Scraps','Tradeskill',80),
|
||||
(125,'Dimensional Baubles','Shadow Odyssey',80),
|
||||
(126,'Draconic Talismans','Kunark',80),
|
||||
(127,'Dryad Leaves','Live Events',80),
|
||||
(128,'Excavation Trinkets Collection','Trinkets',80),
|
||||
(129,'Fae Fireflies','Tradeskill',80),
|
||||
(130,'Faydwer Flowers','Tradeskill',80),
|
||||
(131,'Fishman Scales','Kunark',80),
|
||||
(132,'Flower Petals','Live Events',80),
|
||||
(133,'Froglok Tongues','Kunark',80),
|
||||
(134,'Frost-bitten Toes','Toes',80),
|
||||
(135,'Gnomish Devices','Shadow Odyssey',80),
|
||||
(136,'Golem Shards','Kunark',80),
|
||||
(137,'Guide Dolls Series 01','Hold of Prexus',80),
|
||||
(138,'Guide Doodads Series Five','Hold of Prexus',80),
|
||||
(139,'Guide Doodads Series Four','Hold of Prexus',80),
|
||||
(140,'Guide Doodads Series One','Hold of Prexus',80),
|
||||
(141,'Guide Doodads Series Three','Hold of Prexus',80),
|
||||
(142,'Guide Doodads Series Two','Hold of Prexus',80),
|
||||
(143,'Gukish Cuisine','Shadow Odyssey',80),
|
||||
(144,'Halas Hunting','Tradeskill',80),
|
||||
(145,'Hearts of the Knights of Marr','Shadow Odyssey',80),
|
||||
(146,'Idols of Shadow','Shadow Odyssey',80),
|
||||
(147,'Items of the Lost Brotherhood','Shadow Odyssey',80),
|
||||
(148,'Lost Necromancy Spells','Shadow Odyssey',80),
|
||||
(149,'Lost Symbols of Marr','Shadow Odyssey',80),
|
||||
(150,'Magmatic Gem Deposits','Shadow Odyssey',80),
|
||||
(151,'Mushroom Spores','Live Events',80),
|
||||
(152,'Naiad Scales','Live Events',80),
|
||||
(153,'Objects of Affection','Shadow Odyssey',80),
|
||||
(154,'Paineel Plumbing','Tradeskill',80),
|
||||
(155,'Peacock Club Relics','Tradeskill',80),
|
||||
(156,'Piano Keys','Tradeskill',80),
|
||||
(157,'Relics of Marr''s Fist Keep','Shadow Odyssey',80),
|
||||
(158,'Samples of Destiny','Trinkets',80),
|
||||
(159,'Sarnak Coins','Kunark',80),
|
||||
(160,'Scattered Phylactery Shards','Shadow Odyssey',80),
|
||||
(161,'Scorpikis Parts','Emperor''s Athenaeum',80),
|
||||
(162,'Scorpikis Stingers','Kunark',80),
|
||||
(163,'Slime Samples','Tradeskill',80),
|
||||
(164,'Sokokar Scales','Kunark',80),
|
||||
(165,'Sootfoot Forge Scraps','Tradeskill',80),
|
||||
(166,'Spores of Guk','Shadow Odyssey',80),
|
||||
(167,'Succulent Needles','Kunark',80),
|
||||
(168,'Symbols of Lord Taros','Shadow Odyssey',80),
|
||||
(169,'Symbols of the Elements','Shadow Odyssey',80),
|
||||
(170,'Symbols of the Everdark Ogres','Shadow Odyssey',80),
|
||||
(171,'Symbols of the Planes','Shadow Odyssey',80),
|
||||
(172,'Tablets of Atrebe Sathir Dynasty','Shadow Odyssey Collections',80),
|
||||
(173,'Tablets of Atrebe Sathir Dynasty','Shadow Odyssey',80),
|
||||
(174,'Tablets of Chottal Sathir Dynasty','Shadow Odyssey',80),
|
||||
(175,'Tablets of Chottal Sathir Dynasty','Shadow Odyssey Collections',80),
|
||||
(176,'Tablets of Ganak Sathir Dynasty','Shadow Odyssey Collections',80),
|
||||
(177,'Tablets of Ganak Sathir Dynasty','Shadow Odyssey',80),
|
||||
(178,'Tablets of Rile Sathir Dynasty','Shadow Odyssey Collections',80),
|
||||
(179,'Tablets of Rile Sathir Dynasty','Shadow Odyssey',80),
|
||||
(180,'Talisman of the Masters','Shadow Odyssey',80),
|
||||
(181,'The Forbidden Pages','Tome',80),
|
||||
(182,'The Hedge Hollow Collection','Trinkets',80),
|
||||
(183,'The Maiden of Masks','Tome',80),
|
||||
(184,'Thullosian Tribal Idols','Shadow Odyssey',80),
|
||||
(185,'Tinkered Parts','Live Events',80),
|
||||
(186,'Tree Bark','Live Events',80),
|
||||
(187,'Trinkets of the Digmasters','Kurn''s Tower',80),
|
||||
(188,'Tunare''s Glade Leaves','Tradeskill',80),
|
||||
(189,'Tuptan Cookware','Shadow Odyssey',80),
|
||||
(190,'Vortex Gates','Shadow Odyssey',80),
|
||||
(191,'Wooden Salvage','Tradeskill',80),
|
||||
(192,'Ydal Talisman','Shadow Odyssey',80),
|
||||
(193,'Ykeshan Military Emblems','Shadow Odyssey',80),
|
||||
(194,'Brute Fur','Kunark',78),
|
||||
(195,'Cockatrice Feathers','Kunark',78),
|
||||
(196,'Mantrap Petals','Kunark',78),
|
||||
(197,'Swifttail Shackle Links','Kunark',78),
|
||||
(198,'A Mysterious Black Tome','Kunark',75),
|
||||
(199,'A Mysterious Green Tome','Kunark',75),
|
||||
(200,'Bandit Coins','Loping Plains',75),
|
||||
(201,'Burynai Claws','Kunark',75),
|
||||
(202,'Candles','Castle Mistmoore',75),
|
||||
(203,'Drachnid Webbing','Kunark',75),
|
||||
(204,'Drolvarg Weapons','Kunark',75),
|
||||
(205,'Ghostly Essences','Loping Plains',75),
|
||||
(206,'Goblin Earrings','Kunark',75),
|
||||
(207,'Jailer Keys','Kunark',75),
|
||||
(208,'Rhino Horns','Kunark',75),
|
||||
(209,'Rilissian Rings of Service','Kunark',75),
|
||||
(210,'Stained Glass Fragments','Castle Mistmoore',75),
|
||||
(211,'Vampire Slaying Tools','Castle Mistmoore',75),
|
||||
(212,'Wasp Stingers','Kunark',75),
|
||||
(213,'Werewolf Fangs','Loping Plains',75),
|
||||
(214,'Cursed Objects of Unrest','Unrest',74),
|
||||
(215,'Estate Mementos','Unrest',74),
|
||||
(216,'The Necropolis of Lxanvon Vol. I','Tome',74),
|
||||
(217,'The Necropolis of Lxanvon Vol. II','Tome',74),
|
||||
(218,'A Mysterious Red Tome','Kunark',72),
|
||||
(219,'A Sojourn of Faith','Tome',72),
|
||||
(220,'Drolvarg War Armor','Kunark',72),
|
||||
(221,'The Estate of Rest','Tome',72),
|
||||
(222,'Wurm Scales','Kunark',72),
|
||||
(223,'Wyvern Scales','Kunark',72),
|
||||
(224,'Yeti Fur','Kunark',72),
|
||||
(225,'Abomination Eyes','Eyes',70),
|
||||
(226,'Abomination Teeth','Teeth',70),
|
||||
(227,'An Old Memoir','Tome',70),
|
||||
(228,'Aversion','Tome',70),
|
||||
(229,'Basilisk Spines','Spines',70),
|
||||
(230,'Blood Vials','Mistmoore Catacombs',70),
|
||||
(231,'Bristlebane''s Memories','Tradeskill',70),
|
||||
(232,'Broken Droag Teeth','Teeth',70),
|
||||
(233,'Chipped Droag Teeth','Teeth',70),
|
||||
(234,'Discarded Bones','Mistmoore Catacombs',70),
|
||||
(235,'Faydwer Collections','Expert Recognition',70),
|
||||
(236,'Generations','Tome',70),
|
||||
(237,'Large Droag Claws','Claws',70),
|
||||
(238,'Large Pieces of Airship Plating','Plating',70),
|
||||
(239,'Orthiss and Kirkata','Tome',70),
|
||||
(240,'Planar Orbs','Orbs',70),
|
||||
(241,'Polished Droag Teeth','Teeth',70),
|
||||
(242,'Ravasect Mandibles','Teeth',70),
|
||||
(243,'Skulls','Mistmoore Catacombs',70),
|
||||
(244,'The Ant Tale','Tome',70),
|
||||
(245,'The Big Bang Theory','Tome',70),
|
||||
(246,'The Fledglings','Tome',70),
|
||||
(247,'The Littlest Hill Giant','Tome',70),
|
||||
(248,'The Trainer','Tome',70),
|
||||
(249,'The Unclaimed Eye','Tome',70),
|
||||
(250,'thexian artifacts','Artifacts',70),
|
||||
(251,'We Will Be Free Again','Tome',70),
|
||||
(252,'Worn Droag Teeth','Teeth',70),
|
||||
(253,'Aviak Feathers','Feathers',65),
|
||||
(254,'Aviak Talons','Talons',65),
|
||||
(255,'Basilisk Scales','Scales',65),
|
||||
(256,'Chips: Terracotta Chips','',65),
|
||||
(257,'Drednever journal pages','Pages',65),
|
||||
(258,'Hooluk Beaks','Beaks',65),
|
||||
(259,'Medium Droag Claws','Claws',65),
|
||||
(260,'Medium Pieces of Airship Plating','Plating',65),
|
||||
(261,'Mystical Orbs','Orbs',65),
|
||||
(262,'Nayad Scales','',65),
|
||||
(263,'Sentry Shards','Felwithe',65),
|
||||
(264,'The Awakened','Tome',65),
|
||||
(265,'The Hammer of Below','Tome',65),
|
||||
(266,'Tunarian Spearheads','Felwithe',65),
|
||||
(267,'Tunarian Vases','Felwithe',65),
|
||||
(268,'Vultak Claws','Claws',65),
|
||||
(269,'Wantia Coins','',65),
|
||||
(270,'Waterfalls','Tome',65),
|
||||
(271,'A History of the Vah Shir, Vol. I','Tome',62),
|
||||
(272,'A History of the Vah Shir, Vol. II','Tome',62),
|
||||
(273,'Ardathium, Vol. I','Tome',62),
|
||||
(274,'Ardathium, Vol. II','Tome',62),
|
||||
(275,'Ardathium, Vol. III','Tome',62),
|
||||
(276,'Ardathium, Vol. IV','Tome',62),
|
||||
(277,'Ardathium, Vol. V','Tome',62),
|
||||
(278,'Ardathium, Vol. VI','Tome',62),
|
||||
(279,'Chronicle of Gromok, Vol. I','Tome',62),
|
||||
(280,'Chronicle of Gromok, Vol. II','Tome',62),
|
||||
(281,'Chronicle of Gromok, Vol. III','Tome',62),
|
||||
(282,'Chronicle of Gromok, Vol. IV','Tome',62),
|
||||
(283,'From Pond to Paladin, Vol. I','Tome',62),
|
||||
(284,'From Pond to Paladin, Vol. II','Tome',62),
|
||||
(285,'The First Vision','Tome',62),
|
||||
(286,'The Stone Frum Pazt, Vol. I','Tome',62),
|
||||
(287,'The Stone Frum Pazt, Vol. II','Tome',62),
|
||||
(288,'The Story of Ankexfen','Tome',62),
|
||||
(289,'Awakened Emblems','Emblems',60),
|
||||
(290,'Basilisk Teeth','Teeth',60),
|
||||
(291,'Beholder Eyes','Eyes',60),
|
||||
(292,'Cinder Ore','Ore',60),
|
||||
(293,'Dragon Bone Shards','Shards',60),
|
||||
(294,'Dragon Insignias','Insignias',60),
|
||||
(295,'Dragon Scales','Scales',60),
|
||||
(296,'Droag Scales','Scales',60),
|
||||
(297,'Edible Mushrooms','Lesser Faydark',60),
|
||||
(298,'Feather Leaves','Leaves',60),
|
||||
(299,'Gourd Seeds','Lesser Faydark',60),
|
||||
(300,'Nurwin Family Secrets','Tradeskill',60),
|
||||
(301,'Poisonous Mushrooms','Lesser Faydark',60),
|
||||
(302,'Rare Stones','Stones',60),
|
||||
(303,'Small Droag Claws','Claws',60),
|
||||
(304,'Small Pieces of Airship Plating','Plating',60),
|
||||
(305,'Teachings of Master Wu','Tome',60),
|
||||
(306,'The Gumshoe Guide','Tome',60),
|
||||
(307,'Trinni''s Adventures Aloft','Tome',60),
|
||||
(308,'My Time with the Harpies','Tome',59),
|
||||
(309,'Of Maj''Dul Am I','Tome',57),
|
||||
(310,'Poetry of the Djinn','Tome',57),
|
||||
(311,'Rules of the Sandscrawler Clan','Tome',57),
|
||||
(312,'The History of Poetry','Tome',56),
|
||||
(313,'The Poems of Alyarrah','Tome',56),
|
||||
(314,'A Tale of the Arena','Tome',55),
|
||||
(315,'Anaz Mal, Blackfang','Tome',55),
|
||||
(316,'Antlers','Shard of Love',55),
|
||||
(317,'Clockwork Parts','Klak''Anon',55),
|
||||
(318,'Corruption of Elements','Lavastorm',55),
|
||||
(319,'Debris','Shard of Love',55),
|
||||
(320,'Dismantled Statue Pieces','Shard of Love',55),
|
||||
(321,'Dragonflies','Shard of Love',55),
|
||||
(322,'Gears','Klak''Anon',55),
|
||||
(323,'Lava Creature Parts','Lavastorm',55),
|
||||
(324,'Mechanical Springs','Klak''Anon',55),
|
||||
(325,'Pomegranates','Shard of Love',55),
|
||||
(326,'Roses','Shard of Love',55),
|
||||
(327,'Satyr Instruments','Shard of Love',55),
|
||||
(328,'Shards of the Elements','Lavastorm',55),
|
||||
(329,'Sootfoot Weapons','Lavastorm',55),
|
||||
(330,'Symbols of the Ancient Chieftains','Lavastorm',55),
|
||||
(331,'Symbols of the Flame','Lavastorm',55),
|
||||
(332,'Tags of the Drakota','Lavastorm',55),
|
||||
(333,'The Cleft Dweller','Tome',55),
|
||||
(334,'The Desert Beasts','Tome',55),
|
||||
(335,'The Tale of the Rujarkian Warrior','Tome',55),
|
||||
(336,'Void Touched Items','Lavastorm',55),
|
||||
(337,'Wisps','Shard of Love',55),
|
||||
(338,'Selected Poems','Tome',54),
|
||||
(339,'The Desert Serpent','Tome',54),
|
||||
(340,'An Oasis in the Desert','Tome',53),
|
||||
(341,'The Tale of the Silent City','Tome',53),
|
||||
(342,'Legends of the Dragons','Tome',52),
|
||||
(343,'Trinni''s Adventures Abroad','Tome',52),
|
||||
(344,'The Tale of Tirazzah','Tome',51),
|
||||
(345,'Akhet of the Day','Akhet',50),
|
||||
(346,'Akhet of the Night','Akhet',50),
|
||||
(347,'Alliz Raef Ew Scales','Scales',50),
|
||||
(348,'Arcane Orbs collection.','Orb',50),
|
||||
(349,'Broken Tinkered Items','Tinkered',50),
|
||||
(350,'Cobra Scale Collection','Scales',50),
|
||||
(351,'Crocodile Scales Collection','Scales',50),
|
||||
(352,'Crushed Locust Collection','Insect',50),
|
||||
(353,'Crushed Scarab Collection','Insect',50),
|
||||
(354,'Crushed Scorpion Collection','Insect',50),
|
||||
(355,'Crushed Solifugid Collection','Insect',50),
|
||||
(356,'Desert Sand Collection','Sand',50),
|
||||
(357,'Desert Soul Dust Collection','Souls',50),
|
||||
(358,'enchanted bone fragments collection','Bone Fragment',50),
|
||||
(359,'Freeport Postage Collection','Live Events',50),
|
||||
(360,'From Daughter to Father','Tome',50),
|
||||
(361,'glowing shards collection','Shard',50),
|
||||
(362,'Gorowyn Postage Collection','Live Events',50),
|
||||
(363,'Halas Postage Collection','Live Events',50),
|
||||
(364,'Harpy Feathers Collection','Feathers',50),
|
||||
(365,'Kelethin Postage Collection','Live Events',50),
|
||||
(366,'Kobold Claws','Steamfont Mountains',50),
|
||||
(367,'Mineral Water','Steamfont Mountains',50),
|
||||
(368,'Moon Gems','Jewelry',50),
|
||||
(369,'Mountain Lion Tails','Steamfont Mountains',50),
|
||||
(370,'Mystic Moppet parts','Moppet',50),
|
||||
(371,'Naga Scales','Scales',50),
|
||||
(372,'Neriak Postage Collection','Live Events',50),
|
||||
(373,'Preserved Mummy Wrappings','Wrappings',50),
|
||||
(374,'Preserved Tinkered Items','Tinkered',50),
|
||||
(375,'Qeynos Postage Collection','Live Events',50),
|
||||
(376,'Rusted Tinkered Items','Tinkered',50),
|
||||
(377,'Sand Blasted Lamp','Lamps',50),
|
||||
(378,'Sand Blasted Tinkered Items','Tinkered',50),
|
||||
(379,'Sand Giant Toes','Toes',50),
|
||||
(380,'Shining Locust Collection','Insect',50),
|
||||
(381,'Shining Scarab Collection','Insect',50),
|
||||
(382,'Shining Scorpion Collection','Insect',50),
|
||||
(383,'Shining Solifugid Collection','Insect',50),
|
||||
(384,'Shiny Lamp','Lamps',50),
|
||||
(385,'Sphinx Featheres','Feathers',50),
|
||||
(386,'Sphinx Toes','Toes',50),
|
||||
(387,'Spotted Locust Collection','Insect',50),
|
||||
(388,'Spotted Scarab Collection','Insect',50),
|
||||
(389,'Spotted Scorpion Collection','Insect',50),
|
||||
(390,'Spotted Solifugid Collection','Insect',50),
|
||||
(391,'Striped Locust Collection','Insect',50),
|
||||
(392,'Striped Scarab Collection','Insect',50),
|
||||
(393,'Striped Scorpion Collection','Insect',50),
|
||||
(394,'Striped Solifugid Collection','Insect',50),
|
||||
(395,'Sun Gems','Jewelry',50),
|
||||
(396,'Tarnished Lamp','Lamps',50),
|
||||
(397,'Tarnished Tinkered Items','Tinkered',50),
|
||||
(398,'Tattered Mummy Wrappings','Wrappings',50),
|
||||
(399,'The Nights of the Dead','Tome',50),
|
||||
(400,'The Second Wife''s Tale','Tome',50),
|
||||
(401,'Worn Mummy Wrappings','Wrappings',50),
|
||||
(402,'Turtle Odds ''n Ends','Everfrost',47),
|
||||
(403,'abjuration shards collection','Shard',45),
|
||||
(404,'Ak''Anon coins collection','Coin',45),
|
||||
(405,'alteration shards collection','Shard',45),
|
||||
(406,'barbarian bone fragment collection','Bone Fragment',45),
|
||||
(407,'Brien - Clan Icereaver','Tome',45),
|
||||
(408,'channeling shards collection','Shard',45),
|
||||
(409,'conjuration shards collection','Shard',45),
|
||||
(410,'Crab Bits and Pieces','Everfrost',45),
|
||||
(411,'dark elf bone fragment collection','Bone Fragment',45),
|
||||
(412,'divination shards collection','Shard',45),
|
||||
(413,'Donnghail - Clan McNaggle','Tome',45),
|
||||
(414,'dwarf bone fragment collection','Bone Fragment',45),
|
||||
(415,'erudite bone fragment collection','Bone Fragment',45),
|
||||
(416,'evocation shards collection','Shard',45),
|
||||
(417,'froglok bone fragment collection','Bone Fragment',45),
|
||||
(418,'gnoll bone fragment collection','Bone Fragment',45),
|
||||
(419,'gnome bone fragment collection','Bone Fragment',45),
|
||||
(420,'Good Eatin''','Tome',45),
|
||||
(421,'half elf bone fragment collection','Bone Fragment',45),
|
||||
(422,'halfling bone fragment collection','Bone Fragment',45),
|
||||
(423,'high elf bone fragment collection','Bone Fragment',45),
|
||||
(424,'human bone fragment collection','Bone Fragment',45),
|
||||
(425,'iksar bone fragment collection','Bone Fragment',45),
|
||||
(426,'In Search of the Wooly Mammoth','Tome',45),
|
||||
(427,'kerra bone fragment collection','Bone Fragment',45),
|
||||
(428,'Local Color - Halas','Tome',45),
|
||||
(429,'ogre bone fragment collection','Bone Fragment',45),
|
||||
(430,'orc bone fragment collection','Bone Fragment',45),
|
||||
(431,'ratonga bone fragment collection','Bone Fragment',45),
|
||||
(432,'The Contentment','Tome',45),
|
||||
(433,'The Dying','Tome',45),
|
||||
(434,'The First Battle','Tome',45),
|
||||
(435,'The Growing','Tome',45),
|
||||
(436,'The Last Battle','Tome',45),
|
||||
(437,'troll bone fragment collection','Bone Fragment',45),
|
||||
(438,'wood elf bone fragment collection','Bone Fragment',45),
|
||||
(439,'1st Lieutenant Danarg, 291 AS','Tome',40),
|
||||
(440,'1st Lieutenant Danarg, 313 AS','Tome',40),
|
||||
(441,'1st Lieutenant Danarg, 315 AS','Tome',40),
|
||||
(442,'1st Lieutenant Dergud, 263 AS','Tome',40),
|
||||
(443,'1st Lieutenant Dergud, 279 AS','Tome',40),
|
||||
(444,'1st Lieutenant Dergud, 289 AS','Tome',40),
|
||||
(445,'1st Lieutenant Mugreeza, 289 AS','Tome',40),
|
||||
(446,'1st Lieutenant Mugreeza, 290 AS','Tome',40),
|
||||
(447,'1st Lieutenant Mugreeza, 291 AS','Tome',40),
|
||||
(448,'3rd Lieutenant Gerrog - Logbook','Tome',40),
|
||||
(449,'Alliz Evol Ew','Tome',40),
|
||||
(450,'Alliz Onu','Tome',40),
|
||||
(451,'Alliz Tae Ew','Tome',40),
|
||||
(452,'enchanted maple leaves collection','Leaf',40),
|
||||
(453,'feerrott fern leaves collection','Leaf',40),
|
||||
(454,'Grobb coins collection','Coin',40),
|
||||
(455,'Oggok coins collection','Coin',40),
|
||||
(456,'Quotes of General Urduuk','Tome',40),
|
||||
(457,'Rivervale coins collection','Coin',40),
|
||||
(458,'shiny shards collection','Shard',40),
|
||||
(459,'The Brady Bunch','Tome',40),
|
||||
(460,'The Journal of Meldrath the Malignant','Tome',40),
|
||||
(461,'The Merchant''s Deal','Tome',40),
|
||||
(462,'unscathed bone fragments collection','Bone Fragment',40),
|
||||
(463,'The Wall','Tome',38),
|
||||
(464,'The Storm Shepherds - Darnalithenis of Felwithe','Tome',37),
|
||||
(465,'The Storm Shepherds - Gremius Hazzengrav','Tome',37),
|
||||
(466,'The Storm Shepherds - Tammin Whipperwillow','Tome',37),
|
||||
(467,'The Storm Shepherds - The Calm','Tome',37),
|
||||
(468,'The Storm Shepherds - The Downpour','Tome',37),
|
||||
(469,'Bestest Orc Emperors','Tome',35),
|
||||
(470,'Bird Watching - The Beast of the Enchanted Lands, Part I','Tome',35),
|
||||
(471,'Bird Watching - The Beast of the Enchanted Lands, Part II','Tome',35),
|
||||
(472,'bloodstone shard collection','Shard',35),
|
||||
(473,'Bugbear Bones','Faydwer Bones',35),
|
||||
(474,'Bugbear Ears','Butcherblock Mountains',35),
|
||||
(475,'Chess Pieces','Butcherblock Mountains',35),
|
||||
(476,'Dwarven Steins','Kaladim',35),
|
||||
(477,'Fae Bones','Faydwer Bones',35),
|
||||
(478,'Fauna of the Enchanted Lands A - K','Tome',35),
|
||||
(479,'Fauna of the Enchanted Lands L - Z','Tome',35),
|
||||
(480,'Foreman Garz''gog Dyeree','Tome',35),
|
||||
(481,'grinnin bone fragment collection','Bone Fragment',35),
|
||||
(482,'Jerb Northstar''s Journal','Tome',35),
|
||||
(483,'Kobold Bones','Faydwer Bones',35),
|
||||
(484,'Kobold Paws','Butcherblock Mountains',35),
|
||||
(485,'Mining Picks','Kaladim',35),
|
||||
(486,'plain mushroom collection','Mushroom',35),
|
||||
(487,'Rise of the Orcs - The Ascension','Tome',35),
|
||||
(488,'Rise of the Orcs - The Deadtime','Tome',35),
|
||||
(489,'Rise of the Orcs - The Fall','Tome',35),
|
||||
(490,'Rise of the Orcs - The Rejoining','Tome',35),
|
||||
(491,'Rise of the Orcs - The Rousing','Tome',35),
|
||||
(492,'The Nine Contemplations','Tome',35),
|
||||
(493,'The Orcs of Norrath','Tome',35),
|
||||
(494,'vampire fang collection','Vampire Fang',35),
|
||||
(495,'Crushbone Insignias','Crushbone Keep',30),
|
||||
(496,'Kaladim coins collection','Coin',30),
|
||||
(497,'Mined Gems','Kaladim',30),
|
||||
(498,'Neriak coins collection','Coin',30),
|
||||
(499,'plain ant collection','Ant',30),
|
||||
(500,'pristine shards collection','Shard',30),
|
||||
(501,'spotted ant collection','Ant',30),
|
||||
(502,'striped ant collection','Ant',30),
|
||||
(503,'Torture Instruments','Crushbone Keep',30),
|
||||
(504,'War Medallions','Crushbone Keep',30),
|
||||
(505,'weathered bone fragments collection','Bone Fragment',30),
|
||||
(506,'Kelethin coins collection','Coin',25),
|
||||
(507,'nektulos pine needle collection','Leaf',25),
|
||||
(508,'plain beetle collection','Beetle',25),
|
||||
(509,'plain spider collection','Spider',25),
|
||||
(510,'spotted beetle collection','Beetle',25),
|
||||
(511,'spotted spider collection','Spider',25),
|
||||
(512,'striped beetle collection','Beetle',25),
|
||||
(513,'striped spider collection','Spider',25),
|
||||
(514,'Acorns','Greater Faydark',20),
|
||||
(515,'Aniron''s Journey','Tome',20),
|
||||
(516,'Brews Across Norrath','Brewday',20),
|
||||
(517,'butterfly collection.','Butterfly',20),
|
||||
(518,'cracked bone fragments collection','Bone Fragment',20),
|
||||
(519,'Forest Beetles','Greater Faydark',20),
|
||||
(520,'From Below to Castle','Tome',20),
|
||||
(521,'Gnoll Ears Collection','Ears',20),
|
||||
(522,'Gnoll Tails Collection','Tails',20),
|
||||
(523,'Grubs','Greater Faydark',20),
|
||||
(524,'Halas coins collection','Coin',20),
|
||||
(525,'Impossibly Rare Objects','Weird',20),
|
||||
(526,'moth collection','Moth',20),
|
||||
(527,'My True Beloved','Tome',20),
|
||||
(528,'Our Lady of Betrayal','Tome',20),
|
||||
(529,'Romantic Flower Petals','Erollisi Day',20),
|
||||
(530,'scuffed shards collection','Shard',20),
|
||||
(531,'Splitpaw Coins Collection','Coins',20),
|
||||
(532,'antonican ficus leaves collection','Leaf',15),
|
||||
(533,'commonlands shrub leaves collection','Leaf',15),
|
||||
(534,'Duck and purple','Mixed',15),
|
||||
(535,'Erudin coins collection','Coin',15),
|
||||
(536,'Features','Test',15),
|
||||
(537,'plain butterfly collection','Butterfly',15),
|
||||
(538,'spotted butterfly collection','Butterfly',15),
|
||||
(539,'striped butterfly collection','Butterfly',15),
|
||||
(540,'Test1','Butterfly',15),
|
||||
(541,'Test2 Blue','Butterfly',15),
|
||||
(542,'Test3 Yellow','Butterfly',15),
|
||||
(543,'The Lore of Fauna: The Behemoth','Tome',15),
|
||||
(544,'chipped shards collection','Shard',10),
|
||||
(545,'feather collection','Feather',10),
|
||||
(546,'Felwithe coins collection','Coin',10),
|
||||
(547,'iridescent beetle collection','Beetle',10),
|
||||
(548,'plain moth collection','Moth',10),
|
||||
(549,'regal butterfly collection','Butterfly',10),
|
||||
(550,'shattered bone fragments collection','Bone Fragment',10),
|
||||
(551,'shell collection','Shell',10),
|
||||
(552,'spotted moth collection','Moth',10),
|
||||
(553,'striped moth collection','Moth',10);
|
541
sql/commands.sql
Executable file
541
sql/commands.sql
Executable file
@ -0,0 +1,541 @@
|
||||
DROP TABLE IF EXISTS commands;
|
||||
CREATE TABLE commands (
|
||||
id INTEGER PRIMARY KEY,
|
||||
type INTEGER DEFAULT 1,
|
||||
command TEXT,
|
||||
subcommand TEXT,
|
||||
handler INTEGER NOT NULL DEFAULT 0,
|
||||
required_status INTEGER NOT NULL DEFAULT 0,
|
||||
UNIQUE(command, subcommand)
|
||||
);
|
||||
|
||||
INSERT INTO commands VALUES
|
||||
(1,0,'who','',41,0),
|
||||
(2,0,'played','',999,0),
|
||||
(3,0,'ignores','',113,0),
|
||||
(4,0,'ignore_add','',111,0),
|
||||
(5,0,'ignore_remove','',112,0),
|
||||
(6,0,'afk','',147,0),
|
||||
(7,0,'duel','',200,0),
|
||||
(8,0,'duel_accept','',202,0),
|
||||
(9,0,'duel_decline','',203,0),
|
||||
(10,0,'duel_surrender','',204,0),
|
||||
(11,0,'friends','',110,0),
|
||||
(12,0,'friend_add','',108,0),
|
||||
(13,0,'friend_remove','',109,0),
|
||||
(14,0,'emote','',13,0),
|
||||
(15,0,'say','',7,0),
|
||||
(16,0,'ventsay','',999,0),
|
||||
(17,0,'tell','',8,0),
|
||||
(18,0,'msg','',999,0),
|
||||
(19,0,'yell','',9,0),
|
||||
(20,0,'joinchannel','',294,0),
|
||||
(21,0,'chatleave','',297,0),
|
||||
(22,0,'tellchannel','',296,0),
|
||||
(23,0,'tc','',999,0),
|
||||
(24,0,'chatwho','',298,0),
|
||||
(25,0,'csay','',999,0),
|
||||
(26,0,'follow','',26,0),
|
||||
(27,0,'stopfollow','',27,0),
|
||||
(28,0,'shout','',10,0),
|
||||
(29,0,'auction','',11,0),
|
||||
(30,0,'ooc','',12,0),
|
||||
(31,1,'cannedemote','',144,0),
|
||||
(32,0,'mood','',800,0),
|
||||
(33,0,'gsay','',14,0),
|
||||
(34,0,'raidsay','',547,0),
|
||||
(35,0,'invite','',15,0),
|
||||
(36,0,'raidinvite','',541,0),
|
||||
(37,0,'leavegroup','',105,0),
|
||||
(38,0,'disband','',16,0),
|
||||
(39,0,'leaveraid','',545,0),
|
||||
(40,0,'kickfromgroup','',543,0),
|
||||
(41,0,'kickfromraid','',544,0),
|
||||
(42,0,'acceptinvite','',96,0),
|
||||
(43,0,'declineinvite','',97,0),
|
||||
(44,0,'makeleader','',106,0),
|
||||
(45,0,'groupoptions','',17,0),
|
||||
(46,0,'sit','',48,0),
|
||||
(47,0,'stand','',49,0),
|
||||
(48,0,'title','',281,0),
|
||||
(49,0,'random','',279,0),
|
||||
(50,0,'restore_lost_shared','',999,0),
|
||||
(51,0,'assist','',535,0),
|
||||
(52,0,'use','',61,0),
|
||||
(53,0,'lfg','',150,0),
|
||||
(54,0,'lfw','',149,0),
|
||||
(55,0,'anon','',148,0),
|
||||
(56,0,'role','',170,0),
|
||||
(57,0,'autoattack','',37,0),
|
||||
(58,0,'info','',33,0),
|
||||
(59,0,'equip','',999,0),
|
||||
(60,0,'unequip','',999,0),
|
||||
(61,0,'attune_inv','',306,0),
|
||||
(62,0,'attune_equip','',999,0),
|
||||
(63,0,'swap_inventory','',999,0),
|
||||
(64,0,'inventory','',24,0),
|
||||
(65,0,'lootcorpse','',999,0),
|
||||
(66,0,'hail','',19,0),
|
||||
(67,0,'deletequest','',78,0),
|
||||
(68,0,'collection_additem','',30,0),
|
||||
(69,0,'collection_filter_matchitem','',31,0),
|
||||
(70,0,'q_quest_quota','',999,0),
|
||||
(71,0,'q_accept_pending_quest','',76,0),
|
||||
(72,0,'q_deny_pending_quest','',77,0),
|
||||
(73,0,'q_list_pending_quests','',999,0),
|
||||
(74,0,'track','',135,0),
|
||||
(75,0,'pet','',137,0),
|
||||
(76,0,'setsocial','',999,0),
|
||||
(77,0,'inspectpc','',999,0),
|
||||
(78,0,'showdeathdialog','',999,0),
|
||||
(79,0,'start_trade','',172,0),
|
||||
(80,0,'add_trade_item','',185,0),
|
||||
(81,0,'add_trade_copper','',177,0),
|
||||
(82,0,'add_trade_silver','',178,0),
|
||||
(83,0,'add_trade_gold','',179,0),
|
||||
(84,0,'add_trade_plat','',180,0),
|
||||
(85,0,'remove_trade_copper','',181,0),
|
||||
(86,0,'remove_trade_silver','',182,0),
|
||||
(87,0,'remove_trade_gold','',183,0),
|
||||
(88,0,'remove_trade_plat','',184,0),
|
||||
(89,0,'remove_trade_item','',186,0),
|
||||
(90,0,'accept_trade','',173,0),
|
||||
(91,0,'reject_trade','',174,0),
|
||||
(92,0,'cancel_trade','',175,0),
|
||||
(93,0,'get_coins','',999,0),
|
||||
(94,0,'accept_reward','',85,0),
|
||||
(95,0,'start_merchant','',90,0),
|
||||
(96,0,'search_stores','',92,0),
|
||||
(97,0,'sort_search_stores','',999,0),
|
||||
(98,0,'get_search_stores_page','',94,0),
|
||||
(99,0,'buy_from_merchant','',87,0),
|
||||
(100,0,'sell_to_merchant','',88,0),
|
||||
(101,0,'buy_from_broker','',95,0),
|
||||
(102,0,'cancel_merchant','',89,0),
|
||||
(103,0,'cancel_broker','',999,0),
|
||||
(104,0,'store_list_item','',999,0),
|
||||
(105,0,'store_set_price','',999,0),
|
||||
(106,0,'store_start_selling','',999,0),
|
||||
(107,0,'store_stop_selling','',999,0),
|
||||
(108,0,'store_unlist_item','',999,0),
|
||||
(109,0,'cancel_store','',999,0),
|
||||
(110,0,'close_store_keep_selling','',999,0),
|
||||
(111,0,'start_bank','',999,0),
|
||||
(112,0,'cancel_bank','',73,0),
|
||||
(113,0,'bank_deposit','',71,0),
|
||||
(114,0,'bank_withdraw','',72,0),
|
||||
(115,0,'mender_repair','',114,0),
|
||||
(116,0,'mender_repair_all','',115,0),
|
||||
(117,0,'label_bag','',999,0),
|
||||
(118,0,'name_pet','',139,0),
|
||||
(119,0,'report_bug','',75,0),
|
||||
(120,0,'report_typo','',999,0),
|
||||
(121,0,'report_feedback','',999,0),
|
||||
(122,0,'report_abuse','',999,0),
|
||||
(123,0,'questionnaire','',999,0),
|
||||
(124,0,'apply_verb','',999,0),
|
||||
(125,0,'guild','',252,0),
|
||||
(126,0,'guildsay','',250,0),
|
||||
(127,0,'gu','',250,0),
|
||||
(128,0,'officersay','',251,0),
|
||||
(129,0,'os','',999,0),
|
||||
(130,0,'set_guild_member_note','',253,0),
|
||||
(131,0,'set_guild_officer_note','',254,0),
|
||||
(132,0,'ss','',999,0),
|
||||
(133,0,'house_kick','',999,0),
|
||||
(134,0,'house_own_all','',999,0),
|
||||
(135,0,'house_deposit','',518,0),
|
||||
(136,0,'place_house_item','',512,0),
|
||||
(137,0,'delete_house_item','',999,0),
|
||||
(138,0,'start_house_customization','',999,0),
|
||||
(139,0,'scribe_scroll_item','',266,0),
|
||||
(140,0,'use_equipped_item','',275,0),
|
||||
(141,0,'respec','',999,0),
|
||||
(142,0,'showconcentration','',999,0),
|
||||
(143,0,'useability','',34,0),
|
||||
(144,0,'clearallqueuedabilities','',265,0),
|
||||
(145,0,'enablequeuedabilities','',35,0),
|
||||
(146,0,'select_junction','',53,0),
|
||||
(147,0,'motd','',999,0),
|
||||
(148,0,'createfromrecipe','',299,0),
|
||||
(149,0,'stopcreation','',999,0),
|
||||
(150,0,'spiritshards','',999,0),
|
||||
(151,0,'cancel_effect','',530,0),
|
||||
(152,0,'cancel_maintained','',276,0),
|
||||
(153,0,'consume_food','',304,0),
|
||||
(154,0,'set_consume_food','',538,0),
|
||||
(155,0,'destroy_coin','',999,0),
|
||||
(156,0,'set_language','',291,0),
|
||||
(157,0,'languages','',290,0),
|
||||
(158,0,'read','',999,0),
|
||||
(159,0,'resurrect_self','',999,0),
|
||||
(160,0,'lastname','',28,0),
|
||||
(161,0,'confirmedlastname','',29,0),
|
||||
(162,0,'house','',515,0),
|
||||
(163,0,'disable_combat_exp','',187,0),
|
||||
(164,0,'waypoint','',523,0),
|
||||
(165,0,'target','',536,0),
|
||||
(166,0,'showhood','',159,0),
|
||||
(167,0,'hide_illusions','',158,0),
|
||||
(168,0,'zonetofriend','',999,0),
|
||||
(169,0,'inspect_player','',136,0),
|
||||
(170,0,'current_food','',999,0),
|
||||
(171,0,'current_drink','',999,0),
|
||||
(172,0,'claim','',18,0),
|
||||
(173,0,'findnpc','',999,0),
|
||||
(174,0,'stopeating','',156,0),
|
||||
(175,0,'stopdrinking','',157,0),
|
||||
(176,0,'movelog','',999,0),
|
||||
(177,0,'getmailheaders','',999,0),
|
||||
(178,0,'getmailmessage','',120,0),
|
||||
(179,0,'deletemailmessage','',134,0),
|
||||
(180,0,'start_mail','',119,0),
|
||||
(181,0,'set_mail_item','',128,0),
|
||||
(182,0,'add_mail_copper','',127,0),
|
||||
(183,0,'add_mail_silver','',126,0),
|
||||
(184,0,'add_mail_gold','',125,0),
|
||||
(185,0,'add_mail_plat','',124,0),
|
||||
(186,0,'remove_mail_copper','',133,0),
|
||||
(187,0,'remove_mail_silver','',132,0),
|
||||
(188,0,'remove_mail_gold','',131,0),
|
||||
(189,0,'remove_mail_plat','',130,0),
|
||||
(190,0,'takemailattachments','',121,0),
|
||||
(191,0,'cancel_send_mail','',129,0),
|
||||
(192,0,'cancel_mail','',123,0),
|
||||
(193,0,'auction_item','',999,0),
|
||||
(194,0,'auction_coin','',999,0),
|
||||
(195,0,'auction_cancel','',999,0),
|
||||
(196,0,'set_auction_item','',999,0),
|
||||
(197,0,'toggle_bonus_exp','',166,0),
|
||||
(198,0,'arena','',999,0),
|
||||
(199,1,'spawn','',1,200),
|
||||
(200,1,'race','',2,10),
|
||||
(201,1,'level','',3,0),
|
||||
(202,1,'class','',4,10),
|
||||
(204,1,'name','',6,200),
|
||||
(205,1,'zone','',20,0),
|
||||
(206,1,'move','',32,100),
|
||||
(207,1,'flag','',21,10),
|
||||
(208,1,'kick','',22,100),
|
||||
(209,1,'ban','',23,10),
|
||||
(210,1,'summonitem','',25,0),
|
||||
(211,1,'animtest','',211,200),
|
||||
(212,1,'reload','items',36,100),
|
||||
(213,1,'itemsearch','',212,0),
|
||||
(214,1,'speed','',39,10),
|
||||
(215,1,'version','',42,0),
|
||||
(216,1,'kill','',54,10),
|
||||
(217,1,'spawn','add',43,100),
|
||||
(218,1,'spawn','create',44,100),
|
||||
(219,1,'spawn','set',45,100),
|
||||
(220,1,'spawn','remove',46,100),
|
||||
(221,1,'spawn','list',47,200),
|
||||
(222,1,'spawn','target',50,100),
|
||||
(223,1,'spawn','equipment',51,100),
|
||||
(224,1,'spawn','details',52,0),
|
||||
(225,1,'summon','',55,10),
|
||||
(226,1,'goto','',56,10),
|
||||
(227,1,'spawn','move',40,100),
|
||||
(228,1,'flymode','',57,200),
|
||||
(229,1,'settime','',58,10),
|
||||
(230,1,'reload','spells',59,100),
|
||||
(231,1,'loot','',60,0),
|
||||
(232,1,'reload','spawnscripts',62,100),
|
||||
(233,1,'reload','luasystem',63,100),
|
||||
(234,1,'reload','structs',64,100),
|
||||
(235,1,'reload','',65,100),
|
||||
(236,1,'loot','list',66,200),
|
||||
(237,1,'loot','setcoin',67,100),
|
||||
(238,1,'loot','additem',68,100),
|
||||
(239,1,'loot','removeitem',69,100),
|
||||
(240,1,'bank','',70,0),
|
||||
(241,1,'attack','',74,0),
|
||||
(242,1,'reload','quests',79,100),
|
||||
(243,1,'spawn','combine',80,100),
|
||||
(244,1,'depop','',81,100),
|
||||
(245,1,'repop','',82,10),
|
||||
(246,1,'luadebug','',83,10),
|
||||
(247,1,'test','',84,10),
|
||||
(248,1,'frommerchant','',86,0),
|
||||
(249,0,'soloautolock','',999,0),
|
||||
(250,0,'joinchannelfromload','',295,0),
|
||||
(251,0,'asay','',999,0),
|
||||
(252,0,'moveraidmember','',999,0),
|
||||
(253,0,'kickgroupfromraid','',999,0),
|
||||
(254,0,'duelbet','',201,0),
|
||||
(255,0,'surrender','',999,0),
|
||||
(256,0,'duel_toggle','',205,0),
|
||||
(257,0,'decline_duels','',160,0),
|
||||
(258,0,'decline_trades','',161,0),
|
||||
(259,0,'decline_guilds','',162,0),
|
||||
(260,0,'decline_groups','',163,0),
|
||||
(261,0,'decline_raids','',164,0),
|
||||
(262,0,'decline_lon','',165,0),
|
||||
(263,0,'try_on','',280,0),
|
||||
(264,0,'unequip_appearance','',999,0),
|
||||
(265,0,'loot_confirmation','',999,0),
|
||||
(266,0,'petoptions','',142,0),
|
||||
(267,0,'deity_offer','',999,0),
|
||||
(268,0,'deity_offer_confirm','',999,0),
|
||||
(269,0,'deity_sac_info','',999,0),
|
||||
(270,0,'deity_buy_reward','',999,0),
|
||||
(271,0,'deity_buy_reward_confirm','',999,0),
|
||||
(272,0,'deity_change_confirm','',999,0),
|
||||
(273,0,'deity_item_off_altar','',999,0),
|
||||
(274,0,'select','',302,0),
|
||||
(275,0,'getinput','',999,0),
|
||||
(276,0,'set_trade_coin','',176,0),
|
||||
(277,0,'cancel_work','',999,0),
|
||||
(278,0,'add_work_component','',999,0),
|
||||
(279,0,'add_work_payment','',999,0),
|
||||
(280,0,'add_payment_coin','',999,0),
|
||||
(281,0,'set_payment_coin','',999,0),
|
||||
(282,0,'accept_work','',999,0),
|
||||
(283,0,'toggle_work_side_product','',999,0),
|
||||
(284,0,'raid_looter','',542,0),
|
||||
(285,0,'accept_advancement','',293,0),
|
||||
(286,0,'show_available_achievement_trees','',999,0),
|
||||
(287,0,'achievement_respec','',999,0),
|
||||
(288,0,'achievement_freerespec','',999,0),
|
||||
(289,0,'achievement_add','',310,0),
|
||||
(290,0,'achievement_profile_save','',999,0),
|
||||
(291,0,'achievement_profile_swap','',999,0),
|
||||
(292,0,'buy_from_vendor','',999,0),
|
||||
(293,0,'buyback_from_merchant','',91,0),
|
||||
(294,0,'cancel_browse_market','',999,0),
|
||||
(295,0,'install_vendor','',999,0),
|
||||
(296,0,'uninstall_vendor','',999,0),
|
||||
(297,0,'dismiss_vendor','',999,0),
|
||||
(298,0,'contest','',999,0),
|
||||
(299,0,'vendor_add_inventory','',999,0),
|
||||
(300,0,'vendor_remove_inventory','',999,0),
|
||||
(301,0,'vendor_set_price','',999,0),
|
||||
(302,0,'vendor_list_inventory','',999,0),
|
||||
(303,0,'vendor_unlist_inventory','',999,0),
|
||||
(304,0,'vendor_take_coin','',999,0),
|
||||
(305,0,'shared_deposit','',999,0),
|
||||
(306,0,'shared_withdraw','',999,0),
|
||||
(307,0,'end_altar','',999,0),
|
||||
(308,0,'spell_lottery','',999,0),
|
||||
(309,0,'spell_lottery_all','',999,0),
|
||||
(310,0,'display_case','',999,0),
|
||||
(311,0,'house_display','',999,0),
|
||||
(312,0,'house_amenity','',999,0),
|
||||
(313,0,'hirelingoptions','',999,0),
|
||||
(314,0,'place_vendor','',999,0),
|
||||
(315,0,'pickup_vendor','',999,0),
|
||||
(316,0,'drink_alcohol','',999,0),
|
||||
(317,0,'use_item','',117,0),
|
||||
(318,0,'knowledgewindow_sort','',511,0),
|
||||
(319,0,'knowledgewindow_swap','',999,0),
|
||||
(320,0,'knowledgewindow_insertblanks','',999,0),
|
||||
(321,0,'useabilityonplayer','',999,0),
|
||||
(322,0,'reset_zone_timer','',999,0),
|
||||
(323,0,'set_auto_consume','',152,0),
|
||||
(324,0,'use_available_spell','',999,0),
|
||||
(325,0,'petname','',138,0),
|
||||
(326,0,'rename','',140,0),
|
||||
(327,0,'confirmedrename','',141,0),
|
||||
(328,0,'showhelm','',153,0),
|
||||
(329,0,'showhoodorhelm','',154,0),
|
||||
(330,0,'showcloak','',155,0),
|
||||
(331,0,'showranged','',151,0),
|
||||
(332,0,'zone_to_group_member_zone','',999,0),
|
||||
(333,0,'redeem','',999,0),
|
||||
(334,0,'testcopy','',999,0),
|
||||
(335,0,'beta','',999,0),
|
||||
(336,0,'guildbetaapply','',999,0),
|
||||
(337,0,'reportspam','',122,0),
|
||||
(338,0,'despam','',999,0),
|
||||
(339,0,'champion_respawn','',999,0),
|
||||
(340,0,'set_emote_voice','',103,0),
|
||||
(341,0,'set_combat_voice','',102,0),
|
||||
(342,1,'lock','',100,10),
|
||||
(343,0,'pickup','',517,0),
|
||||
(344,0,'weaponstats','',118,0),
|
||||
(345,0,'targetitem','',315,200),
|
||||
(346,0,'refreshuidata','',999,0),
|
||||
(347,0,'confirm_zone','',999,0),
|
||||
(348,0,'answer_tradeskill','',999,0),
|
||||
(349,0,'share_quest','',533,0),
|
||||
(350,0,'buy_house','',999,0),
|
||||
(351,0,'move_item','',516,0),
|
||||
(352,0,'packhouse','',999,0),
|
||||
(353,0,'cast_guild_leader_vote','',999,0),
|
||||
(354,1,'gather','',92,0),
|
||||
(355,1,'invulnerable','',93,10),
|
||||
(360,1,'reload','groundspawn_items',98,100),
|
||||
(361,1,'reload','spawns',99,100),
|
||||
(362,1,'giveitem','',101,10),
|
||||
(363,1,'reload','zonescripts',104,100),
|
||||
(364,0,'broadcast','',145,10),
|
||||
(365,0,'announce','',146,10),
|
||||
(366,0,'gm_hide','',167,10),
|
||||
(367,0,'gm_vanish','',168,10),
|
||||
(368,1,'spawn','group',169,100),
|
||||
(369,0,'decline_vcinvite','',171,0),
|
||||
(370,1,'skill','',236,200),
|
||||
(371,1,'skill','list',235,200),
|
||||
(372,1,'skill','add',233,200),
|
||||
(373,1,'skill','remove',234,200),
|
||||
(374,1,'zone','set',237,100),
|
||||
(375,1,'zone','details',238,200),
|
||||
(376,1,'randomize','',239,100),
|
||||
(377,1,'reload','entity_commands',240,100),
|
||||
(378,1,'repair','',116,0),
|
||||
(379,1,'entity_command','',241,200),
|
||||
(380,1,'entity_command','list',242,200),
|
||||
(381,1,'reload','factions',243,100),
|
||||
(382,1,'merchant','',244,200),
|
||||
(383,1,'merchant','list',245,200),
|
||||
(384,1,'appearance','',246,200),
|
||||
(385,1,'appearance','list',247,200),
|
||||
(386,1,'reload','mail',248,100),
|
||||
(387,1,'distance','',249,200),
|
||||
(388,1,'reload','guilds',255,100),
|
||||
(389,0,'create','',256,0),
|
||||
(390,0,'create','guild',257,0),
|
||||
(391,1,'guilds','',258,0),
|
||||
(392,1,'guilds','create',259,0),
|
||||
(393,1,'guilds','delete',260,10),
|
||||
(394,1,'guilds','add',261,10),
|
||||
(395,1,'guilds','remove',262,10),
|
||||
(396,1,'guilds','list',263,200),
|
||||
(397,0,'lotto','',264,0),
|
||||
(398,1,'reload','locations',267,100),
|
||||
(399,1,'location','',268,200),
|
||||
(400,1,'location','create',269,100),
|
||||
(401,1,'location','add',270,100),
|
||||
(402,1,'grid','',271,200),
|
||||
(403,1,'location','remove',272,100),
|
||||
(404,1,'location','delete',273,100),
|
||||
(405,1,'location','list',274,200),
|
||||
(406,1,'title','list',286,0),
|
||||
(407,1,'title','setprefix',287,0),
|
||||
(408,1,'title','setsuffix',288,0),
|
||||
(409,1,'title','fix',289,0),
|
||||
(410,1,'irc','',292,200),
|
||||
(411,1,'spawn','template',143,100),
|
||||
(414,0,'disable_quest_exp','',188,0),
|
||||
(415,0,'disable_char_bonus_exp','',189,0),
|
||||
(416,0,'accept_pending_summon','',999,0),
|
||||
(417,0,'achievement_conversion','',999,0),
|
||||
(418,0,'battleground','',999,0),
|
||||
(419,0,'book','',463,0),
|
||||
(420,0,'clear_mailbox','',999,0),
|
||||
(421,0,'container','',999,0),
|
||||
(422,0,'cureplayer','',531,0),
|
||||
(423,0,'currency','',999,0),
|
||||
(424,0,'dmnotready','',999,0),
|
||||
(425,0,'dmready','',999,0),
|
||||
(426,0,'dmselectavatar','',999,0),
|
||||
(427,0,'facebook','',999,0),
|
||||
(428,0,'finditem','',999,0),
|
||||
(429,0,'guild_confirmedrename','',999,0),
|
||||
(430,0,'guild_rename','',999,0),
|
||||
(431,0,'guild_rename_cancel','',999,0),
|
||||
(432,0,'hide_achievements','',999,0),
|
||||
(433,0,'house_edit','',999,0),
|
||||
(434,0,'house_portal_obj','',999,0),
|
||||
(435,0,'house_ui','',514,0),
|
||||
(436,0,'house_zone','',999,0),
|
||||
(437,0,'leavelonshowroom','',999,0),
|
||||
(438,0,'loadbeastlordability','',999,0),
|
||||
(439,0,'lonshowroom','',999,0),
|
||||
(440,0,'mentor','',528,0),
|
||||
(441,0,'mercenary','',999,0),
|
||||
(442,0,'mercname','',999,0),
|
||||
(443,0,'move_house_items','',999,0),
|
||||
(444,0,'porttofriend','',999,0),
|
||||
(445,0,'publish_house','',999,0),
|
||||
(446,0,'rate_house','',999,0),
|
||||
(447,0,'readycheck','',999,0),
|
||||
(448,0,'reforge_item','',999,0),
|
||||
(449,0,'reforge_restore','',999,0),
|
||||
(450,0,'rename_cancel','',999,0),
|
||||
(451,0,'research','',999,0),
|
||||
(452,0,'return_house_item','',999,0),
|
||||
(453,0,'setautolootmode','',999,0),
|
||||
(454,0,'setclientpetkey','',999,0),
|
||||
(455,0,'setplayerrace','',999,0),
|
||||
(456,0,'share','',999,0),
|
||||
(457,0,'showbackapp','',999,0),
|
||||
(458,0,'smp','',999,0),
|
||||
(459,0,'socialmedia','',999,0),
|
||||
(460,0,'split','',546,0),
|
||||
(461,0,'summon_mount','',999,0),
|
||||
(462,0,'tagtarget','',999,0),
|
||||
(463,0,'targetaddon','',999,0),
|
||||
(464,0,'transfer_character','',999,0),
|
||||
(465,0,'transfer_character_free','',999,0),
|
||||
(466,0,'ts_research','',999,0),
|
||||
(467,0,'tweet','',999,0),
|
||||
(468,0,'twitter','',999,0),
|
||||
(469,0,'unattune_all','',999,0),
|
||||
(470,0,'unmentor','',529,0),
|
||||
(471,0,'use_unlocker','',999,0),
|
||||
(472,0,'vote_kick','',999,0),
|
||||
(473,0,'vote_options','',999,0),
|
||||
(474,0,'waypoint_from_entity_id','',999,0),
|
||||
(475,0,'welcome_info','',999,0),
|
||||
(476,0,'write_sign','',999,0),
|
||||
(477,1,'modify','',1000,200),
|
||||
(478,1,'zone','shutdown',190,100),
|
||||
(479,1,'zone','safe',191,100),
|
||||
(480,1,'zone','revive',192,100),
|
||||
(481,1,'reload','zones',193,100),
|
||||
(482,0,'rain','',300,200),
|
||||
(483,0,'guildbank','',282,0),
|
||||
(484,1,'tomerchant','',301,0),
|
||||
(485,0,'setautoattackmode','',999,0),
|
||||
(486,0,'gethotzones','',999,0),
|
||||
(487,0,'summon_chest','',999,0),
|
||||
(488,0,'add_trade_krono','',999,0),
|
||||
(489,0,'vendor_add_krono','',999,0),
|
||||
(490,0,'republish_house','',999,0),
|
||||
(491,0,'dmgstatus','',999,0),
|
||||
(492,0,'facial_anim_receiver','',999,0),
|
||||
(493,1,'weather','',38,10),
|
||||
(494,1,'aquaman','',305,200),
|
||||
(495,1,'player','',307,10),
|
||||
(496,1,'player','coins',308,10),
|
||||
(497,1,'editor','',311,100),
|
||||
(498,1,'accept_resurrection','',312,0),
|
||||
(499,1,'decline_resurrection','',313,0),
|
||||
(500,1,'modify','spawn',1007,100),
|
||||
(501,0,'wind','',314,200),
|
||||
(502,1,'modify','character',1001,100),
|
||||
(503,1,'modify','skill',1006,100),
|
||||
(504,0,'modify','quest',1005,100),
|
||||
(505,1,'bot','',500,0),
|
||||
(506,1,'bot','create',501,0),
|
||||
(507,1,'bot','customize',502,0),
|
||||
(508,1,'bot','spawn',503,0),
|
||||
(509,1,'bot','list',504,0),
|
||||
(510,1,'bot','inv',505,0),
|
||||
(511,1,'bot','settings',506,0),
|
||||
(512,1,'bot','help',507,0),
|
||||
(513,1,'get_aa_xml','',750,200),
|
||||
(514,1,'add_aa','',751,200),
|
||||
(515,1,'commit_aa_profile','',752,200),
|
||||
(516,1,'begin_aa_profile','',753,200),
|
||||
(517,1,'back_aa','',754,200),
|
||||
(518,1,'remove_aa','',755,200),
|
||||
(519,1,'switch_aa_profile','',756,200),
|
||||
(520,1,'cancel_aa_profile','',757,200),
|
||||
(521,1,'save_aa_profile','',758,200),
|
||||
(522,1,'castspell',NULL,509,200),
|
||||
(523,0,'castspell','',509,200),
|
||||
(524,1,'findspawn','',521,200),
|
||||
(525,1,'reload','regionscripts',524,100),
|
||||
(526,1,'craftitem','',526,100),
|
||||
(527,1,'reload','rules',519,100),
|
||||
(528,1,'reload','transporters',520,100),
|
||||
(529,0,'frombroker','',527,0),
|
||||
(531,0,'gm','',513,200),
|
||||
(532,1,'reload','startabilities',522,100),
|
||||
(533,1,'movecharacter','',525,200),
|
||||
(536,1,'reload','voiceovers',532,100),
|
||||
(538,0,'target_pet','',537,0),
|
||||
(539,0,'whogroup','',539,0),
|
||||
(540,1,'reload','zoneinfo',1010,100);
|
12
sql/dbeditor_log.sql
Executable file
12
sql/dbeditor_log.sql
Executable file
@ -0,0 +1,12 @@
|
||||
DROP TABLE IF EXISTS dbeditor_log;
|
||||
CREATE TABLE dbeditor_log (
|
||||
id INTEGER PRIMARY KEY,
|
||||
char_id INTEGER NOT NULL,
|
||||
char_name TEXT,
|
||||
admin_status INTEGER NOT NULL,
|
||||
item_name TEXT,
|
||||
table_name TEXT,
|
||||
update_query TEXT,
|
||||
update_date INTEGER NOT NULL,
|
||||
archived INTEGER NOT NULL DEFAULT 0
|
||||
);
|
19
sql/dialog_flavors.sql
Executable file
19
sql/dialog_flavors.sql
Executable file
@ -0,0 +1,19 @@
|
||||
DROP TABLE IF EXISTS dialog_flavors;
|
||||
CREATE TABLE dialog_flavors (
|
||||
id INTEGER PRIMARY KEY,
|
||||
voiceover_id INTEGER,
|
||||
text_id INTEGER NOT NULL,
|
||||
language INTEGER NOT NULL DEFAULT 0,
|
||||
understood INTEGER NOT NULL DEFAULT 0,
|
||||
emote TEXT NOT NULL DEFAULT '',
|
||||
emote_text_id INTEGER,
|
||||
unknown4 INTEGER NOT NULL DEFAULT 0,
|
||||
log_id INTEGER NOT NULL,
|
||||
FOREIGN KEY (text_id) REFERENCES dialog_text(id) ON UPDATE CASCADE,
|
||||
FOREIGN KEY (emote_text_id) REFERENCES dialog_text(id) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
FOREIGN KEY (voiceover_id) REFERENCES dialog_voiceovers(id) ON UPDATE CASCADE
|
||||
);
|
||||
CREATE INDEX idx_dialog_flavors_emote ON dialog_flavors(emote);
|
||||
CREATE INDEX idx_dialog_flavors_text_id ON dialog_flavors(text_id);
|
||||
CREATE INDEX idx_dialog_flavors_voiceover_id ON dialog_flavors(voiceover_id);
|
||||
CREATE INDEX idx_dialog_flavors_emote_text_id ON dialog_flavors(emote_text_id);
|
7
sql/dialog_npcs.sql
Executable file
7
sql/dialog_npcs.sql
Executable file
@ -0,0 +1,7 @@
|
||||
DROP TABLE IF EXISTS dialog_npcs;
|
||||
CREATE TABLE dialog_npcs (
|
||||
id INTEGER PRIMARY KEY,
|
||||
zone TEXT NOT NULL,
|
||||
name TEXT NOT NULL,
|
||||
UNIQUE(zone, name)
|
||||
);
|
11
sql/dialog_play_flavors.sql
Executable file
11
sql/dialog_play_flavors.sql
Executable file
@ -0,0 +1,11 @@
|
||||
DROP TABLE IF EXISTS dialog_play_flavors;
|
||||
CREATE TABLE dialog_play_flavors (
|
||||
id INTEGER PRIMARY KEY,
|
||||
npc_id INTEGER NOT NULL,
|
||||
flavor_id INTEGER NOT NULL,
|
||||
log_id INTEGER NOT NULL,
|
||||
UNIQUE(npc_id, flavor_id),
|
||||
FOREIGN KEY (npc_id) REFERENCES dialog_npcs(id) ON UPDATE CASCADE,
|
||||
FOREIGN KEY (flavor_id) REFERENCES dialog_flavors(id) ON UPDATE CASCADE
|
||||
);
|
||||
CREATE INDEX idx_dialog_play_flavors_flavor_id ON dialog_play_flavors(flavor_id);
|
15
sql/dialog_play_voices.sql
Executable file
15
sql/dialog_play_voices.sql
Executable file
@ -0,0 +1,15 @@
|
||||
DROP TABLE IF EXISTS dialog_play_voices;
|
||||
CREATE TABLE dialog_play_voices (
|
||||
id INTEGER PRIMARY KEY,
|
||||
npc_id INTEGER NOT NULL,
|
||||
voiceover_id INTEGER NOT NULL,
|
||||
language INTEGER NOT NULL,
|
||||
garbled_text_id INTEGER,
|
||||
log_id INTEGER NOT NULL,
|
||||
UNIQUE(npc_id, voiceover_id, garbled_text_id),
|
||||
FOREIGN KEY (npc_id) REFERENCES dialog_npcs(id) ON UPDATE CASCADE,
|
||||
FOREIGN KEY (voiceover_id) REFERENCES dialog_voiceovers(id) ON UPDATE CASCADE,
|
||||
FOREIGN KEY (garbled_text_id) REFERENCES dialog_text(id) ON UPDATE CASCADE
|
||||
);
|
||||
CREATE INDEX idx_dialog_play_voices_voiceover_id ON dialog_play_voices(voiceover_id);
|
||||
CREATE INDEX idx_dialog_play_voices_garbled_text_id ON dialog_play_voices(garbled_text_id);
|
14
sql/dialog_responses.sql
Executable file
14
sql/dialog_responses.sql
Executable file
@ -0,0 +1,14 @@
|
||||
DROP TABLE IF EXISTS dialog_responses;
|
||||
CREATE TABLE dialog_responses (
|
||||
id INTEGER PRIMARY KEY,
|
||||
parent_dialog_id INTEGER NOT NULL,
|
||||
index INTEGER NOT NULL,
|
||||
text_id INTEGER NOT NULL,
|
||||
next_dialog_id INTEGER,
|
||||
FOREIGN KEY (parent_dialog_id) REFERENCES dialogs(id) ON UPDATE CASCADE,
|
||||
FOREIGN KEY (next_dialog_id) REFERENCES dialogs(id) ON UPDATE CASCADE,
|
||||
FOREIGN KEY (text_id) REFERENCES dialog_text(id) ON UPDATE CASCADE
|
||||
);
|
||||
CREATE INDEX idx_dialog_responses_parent_dialog_id ON dialog_responses(parent_dialog_id);
|
||||
CREATE INDEX idx_dialog_responses_text_id ON dialog_responses(text_id);
|
||||
CREATE INDEX idx_dialog_responses_next_dialog_id ON dialog_responses(next_dialog_id);
|
6
sql/dialog_text.sql
Executable file
6
sql/dialog_text.sql
Executable file
@ -0,0 +1,6 @@
|
||||
DROP TABLE IF EXISTS dialog_text;
|
||||
CREATE TABLE dialog_text (
|
||||
id INTEGER PRIMARY KEY,
|
||||
text TEXT NOT NULL
|
||||
);
|
||||
CREATE INDEX idx_dialog_text_text ON dialog_text(text);
|
9
sql/dialog_voiceovers.sql
Executable file
9
sql/dialog_voiceovers.sql
Executable file
@ -0,0 +1,9 @@
|
||||
DROP TABLE IF EXISTS dialog_voiceovers;
|
||||
CREATE TABLE dialog_voiceovers (
|
||||
id INTEGER PRIMARY KEY,
|
||||
file TEXT NOT NULL,
|
||||
key1 INTEGER NOT NULL DEFAULT 0,
|
||||
key2 INTEGER NOT NULL DEFAULT 0,
|
||||
bChecked INTEGER NOT NULL DEFAULT 0
|
||||
);
|
||||
CREATE INDEX idx_dialog_voiceovers_file ON dialog_voiceovers(file);
|
20
sql/dialogs.sql
Executable file
20
sql/dialogs.sql
Executable file
@ -0,0 +1,20 @@
|
||||
DROP TABLE IF EXISTS dialogs;
|
||||
CREATE TABLE dialogs (
|
||||
id INTEGER PRIMARY KEY,
|
||||
npc_id INTEGER NOT NULL,
|
||||
voiceover_id INTEGER,
|
||||
title_text_id INTEGER,
|
||||
msg_text_id INTEGER,
|
||||
closeable INTEGER NOT NULL DEFAULT 1,
|
||||
signature INTEGER NOT NULL,
|
||||
language INTEGER NOT NULL,
|
||||
log_id INTEGER NOT NULL,
|
||||
FOREIGN KEY (npc_id) REFERENCES dialog_npcs(id) ON UPDATE CASCADE,
|
||||
FOREIGN KEY (title_text_id) REFERENCES dialog_text(id) ON UPDATE CASCADE,
|
||||
FOREIGN KEY (msg_text_id) REFERENCES dialog_text(id) ON UPDATE CASCADE,
|
||||
FOREIGN KEY (voiceover_id) REFERENCES dialog_voiceovers(id) ON UPDATE CASCADE
|
||||
);
|
||||
CREATE INDEX idx_dialogs_voiceover_id ON dialogs(voiceover_id);
|
||||
CREATE INDEX idx_dialogs_npc_id ON dialogs(npc_id);
|
||||
CREATE INDEX idx_dialogs_title_text_id ON dialogs(title_text_id);
|
||||
CREATE INDEX idx_dialogs_msg_text_id ON dialogs(msg_text_id);
|
31588
sql/emotes.sql
Executable file
31588
sql/emotes.sql
Executable file
File diff suppressed because it is too large
Load Diff
1412
sql/entity_commands.sql
Executable file
1412
sql/entity_commands.sql
Executable file
File diff suppressed because it is too large
Load Diff
7
sql/eq2classes.sql
Executable file
7
sql/eq2classes.sql
Executable file
@ -0,0 +1,7 @@
|
||||
DROP TABLE IF EXISTS eq2classes;
|
||||
CREATE TABLE eq2classes (
|
||||
id INTEGER PRIMARY KEY,
|
||||
class_id INTEGER NOT NULL DEFAULT 0 UNIQUE,
|
||||
class_name TEXT,
|
||||
class_alignment TEXT
|
||||
);
|
8
sql/eq2expansions.sql
Executable file
8
sql/eq2expansions.sql
Executable file
@ -0,0 +1,8 @@
|
||||
DROP TABLE IF EXISTS eq2expansions;
|
||||
CREATE TABLE eq2expansions (
|
||||
id INTEGER PRIMARY KEY,
|
||||
expansion_tag TEXT,
|
||||
expansion TEXT,
|
||||
expansion_type TEXT,
|
||||
release_date TEXT
|
||||
);
|
7
sql/eq2gm.sql
Executable file
7
sql/eq2gm.sql
Executable file
@ -0,0 +1,7 @@
|
||||
DROP TABLE IF EXISTS eq2gm;
|
||||
CREATE TABLE eq2gm (
|
||||
id INTEGER PRIMARY KEY,
|
||||
gm_title TEXT,
|
||||
gm_description TEXT,
|
||||
gm_status INTEGER NOT NULL DEFAULT 0
|
||||
);
|
9
sql/eq2models.sql
Executable file
9
sql/eq2models.sql
Executable file
@ -0,0 +1,9 @@
|
||||
DROP TABLE IF EXISTS eq2models;
|
||||
CREATE TABLE eq2models (
|
||||
id INTEGER PRIMARY KEY,
|
||||
category TEXT,
|
||||
subcategory TEXT,
|
||||
model_type INTEGER NOT NULL,
|
||||
model_name TEXT
|
||||
);
|
||||
CREATE INDEX idx_eq2models_model_type ON eq2models(model_type);
|
8
sql/eq2races.sql
Executable file
8
sql/eq2races.sql
Executable file
@ -0,0 +1,8 @@
|
||||
DROP TABLE IF EXISTS eq2races;
|
||||
CREATE TABLE eq2races (
|
||||
id INTEGER PRIMARY KEY,
|
||||
race INTEGER NOT NULL DEFAULT 0,
|
||||
race_type INTEGER NOT NULL DEFAULT 0,
|
||||
name TEXT,
|
||||
is_player_race INTEGER NOT NULL DEFAULT 0
|
||||
);
|
101
sql/exp_per_level.sql
Executable file
101
sql/exp_per_level.sql
Executable file
@ -0,0 +1,101 @@
|
||||
DROP TABLE IF EXISTS exp_per_level;
|
||||
CREATE TABLE exp_per_level (
|
||||
level INTEGER PRIMARY KEY,
|
||||
exp_needed INTEGER
|
||||
);
|
||||
|
||||
INSERT INTO exp_per_level VALUES
|
||||
(2,600),
|
||||
(3,800),
|
||||
(4,1000),
|
||||
(5,1400),
|
||||
(6,1800),
|
||||
(7,2200),
|
||||
(8,2600),
|
||||
(9,3000),
|
||||
(10,3400),
|
||||
(11,3800),
|
||||
(12,4200),
|
||||
(13,4600),
|
||||
(14,5000),
|
||||
(15,5500),
|
||||
(16,6000),
|
||||
(17,6500),
|
||||
(18,7000),
|
||||
(19,7500),
|
||||
(20,8000),
|
||||
(21,8500),
|
||||
(22,9000),
|
||||
(23,9500),
|
||||
(24,10000),
|
||||
(25,10500),
|
||||
(26,11000),
|
||||
(27,11750),
|
||||
(28,12500),
|
||||
(29,13250),
|
||||
(30,14000),
|
||||
(31,14750),
|
||||
(32,15500),
|
||||
(33,16250),
|
||||
(34,17000),
|
||||
(35,17750),
|
||||
(36,18500),
|
||||
(37,19250),
|
||||
(38,20000),
|
||||
(39,20750),
|
||||
(40,21500),
|
||||
(41,22250),
|
||||
(42,23000),
|
||||
(43,24000),
|
||||
(44,25000),
|
||||
(45,26000),
|
||||
(46,27000),
|
||||
(47,28000),
|
||||
(48,29250),
|
||||
(49,30500),
|
||||
(50,32000),
|
||||
(51,33750),
|
||||
(52,35750),
|
||||
(53,38000),
|
||||
(54,40500),
|
||||
(55,42500),
|
||||
(56,45500),
|
||||
(57,48500),
|
||||
(58,51500),
|
||||
(59,54500),
|
||||
(60,57500),
|
||||
(61,60500),
|
||||
(62,63500),
|
||||
(63,66500),
|
||||
(64,70000),
|
||||
(65,73500),
|
||||
(66,77000),
|
||||
(67,80500),
|
||||
(68,84000),
|
||||
(69,87500),
|
||||
(70,91000),
|
||||
(71,94500),
|
||||
(72,98000),
|
||||
(73,101500),
|
||||
(74,105000),
|
||||
(75,108500),
|
||||
(76,116500),
|
||||
(77,132500),
|
||||
(78,152500),
|
||||
(79,172500),
|
||||
(80,192500),
|
||||
(81,212500),
|
||||
(82,232500),
|
||||
(83,252500),
|
||||
(84,272500),
|
||||
(85,292500),
|
||||
(86,312500),
|
||||
(87,332500),
|
||||
(88,352500),
|
||||
(89,372500),
|
||||
(90,392500),
|
||||
(91,863550),
|
||||
(92,949905),
|
||||
(93,1044895),
|
||||
(94,1149385),
|
||||
(95,1264323);
|
83
sql/faction_alliances.sql
Executable file
83
sql/faction_alliances.sql
Executable file
@ -0,0 +1,83 @@
|
||||
DROP TABLE IF EXISTS faction_alliances;
|
||||
CREATE TABLE faction_alliances (
|
||||
id INTEGER PRIMARY KEY,
|
||||
faction_id INTEGER NOT NULL DEFAULT 0,
|
||||
friend_faction INTEGER NOT NULL DEFAULT 0,
|
||||
hostile_faction INTEGER NOT NULL DEFAULT 0,
|
||||
UNIQUE(faction_id, friend_faction, hostile_faction),
|
||||
FOREIGN KEY (faction_id) REFERENCES factions(id) ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
INSERT INTO faction_alliances VALUES
|
||||
(61,11,0,1),
|
||||
(1,11,0,12),
|
||||
(39,11,0,102),
|
||||
(64,11,0,122),
|
||||
(66,12,0,1),
|
||||
(2,12,0,11),
|
||||
(75,12,0,120),
|
||||
(76,12,0,121),
|
||||
(79,12,0,362),
|
||||
(80,12,0,363),
|
||||
(81,12,0,364),
|
||||
(77,12,0,366),
|
||||
(78,12,0,367),
|
||||
(3,21,0,22),
|
||||
(21,34,0,1),
|
||||
(41,34,0,5),
|
||||
(26,34,0,35),
|
||||
(23,34,0,36),
|
||||
(25,34,0,354),
|
||||
(62,44,0,1),
|
||||
(63,44,0,12),
|
||||
(40,102,0,35),
|
||||
(15,102,0,116),
|
||||
(18,102,0,120),
|
||||
(36,104,0,103),
|
||||
(37,104,0,136),
|
||||
(34,104,102,0),
|
||||
(35,104,105,0),
|
||||
(32,105,0,103),
|
||||
(33,105,0,155),
|
||||
(30,105,101,0),
|
||||
(29,105,102,0),
|
||||
(31,105,104,0),
|
||||
(16,116,0,102),
|
||||
(14,116,0,117),
|
||||
(17,120,0,102),
|
||||
(65,122,0,11),
|
||||
(43,122,0,111),
|
||||
(42,122,0,117),
|
||||
(27,125,0,139),
|
||||
(28,139,0,125),
|
||||
(73,145,1,0),
|
||||
(57,214,0,1),
|
||||
(56,214,0,12),
|
||||
(19,214,0,33),
|
||||
(59,214,0,359),
|
||||
(58,214,0,361),
|
||||
(55,214,11,0),
|
||||
(60,214,16,0),
|
||||
(12,250,0,144),
|
||||
(13,250,143,0),
|
||||
(9,288,0,289),
|
||||
(24,354,0,34),
|
||||
(48,357,0,35),
|
||||
(51,357,0,36),
|
||||
(50,357,0,44),
|
||||
(49,357,0,358),
|
||||
(44,357,356,0),
|
||||
(47,358,0,356),
|
||||
(46,358,0,357),
|
||||
(52,359,0,360),
|
||||
(53,361,0,359),
|
||||
(54,361,0,360),
|
||||
(67,362,0,363),
|
||||
(68,362,0,364),
|
||||
(69,363,0,362),
|
||||
(70,363,0,364),
|
||||
(71,364,0,362),
|
||||
(72,364,0,363),
|
||||
(82,366,0,11),
|
||||
(83,366,0,12),
|
||||
(74,367,0,12);
|
248
sql/factions.sql
Executable file
248
sql/factions.sql
Executable file
@ -0,0 +1,248 @@
|
||||
DROP TABLE IF EXISTS factions;
|
||||
CREATE TABLE factions (
|
||||
id INTEGER PRIMARY KEY,
|
||||
name TEXT NOT NULL DEFAULT '',
|
||||
type TEXT NOT NULL DEFAULT '',
|
||||
description TEXT NOT NULL,
|
||||
default_level INTEGER NOT NULL DEFAULT 0,
|
||||
negative_change INTEGER NOT NULL DEFAULT 100,
|
||||
positive_change INTEGER NOT NULL DEFAULT 75
|
||||
);
|
||||
|
||||
INSERT INTO factions VALUES
|
||||
(1,'Scowls (KOS)','Generic','This is a generic faction level for the emu. Assigning an npc to that faction level allows them to show up with whatever con you wish without creating a new faction for each one.',0,100,75),
|
||||
(2,'Threatening','Generic','This is a generic faction level for the emu. Assigning an npc to that faction level allows them to show up with whatever con you wish without creating a new faction for each one.',0,100,75),
|
||||
(3,'Dubious','Generic','This is a generic faction level for the emu. Assigning an npc to that faction level allows them to show up with whatever con you wish without creating a new faction for each one.',0,100,75),
|
||||
(4,'Apprehensive ','Generic','This is a generic faction level for the emu. Assigning an npc to that faction level allows them to show up with whatever con you wish without creating a new faction for each one.',0,100,75),
|
||||
(5,'Indifferent','Generic','This is a generic faction level for the emu. Assigning an npc to that faction level allows them to show up with whatever con you wish without creating a new faction for each one.',0,100,75),
|
||||
(6,'Amiably','Generic','This is a generic faction level for the emu. Assigning an npc to that faction level allows them to show up with whatever con you wish without creating a new faction for each one.',0,100,75),
|
||||
(7,'Kindly','Generic','This is a generic faction level for the emu. Assigning an npc to that faction level allows them to show up with whatever con you wish without creating a new faction for each one.',0,100,75),
|
||||
(8,'Warmly','Generic','This is a generic faction level for the emu. Assigning an npc to that faction level allows them to show up with whatever con you wish without creating a new faction for each one.',0,100,75),
|
||||
(9,'Ally','Generic','This is a generic faction level for the emu. Assigning an npc to that faction level allows them to show up with whatever con you wish without creating a new faction for each one.',0,100,75),
|
||||
(10,'The GM''s of EQ2Emulator','Misc','Faction that makes GMs everyone''s friend!',0,100,75),
|
||||
(11,'The City of Qeynos','City Factions','The City of Qeynos',0,0,0),
|
||||
(12,'The City of Freeport','City Factions','The City of Freeport',0,0,0),
|
||||
(13,'The City of Neriak','City Factions','The City of Neriak',0,100,75),
|
||||
(14,'The City of Kelethin','City Factions','The City of Kelethin',0,100,75),
|
||||
(15,'Exile','City Factions','Exile',0,100,75),
|
||||
(16,'The City of New Halas','City Factions','The City of New Halas',0,100,75),
|
||||
(17,'The City of Gorowyn ','City Factions','The City of Gorowyn',0,100,75),
|
||||
(21,'TutorialFaction1','Generic','This is a generic faction to assign to tutorial island inhabitants to oppose TutorialFaction2.',0,100,75),
|
||||
(22,'TutorialFaction2','Generic','This is a generic faction to assign to tutorial island inhabitants to oppose TutorialFaction1.',-50000,0,0),
|
||||
(31,'Alpha Testers','Misc','',0,100,75),
|
||||
(32,'Beta Testers','Misc','',0,100,75),
|
||||
(33,'City Rats','Never Seen','City rats. No players should have this faction.',0,100,75),
|
||||
(34,'Neutral Guard Faction','Generic','Generic faction for neutral guards',0,0,0),
|
||||
(35,'Indifferent - Player','Generic','Generic faction for non-aggressive mobs, so guards will attack.',0,0,0),
|
||||
(36,'Scowls - Player','Generic','This faction is conned -50000 to players',-50000,100,75),
|
||||
(37,'Threatening - Player','Generic','This faction is conned -30000 to players',-30000,100,75),
|
||||
(38,'Dubious - Player','Generic','This faction will con -20000 to players.',-20000,100,75),
|
||||
(39,'Apprehensive - Player','Generic','This faction will con -10000 to players.',-10000,100,75),
|
||||
(40,'Amiably - Player','Generic','This faction will con +10000 to players',10000,100,75),
|
||||
(41,'Kindly - Player','Generic','This faction will con +20000 to players',20000,100,75),
|
||||
(42,'Warmly - Player','Generic','This faction will con +30000 to players',30000,100,75),
|
||||
(43,'Ally - Player','Generic','This faction will con +50000 to players',50000,100,75),
|
||||
(44,'Good Guard','Generic','This is a generic faction for Good guards.',0,0,0),
|
||||
(45,'Evil Guard','Generic','This is a generic faction for Evil guards.',0,100,75),
|
||||
(101,'The Coalition of Tradesfolke','Shattered Lands','The Coalition of Tradesfolke is the ruling trade organization of Freeport. They oversee all trade operations of Freeport and do away with any competition with extreme prejudice.',0,100,75),
|
||||
(102,'The Freeport Militia','Shattered Lands','The Freeport Militia is the defensive force of Freeport. This merciless fighting force defends the walls of Freeport as well as the borderlands of the great city.',0,100,75),
|
||||
(103,'The Seafury Buccaneers','Shattered Lands','This was once a lawless pirate organization that terrorized the Shattered Lands. These pirates now fly the flag of Freeport and act as the Overlord''s savage armada. ',0,100,75),
|
||||
(104,'The Academy of Arcane Science','Shattered Lands','The Academy of Arcane Science is one of the oldest and most esteemed schools of knowledge on Norrath. They make their home in Freeport where they are free to delve into arts that are forbidden in most societies.',0,100,75),
|
||||
(105,'The Dismal Rage','Shattered Lands','The Dismal Rage is the religious foundation of Freeport. This organization pays homage to the darker powers of Norrath, the principles of Fear, Hate, and War.',0,100,75),
|
||||
(106,'The Kromise','Shattered Lands','Thundering across the frigid tundra of Everfrost is the Kromise, giants formed of frost and ice. These titanic brutes have long claimed the chilly northlands and will not tolerate the presence of outlanders. ',-40000,100,75),
|
||||
(107,'The Order of the Blade','Shattered Lands','These fierce maidens of the cold blade are rumored to be the children of the Ice Goddess, E''ci. They believe that only through intense combat and challenge can true honor be obtained.',-40000,100,75),
|
||||
(108,'The Guardians of Thyr','Shattered Lands','Deep within the fiery abyss of the volcanic lands dwell the Guardians of Thyr, cruel fire giants. From an underworld they call Thyr they act as the frontline defense of their master, the red dragon, Lord Nagafen.',-40000,100,75),
|
||||
(109,'The Court of the Master Djinn','Desert of Ro','',0,100,75),
|
||||
(110,'The Steppes Settlers','Shattered Lands','The residents of the Thundering Steppes once lived solitary lives, but the ravages of war and the wrath of nature have brought the settlers together to form this well-organized, yet loose-knit, society. ',-10000,100,75),
|
||||
(111,'The Great Herd','Shattered Lands','Roaming across the plains of the Thundering Steppes is the centaur society known only as the Great Herd. These centaurs have learned to live off the land and trust no one if they wish to survive the perils of the Age of Destiny.',-40000,100,75),
|
||||
(112,'The Seamist Faeries','Shattered Lands','These fairyfolke have long existed in the magical woodlands of the Enchanted Lands. Though these fairies generally maintain a docile nature, a few of their ilk have been driven to rage in an attempt to survive in a homeland ravaged by evil forces.',0,100,75),
|
||||
(113,'The Enchanted Reapers','Shattered Lands','The Enchanted Reapers are the evil horde of beasts that invaded the Enchanted Lands. Their origin is a mystery. Their malevolent actions have brought sorrow upon a land once filled with happiness.',-40000,100,75),
|
||||
(114,'The Guardians of the Vale','Shattered Lands','The once large halfling nation has been reduced to a few staunch stouts that strive to exist within the Enchanted Lands. These are the Guardians of the Vale, a peaceful people forced to raise arms in order to defend against the evil that has overtaken their homeland.',-10000,100,75),
|
||||
(115,'The Runnyeye Goblins','Shattered Lands','The Runnyeye Goblins have long been subjugated by their evil eye taskmasters, forced to toil and do battle at the whim of their powerful overlords. They can often be found salvaging what others would call refuse and bringing it back to their underground forges to be reshaped into tools of war.',-40000,100,75),
|
||||
(116,'The Dervish Cutthroats','Shattered Lands','The Dervish Cutthroats are said to be the largest bandit organization that ever existed. They have long since terrorized settlers and travelers of the overland. These bandits can be found throughout the Shattered Lands, but they are most prevalent in the Commonlands.',-40000,100,50),
|
||||
(117,'The Far Seas Trading Company','Shattered Lands','The Far Seas Trading Company rose to great heights during the Age of Cataclysms, created from the union of surviving seafarers. Their flotillas now act as a lifeline between societies great and small, often rescuing survivors while gathering resources within the Shattered Lands.',0,100,50),
|
||||
(118,'The Greenhoods','Shattered Lands','The Greenbloods are an elite band of resistance fighters located on the Orcish Wastes. Before the Shattering, this force was a highly mobile regiment of the Qeynos Guard. They have since broken off to form their own organization while still aiding Qeynos however possible.',-10000,100,75),
|
||||
(119,'The Deathfist Orcs','Shattered Lands','The Deathfist Empire is one of the greatest threats to the civilized societies of the Shattered Lands. This orc empire maintains a vast war machine that has claimed Zek, a former resource-rich forest island, as their new base of operations.',-40000,100,75),
|
||||
(120,'The Bloodskull Orcs','Shattered Lands','The Bloodskull Orcs are a relatively new clan of orcs that has begun to operate near the city of Freeport. Unlike the larger orc empires, the Bloodskulls do not seem to have a fortified capital nor do they seem to be interested in conquest.',-40000,100,50),
|
||||
(121,'The Ree Orcs','Shattered Lands','The Ree Raiders are a small clandestine band of orcs that operate somewhere on the continent of D''Lere. They are plunderers that will seize goods to use as trade with any organization that will do business with them.',-40000,100,75),
|
||||
(122,'The Sabertooth Gnolls','Shattered Lands','The Sabertooth Clan is the largest known clan of gnolls inhabiting the Shattered Lands. These gnolls are comprised of many smaller packs that have banded together to bring about the end of the great cities of men, whom they have viewed as an eternal foe.',-40000,100,75),
|
||||
(123,'The Evol Ew Lizardmen','Shattered Lands','The Alliz Evol Ew are a savage tribe of lizardmen that inhabit the jungles of the Feerrott. They worship the influence of Fear which directs them to defend the island and its monuments from any invader. They are cousins to the cannibalistic Alliz Tae Ew.',-45000,100,75),
|
||||
(124,'The Tae Ew Lizardmen','Shattered Lands','The Alliz Tae Ew are a cannibalistic race of lizardmen that live within the jungle of the Feerrott. These lizards are members of a cult of Fear called Thulians. They are cousins to the Alliz Evol Ew, whom they often feed upon as their dark lords instruct them to.',-45000,100,75),
|
||||
(125,'The Thexians','Shattered Lands','The Thexians are dark elves that promote the return of traditional ways of the Teir''Dal, something that has vanished since their refuge within the walls of Freeport, a city of men. The Thexians operate in secrecy and seek only the alliance of Teir''Dal.',-45000,100,25),
|
||||
(126,'The Asilian Fairies','Shattered Lands','These faeries are a once demure community of fairies that now fight to survive in Nektulos Forest since being driven from the cataclysms of the Underfoot. They now find themselves in a war for resources with a fellow fairy community of Sullian Fairies. ',0,100,75),
|
||||
(127,'The Sullian Fairies','Shattered Lands','The Sullians are a community of fairies that have been driven from their subterranean homelands and now fight for survival within Nektulos Forest. They now find themselves in a war for resources with a fellow fairy community of Asilian Fairies.',0,100,75),
|
||||
(128,'The Aravu Naga','Desert of Ro','The Aravu Naga are a small group of exiles from the Shimmering Citadel. After being banished by the Djinn, they now only seek to right that single wrong.',0,100,75),
|
||||
(129,'The Kaentrik Bards','Desert of Ro','The Kaentrik Bards are a group of famous master bards from the old age. They have gathered together to fight against the Djinn after learning the horrid secrets of what happens within the Shimmering Citadel.',0,100,75),
|
||||
(130,'The Court of the Blades','Desert of Ro','The Court of the Blades is ruled by the Caliph of the Blades, Dukarem. Their primary responsibility is the protection of the city from the hostile creatures of the desert, chief of which are the orcs of Rujark.',-35000,100,75),
|
||||
(131,'The Court of Truth','Desert of Ro','The Court of Truth is led by the Caliph of Truth, Ishara. Their primary responsibility is to gather and maintain the knowledge of the Dervish people. They also are heavily involved in the law making associated with the Arena Games.',-35000,100,75),
|
||||
(132,'The Court of the Coin','Desert of Ro','The Court of the Coin is led by the Caliph of the Coin, Neriph. They control the flow of money in the city, including merchant transactions, banking, and wagering. The Golden Scepter is the center of the Dervin economy.',-35000,100,75),
|
||||
(133,'Maj''Dul Citizens','Desert of Ro','The citizens of Maj''Dul can very easily trace their ancestry back to the Dervish cutthroats that roamed the Desert of Ro centuries ago.',0,100,75),
|
||||
(134,'The Rujarkian Orcs','Desert of Ro','The Rujarkian Empire is one of the largest and mightiest orc empires on Norrath. They have sway over all other orc empires great and small. The Rujarkians maintain a vast fortress homeland built into what is left of the great Rujarkian Hills.',-45000,100,50),
|
||||
(135,'The Ironforge Exchange','Shattered Lands','Overseeing all trade operation of Qeynos is the Ironforge Exchange. This is an ancient trade organization ruled by one of the most affluent trade families of the Kingdom of Qeynos. ',0,100,75),
|
||||
(136,'The Concordium','Shattered Lands','The Concordium consider themselves the keepers of the arcane arts. They wield their magic in defense of Qeynos and continue their research in arcane arts that may be used to better all Norrathians.',0,100,75),
|
||||
(138,'Academy of Logistics ','Misc','',0,100,75),
|
||||
(139,'Agents of Neriak ','Misc','',0,100,25),
|
||||
(140,'The Alliz Raef Ew ','Desert of Ro','The Alliz Raef Ew are an unusual tribe of lizardmen that has come to dwell within the Desert of Ro. They have adapted to this arid environment, using the unfortunate victims of the inhospitable desert as a means of survival. Their reason for being centers around their god, a mythical giant reptile.',0,100,75),
|
||||
(141,'The Anaz Mal Gnolls ','Desert of Ro','The Anaz Mal is a relatively obscure and hostile gnoll clan that dwells in the Desert of Ro. These gnolls have adapted to the hot environments of the desert. They have an unusual affinity towards all things undead.',0,100,75),
|
||||
(142,'The Arcanists of Tunaria ','Misc','',0,100,75),
|
||||
(143,'The Ashen Disciples ','Desert of Ro','The Ashen Disciples are the result of a philosophical split within the Ashen Order. Abandoning the virtues of tranquility and wisdom in favor of strength and discipline, these monks deny the existence of the old gods and seek to gain greater temporal power through strength of arms.',0,100,75),
|
||||
(144,'The Ashen Order ','Desert of Ro','The Ashen Order is one the oldest monk clans on Norrath, credited with establishing many of the founding principles of the monk. They removed themselves from society decades ago to seek a more humble life within their desert fortress of T''Narev.',0,100,75),
|
||||
(145,'The Awakened ','Kingdom of Sky','Located within the floating islands of the Overrealm known as Dragon Isles, this alliance of powerful dragonkind threatens to take over all of Norrath.',0,100,75),
|
||||
(146,'Bathezid''s Watch ','Kunark','Named for a former Overking of Chardok, Bathezid''s Watch has managed to stand against the Sathirian Empire against all odds.',0,100,75),
|
||||
(147,'Bazzt Bzzt Bixie Brood ','Shattered Lands','Descended from the great bixie queen, Bazzt Bzzt of the Plane of Sky, this bixie brood has recently found themselves in the Overrealm of Norrath.',0,100,75),
|
||||
(148,'The Bellywhumpers ','Kunark','A small tribe of burynai who have been pushed out of their home in the Field of Bone by their rivals, the Bonediggers.',0,100,75),
|
||||
(149,'Bertoxxulous ','Deity','The favor of Bertoxxulous, the Plaguebringer.',0,100,75),
|
||||
(150,'The Blackshield Smugglers ','Shattered Lands','This band of smugglers based out of the Commonlands are gaining in both wealth and power. The source of their sudden increase in capital is unknown.',0,100,75),
|
||||
(151,'The Blacktalon ','Kingdom of Sky','Located within the desert islands of the Barren Sky, this clan of Aviaks is made up of loyal servants to the empire of the Awakened.',0,100,75),
|
||||
(152,'Brell Serilis ','Misc','',0,100,75),
|
||||
(153,'Bristlebane ','Deity','The favor of Bristlebane, the King of Thieves.',0,100,75),
|
||||
(154,'Cazic-Thule ','Deity','The favor of Cazic-Thule, the god of Fear.',0,100,75),
|
||||
(155,'The Celestial Watch ','Shattered Lands','Acting as a beacon of benevolence, the Celestial Watch is the religious backbone of the Kingdom of Qeynos. This order praises the gods of Love, Valor, and Honor.',0,100,75),
|
||||
(156,'The Char''Gin ','Desert of Ro','The Char''Gin is a tribe of desert nomads that roams the desert lands of Ro. They are one of the affluent tribes of the desert and much of their wealth has come from their gift of mining. ',0,100,75),
|
||||
(157,'The Circle of the Unseen ','Misc','',0,100,75),
|
||||
(159,'The City of Jinisk ','Kunark','',0,100,75),
|
||||
(160,'Clan Brokenskull ','Moors of Ykesha','In a constant battle with the other factions of the Moors of Ykesha, Clan Brokenskull aims to take the island once and for all.',0,100,75),
|
||||
(161,'Clan Crushbone ','Faydwer','The savage and cunning orcs of Clan Crushbone have long posed a threat to the inhabitants of Faydwer, maintaining one of the oldest and most feared orc empires on all of Norrath.',0,100,75),
|
||||
(162,'Clan Grobb ','Moors of Ykesha','Despite battling many enemies, the trolls of Grobb have managed to hold on to their city and keep their culture alive.',0,100,75),
|
||||
(163,'Clan Skleross ','Kunark','Clan Skleross is a separatist clan of the scorpikis that have found that they came from something more. They have decided to no longer do the bidding of Venril Sathir.',0,100,75),
|
||||
(164,'Clan Smokehorn ','Faydwer','An honorable but deadly clan of minotaur that reside in the Steamfont Mountains. Victims of past slave raids, they are extremely cautious of strangers, however, their trust can be earned.',0,100,75),
|
||||
(165,'Clan Stormshield ','Kunark','The Stormshield brothers are avid hunters and warriors. Training with them could prove beneficial down the line!',0,100,75),
|
||||
(166,'Clan Ykesha ','Misc','',0,100,75),
|
||||
(167,'The Court of Al''Afaz ','Desert of Ro','The denizens of the Court of Al''Afaz are as mysterious as they are powerful.',0,100,75),
|
||||
(168,'The D''Vinnian Court ','Faydwer','Emperor D''Vinn rules over the orcs of Clan Crushbone and leads the remnants of the Thexian army that once threatened to conquer all of Faydwer.',0,100,75),
|
||||
(169,'Dalnir''s Wheel Taskmasters ','Kunark','',0,100,75),
|
||||
(170,'The Dark Bargainers ','Shattered Lands','The Dark Bargainers are the trade society of the Dark Elves. They are a very religious society and offer a portion of their profits to the temple of Innoruuk.',0,100,75),
|
||||
(171,'Disciples of Wu ','Faydwer','Said to be the first and greatest of all human monks, Wu the Enlightened first came to the Lesser Faydark centuries ago and established a small camp. He spent years studying the ways of Nature, enjoying the solitude of the region. He became known as a true friend of the Fay folk, honoring their ways and keeping the roads clear of the orcs who posed a threat in those years.',0,100,75),
|
||||
(172,'The Dreadnaught ','Misc','',0,100,75),
|
||||
(173,'Drednever Expedition ','Kingdom of Sky','Before the Shattering, the Observers of Ak''Anon tasked the famous explorers Dabner Drednever and Ognit Eznertob with forming an expedition to explore new and uncharted lands.',0,100,75),
|
||||
(174,'Exiles of Droga ','Kunark','A small tribe of goblins expelled from their home for the continued use of magic.',0,100,75),
|
||||
(175,'Fae of Kelethin ','Faydwer','A semi-formal alliance of the residents of Kelethin, whether Fae or not.',0,100,75),
|
||||
(176,'Far Seas Supply Division ','Misc','',0,100,75),
|
||||
(177,'Far Seas Trading Company ','Misc','',0,100,75),
|
||||
(178,'The Forsaken City ','Island of Mara','',0,100,75),
|
||||
(179,'The Fugutr Tribe ','Faydwer','The devout Satyr followers of Tunare found within the Lesser Faydark. This tribe of creatures originally from the Plane of Growth are found still protecting the various shrines and relics of Tunare.',0,100,75),
|
||||
(180,'Gazers of the Overrealm ','Kingdom of Sky','The origin of these magical entities is a mystery. The answer may lie among the ruins of the Rending.',0,100,75),
|
||||
(181,'Gloompall Fairies ','Kingdom of Sky','These sinister fairies have made a home in the Tenebrous Tangle. Their alliance with the Gazers may not be as solid as it appears.',0,100,75),
|
||||
(182,'Goblins of Fire Peak ','Shattered Lands','This tribe of fire goblins have made their home in the burning caverns of Solusek''s Eye.',0,100,75),
|
||||
(183,'The Green Hoods ','Shattered Lands','The Green Hoods are an elite band of resistance fighters located on the Orcish Wastes. Before the Shattering, this force was a highly mobile regiment of the Qeynos Guard. They have since broken off to form their own organization while still aiding Qeynos whenever possible.',0,100,75),
|
||||
(184,'Guktan Guard ','Moors of Ykesha','Though ousted from Guk, the Frogloks still consider it their homeland. Until it is reclaimed, they base themselves in the tree city of Tupta.',0,100,75),
|
||||
(185,'The Gwalnax Brigade ','Misc','',0,100,75),
|
||||
(186,'Hidden Plunderers'' Camp ','Kunark','',0,100,75),
|
||||
(187,'House of Falling Stars ','Faydwer','Fae clerics believe in ultimately in Tunare but also the power of the Stars. The alignment of constellations can help to divine how things will change.',0,100,75),
|
||||
(188,'Innoruuk ','Misc','',0,100,75),
|
||||
(189,'The Irontoe Brigade ','Faydwer','Tumpy''s pals.',0,100,75),
|
||||
(190,'Karana ','Misc','',0,100,75),
|
||||
(191,'Kunzar Jungle Villagers ','Kunark','',0,100,75),
|
||||
(192,'The League of Freethinkers ','Faydwer','The League of Freethinkers is a mysterious and loose-knit organization of hunters. Membership into this secret society is rare and only by invitation. They can be encountered throughout Norrath. What they hunt is unknown.',0,100,75),
|
||||
(193,'Legion of Danak ','Kunark','The mighty Legion of Danak is under direct order of Dominus Ganak. They completely control the Danak Shipyard and its harbor. They are at constant war with the Ring of Scale.',0,100,75),
|
||||
(194,'The Lost Children of Marr ','Kingdom of Sky','Taken by the young dragon Venekor to the Overrealm as prizes and servants, these frogloks have begun to slip from his grasp.',0,100,75),
|
||||
(195,'The Lucanic Knights ','Shattered Lands','The Lucanic Knights are an order of elite knights who live to serve the Overlord of Freeport. These knights are rarely seen beyond the walls of the Twilight Citadel, Lucan''s seat of power.',0,100,75),
|
||||
(196,'The Lyrech ','Faydwer','The Lyrech are a splinter group of werewolves that refuse to serve Mistmoore and instead seek to control their own destiny.',0,100,75),
|
||||
(197,'The Marked ','Shattered Lands','A secretive and silent group, the membership of the Marked seems to be entirely ratonga. While it is unknown what goals this group pursues, they will without a doubt bring trouble to the other races of Norrath.',0,100,50),
|
||||
(198,'Mistmoore ','Faydwer','The minions, agents and associates of Mayong Mistmoore, Dark Lord of the Loping Plains.',0,100,75),
|
||||
(199,'Mithaniel Marr ','Deity','The favor of Mithaniel Marr, god of Valor.',0,100,75),
|
||||
(200,'Mountain Throms of Mok Island','Kunark','Reclusive and untrustworthy, the Mountain Throms of Mok Island are largely avoided by others.',0,100,75),
|
||||
(201,'Muckflick Goblins ','Misc','',0,100,75),
|
||||
(202,'The Myntr Tribe ','Faydwer','A tribe of Satyrs that live in the mountains above New Tunaria.',0,100,75),
|
||||
(203,'Myre''Dal ','Faydwer','The Myre''Dal outcasts that have come to realize what they are and are actively working to stop the process from happening to any others.',0,100,75),
|
||||
(204,'The Mystic Guardians ','Island of Mara','The druidic creatures of the Mystic Guardians are devoted to protecting their surroundings from any sort of corruption that threatens the island of Mara.',0,100,75),
|
||||
(205,'New Tunarian Citizens ','Faydwer','Citizens of New Tunaria.',0,100,75),
|
||||
(206,'The Nizari ','Island of Mara','',0,100,75),
|
||||
(207,'Nybright Family ','Faydwer','The Nybright sisters who established this camp in the Age of Turmoil have raised a new generation of thieves. From this base of operations, they make excursions into the Greater Faydark to steal supplies from Kelethin and from the camps of rival bandit clans. Since the rise of the Fay influence in this region discourages outsiders from entering the forest, the Nybrights have little fear of reprisal from outside forces.',0,100,75),
|
||||
(208,'Order of Arcane ','Faydwer','Science and magic combine in the Order''s chambers, allowing its members to focus their energies on ancient studies to improve Growth and vitality.',0,100,75),
|
||||
(209,'The Order of Marr ','Shattered Lands','Not much is known of this ancient order that sprang from the early followers of the gods of Love and Valor, Mithaniel and Erollisi Marr.',0,100,75),
|
||||
(210,'The Ortallians ','Desert of Ro','The Ortallians are a desert dwelling caste of fanatical followers of the Solusek Ro, a deity of flames. This small caste sprang ages ago from a crusade started by a valorous orc named Ortallius.',0,100,75),
|
||||
(211,'Outer Sebilis Residents ','Kunark','',0,100,75),
|
||||
(212,'Pirates of Gunthak ','Island of Mara','These merciless brutes sail the seas of Norrath seeking weaker targets whose resources they can plunder. They have been known to go to great lengths to obtain rare and valuable treasure.',0,100,75),
|
||||
(213,'Protectors of Growth ','Faydwer','Named directly after the guardians of the Plane of Growth, these Protectors maintain their skills to protect and defend Kelethin and the Fae.',0,100,75),
|
||||
(214,'The Qeynos Guard ','Shattered Lands','The Qeynos Guard is the valorous defensive force of the Kingdom of Qeynos. They defend the city and residents of not only Qeynos, but also any ally of Qeynos on the continent of Karana. ',0,100,75),
|
||||
(215,'Quellious ','Deity','The favor of Quellious, the goddess of Tranquility.',0,100,75),
|
||||
(216,'Rallos Zek ','Misc','',0,100,75),
|
||||
(217,'Residents of Teren''s Grasp ','Kunark','The remnants of the Overthere and Firiona Vie that have banded together after the shattering by the will of Teren, their highelf Paladin leader.',0,100,75),
|
||||
(218,'Riliss ','Kunark','The city of Riliss, home to General Rile and bastion of the Sathirian Empire within the Fens of Nathsar.',0,100,75),
|
||||
(219,'Ring of Ratillik ','Misc','',0,100,75),
|
||||
(220,'The Ring of Scale ','Misc','',0,100,75),
|
||||
(221,'Rodcet Nife ','Misc','',0,100,75),
|
||||
(222,'The Royal Antonican Guard ','Shattered Lands','The Royal Antonican Guard is the elite order that protects the ruler of Qeynos, Queen Antonia Bayle. These knights are rarely seen beyond the walls of Qeynos Castle. ',0,100,75),
|
||||
(223,'Ry''zilk''s Renegades ','Kunark','',0,100,75),
|
||||
(224,'Sanctum of Scale ','Misc','',0,100,75),
|
||||
(225,'The Sandscrawlers ','Desert of Ro','The Sandscrawlers are a clan of goblins located in the Pillars of Flame. They are terrible diplomats and tend to eat anything that they happen to kill.',0,100,75),
|
||||
(226,'Sathirian ','Kunark','The residents and followers of Venril Sathir that reside within the newly rebuilt city of Sebilis.',0,100,75),
|
||||
(227,'The Sel''Nok Brigade ','Kunark','This is a Division of the Di’Zok Legion that has hidden away in the Jarsath Wastes, looking for information. What information they search for is unknown at this point.',0,100,75),
|
||||
(228,'Solusek Ro ','Misc','',0,100,75),
|
||||
(229,'Sootfoot Goblins ','Misc','',0,100,75),
|
||||
(230,'Splitpaw Gnolls ','Misc','',0,100,75),
|
||||
(231,'The Strifewing ','Kingdom of Sky','Located within the desert islands of the Barren Sky, this clan of Vultaks is in constant conflict with the local Aviak clan known as the Blacktalon.',0,100,75),
|
||||
(232,'Survival Accord ','Moors of Ykesha','The Trolls of Grobb and the Frogloks formerly of Guk formed this alliance to defeat their common enemies.',0,100,75),
|
||||
(233,'The Swiftrider Mercenaries ','Desert of Ro','The Swiftrider Mercenaries are the life line between the warring factions of nomads found in the Desert of Ro. Their only goal is to make a gold.',0,100,75),
|
||||
(234,'Sylvan Hunters ','Faydwer','The scout guild is in place to survey the land for threats and report them to the leadership of the Fae.',0,100,75),
|
||||
(235,'Synod Reet ','Kunark','The remnants of the frogloks once enslaved by Trakanon have once again come under tyrannical rule by Venril Sathir. These frogloks have turned to Bertoxxulous for power with the hopes that disease will poison their masters and allow them freedom once more.',0,100,75),
|
||||
(236,'Tabernacle of Pain ','Kunark','',0,100,75),
|
||||
(237,'The Temple of Scale ','Kingdom of Sky','The Temple of Scale is made up of the zealous religious followers of the Awakened. The leader of the Temple is Harla Dar, high priestess of this mysterious dragon clan dwelling in the clouds.',0,100,75),
|
||||
(238,'The Thalz''Iz''Zaz Lizardmen ','Misc','',0,100,75),
|
||||
(239,'Thulian Knights ','Shattered Lands','Crusaders of Fear, the amygdalans continue their directive to spread terror among all things.',0,100,75),
|
||||
(240,'The Tribunal ','Misc','',0,100,75),
|
||||
(241,'Tunare ','Deity','The favor of Tunare, the goddess of Growth.',0,100,75),
|
||||
(242,'Tunare''s Pages ','Faydwer','Nimble of mind and hand, the Fae''s crafters bond together to work in harmony with one another and with nature.',0,100,75),
|
||||
(243,'The Tunarian Alliance ','Shattered Lands','Taking their name from the goddess of nature, the Tunarian Alliance act as the elite scouts of Qeynos and defenders of the laws of nature. They are comprised of rangers and druids from throughout the Shattered Lands. ',0,100,75),
|
||||
(244,'Underpaw Gnolls ','Misc','',0,100,75),
|
||||
(245,'The Watchers of Timorous ','Misc','',0,100,75),
|
||||
(246,'The Whistling Fists Clan ','Island of Mara','Founded centuries ago by the legendary Zan Fi, the Whistling Fists Clan was the original order of monks on Norrath. They refused to become an arm of the Combine Empire and sought solitude on the isolated island of Mara.',0,100,75),
|
||||
(247,'The Windgazer ','Kingdom of Sky','The Windgazers are a small clan of Hooluks that live in seclusion within the isles of the Barren Sky. They hide themselves to avoid being constantly hunted by more aggressive and powerful aviak clans such as the Blacktalon and Strifewing.',0,100,75),
|
||||
(248,'The Windsisters ','Desert of Ro','The Windsisters are a group of harpies dwelling in the Pillars of Flame. Be careful, as harpies are known to kill you just so they can eat your heart.',0,100,75),
|
||||
(249,'Frogloks of Krupp','Kunark','The frogloks of Krupp have been enslaved by the Sathirian Empire, and are now traded as workers throughout Kunark.',0,100,75),
|
||||
(250,'The Dreadnaughts','Shattered Lands','The Dreadnaughts are a brutal mob of bruisers who have dominated all other gangs within Freeport. Founded upon the principles of strength and intimidation, the Dreadnaughts act as the Overlord''s enforcers to control the streets and alleyways of the city.',0,100,75),
|
||||
(251,'The Minions of Fear','Shattered Lands','The Minions of Fear are creatures that are brought forth from the Gate of Fear.',-10000,100,75),
|
||||
(252,'Doomwing Legion','Kingdom of Sky','Located in the desolate wasteland of the Bonemire, the Doomwing Legion is led by the powerful dragon Lord Vyemm.',0,100,75),
|
||||
(253,'The Spirits of Marr','Shattered Lands','The Spirits of Marr were once a noble order known as the Knights of Truth. Slain by Sir Lucan D''Lere and the Freeport Militia, their spirits have been bound eternally to the Freeport Graveyard.',0,100,75),
|
||||
(254,'Arcanists of Tunaria','Faydwer','A sect of powerful mages and sorcerers that operate within New Tunaria.',0,100,75),
|
||||
(255,'Nuknok Clan','Shattered Lands','The Nuknok Clan of boarfiends in the Moors of Ykesha have an alliance with Clan Brokenskull.',0,100,75),
|
||||
(256,'Anashti Sul','Misc','',0,100,75),
|
||||
(257,'Anaz Mal Gnolls','Misc','',0,100,75),
|
||||
(258,'Aravu Naga','Misc','',0,100,75),
|
||||
(259,'Brethren of Night','Misc','',0,100,75),
|
||||
(260,'Citizens of New Tunaria','Misc','',0,100,75),
|
||||
(261,'Darkpaw Gnolls','Misc','',0,100,75),
|
||||
(262,'Deep Sporali','Misc','',0,100,75),
|
||||
(264,'Hand of Marr','Misc','',0,100,75),
|
||||
(265,'Kromise','Misc','',0,100,75),
|
||||
(266,'Lost Children of Marr','Misc','',0,100,75),
|
||||
(267,'Ortallians','Misc','',0,100,75),
|
||||
(269,'Sandscrawlers','Misc','',0,100,75),
|
||||
(270,'Scholars of the Lost','Misc','',0,100,75),
|
||||
(271,'Sporali Collective','Misc','',0,100,75),
|
||||
(272,'Strifewing','Misc','',0,100,75),
|
||||
(273,'Swiftrider Mercenaries','Misc','',0,100,75),
|
||||
(274,'Temple of Scale','Misc','',0,100,75),
|
||||
(276,'The Bloodsabers','Misc','',0,100,75),
|
||||
(277,'The Bonediggers','Misc','',0,100,75),
|
||||
(278,'The Claws of Veeshan','Misc','',0,100,75),
|
||||
(279,'The Cult of the Arisen','Misc','',0,100,75),
|
||||
(280,'The House of Falling Stars','Misc','',0,100,75),
|
||||
(281,'The Indigo Brotherhood','Misc','',0,100,75),
|
||||
(282,'The Order of Arcane','Misc','',0,100,75),
|
||||
(283,'The Protectors of Growth','Misc','',0,100,75),
|
||||
(284,'The Seamist Fairies','Misc','',0,100,75),
|
||||
(285,'The Sylvan Hunters','Misc','',0,100,75),
|
||||
(286,'Thullosian Warlord Clan','Misc','',0,100,75),
|
||||
(287,'The Deathfist Death Squadron','Faydwer','The Deathfist Death Squadron is an elite force of Deathfist orcs.',0,100,75),
|
||||
(288,'Timorous Deep Raptors','Misc','',0,100,75),
|
||||
(289,'Timorous Deep SkyHunters','Misc','',0,100,75),
|
||||
(341,'Othmir of Velious','Destiny of Velious','Othmir of Velious',0,100,75),
|
||||
(343,'The City of Thurgadin','Destiny of Velious','The City of Thurgadin',0,100,75),
|
||||
(345,'Snowfang Gnolls','Destiny of Velious','A typically peaceful tribe. The Snowfang gnolls have carved out their existence fishing in the frigid waters of the Icy Fingers. Their tranquil lifestyle has recently been shattered, however, by increasing attacks from undead pouring from the nearby Tower of Frozen Shadow.',0,100,75),
|
||||
(353,'Clan Thrael''Gorr','Destiny of Velious','Enslaved for several generations, these former Ry''Gorr orcs have all but forgotten the freedom and respect their Kromzek owners once gave them.',0,100,75),
|
||||
(354,'Ry''Gorr Orcs','Misc','Makes orcs attack the guards on Pilgrims'' Landing',-50000,100,75),
|
||||
(355,'Ravens of the North','Shattered Lands','The association of artisans dedicated to establishing New Halas beside the shrine of Erollisi Marr. Each new building erected in New Halas and each new item crafted to build the city is a mark of pride to the Ravens of the North.',0,100,75),
|
||||
(356,'Forest Ruins Academy','Generic','Spirits from the ruined academy off of old Qeynos. Still in pursuit of magic discoveries in the afterlife.',0,0,0),
|
||||
(357,'Guardians of the Forest Ruins','Generic','Forgotten elemental guardians within the old mage tower of Qeynos. They still protect the crumbled remains of whatever attempts to enter.',-50000,0,0),
|
||||
(358,'Blackfurl Pirates','Generic','Blackfurl pirates landed on the shores near Qeynos'' old mage tower. They attempt to usurp control of the ruins during daylight hours.',-45000,0,0),
|
||||
(359,'Hostile Animals','Generic','Hostile Animals to Passive Animals AND players',-50000,0,0),
|
||||
(360,'Passive Animals','Generic','Passive Animals who are attacked by Hostile Animals',0,0,0),
|
||||
(361,'Threatening Animals','Generic','Hostile to Hostile Animals and Passive Animals, but indifferent to Players',0,0,0),
|
||||
(362,'The Giantslayers','Shattered Lands','The Giantslayers are a gang of brutish and strong-willed races who frequently claim territory in The Sprawl outside of the walls of Freeport. Their desire to claim more territory is at odds with the several other fledgling gangs in the area, but word has it The Overlord is watching them closely for uses of his own.',-25000,25000,75),
|
||||
(363,'The Guttersnipes','Shattered Lands','The Guttersnipes are a fringe gang of human cutthroats who splintered off from Dervishes in the Commonlands. While mostly found in The Sprawl, they are often seen are troublemakers and at odds with the Freeport Militia. Rival gangs frequently challenge their ranks to make a name for themselves in Freeport. ',-25000,25000,75),
|
||||
(364,'The Black Magi','Shattered Lands','The Black Magi are a collective of Ratonga who rejected Freeport''s Academy of Arcane Sciences for \r\nstudies in the dark arts. Lead by Shivo the Great, they have claimed old agricultural ruins of The Sprawl as their own with quick access to the cities sewers. Rival gangs in the area often try to upend Shivo and his followers, but their rudimentary grasp of magic has staved off many attacks.',-25000,25000,75),
|
||||
(365,'The Bog Faerie Court','Shattered Lands','The Bog Faeries have long lived on the outskirts of Qeynos amongst the Peat Bog. While usually left to their own devices, their meddlesome pranks are often seen as a nuisance to citizens of the city. Rumor has it that their leader, Queen Ezeldra, condones this mischief as increasing numbers of adventurers trapse on their bog gardens and creatures.',39900,100,25),
|
||||
(366,'The Lonetusk Orcs','Shattered Lands','',-40000,20000,75),
|
||||
(367,'The Brokentusk Orcs','Shattered Lands','',-40000,20000,75);
|
9
sql/failed_jobs.sql
Executable file
9
sql/failed_jobs.sql
Executable file
@ -0,0 +1,9 @@
|
||||
DROP TABLE IF EXISTS failed_jobs;
|
||||
CREATE TABLE failed_jobs (
|
||||
id INTEGER PRIMARY KEY,
|
||||
connection TEXT NOT NULL,
|
||||
queue TEXT NOT NULL,
|
||||
payload TEXT NOT NULL,
|
||||
exception TEXT NOT NULL,
|
||||
failed_at TEXT NOT NULL
|
||||
);
|
869
sql/flight_paths.sql
Executable file
869
sql/flight_paths.sql
Executable file
@ -0,0 +1,869 @@
|
||||
DROP TABLE IF EXISTS flight_paths;
|
||||
CREATE TABLE flight_paths (
|
||||
id INTEGER PRIMARY KEY,
|
||||
zone_id INTEGER NOT NULL,
|
||||
name TEXT NOT NULL,
|
||||
speed REAL NOT NULL DEFAULT 0,
|
||||
flying INTEGER NOT NULL DEFAULT 1,
|
||||
early_dismount INTEGER NOT NULL DEFAULT 1
|
||||
);
|
||||
|
||||
INSERT INTO flight_paths VALUES
|
||||
(1,249,'Ant -> Thundermist',1,1,1),
|
||||
(2,249,'Thundermist -> Ant',1,1,1),
|
||||
(3,249,'Ant -> SE\r\n',1,1,1),
|
||||
(4,249,'SE -> Ant',1,1,1),
|
||||
(5,249,'Thundermist -> Coldwind',1,1,1),
|
||||
(6,249,'Coldwind -> Thundermist',1,1,1),
|
||||
(7,249,'SE -> Coldwind',1,1,1),
|
||||
(8,249,'Coldwind -> SE',1,1,1),
|
||||
(9,249,'Thundermist -> SE',1,1,1),
|
||||
(10,249,'Ant -> Coldwind',1,1,1),
|
||||
(11,249,'Coldwind -> Ant',1,1,1),
|
||||
(12,249,'SE -> Thundermist',1,1,1),
|
||||
(13,249,'Docks -> Thundermist',1,1,1),
|
||||
(14,249,'Docks -> Coldwind',1,1,1),
|
||||
(15,249,'Docks -> SE',1,1,1),
|
||||
(16,249,'Docks -> Ant',1,1,1),
|
||||
(17,249,'Thundermist -> Docks',1,1,1),
|
||||
(18,249,'SE -> Docks',1,1,1),
|
||||
(19,249,'Coldwind -> Docks',1,1,1),
|
||||
(20,39,'Docks -> Rivervale',1,0,1),
|
||||
(21,39,'Docks -> The Great Guard',1,0,1),
|
||||
(22,39,'Rivervale -> Docks',1,0,1),
|
||||
(23,39,'Rivervale -> The Great Guard',1,0,1),
|
||||
(24,39,'Rivervale -> Chompers Pond',1,0,1),
|
||||
(25,39,'The Great Guard -> Docks',1,0,1),
|
||||
(26,39,'The Great Guard -> Goblin Pass',1,0,1),
|
||||
(27,39,'The Great Guard -> Rivervale',1,0,1),
|
||||
(28,39,'Goblin Pass -> The Great Guard',1,0,1),
|
||||
(29,39,'Goblin Pass -> Bramblefoot Hills',1,0,1),
|
||||
(30,39,'Bramblefoot Hills -> Chompers Pond',1,0,1),
|
||||
(31,39,'Bramblefoot Hills -> Misty Grove',1,0,1),
|
||||
(32,39,'Bramblefoot Hills -> Goblin Pass',1,0,1),
|
||||
(33,39,'Misty Grove -> Chompers Pond',1,0,1),
|
||||
(34,39,'Misty Grove -> Bramblefoot Hills',1,0,1),
|
||||
(35,39,'Chompers Pond -> Bramblefoot Hills',1,0,1),
|
||||
(36,39,'Chompers Pond -> Misty Grove',1,0,1),
|
||||
(37,39,'Chompers Pond -> The Great Guard',1,0,1),
|
||||
(38,39,'Chompers Pond -> Rivervale',1,0,1),
|
||||
(39,39,'Rivervale -> Bramblefoot Hills',1,0,1),
|
||||
(40,39,'Rivervale -> Misty Grove',1,0,1),
|
||||
(41,39,'Rivervale -> Goblin Pass',1,0,1),
|
||||
(42,39,'Docks -> Chompers Pond',1,0,1),
|
||||
(43,39,'Docks -> Bramblefoot Hills',1,0,1),
|
||||
(44,39,'Docks -> Misty Grove',1,0,1),
|
||||
(45,39,'Docks -> Goblin Pass',1,0,1),
|
||||
(46,39,'Bramblefoot Hills -> Rivervale',1,0,1),
|
||||
(47,39,'Bramblefoot Hills -> The Great Guard',1,0,1),
|
||||
(48,39,'Bramblefoot Hills -> Docks',1,0,1),
|
||||
(49,39,'Chompers Pond -> Goblin Pass',1,0,1),
|
||||
(50,39,'Chompers Pond -> Docks',1,0,1),
|
||||
(51,39,'Misty Grove -> Rivervale',1,0,1),
|
||||
(52,39,'Misty Grove -> The Great Guard',1,0,1),
|
||||
(53,39,'Misty Grove -> Goblin Pass',1,0,1),
|
||||
(54,39,'Misty Grove -> Docks',1,0,1),
|
||||
(55,39,'The Great Guard -> Chompers Pond',1,0,1),
|
||||
(56,39,'The Great Guard -> Bramblefoot Hills',1,0,1),
|
||||
(57,39,'The Great Guard -> Misty Grove',1,0,1),
|
||||
(58,39,'Goblin Pass -> Rivervale',1,0,1),
|
||||
(59,39,'Goblin Pass -> Chompers Pond',1,0,1),
|
||||
(60,39,'Goblin Pass -> Docks',1,0,1),
|
||||
(61,39,'Goblin Pass -> Misty Grove',1,0,1),
|
||||
(62,39,'Docks -> Nowhere',1,0,1),
|
||||
(63,39,'Nowhere -> Docks',1,0,1),
|
||||
(64,190,'Bridge -> Warship',1,0,1),
|
||||
(65,190,'Bridge - > Refugee',1,0,1),
|
||||
(66,190,'Bridge -> Three Toes',1,0,1),
|
||||
(67,190,'Defiled Forest -> Warship',1,0,1),
|
||||
(68,190,'Defiled Forest -> Three Toes',1,0,1),
|
||||
(69,190,'Warship -> Bridge',1,0,1),
|
||||
(70,190,'Warship -> Defiled Forest',1,0,1),
|
||||
(71,190,'Warship -> Refugee',1,0,1),
|
||||
(72,190,'Three Toes - Refugee',1,0,1),
|
||||
(73,190,'Refugee -> Three Toes',1,0,1),
|
||||
(74,190,'Warship -> Three Toes',1,0,1),
|
||||
(75,190,'Three Toes - > Warship',1,0,1),
|
||||
(76,190,'Refugee -> Defiled Forest',1,0,1),
|
||||
(77,190,'Defiled Forest -> Refugee',1,0,1),
|
||||
(78,190,'Defiled Forest -> Bridge',1,0,1),
|
||||
(79,190,'Bridge -> Defiled Forest',1,0,1),
|
||||
(80,190,'Refugee -> Bridge',1,0,1),
|
||||
(81,190,'Refugee -> Warship',1,0,1),
|
||||
(82,190,'Three Toes -> Defiled Forest',1,0,1),
|
||||
(83,190,'Three Toes -> Bridge',1,0,1),
|
||||
(84,12,'Qeynos -> Steppes',1,1,1),
|
||||
(85,12,'Qeynos -> Oracle',1,1,1),
|
||||
(86,12,'Steppes -> Qeynos',1,1,1),
|
||||
(87,12,'Steppes -> Oracle',1,1,1),
|
||||
(88,12,'Oracle -> Qeynos',1,1,1),
|
||||
(89,12,'Oracle -> Steppes',1,1,1),
|
||||
(90,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(91,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(92,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(93,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(94,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(95,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(96,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(97,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(98,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(99,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(100,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(101,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(102,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(103,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(104,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(105,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(106,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(107,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(108,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(109,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(110,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(111,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(112,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(113,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(114,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(115,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(116,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(117,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(118,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(119,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(120,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(121,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(122,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(123,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(124,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(125,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(126,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(127,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(128,480,'Parser Generated (RENAME)',1,1,1),
|
||||
(129,114,'Butcherblock Station -> Kelethin Station',1,0,1),
|
||||
(130,114,'New Tunaria Station -> Kelethin Station',1,0,1),
|
||||
(131,114,'Steamfont Station-> Kelethin Station',1,0,1),
|
||||
(132,114,'Crushbone Station -> Kelethin Station',1,0,1),
|
||||
(133,114,'Lesser Faydark Station -> Kelethin Station',1,0,1),
|
||||
(134,114,'Loping Plains Station -> Kelethin Station',1,0,1),
|
||||
(135,114,'Steamfont Station -> Crushbone Station',1,0,1),
|
||||
(136,114,'Steamfont Station -> Butcherblock Station',1,0,1),
|
||||
(137,114,'Steamfont Station -> New Tunaria Station',1,0,1),
|
||||
(138,114,'Steamfont Station -> Lesser Faydark Station',1,0,1),
|
||||
(139,114,'Steamfont Station -> Loping Plains Station',1,0,1),
|
||||
(140,114,'Butcherblock Station -> Crushbone Station',1,0,1),
|
||||
(141,114,'Butcherblock Station -> New Tunaria Station',1,0,1),
|
||||
(142,114,'Butcherblock Station -> Steamfont Station',1,0,1),
|
||||
(143,114,'Butcherblock Station -> Lesser Faydark Station',1,0,1),
|
||||
(144,114,'Butcherblock Station -> Loping Plains Station',1,0,1),
|
||||
(145,114,'Crushbone Station -> New Tunaria Station',1,0,1),
|
||||
(146,114,'Crushbone Station -> Butcherblock Station',1,0,1),
|
||||
(147,114,'Crushbone Station -> Steamfont Station',1,0,1),
|
||||
(148,114,'Crushbone Station -> Lesser Faydark Station',1,0,1),
|
||||
(149,114,'Crushbone Station -> Loping Plains Station',1,0,1),
|
||||
(150,114,'Lesser Faydark Station -> Crushbone Station',1,0,1),
|
||||
(151,114,'Lesser Faydark Station -> Butcherblock Station',1,0,1),
|
||||
(152,114,'Lesser Faydark Station -> Steamfont Station',1,0,1),
|
||||
(153,114,'Lesser Faydark Station -> New Tunaria Station',1,0,1),
|
||||
(154,114,'Lesser Faydark Station -> Loping Plains Station',1,0,1),
|
||||
(155,114,'Loping Plains Station -> Crushbone Station',1,0,1),
|
||||
(156,114,'Loping Plains Station -> Butcherblock Station',1,0,1),
|
||||
(157,114,'Loping Plains Station -> Steamfont Station',1,0,1),
|
||||
(158,114,'Loping Plains Station -> Lesser Faydark Station',1,0,1),
|
||||
(159,114,'Loping Plains Station -> New Tunaria Station',1,0,1),
|
||||
(160,114,'New Tunaria Station -> Crushbone Station',1,0,1),
|
||||
(161,114,'New Tunaria Station -> Butcherblock Station',1,0,1),
|
||||
(162,114,'New Tunaria Station -> Steamfont Station',1,0,1),
|
||||
(163,114,'New Tunaria Station -> Lesser Faydark Station',1,0,1),
|
||||
(164,114,'New Tunaria Station -> Loping Plains',1,0,1),
|
||||
(165,34,'Darklight -> BBM',1,1,0),
|
||||
(166,34,'BBM -> Darklight',1,1,0),
|
||||
(167,33,'Hidden Canyon -> Freeport',1,1,1),
|
||||
(168,33,'Hidden Canyon -> Nektulos',1,1,1),
|
||||
(169,33,'Freeport -> Hidden Canyon',1,1,1),
|
||||
(170,33,'Freeport -> Nektulos',1,1,1),
|
||||
(171,33,'Nektulos -> Hidden Canyon',1,1,1),
|
||||
(172,33,'Nektulos -> Freeport',1,1,1),
|
||||
(173,33,'Parser Generated (RENAME)',1,1,1),
|
||||
(174,33,'Parser Generated (RENAME)',1,1,1),
|
||||
(175,128,'Parser Generated (RENAME)',1,1,1),
|
||||
(176,128,'Parser Generated (RENAME)',1,1,1),
|
||||
(177,128,'EFP -> Sinkingsands',1,1,1),
|
||||
(178,179,'Commonlands -> Docks1',1,1,1),
|
||||
(179,179,'Docks -> Commonlands',1,1,1),
|
||||
(180,179,'Docks -> Nmar',1,1,1),
|
||||
(181,179,'Nmar -> Docks',1,1,1),
|
||||
(182,179,'Commonlands -> Nmar',1,1,1),
|
||||
(183,179,'Nmar -> Commonlands',1,1,1),
|
||||
(184,179,'Nmar -> Bonelake',1,1,1),
|
||||
(185,179,'Bone lake -> Nmar',1,1,1),
|
||||
(186,179,'Commonlands -> Docks',1,1,1),
|
||||
(187,179,'Docks -> Commonlands1',1,1,1),
|
||||
(188,179,'Docks -> Nmar1',1,1,1),
|
||||
(189,179,'Nmar -> Docks',1,1,1),
|
||||
(190,179,'Commonlands -> Nmar',1,1,1),
|
||||
(191,179,'Nmar -> Commonlands1',1,1,1),
|
||||
(192,179,'Nmar -> Bonelake',1,1,1),
|
||||
(193,179,'Bonelake -> Nmar',1,1,1),
|
||||
(194,263,'Chrykori Island -> Mok Rent',1,1,0),
|
||||
(195,263,'Chrykori Island -> Gorowyn Beach',1,1,0),
|
||||
(196,263,'Captive Griffon(Quest) -> Chrykori Island',1,1,0),
|
||||
(197,263,'Black Talon(Quest) -> Boat(Quest)',1,1,0),
|
||||
(198,263,'Boat(Quest) -> Gorowyn Beach',1,1,0),
|
||||
(199,263,'Mok Rent -> Gorowyn Beach',1,1,0),
|
||||
(200,263,'Gorowyn Beach -> Mok Rent',1,1,0),
|
||||
(201,263,'Gorowyn Beach -> Chrykori Island',1,1,0),
|
||||
(202,263,'Mok Rent -> Chrykori Island',1,1,0),
|
||||
(203,263,'Dock -> Zoned',1,1,0),
|
||||
(204,263,'Zoned -> Dock',1,1,0),
|
||||
(205,263,'Chrykori Village -> Docks',1,1,0),
|
||||
(206,263,'Docks -> Chrykori Village',1,1,0),
|
||||
(207,263,'Gorowyn Beach -> Docks',1,1,0),
|
||||
(208,263,'Docks -> Gorowyn Beach',1,1,0),
|
||||
(209,263,'Chrykori Island -> Chrykori Village',1,1,0),
|
||||
(210,263,'Chrykori Village -> Chrykori Island',1,1,0),
|
||||
(211,263,'Chrykori Island -> Mok Rent',1,1,0),
|
||||
(212,263,'Chrykori Island -> Zoned?',1,1,0),
|
||||
(213,263,'Captive Griffon(Quest) -> Chrykori Island2',1,1,0),
|
||||
(214,263,'Black Talon(Quest) -> Boat(Quest)2',1,1,0),
|
||||
(216,263,'Mok Rent(Invalid?) -> Gorowyn Beach(2)',1,1,0),
|
||||
(217,263,'Gorowyn Beach -> Mok Rent(2)',1,1,0),
|
||||
(218,263,'Gorowyn Beach -> Chrykori Island(2)',1,1,0),
|
||||
(219,263,'Mok Rent -> Chrykori Island(2)',1,1,0),
|
||||
(220,263,'Dock -> Zoned(2)',1,1,0),
|
||||
(221,263,'Zoned -> Dock(2)',1,1,0),
|
||||
(222,263,'Chrykori Village -> Docks(2)',1,1,0),
|
||||
(223,263,'Docks -> Chrykori Village(2)',1,1,0),
|
||||
(224,263,'Zoned -> Dock(3)',1,1,0),
|
||||
(225,263,'Docks -> Gorowyn Beach(2)',1,1,0),
|
||||
(226,263,'Chrykori Island -> Chrykori Village(2)',1,1,0),
|
||||
(227,263,'Chrykori Village -> Chrykori Island(2)',1,1,0),
|
||||
(228,108,'Highland -> Docks',1,1,1),
|
||||
(229,108,'Docks To ZONED?',1,1,1),
|
||||
(230,108,'ZONED? To Docks',1,1,1),
|
||||
(231,108,'Gfay -> Docks',1,1,1),
|
||||
(232,108,'GFay -> Highland',1,1,1),
|
||||
(233,108,'Lfay -> Highland',1,1,1),
|
||||
(234,108,'Docks To ZONED?',1,1,1),
|
||||
(235,108,'ZONED? To Docks',1,1,1),
|
||||
(236,108,'ZONED to Docks',1,1,1),
|
||||
(237,108,'Docks to Zone',1,1,1),
|
||||
(238,108,'Docks -> Highland',1,1,1),
|
||||
(239,108,'Lfay -> Gfay',1,1,1),
|
||||
(240,108,'Lfay -> Docks',1,1,1),
|
||||
(241,108,'Docks -> Gfay',1,1,1),
|
||||
(242,108,'Docks -> Lfay',1,1,1),
|
||||
(243,108,'Gfay -> Lfay',1,1,1),
|
||||
(244,470,'Butcherblock -> Zoned',1,1,0),
|
||||
(245,470,'Zoned -> Butcherblock',1,1,0),
|
||||
(265,121,'Drowning Causeway -> Alliz Evol',0.35,0,1),
|
||||
(266,121,'Alliz Evol -> Drowning Causeway',1,0,1),
|
||||
(267,121,'Alliz Evol -> Greenblood River',1,0,1),
|
||||
(268,121,'Alliz Evol -> Tae Ew',1,0,1),
|
||||
(269,121,'Greenblood River -> Alliz Evol',1,0,1),
|
||||
(270,121,'Greenblood River -> Tae Ew',1,0,1),
|
||||
(271,121,'Alliz Tae -> Dread Basin',1,0,1),
|
||||
(272,121,'Tae Ew -> Alliz Evol',1,0,1),
|
||||
(273,121,'Tae Ew -> Greenblood River',1,0,1),
|
||||
(274,121,'Tae Ew -> Tower of Vul',1,0,1),
|
||||
(275,121,'Alliz Tae -> Tower of Vul',1,0,1),
|
||||
(276,121,'Towel of Vul -> Tae Ew',1,0,1),
|
||||
(277,121,'Tower of Vul -> Alliz Tae',1,0,1),
|
||||
(278,121,'Dread Basin -> Alliz Tae',1,0,1),
|
||||
(279,121,'Alliz Evol -> Tower of Vul',1,0,1),
|
||||
(280,121,'Alliz Evol -> Dread Basin',1,0,1),
|
||||
(281,121,'Alliz Evol -> Alliz Tae',1,0,1),
|
||||
(282,121,'Alliz Tae -> Greenblood River',1,0,1),
|
||||
(283,121,'Alliz Tae -> Drowning Causeway',1,0,1),
|
||||
(284,121,'Alliz Tae -> Tae Ew',1,0,1),
|
||||
(285,121,'Alliz Tae -> Alliz Evol',1,0,1),
|
||||
(286,121,'Dread Basin -> Towerl of Vul',1,0,1),
|
||||
(287,121,'Dread Basin -> Greenblood River',1,0,1),
|
||||
(288,121,'Dread Basin -> Drowning Causeway',1,0,1),
|
||||
(289,121,'Dread Basin -> Tae Ew',1,0,1),
|
||||
(290,121,'Dread Basin -> Alliz Evol',1,0,1),
|
||||
(291,121,'Drowning Causeway -> Tower of Vul',1,0,1),
|
||||
(292,121,'Drowning Causeway -> Dread Basin',1,0,1),
|
||||
(293,121,'Drowning Causeway -> Greenblood River',1,0,1),
|
||||
(294,121,'Drowning Causeway -> Alliz Tae',1,0,1),
|
||||
(295,121,'Drowning Causeway -> Tae Ew',1,0,1),
|
||||
(296,121,'Tae Ew -> Dread Basin',1,0,1),
|
||||
(297,121,'Tae Ew -> Drowning Causeway',1,0,1),
|
||||
(298,121,'Tae Ew -> Alliz Tae',1,0,1),
|
||||
(299,121,'Greenblood River -> Tower of Vul',1,0,1),
|
||||
(300,121,'Greenblood River -> Dread Basin',1,0,1),
|
||||
(301,121,'Greenblood River -> Drowning Causeway',1,0,1),
|
||||
(302,121,'Greenblood River -> Alliz Tae',1,0,1),
|
||||
(303,121,'Tower of Vul -> Dread Basin',1,0,1),
|
||||
(304,121,'Tower of Vul -> Greenblood River',1,0,1),
|
||||
(305,121,'Tower of Vul -> Drowning Causeway',1,0,1),
|
||||
(306,121,'Tower of Vul -> Alliz Evol',1,0,1),
|
||||
(307,262,'Dreg\'s Landing -> Teren\'s Grasp',1,1,1),
|
||||
(308,262,'Dreg\'s Landing -> Fens of Nathsar',1,1,1),
|
||||
(309,262,'Dreg\'s Landing -> Kunzar\'s Edge',1,1,1),
|
||||
(310,262,'Dreg\'s Landing -> Highton',1,1,1),
|
||||
(311,262,'Kunzar\'s Edge -> Dreg\'s Landing',1,1,1),
|
||||
(312,262,'Kunzar\'s Edge -> Fens of Nathsar',1,1,1),
|
||||
(313,262,'Kunzar\'s Edge -> Teren\'s Grasp',1,1,1),
|
||||
(314,262,'Fens of Nathsar -> Teren\'s Grasp',1,1,1),
|
||||
(315,262,'Fens of Nathsar -> Dreg\'s Landing',1,1,1),
|
||||
(316,262,'Fens of Nathsar -> Kunzar\'s Edge',1,1,1),
|
||||
(317,262,'Teren\'s Grasp -> Dreg\'s Landing',1,1,1),
|
||||
(318,262,'Teren\'s Grasp -> Fens of Nathsar',1,1,1),
|
||||
(319,262,'Teren\'s Grasp -> Highton',1,1,1),
|
||||
(320,262,'Teren\'s Grasp -> Jarsath Wastes',1,1,1),
|
||||
(321,262,'Highton -> Teren\'s Grasp',1,1,1),
|
||||
(322,262,'Highton -> Jarsath Wastes',1,1,1),
|
||||
(323,262,'Highton -> Dreg\'s Landing',1,1,1),
|
||||
(324,262,'Jarsath Wastes -> Highton',1,1,1),
|
||||
(325,262,'Jarsath Wastes -> Teren\'s Grasp',1,1,1),
|
||||
(326,262,'Sokokar Quest -> Dreg\'s Landing',1,1,1),
|
||||
(327,262,'Teren\'s Grasp -> Zoned?',1,1,1),
|
||||
(328,262,'Dreg\'s Landing -> Jarsath Wastes',1,1,1),
|
||||
(329,262,'Fens of Nathsar -> Jarsath Wastes',1,1,1),
|
||||
(330,262,'Fens of Nathsar -> Highton',1,1,1),
|
||||
(331,262,'Highton -> Fens of Nathsar',1,1,1),
|
||||
(332,262,'Highton -> Kunzar\'s Edge',1,1,1),
|
||||
(333,262,'Jarsath Wastes -> Fens of Nathsar',1,1,1),
|
||||
(334,262,'Jarsath Wastes -> Kunzar\'s Edge',1,1,1),
|
||||
(335,262,'Jarsath Wastes -> Dreg\'s Landing',1,1,1),
|
||||
(336,262,'Kunzar\'s Edge -> Jarsath Wastes',1,1,1),
|
||||
(337,262,'Kunzar\'s Edge -> Hightgon',1,1,1),
|
||||
(338,265,'Stonehoof Badlands -> Howling Stones',1,1,1),
|
||||
(339,265,'Stonehoof Badlands -> Skyfire Mountains',1,1,1),
|
||||
(340,265,'Stonehoof Badlands -> Skleross Encampment',1,1,1),
|
||||
(341,265,'Howling Stones -> Danak Shipyard',1,1,1),
|
||||
(342,265,'Howling Stones -> Skleross Encampment',1,1,1),
|
||||
(343,265,'Howling Stones -> Stonehoof Badlands',1,1,1),
|
||||
(344,265,'Howling Stones -> Skyfire Mountains',1,1,1),
|
||||
(345,265,'Danak Shipyard -> Howling Stones',1,1,1),
|
||||
(346,265,'Danak Shipyard -> Skyfire Mountains',1,1,1),
|
||||
(347,265,'Howling Stones -> Stonehoof Badlands2',1,1,1),
|
||||
(348,265,'Skyfire Mountains -> Stonehoof Badlands',1,1,1),
|
||||
(349,265,'Skyfire Mountains -> Temple of Red Lord',1,1,1),
|
||||
(350,265,'Skyfire Mountains -> Danak Shipyard',1,1,1),
|
||||
(351,265,'Skyfire Mountains -> Sel\'Nok Camp',1,1,1),
|
||||
(352,265,'Skyfire Mountains -> Skleross Encampment',1,1,1),
|
||||
(353,265,'Skyfire Mountains -> Temple of White Lady',1,1,1),
|
||||
(354,265,'Skyfire Mountains -> Howling Stones',1,1,1),
|
||||
(355,265,'Temple of Red Lord -> Sel\'Nok Camp',1,1,1),
|
||||
(356,265,'Temple of Red Lord -> Skyfire Mountains',1,1,1),
|
||||
(357,265,'Temple of Red Lord -> Temple of White Lady',1,1,1),
|
||||
(358,265,'Temple of White Lady -> Temple of Red Lord',1,1,1),
|
||||
(359,265,'Temple of White Lady -> Skyfire Mountains',1,1,1),
|
||||
(360,265,'Sel\'Nok Camp -> Temple of Red Lord',1,1,1),
|
||||
(361,265,'Sel\'Nok Camp -> Skyfire Mountains',1,1,1),
|
||||
(362,265,'Skleross Encampment -> Howling Stones',1,1,1),
|
||||
(363,265,'Skleross Encampment -> Stonehoof Badlands',1,1,1),
|
||||
(364,265,'Skleross Encampment -> Skyfire Mountains',1,1,1),
|
||||
(365,265,'Order of Rime(/Quest/Zoned?) -> Order of Rime',1,1,1),
|
||||
(366,265,'Order of Rime -> Unknown(Quest/zoned)',1,1,1),
|
||||
(367,265,'Temple of White Lady -> Stonehoof Badlands',1,1,1),
|
||||
(368,265,'Temple of White Lady -> Danak Shipyard',1,1,1),
|
||||
(369,265,'Temple of White Lady -> Howling Stones',1,1,1),
|
||||
(370,265,'Temple of White Lady -> Sel\'Nok Camp',1,1,1),
|
||||
(371,265,'Temple of the White Lady -> Skleross Encampment',1,1,1),
|
||||
(372,265,'Danak Shipyard -> Stonehoof Badlands',1,1,1),
|
||||
(373,265,'Danak Shipyard -> Sel\'Nok Camp',1,1,1),
|
||||
(374,265,'Danak Shipyard -> Temple of Red Lord',1,1,1),
|
||||
(375,265,'Danak Shipyard -> Temple of White Lady',1,1,1),
|
||||
(376,265,'Danak Shipyard -> Skleross Encampment',1,1,1),
|
||||
(377,265,'Howling Stones -> Sel\'Nok Camp',1,1,1),
|
||||
(378,265,'Howling Stones -> Temple of Red Lord',1,1,1),
|
||||
(379,265,'Howling Stones -> Temple of White Lady',1,1,1),
|
||||
(380,265,'Stonehoof Badlands -> Sel\'Nok Camp',1,1,1),
|
||||
(381,265,'Stonehoof Badlands -> Temple of Red Lord',1,1,1),
|
||||
(382,265,'Stonehoof Badlands -> Temple of White Lady',1,1,1),
|
||||
(383,265,'Stonehoof Badlands -> Danak Shipyard',1,1,1),
|
||||
(384,265,'Temple of Red Lord -> Stonehoof Badlands',1,1,1),
|
||||
(385,265,'Temple of Red Lord -> Howling Stones',1,1,1),
|
||||
(386,265,'Temple of Red Lord -> Danak Shipyard',1,1,1),
|
||||
(387,265,'Temple of Red Lord -> Skleross Encampment',1,1,1),
|
||||
(388,265,'Sel\'Nok Camp -> Stonehoof Badlands',1,1,1),
|
||||
(389,265,'Sel\'Nok Camp -> Howling Stones',1,1,1),
|
||||
(390,265,'Sel\'Nok Camp -> Temple of White Lady',1,1,1),
|
||||
(391,265,'Sel\'Nok Camp -> Danak Shipyard',1,1,1),
|
||||
(392,265,'Sel\'Nok Camp -> Skleross Encampment',1,1,1),
|
||||
(393,265,'Skleross Encampment -> Sel\'Nok Camp',1,1,1),
|
||||
(394,265,'Skleross Encampment -> Temple of Red Lord',1,1,1),
|
||||
(395,265,'Skleross Encampment -> Temple of White Lady',1,1,1),
|
||||
(396,265,'Skleross Encampment -> Danak Shipyard',1,1,1),
|
||||
(397,265,'Danak Dock -> Grim StormShield(quest path?)',1,0,1),
|
||||
(398,265,'Grim StormShield -> Danak Dock(Quest Path?)',1,0,1),
|
||||
(399,264,'Riliss -> Kylong',1,1,1),
|
||||
(400,264,'Riliss -> Ruins of Cabilis',1,1,1),
|
||||
(401,264,'Riliss -> Bellywumper Burrows',1,1,1),
|
||||
(402,264,'Riliss -> Western Pens',1,1,1),
|
||||
(403,264,'Omen\'s Call -> Sathir\'s Span',1,1,1),
|
||||
(404,264,'rime warbird(unknown) -> Zoned/Quest?',1,1,1),
|
||||
(405,264,'Omen\'s Call -> Bathezid\'s Watch',1,1,1),
|
||||
(406,264,'Omen\'s Call -> Drogan Exiles',1,1,1),
|
||||
(407,264,'Atrebe\'s Laboratory -> Omen\'s Call',1,1,1),
|
||||
(408,264,'Bellywumper Burrows -> Drogan Exiles',1,1,1),
|
||||
(409,264,'Drogan Exiles -> Omen\'s Call',1,1,1),
|
||||
(410,264,'Bellywumper Burrows -> Dragon\'s Rest',1,1,1),
|
||||
(411,264,'Warwyn Al\'Xi -> Warwyn Al\'Xi(invalid?Quest?)',1,1,1),
|
||||
(412,264,'Omen\'s Call -> Atrebe\'s Laboratory',1,1,1),
|
||||
(413,264,'Bellywumper Burrows -> Riliss',1,1,1),
|
||||
(414,264,'Kylong -> Bathezid\'s Watch',1,1,1),
|
||||
(415,264,'Drogan Exiles -> Bellywumper Burrows',1,1,1),
|
||||
(416,264,'Kylong -> Sathir\'s Span',1,1,1),
|
||||
(417,264,'Burkmaiir(Quest?) -> Unknown',1,1,1),
|
||||
(418,264,'Ruins of Cabilis -> Riliss',1,1,1),
|
||||
(419,264,'Kylong -> Riliss',1,1,1),
|
||||
(420,264,'Bathezid\'s Watch -> Kylong',1,1,1),
|
||||
(421,264,'Bathezid\'s Watch -> Omen\'s Call',1,1,1),
|
||||
(422,264,'Zoned? -> Rime Ward Bird',1,1,1),
|
||||
(423,264,'Sathir\'s Span -> Omen\'s Call',1,1,1),
|
||||
(424,264,'Sathir\'s Span -> Western Pens',1,1,1),
|
||||
(425,264,'Sathir\'s Span -> Kylong',1,1,1),
|
||||
(426,264,'Western Pens -> Eastern Pens',1,1,1),
|
||||
(427,264,'Dragon\'s Rest -> Bellywumper Burrows',1,1,1),
|
||||
(428,264,'Western Pens -> Riliss',1,1,1),
|
||||
(429,264,'Western Pens -> Sathir\'s Spans',1,1,1),
|
||||
(430,264,'Eastern Pens -> Western Pens',1,1,1),
|
||||
(431,264,'Western Pens -> Kylong',1,1,1),
|
||||
(432,264,'Western Pens -> Omen\'s Call',1,1,1),
|
||||
(433,264,'Western Pens -> Drogan Exiles',1,1,1),
|
||||
(434,264,'Western Pens -> Dragon\'s Rest',1,1,1),
|
||||
(435,264,'Western Pens -> Bellywumper Burrows',1,1,1),
|
||||
(436,264,'Western Pens -> Bathezid\'s Watch',1,1,1),
|
||||
(437,264,'Western Pens -> Atrebe\'s Laboratory',1,1,1),
|
||||
(438,264,'Western Pens -> Ruins of Cabilis',1,1,1),
|
||||
(439,264,'Sathir\'s Span -> Drogan Exiles',1,1,1),
|
||||
(440,264,'Sathir\'s Span -> Dragon\'s Rest',1,1,1),
|
||||
(441,264,'Sathir\'s Span -> Bellywumper Burrows',1,1,1),
|
||||
(442,264,'Sathir\'s Span -> Bathezid\'s Watch',1,1,1),
|
||||
(443,264,'Sathir\'s Span -> Atrebe\'s Laboratory',1,1,1),
|
||||
(444,264,'Sathir\'s Span -> Ruins of Cabilis',1,1,1),
|
||||
(445,264,'Sathir\'s Span -> Eastern Pens',1,1,1),
|
||||
(446,264,'Sathir\'s Spaan -> Riliss',1,1,1),
|
||||
(447,264,'Riliss -> Omen\'s Call',1,1,1),
|
||||
(448,264,'Riliss -> Drogan Exiles',1,1,1),
|
||||
(449,264,'Riliss -> Dragon\'s Rest',1,1,1),
|
||||
(450,264,'Riliss -> Eastern Pens',1,1,1),
|
||||
(451,264,'Riliss -> Bathezid\'s Watch',1,1,1),
|
||||
(452,264,'Riliss -> Atrebe\'s Laboratory',1,1,1),
|
||||
(453,264,'Riliss -> Sathir\'s Span',1,1,1),
|
||||
(454,264,'Omen\'s Call -> Kylong',1,1,1),
|
||||
(455,264,'Omen\'s Call -> Eastern Pens',1,1,1),
|
||||
(456,264,'Omen\'s Call -> Dragon\'s Rest',1,1,1),
|
||||
(457,264,'Omen\'s Call -> Bellywumper Burrows',1,1,1),
|
||||
(458,264,'Omen\'s Call -> Western Pens',1,1,1),
|
||||
(459,264,'Omen\'s Call -> Riliss',1,1,1),
|
||||
(460,264,'Omen\'s Call -> Ruins of Cabilis',1,1,1),
|
||||
(461,264,'Kylong -> Eastern Pens',1,1,1),
|
||||
(462,264,'Kylong -> Omen\'s Call',1,1,1),
|
||||
(463,264,'Kylong -> Drogan Exiles',1,1,1),
|
||||
(464,264,'Kylong -> Dragon\'s Rest',1,1,1),
|
||||
(465,264,'Kylong -> Bellywumper Burrows',1,1,1),
|
||||
(466,264,'Kylong -> Western Pens',1,1,1),
|
||||
(467,264,'Kylong -> Atrebe\'s Laboratory',1,1,1),
|
||||
(468,264,'Kylong -> Ruins of Cabilis',1,1,1),
|
||||
(469,264,'Atrebe\'s Laboratory -> Kylong',1,1,1),
|
||||
(470,264,'Atrebe\'s Laboratory -> Eastern Pens',1,1,1),
|
||||
(471,264,'Atrebe\'s Laboratory -> Riliss',1,1,1),
|
||||
(472,264,'Atrebe\'s Laboratory -> Drogan Exiles',1,1,1),
|
||||
(473,264,'Atrebe\'s Laboratory -> Dragon\'s Rest',1,1,1),
|
||||
(474,264,'Atrebe\'s Laboratory -> Bellywumper Burrows',1,1,1),
|
||||
(475,264,'Atrebe\'s Laboratory -> Western Pens',1,1,1),
|
||||
(476,264,'Atrebe\'s Laboratory -> Bathezid\'s Watch',1,1,1),
|
||||
(477,264,'Atrebe\'s Laboratory -> Sathir\'s Span',1,1,1),
|
||||
(478,264,'Atrebe\'s Laboratory -> Ruins of Cabilis',1,1,1),
|
||||
(479,264,'Eastern Pens -> Kylong',1,1,1),
|
||||
(480,264,'Eastern Pens -> Riliss',1,1,1),
|
||||
(481,264,'Eastern Pens -> Sathir\'s Span',1,1,1),
|
||||
(482,264,'Eastern Pens -> Omen\'s Call',1,1,1),
|
||||
(483,264,'Eastern Pens -> Drogan Exiles',1,1,1),
|
||||
(484,264,'Eastern Pens -> Dragon\'s Rest',1,1,1),
|
||||
(485,264,'Eastern Pens -> Bellywumper Burrows',1,1,1),
|
||||
(486,264,'Eastern Pens -> Bathezid\'s Watch',1,1,1),
|
||||
(487,264,'Eastern Pens -> Atrebe\'s Laboratory',1,1,1),
|
||||
(488,264,'Eastern Pens -> Ruins of Cabilis',1,1,1),
|
||||
(489,264,'Drogan Exiles -> Kylong',1,1,1),
|
||||
(490,264,'Drogan Exiles -> Riliss',1,1,1),
|
||||
(491,264,'Drogan Exiles -> Sathir\'s Span',1,1,1),
|
||||
(492,264,'Drogan Exiles -> Eastern Pens',1,1,1),
|
||||
(493,264,'Drogan Exiles -> Dragon\'s Rest',1,1,1),
|
||||
(494,264,'Drogan Exiles -> Western Pens',1,1,1),
|
||||
(495,264,'Drogan Exiles -> Bathezid\'s Watch',1,1,1),
|
||||
(496,264,'Drogan Exiles -> Atrebe\'s Laboratory',1,1,1),
|
||||
(497,264,'Drogan Exiles -> Ruins of Cabilis',1,1,1),
|
||||
(498,264,'Dragon\'s Rest -> Kylong',1,1,1),
|
||||
(499,264,'Dragon\'s Rest -> Riliss',1,1,1),
|
||||
(500,264,'Dragon\'s Rest -> Eastern Pens',1,1,1),
|
||||
(501,264,'Dragon\'s Rest -> Omen\'s Call',1,1,1),
|
||||
(502,264,'Dragon\'s Rest -> Drogan Exiles',1,1,1),
|
||||
(503,264,'Dragon\'s Rest -> Sathir\'s Span',1,1,1),
|
||||
(504,264,'Dragon\'s Rest -> Western Pens',1,1,1),
|
||||
(505,264,'Dragon\'s Rest -> Atrebe\'s Laboratory',1,1,1),
|
||||
(506,264,'Dragon\'s Rest -> Ruins of Cabilis',1,1,1),
|
||||
(507,264,'Dragon\'s Rest -> Bathezid\'s Watch',1,1,1),
|
||||
(508,264,'Ruins of Cabilis -> Kylong',1,1,1),
|
||||
(509,264,'Ruins of Cabilis -> Sathir\'s Span',1,1,1),
|
||||
(510,264,'Ruins of Cabilis -> Omen\'s Call',1,1,1),
|
||||
(511,264,'Ruins of Cabilis -> Drogan Exiles',1,1,1),
|
||||
(512,264,'Ruins of Cabilis -> Dragon\'s Rest',1,1,1),
|
||||
(513,264,'Ruins of Cabilis -> Bellywumper Burrows',1,1,1),
|
||||
(514,264,'Ruins of Cabilis -> Western Pens',1,1,1),
|
||||
(515,264,'Ruins of Cabilis -> Bathezid\'s Watch',1,1,1),
|
||||
(516,264,'Ruins of Cabilis -> Atrebe\'s Laboratory',1,1,1),
|
||||
(517,264,'Ruins of Cabilis -> Eastern Pens',1,1,1),
|
||||
(518,264,'Bellywumper Burrows -> Kylong',1,1,1),
|
||||
(519,264,'Bellywumper Burrows -> Sathir\'s Span',1,1,1),
|
||||
(520,264,'Bellywumper Burrows -> Eastern Pens',1,1,1),
|
||||
(521,264,'Bellywumper Burrows -> Omen\'s Call',1,1,1),
|
||||
(522,264,'Bellywumper Burrows -> Western Pens',1,1,1),
|
||||
(523,264,'Bellywumper Burrows -> Bathezid\'s Watch',1,1,1),
|
||||
(524,264,'Bellywumper Burrows -> Atrebe\'s Laboratory',1,1,1),
|
||||
(525,264,'Bellywumper Burrows -> Ruins of Cabilis',1,1,1),
|
||||
(526,264,'Bathezid\'s Watch -> Eastern Pens',1,1,1),
|
||||
(527,264,'Bathezid\'s Watch -> Riliss',1,1,1),
|
||||
(528,264,'Bathezid\'s Watch -> Drogan Exiles',1,1,1),
|
||||
(529,264,'Bathezid\'s Watch -> Dragon\'s Rest',1,1,1),
|
||||
(530,264,'Bathezid\'s Watch -> Bellywumper Burrows',1,1,1),
|
||||
(531,264,'Bathezid\'s Watch -> Western Pens',1,1,1),
|
||||
(532,264,'Bathezid\'s Watch -> Sathir\'s Span',1,1,1),
|
||||
(533,264,'Bathezid\'s Watch -> Atrebe\'s Laboratory',1,1,1),
|
||||
(534,264,'Bathezid\'s Watch -> Ruins of Cabilis',1,1,1),
|
||||
(535,73,'Crock Hunter Camp -> Ab\'Zheri(Carpet Quest)',1,1,1),
|
||||
(539,73,'Port of Tears -> One Rock Isle',1,1,1),
|
||||
(540,73,'Port of Tears -> Twin Tears',1,1,1),
|
||||
(541,73,'Port of Tears -> UnderCity Arena',1,1,1),
|
||||
(542,73,'One Rock Isle -> Port of Tears',1,1,1),
|
||||
(543,73,'Twin Tears -> Port of Tears',1,1,1),
|
||||
(544,73,'UnderCity Arena -> Port of Tears',1,1,1),
|
||||
(545,73,'Port of Tears -> Unknown/zoned/invalid?',1,1,1),
|
||||
(546,73,'Port of Tears -> Zoned',1,1,1),
|
||||
(548,73,'Port of Tears -> Pirate\'s Perch?',1,1,1),
|
||||
(549,73,'Shadow Odyssey Thing -> Dirty Excavation Site',1,1,1),
|
||||
(550,73,'Dirty Excavation Site -> Shadow Odyssey Thing',1,1,1),
|
||||
(554,73,'Port of Tears -> POF Zoned',1,1,1),
|
||||
(606,73,'Zoned -> Port of Tears',1,1,1),
|
||||
(724,73,'Sinking Sands -> Zoned Diff CoorDs',1,1,1),
|
||||
(727,70,'SwiftRiders -> TNarev',1,1,1),
|
||||
(728,70,'Swift Riders -> Giants Field',1,1,1),
|
||||
(729,70,'Swift Riders -> Stinging Isle',1,1,1),
|
||||
(730,70,'Swift Riders -> Prophets Peak',1,1,1),
|
||||
(731,70,'T\'Narev -> Swift Riders',1,1,1),
|
||||
(732,70,'Giants Field -> Swift Riders',1,1,1),
|
||||
(733,70,'Stinging Isle -> Swift Riders',1,1,1),
|
||||
(734,70,'Prophets Peak -> Swift Riders',1,1,1),
|
||||
(735,70,'T\'Narev -> Giants Field',1,1,1),
|
||||
(736,70,'T\'Narev -> Prophet\'s Peak',1,1,1),
|
||||
(737,70,'T\'Narev -> Stinging Isle',1,1,1),
|
||||
(738,70,'Giants Field -> Prophets Peak',1,1,1),
|
||||
(739,70,'Giants Field -> T\'Narev',1,1,1),
|
||||
(740,70,'Giants Field -> Stinging Isle',1,1,1),
|
||||
(741,70,'Prophets Peak -> T\'Narev',1,1,1),
|
||||
(742,70,'Prophets Peak -> Giants Field',1,1,1),
|
||||
(743,70,'Prophets Peak -> Stinging Isle',1,1,1),
|
||||
(744,70,'Stinging Isle -> T\'Narev',1,1,1),
|
||||
(745,70,'Stinging Isle -> Giants Field',1,1,1),
|
||||
(746,70,'Stinging Isle -> Prophets Peak',1,1,1),
|
||||
(747,88,'Ravasect Incursion -> Temple Grounds',1,1,1),
|
||||
(748,88,'Ravasect Incursion -> Gazer Isle',1,1,1),
|
||||
(749,88,'Ravasect Incursion -> Bixie Isle',1,1,1),
|
||||
(750,88,'Vultak Scavenging Site -> Halls Landing',1,1,1),
|
||||
(751,88,'Vultak Scavenging Site -> Fear Tainted Isle',1,1,1),
|
||||
(752,88,'Sanctum Landing(Temple Grounds) -> Gazer Isle',1,1,1),
|
||||
(753,88,'Temple Grounds -> Bixie Isle',1,1,1),
|
||||
(754,88,'Temple Grounds -> Ravasect Incursion',1,1,1),
|
||||
(755,88,'Halls Landing -> Vultak Scavenging Site',1,1,1),
|
||||
(756,88,'Gazer Isle -> Sanctum Landing',1,1,1),
|
||||
(757,88,'Gazer Isle -> Ravasect Incursion',1,1,1),
|
||||
(758,88,'Fear Tainted Isle -> Vultak Scavenging Site',1,1,1),
|
||||
(759,88,'Bixie Isle -> Temple Grounds',1,1,1),
|
||||
(760,88,'Bixie Isle -> Ravasect Incursion',1,1,1),
|
||||
(761,88,'Hidden Refuge -> Vicious Breeding Grounds',1,1,1),
|
||||
(762,88,'Vicious Breeding Grounds -> Hidden Refuge',1,1,1),
|
||||
(763,88,'Gazer Isle -> Fear Tainted Isle',1,1,1),
|
||||
(764,88,'Fear Tainted Isle -> Gazer Isle',1,1,1),
|
||||
(765,88,'Hidden Refuge(Isolated) -> Tenebrous Landing',1,1,1),
|
||||
(766,88,'Quest -> Halls Landing',1,1,1),
|
||||
(767,85,'Isle of Desolation -> Isle of the Guardians',1,1,1),
|
||||
(768,85,'Isle of Desolation -> Isle of the Watchers',1,1,1),
|
||||
(769,85,'Isle of Desolation -> Strifewind Isle',1,1,1),
|
||||
(770,85,'Isle of Desolation -> Whisperwind Isle',1,1,1),
|
||||
(771,85,'Isle of Desolation -> Prisoner\'s Isle',1,1,1),
|
||||
(772,85,'Isle of the Guardians -> Isle of Desolation',1,1,1),
|
||||
(773,85,'Isle of the Guardians -> Prisoner\'s Island',1,1,1),
|
||||
(774,85,'Isle of the Watchers -> Isle of Desolation',1,1,1),
|
||||
(775,85,'Isle of the Watchers -> Isle of Aversion',1,1,1),
|
||||
(776,85,'Strifewind Isle -> Isle of Desolation',1,1,1),
|
||||
(777,85,'Strifewind Isle -> Isle of Discord',1,1,1),
|
||||
(778,85,'Strifewind Isle -> Whisperwind Isle',1,1,1),
|
||||
(779,85,'Isle of Discord -> Strifewind Isle',1,1,1),
|
||||
(780,85,'Isle of Discord -> Whisperwind Island',1,1,1),
|
||||
(781,85,'Isle of Discord -> Blackwind Isle',1,1,1),
|
||||
(782,85,'Isle of Aversion -> Isle of the Watchers',1,1,1),
|
||||
(783,85,'Isle of Aversion -> Whisperwind Isle',1,1,1),
|
||||
(784,85,'Whisperwind Isle -> Isle of Desolation',1,1,1),
|
||||
(785,85,'Whisperwind Isle -> Strifewind Isle',1,1,1),
|
||||
(786,85,'Whisperwind Isle -> Isle of Discord',1,1,1),
|
||||
(787,85,'Whisperwind Isle -> Isle of Aversion',1,1,1),
|
||||
(788,85,'Whisperwind Isle -> Cloudmist Isle',1,1,1),
|
||||
(789,85,'Whisperwind Isle -> Blackwind Isle',1,1,1),
|
||||
(790,85,'Whisperwind Isle -> Isle of Awakened',1,1,1),
|
||||
(791,85,'Cloudmist Isle -> Whisperwind Isle',1,1,1),
|
||||
(792,85,'Cloudmist Isle -> Isle of Eaglewatch',1,1,1),
|
||||
(793,85,'Blackwind Isle -> Isle of Discord',1,1,1),
|
||||
(794,85,'Blackwind Isle -> Whisperwind Isle',1,1,1),
|
||||
(795,85,'Blackwind Isle -> Isle of the Awakened',1,1,1),
|
||||
(796,85,'Isle of Eagle Watch -> Cloudmist Isle',1,1,1),
|
||||
(797,85,'Isle of Eagle Watch -> Isle of the Awakened',1,1,1),
|
||||
(798,85,'Prisoner\'s Isle -> Isle of Desolation',1,1,1),
|
||||
(799,85,'Prisoner\'s Isle -> Isle of the Guardians',1,1,1),
|
||||
(800,85,'Prisoner\'s Isle -> Isle of the Awakened',1,1,1),
|
||||
(801,85,'Isle of the Awakened -> Whisperwind Isle',1,1,1),
|
||||
(802,85,'Isle of the Awakened -> Blackwind Isle',1,1,1),
|
||||
(803,85,'Isle of the Awakened -> Isle of Eagle Watch',1,1,1),
|
||||
(804,85,'Isle of Awakened -> Prisoner\'s Isle',1,1,1),
|
||||
(805,87,'Halls of Fate -> Dreadnever Crash Site',1,1,1),
|
||||
(806,87,'Halls of Fate -> Shattered Weir',1,1,1),
|
||||
(807,87,'Dreadnever Crash Site -> Halls of Fate',1,1,1),
|
||||
(808,87,'Dreadnever Crash Site -> Isle of Ravasect',1,1,1),
|
||||
(809,87,'Dreadnever Crash Site -> Cacotoxic Stain',1,1,1),
|
||||
(810,87,'Dreadnever Crash Site -> Carrion Briar',1,1,1),
|
||||
(811,87,'Dreadnever Crash Site -> Shattered Weir',1,1,1),
|
||||
(812,87,'Isle of Ravasect -> Dreadnever Crash Site',1,1,1),
|
||||
(813,87,'Cacotoxic Stain -> Dreadnever Crash Site',1,1,1),
|
||||
(814,87,'Carrion Briar -> Dreadnever Crash Site',1,1,1),
|
||||
(815,87,'Shattered Weir -> Dreadnever Crash Site',1,1,1),
|
||||
(816,87,'Shattered Weir -> Halls of Fate',1,1,1),
|
||||
(817,385,'Ykeshan Shore -> (unknown)',1,1,1),
|
||||
(818,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(819,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(820,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(821,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(822,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(823,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(824,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(825,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(826,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(827,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(828,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(829,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(830,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(831,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(832,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(833,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(834,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(835,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(836,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(837,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(838,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(839,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(840,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(841,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(842,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(843,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(844,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(845,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(846,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(847,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(848,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(849,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(850,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(851,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(852,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(853,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(854,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(855,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(856,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(857,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(858,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(859,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(860,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(861,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(862,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(863,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(864,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(865,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(866,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(867,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(868,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(869,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(870,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(871,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(872,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(873,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(874,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(875,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(876,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(877,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(878,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(879,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(880,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(881,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(882,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(883,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(884,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(885,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(886,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(887,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(888,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(889,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(890,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(891,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(892,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(893,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(894,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(895,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(896,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(897,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(898,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(899,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(900,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(901,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(902,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(903,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(904,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(905,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(906,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(907,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(908,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(909,385,'Parser Generated (RENAME)',1,1,1),
|
||||
(910,261,'Fallen Village -> Hidden Plunderer\'s',1,1,1),
|
||||
(911,261,'Fallen Village -> Outer Sebilis',1,1,1),
|
||||
(912,261,'Fallen Village -> Tabernacle of Pain',1,1,1),
|
||||
(913,261,'Jinisk -> Hidden Plunderer\'s',1,1,1),
|
||||
(914,261,'Jinisk -> Murk Dwellers River',1,1,1),
|
||||
(915,261,'Jinisk -> Tabernacle of Pain',1,1,1),
|
||||
(916,261,'Hidden Plunderer\'s -> Fallen Village',1,1,1),
|
||||
(917,261,'Hidden Plunderer\'s -> Jinisk',1,1,1),
|
||||
(918,261,'Murk Dwellers River -> Jinisk',1,1,1),
|
||||
(919,261,'Murk Dwellers River -> Outer Sebilis',1,1,1),
|
||||
(920,261,'Murk Dwellers River -> Tabernacle of Pain',1,1,1),
|
||||
(921,261,'Outer Sebilis -> Fallen Village',1,1,1),
|
||||
(922,261,'Outer Sebilis -> Murk Dwellers River',1,1,1),
|
||||
(923,261,'Tabernacle of Pain -> Fallen Village',1,1,1),
|
||||
(924,261,'Tabernacle of Pain -> Jinisk',1,1,1),
|
||||
(925,261,'Tabernacle of Pain -> Murk Dwellers River',1,1,1),
|
||||
(926,261,'Tabernacle of Pain -> Outer Sebilis',1,1,1),
|
||||
(927,261,'Tabernacle of Pain -> Hidden Plunderers',1,1,1),
|
||||
(928,261,'Fallen Village -> Jinisk',1,1,1),
|
||||
(929,261,'Fallen Village -> Murk Dwellers River',1,1,1),
|
||||
(930,261,'Hidden Plunderer\'s -> Outer Sebilis',1,1,1),
|
||||
(931,261,'Hidden Plunderers -> Tabernacle of Pain',1,1,1),
|
||||
(932,261,'Hidden Plunderer\'s -> Murkdwellers River',1,1,1),
|
||||
(933,261,'Jinisk -> Outer Sebilis',1,1,1),
|
||||
(934,261,'Jinisk -> Fallen Village',1,1,1),
|
||||
(935,261,'Murk Dwellers River -> Hidden Plunderers',1,1,1),
|
||||
(936,261,'Murk Dwellers River -> Fallen Village',1,1,1),
|
||||
(937,261,'Outer Sebilis -> Hidden Plunderers',1,1,1),
|
||||
(938,261,'Outer Sebilis -> Tabernacle of Pain',1,1,1),
|
||||
(939,261,'Outer Sebilis -> Jinisk',1,1,1),
|
||||
(940,115,'Butcherblock -> Loping Plains',1,0,1),
|
||||
(941,115,'Butcherblock -> Fae Court',1,0,1),
|
||||
(942,115,'Butcherblock -> Upper Grove',1,0,1),
|
||||
(943,115,'Fae Court -> Butcherblock',1,0,1),
|
||||
(944,115,'Fae Court -> Loping Plains',1,0,1),
|
||||
(945,115,'Fae Court -> Upper Grove',1,0,1),
|
||||
(946,115,'Greater Faydark -> Lower Grove',1,0,1),
|
||||
(947,115,'Loping Plains -> Butcherblock',1,0,1),
|
||||
(948,115,'Loping Plains -> Fae Court',1,0,1),
|
||||
(949,115,'Loping Plains -> Upper Grove',1,0,1),
|
||||
(950,115,'Lower Grove -> Greater Faydark',1,0,1),
|
||||
(951,115,'Upper Grove -> Butcherblock',1,0,1),
|
||||
(952,115,'Upper Grove -> Loping Plains',1,0,1),
|
||||
(953,115,'Upper Grove -> Fae Court',1,0,1),
|
||||
(954,115,'Greater Faydark -> Fae Court',1,0,1),
|
||||
(955,115,'Upper Grove -> Greater Faydark',1,0,1),
|
||||
(956,115,'Upper Grove -> Lower Grove',1,0,1),
|
||||
(957,115,'Butcherblock -> Lower Grove',1,0,1),
|
||||
(958,115,'Butcherblock -> Greater Faydark',1,0,1),
|
||||
(959,115,'Fae Court -> Lower Grove',1,0,1),
|
||||
(960,115,'Greater Faydark -> Butcherblock',1,0,1),
|
||||
(961,115,'Greater Faydark -> Loping Plains',1,0,1),
|
||||
(962,115,'Greater Faydark -> Upper Grove',1,0,1),
|
||||
(963,115,'Loping Plains -> Greater Faydark',1,0,1),
|
||||
(964,115,'Loping Plains -> Lower Grove',1,0,1),
|
||||
(965,115,'Lower Grove -> Butcherblock',1,0,1),
|
||||
(966,115,'Lower Grove -> Loping Plains',1,0,1),
|
||||
(967,115,'Lower Grove -> Upper Grove',1,0,1),
|
||||
(968,115,'Lower Grove -> Fae Court',1,0,1),
|
||||
(969,116,'Greater Faydark -> Somborn',1,0,1),
|
||||
(970,116,'Somborn -> Greater Faydark',1,0,1),
|
||||
(971,116,'Lesser Faydark -> Somborn',1,0,1),
|
||||
(972,116,'Somborn -> Lesser Faydark',1,0,1),
|
||||
(973,116,'Timorous Moor -> Somborn',1,0,1),
|
||||
(974,116,'Somborn -> Timorous Moor',1,0,1),
|
||||
(975,116,'Steamfont Mountains -> Somborn',1,1,1),
|
||||
(976,116,'Somborn -> Steamfont Mountains',1,0,1),
|
||||
(977,116,'Lesser Faydark - > Greater Faydark',1,0,1),
|
||||
(978,116,'Lesser Faydark -> Timorous Moor',1,0,1),
|
||||
(979,116,'Lesser Faydark -> Steamfont Mountains',1,0,1),
|
||||
(980,116,'Greater Faydark -> Lesser Faydark',1,0,1),
|
||||
(981,116,'Greater Faydark -> Timorous Moor',1,0,1),
|
||||
(982,116,'Greater Faydark -> Steamfont Mountains',1,0,1),
|
||||
(983,116,'Timorous Moor -> Greater Faydark',1,0,1),
|
||||
(984,116,'Timorous Moor -> Lesser Faydark',1,0,1),
|
||||
(985,116,'Timorous Moor -> Steamfont Mountains',1,0,1),
|
||||
(986,116,'Steamfont Mountains -> Greater Faydark',1,0,1),
|
||||
(987,116,'Steamfont Mountains -> Lesser Faydark',1,0,1),
|
||||
(988,116,'Steamfont -> Timorous Moor',1,0,1),
|
||||
(989,171,'Parser Generated (RENAME)',1,1,1),
|
||||
(990,171,'Parser Generated (RENAME)',1,1,1),
|
||||
(991,171,'Parser Generated (RENAME)',1,1,1),
|
||||
(992,171,'Parser Generated (RENAME)',1,1,1),
|
||||
(993,171,'Parser Generated (RENAME)',1,0,1),
|
||||
(994,171,'Parser Generated (RENAME)',1,0,1),
|
||||
(995,171,'Parser Generated (RENAME)',1,1,1),
|
||||
(996,171,'Parser Generated (RENAME)',1,1,1),
|
||||
(997,171,'Parser Generated (RENAME)',1,0,1),
|
||||
(998,171,'Parser Generated (RENAME)',1,0,1),
|
||||
(999,171,'Parser Generated (RENAME)',1,1,1),
|
||||
(1000,171,'Parser Generated (RENAME)',1,0,1),
|
||||
(1001,171,'Parser Generated (RENAME)',1,1,1),
|
||||
(1002,171,'Parser Generated (RENAME)',1,0,1),
|
||||
(1003,171,'Parser Generated (RENAME)',1,1,1),
|
||||
(1004,171,'Parser Generated (RENAME)',1,1,1),
|
||||
(1005,171,'Parser Generated (RENAME)',1,1,1),
|
||||
(1006,171,'Parser Generated (RENAME)',1,1,1),
|
||||
(1007,171,'Parser Generated (RENAME)',1,1,1),
|
||||
(1008,171,'Parser Generated (RENAME)',1,1,1),
|
||||
(1009,171,'Parser Generated (RENAME)',1,1,1),
|
||||
(1010,171,'Parser Generated (RENAME)',1,1,1),
|
||||
(1011,171,'Parser Generated (RENAME)',1,1,1),
|
||||
(1012,171,'Parser Generated (RENAME)',1,1,1),
|
||||
(1013,171,'Parser Generated (RENAME)',1,1,1),
|
||||
(1014,171,'Parser Generated (RENAME)',1,1,1),
|
||||
(1015,171,'Parser Generated (RENAME)',1,1,1),
|
||||
(1016,171,'Parser Generated (RENAME)',1,1,1),
|
||||
(1017,171,'Parser Generated (RENAME)',1,1,1),
|
||||
(1018,171,'Parser Generated (RENAME)',1,1,1),
|
||||
(1019,41,'Parser Generated (RENAME)',1,1,0),
|
||||
(1020,41,'Parser Generated (RENAME)',1,1,0),
|
||||
(1021,41,'Parser Generated (RENAME)',1,1,0),
|
||||
(1022,41,'Parser Generated (RENAME)',1,1,0),
|
||||
(1023,41,'Parser Generated (RENAME)',1,0,1),
|
||||
(1024,41,'Parser Generated (RENAME)',1,0,1),
|
||||
(1025,41,'Parser Generated (RENAME)',1,0,1),
|
||||
(1026,73,'SS Reparse 1',1,1,1),
|
||||
(1027,73,'SS Reparse 2',1,1,1),
|
||||
(1028,73,'SS Reparse 3',1,1,1),
|
||||
(1029,73,'SS Reparse 4',1,1,1),
|
||||
(1030,73,'SS Reparse 5',1,1,1),
|
||||
(1031,73,'SS Reparse 6',1,1,1),
|
||||
(1032,73,'SS Reparse 7',1,1,1),
|
||||
(1033,73,'SS Reparse 8',1,1,1),
|
||||
(1034,73,'SS Reparse 9',1,1,1),
|
||||
(1035,73,'SS Reparse 10',1,1,1),
|
||||
(1036,73,'SS Reparse 11',1,1,1),
|
||||
(1037,73,'SS Reparse 12',1,1,1),
|
||||
(1038,73,'SS Reparse 13',1,1,1),
|
||||
(1039,73,'SS Reparse 14)',1,1,1),
|
||||
(1040,73,'SS Reparse 15',1,1,1),
|
||||
(1041,73,'SS Reparse 16',1,1,1),
|
||||
(1042,73,'SS Reparse 17',1,1,1),
|
||||
(1043,73,'SS Reparse 18',1,1,1),
|
||||
(1044,73,'SS Reparse 19',1,1,1),
|
||||
(1045,73,'SS Reparse 20',1,1,1),
|
||||
(1046,73,'SS Reparse 21',1,1,1),
|
||||
(1047,73,'SS Reparse 22',1,1,1),
|
||||
(1048,73,'SS Reparse 23)',1,1,1),
|
||||
(1049,73,'SS Reparse 24',1,1,1),
|
||||
(1050,73,'SS Reparse 25',1,1,1),
|
||||
(1051,73,'SS Reparse 26',1,1,1),
|
||||
(1052,73,'SS Reparse 27',1,1,1),
|
||||
(1053,73,'SS Reparse 28',1,1,1),
|
||||
(1054,73,'SS Reparse 29',1,1,0),
|
||||
(1055,73,'SS Reparse 30',1,1,0);
|
71248
sql/flight_paths_locations.sql
Executable file
71248
sql/flight_paths_locations.sql
Executable file
File diff suppressed because it is too large
Load Diff
3334
sql/groundspawn_items.sql
Executable file
3334
sql/groundspawn_items.sql
Executable file
File diff suppressed because it is too large
Load Diff
257
sql/groundspawns.sql
Executable file
257
sql/groundspawns.sql
Executable file
@ -0,0 +1,257 @@
|
||||
DROP TABLE IF EXISTS groundspawns;
|
||||
CREATE TABLE groundspawns (
|
||||
id INTEGER PRIMARY KEY,
|
||||
groundspawn_id INTEGER NOT NULL DEFAULT 0,
|
||||
min_skill_level INTEGER NOT NULL DEFAULT 1,
|
||||
min_adventure_level INTEGER NOT NULL DEFAULT 0,
|
||||
bonus_table INTEGER NOT NULL DEFAULT 0,
|
||||
harvest1 REAL NOT NULL DEFAULT 70,
|
||||
harvest3 REAL NOT NULL DEFAULT 20,
|
||||
harvest5 REAL NOT NULL DEFAULT 8,
|
||||
harvest_imbue REAL NOT NULL DEFAULT 1,
|
||||
harvest_rare REAL NOT NULL DEFAULT 0.7,
|
||||
harvest10 REAL NOT NULL DEFAULT 0.3,
|
||||
harvest_coin INTEGER NOT NULL DEFAULT 0,
|
||||
enabled INTEGER NOT NULL DEFAULT 1,
|
||||
tablename TEXT
|
||||
);
|
||||
|
||||
INSERT INTO groundspawns VALUES
|
||||
(1,1,0,0,0,100,0,0,0,0,0,0,1,'SunkenCityShinys'),
|
||||
(2,2,0,0,167,99,0,0,0,1,0,0,1,'DenT1'),
|
||||
(3,3,0,0,0,99,0,0,0,1,0,0,1,'StoneT1'),
|
||||
(4,4,0,0,0,99,0,0,0,1,0,0,1,'RootsT1'),
|
||||
(5,5,0,0,0,99,0,0,0,1,0,0,1,'OreT1'),
|
||||
(6,6,0,0,0,99,0,0,0,1,0,0,1,'BushT1'),
|
||||
(7,7,45,0,0,99,0,0,0,1,0,0,1,'StoneT2'),
|
||||
(8,8,45,0,0,99,0,0,0,1,0,0,1,'RootsT2'),
|
||||
(9,9,45,0,0,99,0,0,0,1,0,0,1,'DenT2'),
|
||||
(10,10,0,0,0,99,0,0,0,1,0,0,1,'WoodT1'),
|
||||
(11,11,0,0,0,100,0,0,0,0,0,0,1,'FishT1'),
|
||||
(12,12,45,0,0,99,0,0,0,1,0,0,1,'OreT2'),
|
||||
(13,13,45,0,0,99,0,0,0,1,0,0,1,'BushT2'),
|
||||
(14,14,45,0,0,99,0,0,0,1,0,0,1,'FishT2'),
|
||||
(15,15,45,0,0,99,0,0,0,1,0,0,1,'WoodT2'),
|
||||
(16,16,0,0,0,100,0,0,0,0,0,0,1,'TheRuinsShiny'),
|
||||
(17,17,0,0,0,100,0,0,0,0,0,0,1,'TheGraveyardShinys'),
|
||||
(18,18,0,0,0,100,0,0,0,0,0,0,1,'FrostfangSeaShinys'),
|
||||
(19,19,0,0,0,70,20,8,1,0.7,0.3,0,1,'SearedChar'),
|
||||
(20,20,0,0,0,70,20,8,1,0.7,0.3,0,1,'SmolderingTrout'),
|
||||
(21,21,90,0,0,70,20,8,1,0.7,0.3,0,1,'WoodT3'),
|
||||
(22,22,90,0,0,70,20,8,1,0.7,0.3,0,1,'DenT3'),
|
||||
(23,23,90,0,0,70,20,8,1,0.7,0.3,0,1,'StoneT3'),
|
||||
(24,24,90,0,0,70,20,8,1,0.7,0.3,0,1,'OreT3'),
|
||||
(25,25,90,0,0,70,20,8,1,0.7,0.3,0,1,'RootsT3'),
|
||||
(26,26,90,0,0,70,20,8,1,0.7,0.3,0,1,'FishT3'),
|
||||
(27,27,90,0,0,70,20,8,1,0.7,0.3,0,1,'BushT3'),
|
||||
(28,28,1,0,0,100,0,0,0,0,0,0,1,'GriffinEggs'),
|
||||
(29,29,1,0,0,100,0,0,0,0,0,0,1,'SableveinRubbleSample'),
|
||||
(30,30,1,0,0,100,0,0,0,0,0,0,1,'SoldierslTrinket'),
|
||||
(31,31,1,0,0,100,0,0,0,0,0,0,1,'StunsporeMushroom'),
|
||||
(32,32,0,0,0,100,0,0,0,0,0,0,1,'QueensColonyPileOfSticks'),
|
||||
(33,33,0,0,0,100,0,0,0,0,0,0,1,'ParchmentScrap'),
|
||||
(34,34,0,0,0,100,0,0,0,0,0,0,1,'Tribute Leaves'),
|
||||
(35,35,0,0,0,100,0,0,0,0,0,0,1,'Tribute Flowers'),
|
||||
(36,36,0,0,0,100,0,0,0,0,0,0,1,'GreenWisp'),
|
||||
(37,37,1,0,0,100,0,0,0,0,0,0,1,'OakmystForestUnearthedSoil'),
|
||||
(38,38,0,0,0,100,0,0,0,0,0,0,1,'MissingPages'),
|
||||
(39,39,0,0,0,100,0,0,0,0,0,0,1,'WaterloggedCrate'),
|
||||
(40,40,0,0,0,100,0,0,0,0,0,0,1,'WaterproofBarrel'),
|
||||
(41,41,0,0,0,100,0,0,0,0,0,0,1,'LooseSoil'),
|
||||
(42,42,0,0,0,100,0,0,0,0,0,0,1,'SelkieMushroom'),
|
||||
(43,43,0,0,0,100,0,0,0,0,0,0,1,'ClumpOfPureSoil'),
|
||||
(44,44,0,0,0,100,0,0,0,0,0,0,1,'HiddenComponents'),
|
||||
(45,45,0,0,0,100,0,0,0,0,0,0,1,'RedSunBerries'),
|
||||
(46,46,0,0,0,100,0,0,0,0,0,0,1,'MistyThicketShadebloom'),
|
||||
(47,47,0,0,0,100,0,0,0,0,0,0,1,'ScrapMetal'),
|
||||
(48,48,0,0,0,100,0,0,0,0,0,0,1,'ShadowsKiss'),
|
||||
(49,49,0,0,0,100,0,0,0,0,0,0,1,'IksarSkull'),
|
||||
(50,50,0,0,0,100,0,0,0,0,0,0,1,'Felein Herbs'),
|
||||
(51,51,140,0,0,70,20,8,1,0.7,0.3,0,1,'DenT4'),
|
||||
(52,52,140,0,0,70,20,8,1,0.7,0.3,0,1,'RootsT4'),
|
||||
(53,53,140,0,0,70,20,8,1,0.7,0.3,0,1,'WoodT4'),
|
||||
(54,54,140,0,0,70,20,8,1,0.7,0.3,0,1,'FishT4'),
|
||||
(55,55,140,0,0,70,20,8,1,0.7,0.3,0,1,'OreT4'),
|
||||
(56,56,140,0,0,70,20,8,1,0.7,0.3,0,1,'StoneT4'),
|
||||
(57,57,140,0,0,70,20,8,1,0.7,0.3,0,1,'BushT4'),
|
||||
(58,58,190,0,0,70,20,8,1,0.7,0.3,0,1,'DenT5'),
|
||||
(59,59,190,0,0,70,20,8,1,0.7,0.3,0,1,'RootsT5'),
|
||||
(60,60,190,0,0,70,20,8,1,0.7,0.3,0,1,'WoodT5'),
|
||||
(61,61,190,0,0,70,20,8,1,0.7,0.3,0,1,'StoneT5'),
|
||||
(62,62,190,0,0,70,20,8,1,0.7,0.3,0,1,'OreT5'),
|
||||
(63,63,190,0,0,70,20,8,1,0.7,0.3,0,1,'BushT5'),
|
||||
(64,64,190,0,0,70,20,8,1,0.7,0.3,0,1,'FishT5'),
|
||||
(65,65,240,0,0,70,20,8,1,0.7,0.3,0,1,'DenT6'),
|
||||
(66,66,240,0,0,70,20,8,1,0.7,0.3,0,1,'BushT6'),
|
||||
(67,67,240,0,0,70,20,8,1,0.7,0.3,0,1,'FishT6'),
|
||||
(68,68,240,0,0,70,20,8,1,0.7,0.3,0,1,'OreT6'),
|
||||
(69,69,240,0,0,70,20,8,1,0.7,0.3,0,1,'StoneT6'),
|
||||
(70,70,240,0,0,70,20,8,1,0.7,0.3,0,1,'WoodT6'),
|
||||
(71,71,240,0,0,70,20,8,1,0.7,0.3,0,1,'RootsT6'),
|
||||
(72,72,250,0,0,70,20,8,1,0.7,0.3,0,1,'DenT7'),
|
||||
(73,73,250,0,0,70,20,8,1,0.7,0.3,0,1,'RootsT7'),
|
||||
(74,74,250,0,0,70,20,8,1,0.7,0.3,0,1,'WoodT7'),
|
||||
(75,75,250,0,0,70,20,8,1,0.7,0.3,0,1,'StoneT7'),
|
||||
(76,76,250,0,0,70,20,8,1,0.7,0.3,0,1,'OreT7'),
|
||||
(77,77,250,0,0,70,20,8,1,0.7,0.3,0,1,'BushT7'),
|
||||
(78,78,250,0,0,70,20,8,1,0.7,0.3,0,1,'FishT7'),
|
||||
(79,79,340,0,0,70,20,8,1,0.7,0.3,0,1,'BushT8'),
|
||||
(80,80,340,0,0,70,20,8,1,0.7,0.3,0,1,'DenT8'),
|
||||
(81,81,340,0,0,70,20,8,1,0.7,0.3,0,1,'RootsT8'),
|
||||
(82,82,340,0,0,70,20,8,1,0.7,0.3,0,1,'WoodT8'),
|
||||
(83,83,340,0,0,70,20,8,1,0.7,0.3,0,1,'FishT8'),
|
||||
(84,84,340,0,0,70,20,8,1,0.7,0.3,0,1,'StoneT8'),
|
||||
(85,85,340,0,0,70,20,8,1,0.7,0.3,0,1,'OreT8'),
|
||||
(86,86,375,0,0,70,20,8,1,0.7,0.3,0,1,'BushT9'),
|
||||
(87,87,375,0,0,70,20,8,1,0.7,0.3,0,1,'RootsT9'),
|
||||
(88,88,375,0,0,70,20,8,1,0.7,0.3,0,1,'DenT9'),
|
||||
(89,89,375,0,0,70,20,8,1,0.7,0.3,0,1,'FishT9'),
|
||||
(90,90,375,0,0,70,20,8,1,0.7,0.3,0,1,'WoodT9'),
|
||||
(91,91,375,0,0,70,20,8,1,0.7,0.3,0,1,'StoneT9'),
|
||||
(92,92,375,0,0,70,20,8,1,0.7,0.3,0,1,'OreT9'),
|
||||
(93,93,0,0,0,100,0,0,0,0,0,0,1,'TheSprawlShinys'),
|
||||
(94,94,0,0,0,100,0,0,0,0,0,0,1,'FallenGateShinys'),
|
||||
(95,95,0,0,0,100,0,0,0,0,0,0,1,'QueensColonyShinys'),
|
||||
(96,96,0,0,0,100,0,0,0,0,0,0,1,'EnchantedLandsShinys'),
|
||||
(97,97,0,0,0,100,0,0,0,0,0,0,1,'NektulosForestShinys'),
|
||||
(98,98,0,0,0,100,0,0,0,0,0,0,1,'TheCavesShinys'),
|
||||
(99,99,0,0,0,100,0,0,0,0,0,0,1,'CommonlandsShinys'),
|
||||
(100,100,0,0,0,100,0,0,0,0,0,0,1,'AntonicaShinys'),
|
||||
(101,101,0,0,0,100,0,0,0,0,0,0,1,'EverfrostShinys'),
|
||||
(102,102,0,0,0,100,0,0,0,0,0,0,1,'PeatBogShinys'),
|
||||
(103,103,0,0,0,100,0,0,0,0,0,0,1,'NektroposCastleShinys'),
|
||||
(104,104,0,0,0,100,0,0,0,0,0,0,1,'NekCastleTribulationShinys'),
|
||||
(105,105,0,0,0,100,0,0,0,0,0,0,1,'OutpostoftheOverlordShinys'),
|
||||
(106,106,0,0,0,100,0,0,0,0,0,0,1,'OakmystForestShinys'),
|
||||
(107,107,0,0,0,100,0,0,0,0,0,0,1,'DarklightWoodShinys'),
|
||||
(108,108,0,0,0,100,0,0,0,0,0,0,1,'ForestRuinsShinys'),
|
||||
(109,109,0,0,0,100,0,0,0,0,0,0,1,'WailingCavesShinys'),
|
||||
(110,110,0,0,0,100,0,0,0,0,0,0,1,'RivervaleShinys'),
|
||||
(111,111,0,0,0,100,0,0,0,0,0,0,1,'LavastormShinys'),
|
||||
(112,112,0,0,0,100,0,0,0,0,0,0,1,'SoluseksEyeShinys'),
|
||||
(113,113,0,0,0,100,0,0,0,0,0,0,1,'FeerrottShinys'),
|
||||
(114,114,0,0,0,100,0,0,0,0,0,0,1,'StormholdShinys'),
|
||||
(115,115,0,0,0,100,0,0,0,0,0,0,1,'ThunderingSteppesShinys'),
|
||||
(116,116,0,0,0,100,0,0,0,0,0,0,1,'ErollisiT2Shiny'),
|
||||
(117,117,0,0,0,100,0,0,0,0,0,0,1,'GreaterFaydarkShinys'),
|
||||
(118,118,0,0,0,100,0,0,0,0,0,0,1,'BlackBurrowShinys'),
|
||||
(119,119,0,0,0,100,0,0,0,0,0,0,1,'ButcherBlockMountainsShiny'),
|
||||
(120,120,0,0,0,100,0,0,0,0,0,0,1,'CastleMistmooreShinys'),
|
||||
(121,121,0,0,0,100,0,0,0,0,0,0,1,'ChardokShinys'),
|
||||
(122,122,0,0,0,100,0,0,0,0,0,0,1,'CrushboneKeepShinys'),
|
||||
(123,123,0,0,0,100,0,0,0,0,0,0,1,'CryptofThaenShinys'),
|
||||
(124,124,0,0,0,100,0,0,0,0,0,0,1,'CryptofNightShinys'),
|
||||
(125,125,0,0,0,100,0,0,0,0,0,0,1,'EstateofUnrestShinys'),
|
||||
(126,126,0,0,0,100,0,0,0,0,0,0,1,'HedgeHollowShinys'),
|
||||
(127,127,0,0,0,100,0,0,0,0,0,0,1,'RuinsofVarsoonShinys'),
|
||||
(128,128,0,0,0,100,0,0,0,0,0,0,1,'NewtunariaShinys'),
|
||||
(129,129,0,0,0,100,0,0,0,0,0,0,1,'ForgottenPoolsShinys'),
|
||||
(130,130,0,0,0,100,0,0,0,0,0,0,1,'ForsakenCityShinys'),
|
||||
(131,131,0,0,0,100,0,0,0,0,0,0,1,'KlakAnonShinys'),
|
||||
(132,132,0,0,0,100,0,0,0,0,0,0,1,'KylongPlainsShinys'),
|
||||
(133,133,0,0,0,100,0,0,0,0,0,0,1,'TempleofRallosZekShinys'),
|
||||
(134,134,0,0,0,100,0,0,0,0,0,0,1,'KunzarJungleShinys'),
|
||||
(135,135,0,0,0,100,0,0,0,0,0,0,1,'FensofNathsarShinys'),
|
||||
(136,136,0,0,0,100,0,0,0,0,0,0,1,'HoldofRimeFortressSpireShinys'),
|
||||
(137,137,0,0,0,100,0,0,0,0,0,0,1,'JarsathWastesShinys'),
|
||||
(138,138,0,0,0,100,0,0,0,0,0,0,1,'RunnyEyeGatheringShinys'),
|
||||
(139,139,0,0,0,100,0,0,0,0,0,0,1,'LesserFaydarkShinys'),
|
||||
(140,140,0,0,0,100,0,0,0,0,0,0,1,'SteamfontMountainsShinys'),
|
||||
(141,141,0,0,0,100,0,0,0,0,0,0,1,'SplitpawUpperTunnelsShinys'),
|
||||
(142,142,0,0,0,100,0,0,0,0,0,0,1,'SplitpawLowerTunnelsShinys'),
|
||||
(143,143,0,0,0,100,0,0,0,0,0,0,1,'DrownedCavernsOuterShinys'),
|
||||
(144,144,0,0,0,100,0,0,0,0,0,0,1,'SunderedFrontierShinys'),
|
||||
(145,145,0,0,0,100,0,0,0,0,0,0,1,'StrategistsStrongholdShinys'),
|
||||
(146,146,0,0,0,100,0,0,0,0,0,0,1,'TenebrousTangleShinys'),
|
||||
(147,147,0,0,0,100,0,0,0,0,0,0,1,'KarnorsCastleShinys'),
|
||||
(148,148,0,0,0,100,0,0,0,0,0,0,1,'TheBarrenSkyShinys'),
|
||||
(149,149,0,0,0,100,0,0,0,0,0,0,1,'TheBonemireShinys'),
|
||||
(150,150,0,0,0,100,0,0,0,0,0,0,1,'IceshardKeepShinys'),
|
||||
(151,151,0,0,0,100,0,0,0,0,0,0,1,'TheHoleShinys'),
|
||||
(152,152,0,0,0,100,0,0,0,0,0,0,1,'BefallenCavernShinys'),
|
||||
(153,153,0,0,0,100,0,0,0,0,0,0,1,'BefallenHallsofForsakenShinys'),
|
||||
(154,154,0,0,0,100,0,0,0,0,0,0,1,'BefallenNecroticAssylumShinys'),
|
||||
(155,155,0,0,0,100,0,0,0,0,0,0,1,'PillarsofFlameShinys'),
|
||||
(156,156,0,0,0,100,0,0,0,0,0,0,1,'SinkingSandsShinys'),
|
||||
(157,157,0,0,0,100,0,0,0,0,0,0,1,'LopingPlainsShinys'),
|
||||
(158,158,0,0,0,100,0,0,0,0,0,0,1,'SebilisShinys'),
|
||||
(159,159,0,0,0,100,0,0,0,0,0,0,1,'MoorsofYkeshaShinys'),
|
||||
(160,160,0,0,0,70,20,8,0,0.7,0,0,1,'JestersGarden'),
|
||||
(161,161,0,0,0,100,0,0,0,0,0,0,1,'TimorousDeepShinys'),
|
||||
(162,162,0,0,0,100,0,0,0,0,0,0,1,'FeerrottTomePages'),
|
||||
(163,163,0,0,0,100,0,0,0,0,0,0,1,'RunnyEyeGatheringPages'),
|
||||
(164,164,0,0,0,100,0,0,0,0,0,0,1,'EternalGorgeRogueMagiPages'),
|
||||
(165,165,0,0,0,70,20,8,1,0.7,0.3,0,1,'ZekTomes'),
|
||||
(166,166,0,0,0,0,100,0,0,0,0,0,1,'FallenGateZannasKValsChest'),
|
||||
(167,167,8,0,0,70,50,20,10,5,2,0,1,'DenT1Bonus'),
|
||||
(168,168,0,0,0,70,20,8,1,0.7,0.3,0,1,'TimorousDeepT1FishTEMP'),
|
||||
(169,169,0,0,0,100,0,0,0,0,0,0,1,'OutpostOverlordGlimmeringOre'),
|
||||
(170,170,0,0,0,100,0,0,0,0,0,0,1,'FrostfellVillageShinys'),
|
||||
(171,171,0,0,0,100,0,0,0,0.7,0,0,1,'FrostfellVillageBluetippedPresents'),
|
||||
(172,172,0,0,0,100,0,0,0,0,0,0,1,'FrostfellVillageRedTippedPresents'),
|
||||
(173,173,0,0,0,100,0,0,0,0,0,0,1,'FrostfellVillageRedPresent'),
|
||||
(174,174,0,0,0,100,0,0,0,0,0,0,1,'OutpostOverlordNautilusShell'),
|
||||
(175,175,0,0,0,100,0,0,0,0,0,0,1,'TheCavesIncantationDust'),
|
||||
(176,176,0,0,0,100,0,0,0,0,0,0,1,'TheCavesPowderedMinerals'),
|
||||
(177,177,0,0,0,100,0,0,0,0,0,0,1,'ForestRuinsPack'),
|
||||
(178,178,0,0,0,100,0,0,0,0,0,0,1,'ForestRuinsRubble'),
|
||||
(179,179,0,0,0,100,0,0,0,0,0,0,1,'Oakmyst_KegofBooze'),
|
||||
(180,180,0,0,0,100,0,0,0,0,0,0,1,'EstateUnrestTome'),
|
||||
(181,181,0,0,0,100,0,0,0,0,0,0,1,'EstateUnrestHalasianWhiskey'),
|
||||
(182,1127,0,0,0,100,0,0,0,0,0,0,1,'GnomishEquations1'),
|
||||
(183,1128,0,0,0,100,0,0,0,0,0,0,1,'ShellCollectionShinies'),
|
||||
(184,1129,0,0,0,100,0,0,0,0,0,0,1,'FeatherCollectionShinies'),
|
||||
(185,1130,0,0,0,100,0,0,0,0,0,0,1,'EstateUnrestVeryWaterDownCocktail'),
|
||||
(186,1131,0,0,0,100,0,0,0,0,0,0,1,'BloodskullStandingOrders'),
|
||||
(187,1132,0,0,0,100,0,0,0,0,0,0,1,'CommonLandsFrenzyRoot'),
|
||||
(188,1131,0,0,0,100,0,0,0,0,0,0,1,'BloodskullStandingOrders'),
|
||||
(189,1133,0,0,0,100,0,0,0,0,0,0,1,'KaladimShinys'),
|
||||
(190,1134,0,0,0,50,0,0,0,0,0,0,1,'DisturbedSoil'),
|
||||
(191,1135,0,0,0,100,0,0,0,0,0,0,1,'CommonlandsBloodstainedFingerBones'),
|
||||
(192,1136,0,0,0,100,0,0,0,0,0,0,1,'BaubleshireTinkerfestCog'),
|
||||
(193,1137,0,0,0,100,0,0,0,0,0,0,1,'EnchantedDryadGrottoPurples'),
|
||||
(194,1138,0,0,0,100,0,0,0,0,0,0,1,'(BD)MinerMilkSombornSangBogWater'),
|
||||
(195,1139,0,0,0,100,0,0,0,0,0,0,1,'(BD)BixieHoneyWindstalkersCiderCrossroadAle'),
|
||||
(196,1140,0,0,0,100,0,0,0,0,0,0,1,'(BD)ClaymoreAleAshfallCragSaplingsLambic'),
|
||||
(197,1141,0,0,0,100,0,0,0,0,0,0,1,'SinkingSandsExcavationTrinkets'),
|
||||
(198,1142,0,0,0,100,0,0,0,0,0,0,1,'EnchantedFayGrottoPurples'),
|
||||
(199,1143,0,0,0,100,0,0,0,0,0,0,1,'FreeportCityFestivalPurples'),
|
||||
(200,1144,0,0,0,100,0,0,0,0,0,0,1,'HallasCityFestivalPurples'),
|
||||
(201,1145,0,0,0,100,0,0,0,0,0,0,1,'BristlebaneImpossiblyRareObjects'),
|
||||
(202,1146,0,0,0,100,0,0,0,0,0,0,1,'KelethinPostageCollectionPurples'),
|
||||
(203,1147,0,0,0,100,0,0,0,0,0,0,1,'EnchantedZygomydGrottoPurples'),
|
||||
(204,1148,0,0,0,100,0,0,0,0,0,0,1,'EnchantedNaiadGrottoPurples'),
|
||||
(205,1149,0,0,0,100,0,0,0,0,0,0,1,'NeriakCityFestivalPostagePurples'),
|
||||
(206,1150,0,0,0,100,0,0,0,0,0,0,1,'QeynosCityFestivalPostagePurples'),
|
||||
(207,1151,0,0,0,100,0,0,0,0,0,0,1,'(HF)SamplesofDestinyPurples'),
|
||||
(208,1152,0,0,0,100,0,0,0,0,0,0,1,'(TF)TinkeredPartsPurples'),
|
||||
(209,1153,0,0,0,100,0,0,0,0,0,0,1,'EnchantedBrownieGrottoPurples'),
|
||||
(210,210,0,0,0,100,0,0,0,0,0,0,1,'QeynosIslandPirateSkull'),
|
||||
(211,211,0,0,0,100,0,0,0,0,0,0,1,'PeatBogMud'),
|
||||
(212,212,0,0,0,100,0,0,0,0,0,0,1,'BigBend_Rubbish'),
|
||||
(213,213,0,0,0,100,0,0,0,0,0,0,1,'BigBend_ThrownAwayBones'),
|
||||
(214,214,0,0,0,100,0,0,0,0,0,0,1,'BigBend_QeynosianVase'),
|
||||
(215,215,0,0,0,100,0,0,0,0,0,0,1,'BigBend_AShrub'),
|
||||
(216,216,0,0,0,100,0,0,0,0,0,0,1,'Mizan_Stone'),
|
||||
(217,217,0,0,0,98,0,0,0,1,0,0,1,'HerbT1-Classic'),
|
||||
(218,218,0,0,0,98,0,0,0,1,0,0,1,'BushT1-Classic'),
|
||||
(219,219,0,0,0,85,0,0,0,1,0,0,1,'FishT1-Classic'),
|
||||
(220,220,0,0,0,85,0,0,0,1,0,0,1,'StoneT1-Classic'),
|
||||
(221,221,0,0,0,85,0,0,0,0,0,0,1,'RootsT1-IoR'),
|
||||
(222,222,0,0,0,85,0,0,0,0,0,0,1,'WoodT1-IoR'),
|
||||
(223,223,0,0,0,85,0,0,0,0,0,0,1,'Stone/OreT1-IoR'),
|
||||
(224,224,0,0,0,80,0,0,0,0,0,0,1,'Pepper-IoR'),
|
||||
(225,1154,0,0,0,100,0,0,0,0,0,0,1,'ClassicT1Shinies- Good'),
|
||||
(226,226,0,0,0,100,0,0,0,0,0,0,1,'TimorousDeepCuriousOre'),
|
||||
(227,227,0,0,0,100,0,0,0,0,0,0,1,'TimorousDeepExcavatedDebris'),
|
||||
(228,228,45,0,0,100,0,0,1,1,0,0,1,'WoodT2-Rare'),
|
||||
(229,1155,45,0,0,99,0,0,0,1,0,0,1,'WoodT2-Classic'),
|
||||
(230,230,45,0,0,99,0,0,0,1,0,0,1,'OreT2-Classic'),
|
||||
(231,231,45,0,0,99,0,0,0,1,0,0,1,'StoneT2-Classic'),
|
||||
(232,232,45,0,0,99,0,0,0,1,0,0,1,'RootsT2-Classic'),
|
||||
(233,233,45,0,0,99,0,0,0,1,0,0,1,'BushT2-Classic-Antonica'),
|
||||
(234,234,45,0,0,0,0,0,0,1,0,0,1,'HerbT2-Classic'),
|
||||
(235,235,45,0,0,99,0,0,0,1,0,0,1,'FishT2-Classic'),
|
||||
(236,236,45,0,0,99,0,0,0,1,0,0,1,'DenT2-Classic-Antonica'),
|
||||
(237,237,45,0,0,99,0,0,0,1,0,0,1,'DenT2-Classic-Commonlands'),
|
||||
(238,238,45,0,0,99,0,0,0,1,0,0,1,'BushT2-Classic-Commonlands');
|
11
sql/guild_colors.sql
Executable file
11
sql/guild_colors.sql
Executable file
@ -0,0 +1,11 @@
|
||||
DROP TABLE IF EXISTS guild_colors;
|
||||
CREATE TABLE guild_colors (
|
||||
id INTEGER PRIMARY KEY,
|
||||
guild_id INTEGER NOT NULL DEFAULT 0,
|
||||
color_type TEXT,
|
||||
red REAL NOT NULL DEFAULT 0,
|
||||
green REAL NOT NULL DEFAULT 0,
|
||||
blue REAL NOT NULL DEFAULT 0,
|
||||
UNIQUE(guild_id, color_type),
|
||||
FOREIGN KEY (guild_id) REFERENCES guilds(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
101
sql/guild_event_defaults.sql
Executable file
101
sql/guild_event_defaults.sql
Executable file
@ -0,0 +1,101 @@
|
||||
DROP TABLE IF EXISTS guild_event_defaults;
|
||||
CREATE TABLE guild_event_defaults (
|
||||
id INTEGER PRIMARY KEY,
|
||||
event_id INTEGER NOT NULL,
|
||||
event_name TEXT NOT NULL DEFAULT '',
|
||||
retain INTEGER NOT NULL DEFAULT 1,
|
||||
broadcast INTEGER NOT NULL DEFAULT 1,
|
||||
UNIQUE(event_id, event_name)
|
||||
);
|
||||
|
||||
INSERT INTO guild_event_defaults VALUES
|
||||
(1,0,'GUILD_EVENT_GUILD_LEVEL_UP',1,1),
|
||||
(2,1,'GUILD_EVENT_GUILD_LEVEL_DOWN',1,1),
|
||||
(3,2,'GUILD_EVENT_DISCOVERS_ITEM',1,1),
|
||||
(4,3,'GUILD_EVENT_GAINS_ADV_LEVEL_1_10',1,1),
|
||||
(5,4,'GUILD_EVENT_GAINS_ADV_LEVEL_11_20',1,1),
|
||||
(6,5,'GUILD_EVENT_GAINS_ADV_LEVEL_21_30',1,1),
|
||||
(7,6,'GUILD_EVENT_GAINS_ADV_LEVEL_31_40',1,1),
|
||||
(8,7,'GUILD_EVENT_GAINS_ADV_LEVEL_41_50',1,1),
|
||||
(9,8,'GUILD_EVENT_GAINS_TS_LEVEL_1_10',1,1),
|
||||
(10,9,'GUILD_EVENT_GAINS_TS_LEVEL_11_20',1,1),
|
||||
(11,10,'GUILD_EVENT_GAINS_TS_LEVEL_21_30',1,1),
|
||||
(12,11,'GUILD_EVENT_GAINS_TS_LEVEL_31_40',1,1),
|
||||
(13,12,'GUILD_EVENT_GAINS_TS_LEVEL_41_50',1,1),
|
||||
(14,13,'GUILD_EVENT_MEMBER_JOINS',1,1),
|
||||
(15,14,'GUILD_EVENT_MEMBER_LEAVES',1,1),
|
||||
(16,15,'GUILD_EVENT_MEMBER_PROMOTED',1,1),
|
||||
(17,16,'GUILD_EVENT_MEMBER_DEMOTED',1,1),
|
||||
(18,19,'GUILD_EVENT_COMPLETES_HERITAGE_QUEST',1,1),
|
||||
(19,20,'GUILD_EVENT_KILLS_EPIC_MONSTER',1,1),
|
||||
(20,21,'GUILD_EVENT_LOOTS_ARTIFACT',1,1),
|
||||
(21,22,'GUILD_EVENT_LOOTS_FABELED_ITEM',1,1),
|
||||
(22,23,'GUILD_EVENT_LOOTS_LEGENDARY_ITEM',1,1),
|
||||
(23,24,'GUILD_EVENT_COMPLETES_WRIT',1,1),
|
||||
(24,25,'GUILD_EVENT_LOOTS_MYTHICAL_ITEM',1,1),
|
||||
(25,26,'GUILD_EVENT_GAINS_ADV_LEVEL_10',1,1),
|
||||
(26,27,'GUILD_EVENT_GAINS_ADV_LEVEL_20',1,1),
|
||||
(27,28,'GUILD_EVENT_GAINS_ADV_LEVEL_30',1,1),
|
||||
(28,29,'GUILD_EVENT_GAINS_ADV_LEVEL_40',1,1),
|
||||
(29,30,'GUILD_EVENT_GAINS_ADV_LEVEL_50',1,1),
|
||||
(30,31,'GUILD_EVENT_GAINS_TS_LEVEL_10',1,1),
|
||||
(31,32,'GUILD_EVENT_GAINS_TS_LEVEL_20',1,1),
|
||||
(32,33,'GUILD_EVENT_GAINS_TS_LEVEL_30',1,1),
|
||||
(33,34,'GUILD_EVENT_GAINS_TS_LEVEL_40',1,1),
|
||||
(34,35,'GUILD_EVENT_GAINS_TS_LEVEL_50',1,1),
|
||||
(35,37,'GUILD_EVENT_GAINS_ADV_LEVEL_51_60',1,1),
|
||||
(36,38,'GUILD_EVENT_GAINS_TS_LEVEL_51_60',1,1),
|
||||
(37,39,'GUILD_EVENT_GAINS_ADV_LEVEL_60',1,1),
|
||||
(38,40,'GUILD_EVENT_GAINS_TS_LEVEL_60',1,1),
|
||||
(39,41,'GUILD_EVENT_GAINS_ADV_LEVEL_61_70',1,1),
|
||||
(40,42,'GUILD_EVENT_GAINS_TS_LEVEL_61_70',1,1),
|
||||
(41,43,'GUILD_EVENT_GAINS_ADV_LEVEL_70',1,1),
|
||||
(42,44,'GUILD_EVENT_GAINS_TS_LEVEL_70',1,1),
|
||||
(43,45,'GUILD_EVENT_GAINS_AA_10',1,1),
|
||||
(44,46,'GUILD_EVENT_GAINS_AA_20',1,1),
|
||||
(45,47,'GUILD_EVENT_GAINS_AA_30',1,1),
|
||||
(46,48,'GUILD_EVENT_GAINS_AA_40',1,1),
|
||||
(47,49,'GUILD_EVENT_GAINS_AA_50',1,1),
|
||||
(48,50,'GUILD_EVENT_GAINS_AA_1_10',1,1),
|
||||
(49,51,'GUILD_EVENT_GAINS_AA_11_20',1,1),
|
||||
(50,52,'GUILD_EVENT_GAINS_AA_21_30',1,1),
|
||||
(51,53,'GUILD_EVENT_GAINS_AA_31_40',1,1),
|
||||
(52,54,'GUILD_EVENT_GAINS_AA_41_50',1,1),
|
||||
(53,55,'GUILD_EVENT_BECOMES_RECRUITER',1,1),
|
||||
(54,56,'GUILD_EVENT_NO_LONGER_RECRUITER',1,1),
|
||||
(55,57,'GUILD_EVENT_HERALDY_CHANGE',1,1),
|
||||
(56,58,'GUILD_EVENT_GAINS_AA_60',1,1),
|
||||
(57,59,'GUILD_EVENT_GAINS_AA_70',1,1),
|
||||
(58,60,'GUILD_EVENT_GAINS_AA_80',1,1),
|
||||
(59,61,'GUILD_EVENT_GAINS_AA_90',1,1),
|
||||
(60,62,'GUILD_EVENT_GAINS_AA_100',1,1),
|
||||
(61,63,'GUILD_EVENT_GAINS_AA_51_60',1,1),
|
||||
(62,64,'GUILD_EVENT_GAINS_AA_61_70',1,1),
|
||||
(63,65,'GUILD_EVENT_GAINS_AA_71_80',1,1),
|
||||
(64,66,'GUILD_EVENT_GAINS_AA_81_90',1,1),
|
||||
(65,67,'GUILD_EVENT_GAINS_AA_91_100',1,1),
|
||||
(66,68,'GUILD_EVENT_GAINS_ADV_LEVEL_80',1,1),
|
||||
(67,69,'GUILD_EVENT_GAINS_TS_LEVEL_80',1,1),
|
||||
(68,70,'GUILD_EVENT_GAINS_ADV_LEVEL_71_80',1,1),
|
||||
(69,71,'GUILD_EVENT_GAINS_TS_LEVEL_71_80',1,1),
|
||||
(70,72,'GUILD_EVENT_GAINS_AA_110',1,1),
|
||||
(71,73,'GUILD_EVENT_GAINS_AA_120',1,1),
|
||||
(72,74,'GUILD_EVENT_GAINS_AA_130',1,1),
|
||||
(73,75,'GUILD_EVENT_GAINS_AA_140',1,1),
|
||||
(74,76,'GUILD_EVENT_GAINS_AA_101_110',1,1),
|
||||
(75,77,'GUILD_EVENT_GAINS_AA_111_120',1,1),
|
||||
(76,78,'GUILD_EVENT_GAINS_AA_121_130',1,1),
|
||||
(77,79,'GUILD_EVENT_GAINS_AA_131_140',1,1),
|
||||
(78,80,'GUILD_EVENT_GAINS_AA_150',1,1),
|
||||
(79,81,'GUILD_EVENT_GAINS_AA_141_150',1,1),
|
||||
(80,82,'GUILD_EVENT_GAINS_AA_160',1,1),
|
||||
(81,83,'GUILD_EVENT_GAINS_AA_170',1,1),
|
||||
(82,84,'GUILD_EVENT_GAINS_AA_180',1,1),
|
||||
(83,85,'GUILD_EVENT_GAINS_AA_190',1,1),
|
||||
(84,86,'GUILD_EVENT_GAINS_AA_200',1,1),
|
||||
(85,87,'GUILD_EVENT_GAINS_AA_151_160',1,1),
|
||||
(86,88,'GUILD_EVENT_GAINS_AA_161_170',1,1),
|
||||
(87,89,'GUILD_EVENT_GAINS_AA_171_180',1,1),
|
||||
(88,90,'GUILD_EVENT_GAINS_AA_181_190',1,1),
|
||||
(89,91,'GUILD_EVENT_GAINS_AA_191_200',1,1),
|
||||
(90,92,'GUILD_EVENT_EARNS_ACHIEVEMENT',1,1);
|
10
sql/guild_event_filters.sql
Executable file
10
sql/guild_event_filters.sql
Executable file
@ -0,0 +1,10 @@
|
||||
DROP TABLE IF EXISTS guild_event_filters;
|
||||
CREATE TABLE guild_event_filters (
|
||||
id INTEGER PRIMARY KEY,
|
||||
guild_id INTEGER NOT NULL DEFAULT 0,
|
||||
event_id INTEGER NOT NULL DEFAULT 0,
|
||||
retain INTEGER NOT NULL DEFAULT 1,
|
||||
broadcast INTEGER NOT NULL DEFAULT 1,
|
||||
UNIQUE(guild_id, event_id),
|
||||
FOREIGN KEY (guild_id) REFERENCES guilds(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
15
sql/guild_events.sql
Executable file
15
sql/guild_events.sql
Executable file
@ -0,0 +1,15 @@
|
||||
DROP TABLE IF EXISTS guild_events;
|
||||
CREATE TABLE guild_events (
|
||||
id INTEGER PRIMARY KEY,
|
||||
guild_id INTEGER NOT NULL DEFAULT 0,
|
||||
event_id INTEGER NOT NULL DEFAULT 0,
|
||||
event_date INTEGER NOT NULL DEFAULT 0,
|
||||
event_type INTEGER NOT NULL DEFAULT 0,
|
||||
description TEXT NOT NULL,
|
||||
display INTEGER NOT NULL DEFAULT 0,
|
||||
locked INTEGER NOT NULL DEFAULT 0,
|
||||
archived INTEGER NOT NULL DEFAULT 0,
|
||||
UNIQUE(guild_id, event_id),
|
||||
FOREIGN KEY (guild_id) REFERENCES guilds(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
CREATE INDEX idx_guild_events_event_date ON guild_events(event_date);
|
20
sql/guild_members.sql
Executable file
20
sql/guild_members.sql
Executable file
@ -0,0 +1,20 @@
|
||||
DROP TABLE IF EXISTS guild_members;
|
||||
CREATE TABLE guild_members (
|
||||
id INTEGER PRIMARY KEY,
|
||||
guild_id INTEGER NOT NULL DEFAULT 0,
|
||||
char_id INTEGER NOT NULL DEFAULT 0,
|
||||
recruiter_id INTEGER NOT NULL DEFAULT 0,
|
||||
guild_status INTEGER NOT NULL DEFAULT 0,
|
||||
points REAL NOT NULL DEFAULT 0,
|
||||
rank_id INTEGER NOT NULL DEFAULT 7,
|
||||
member_flags INTEGER NOT NULL DEFAULT 0,
|
||||
join_date INTEGER NOT NULL DEFAULT 0,
|
||||
note TEXT,
|
||||
officer_note TEXT,
|
||||
recruiting_message TEXT,
|
||||
recruiter_picture_data BLOB,
|
||||
UNIQUE(guild_id, char_id),
|
||||
FOREIGN KEY (guild_id) REFERENCES guilds(id) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
FOREIGN KEY (char_id) REFERENCES characters(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
CREATE INDEX idx_guild_members_char_id ON guild_members(char_id);
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user