📚 CRYSTAL BATTLE EVENT
Quick Description
The Crystal Battle Event is a PvP arena where players fight to complete the seal within the event! It features guild battles, monster spawns, automatic scheduling, and rewards for top killers.
How it works
- Event runs automatically at scheduled times or manually by GMs
- Players register using
/registerbattlecommand during registration phase - All registered players teleport to Crystal Battle arena (Map 59)
- Guild Leaders must complete the seal to score
- Top killers receive special rewards
- The event ends when time runs out and the last guild to complete the seal will be the winner.
Main settings & commands
Player commands
/registerbattle- Register for the event during registration phase
GM commands
/openbattle- Open registration phase (requires GM level 16+)/announcebattle- Announce the event to all players/startbattle- Manually start the event immediately
Configuration
- Enable/disable:
Config.Switch = true/false - Event duration:
Config.EventMaxTime = 900(15 minutes) - Time to damage crystal:
Config.NeedTimeToScore = 10(seconds) - Registration time:
Config.TimeToRegister = 12(minutes) - Kick losers:
Config.KickNoWinner = 1(yes/no) - Damage boost:
Config.DamageRateInc = 100(percentage) - Friendly fire block:
Config.FriendFireBlock = 1(yes/no)
Quick config (CrystalBattleConfig.lua)
Config = {
Switch = true, -- Enable/disable system
ServerCode = {0, 11, 19}, -- Active server codes
-- Event timing
EventMaxTime = 900, -- Event duration in seconds (15 minutes)
NeedTimeToScore = 10, -- Seconds needed to damage crystal to score
TimeToRegister = 12, -- Registration time in minutes
KickNoWinner = 1, -- Kick losing team: 1 = yes, 0 = no
-- Gameplay modifiers
DamageRateInc = 100, -- Damage increase % in arena
FriendFireBlock = 1, -- Block team damage: 1 = yes, 0 = no
-- Teleport coordinates
RemoveFromCastleMapX = 143, -- Exit X coordinate
RemoveFromCastleMapY = 191, -- Exit Y coordinate
-- Battle arena coordinates
EventMap = 59, -- Crystal Battle map ID
EventMapX1 = 97, -- Arena min X
EventMapY1 = 214, -- Arena min Y
EventMapX2 = 181, -- Arena max X
EventMapY2 = 254, -- Arena max Y
EventPositionRegistrationX = 143, -- Spawn X
EventPositionRegistrationY = 245, -- Spawn Y
-- GM commands
OpenCommandString = "/openbattle",
AnnounceCommandString = "/announcebattle",
StartCommandString = "/startbattle",
RegisterCommandString = "/registerbattle",
GMCommandMinLevel = 16, -- Minimum GM level
-- Automatic mode settings
AIRegisterTime = 300, -- Registration duration (5 minutes)
AIAnnounceTime = 40, -- Announcement time before start (40 seconds)
AIEventTime = 900, -- Event duration (15 minutes)
IARegisterCD = 300, -- Cooldown after registration closes
IAAnnounceCD = 30, -- Cooldown after announcement
-- Event schedule (automatic start times)
Scheduler = {
{Year = -1, Month = -1, Day = -1, DoW = -1, Hour = 05, Minute = 39, Second = 00},
{Year = -1, Month = -1, Day = -1, DoW = -1, Hour = 10, Minute = 39, Second = 00},
{Year = -1, Month = -1, Day = -1, DoW = -1, Hour = 15, Minute = 39, Second = 00},
{Year = -1, Month = -1, Day = -1, DoW = -1, Hour = 20, Minute = 39, Second = 00},
},
-- Top killer rewards
TopKillReward = {
[1] = {WCoinC = 1000, WCoinP = 500, GoblinPoint = 100, Ruud = 50000}, -- 1st place
[2] = {WCoinC = 500, WCoinP = 250, GoblinPoint = 50, Ruud = 25000}, -- 2nd place
},
}
Monster spawn configuration
Monsters can spawn in the arena to add challenge:
UseSpots = true, -- Enable monster spawns
Spots = {
-- Roaming monsters (large area, respawn every hour)
{
Monster = 295, -- Monster ID
Map = 59, -- Crystal Battle map
MoveRange = 30, -- Movement radius
MapXMin = 132, MapYMin = 223, -- Spawn area min
MapXMax = 178, MapYMax = 248, -- Spawn area max
RespawnTime = 3600, -- Respawn in 1 hour (seconds)
Dir = -1, -- Random direction
Element = 0, -- No element
Quantity = 10 -- Spawn 10 monsters
},
-- Elite monsters (more spawns)
{
Monster = 592,
Map = 59,
MoveRange = 30,
MapXMin = 132, MapYMin = 223,
MapXMax = 178, MapYMax = 248,
RespawnTime = 3600,
Dir = -1,
Element = 0,
Quantity = 30 -- Spawn 30 monsters
},
-- Guardian monsters (small area, instant respawn)
{
Monster = 294, -- Crystal guardian
Map = 59,
MoveRange = 3, -- Stay close to spawn
MapXMin = 153, MapYMin = 219,
MapXMax = 154, MapYMax = 221,
RespawnTime = 0, -- Instant respawn
Dir = -1,
Element = 0,
Quantity = 10
},
-- Corner defenders (strategic positions)
{
Monster = 293,
Map = 59,
MoveRange = 3,
MapXMin = 132, MapYMin = 223,
MapXMax = 133, MapYMax = 225,
RespawnTime = 0, -- Instant respawn
Dir = -1,
Element = 0,
Quantity = 10
},
}
Monster spawn parameters explained:
| Parameter | Description | Example |
|---|---|---|
Monster | Monster ID from MonsterSetBase.txt | 295, 592, 294 |
Map | Map number (59 = Crystal Battle) | 59 |
MoveRange | How far monster can move from spawn | 3 = stay close, 30 = roam |
MapXMin/YMin | Spawn area minimum coordinates | 132, 223 |
MapXMax/YMax | Spawn area maximum coordinates | 178, 248 |
RespawnTime | Seconds until respawn (0 = instant) | 0, 3600 |
Dir | Spawn direction (-1 = random) | -1 |
Element | Elemental attribute | 0 = none |
Quantity | Number of monsters to spawn | 10, 30 |
Rewards system
Top killer rewards
Players with most kills receive special rewards:
TopKillReward = {
-- 1st place (most kills)
[1] = {
WCoinC = 1000, -- 1000 WCoin C
WCoinP = 500, -- 500 WCoin P
GoblinPoint = 100, -- 100 Goblin Points
Ruud = 50000 -- 50,000 Ruud
},
-- 2nd place
[2] = {
WCoinC = 500, -- 500 WCoin C
WCoinP = 250, -- 250 WCoin P
GoblinPoint = 50, -- 50 Goblin Points
Ruud = 25000 -- 25,000 Ruud
},
}
Example custom rewards:
TopKillReward = {
[1] = {WCoinC = 2000, WCoinP = 1000, GoblinPoint = 200, Ruud = 100000},
[2] = {WCoinC = 1500, WCoinP = 750, GoblinPoint = 150, Ruud = 75000},
[3] = {WCoinC = 1000, WCoinP = 500, GoblinPoint = 100, Ruud = 50000}, -- Add 3rd place
}
Event schedule explained
Scheduler = {
{Year = -1, Month = -1, Day = -1, DoW = -1, Hour = 05, Minute = 39, Second = 00},
-- -1 = Any (Year/Month/Day/DayOfWeek)
-- DoW: 0=Sunday, 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, 6=Saturday
}
Example schedules:
Every day at 14:00:
{Year = -1, Month = -1, Day = -1, DoW = -1, Hour = 14, Minute = 0, Second = 0}
Only on weekends at 20:00:
{Year = -1, Month = -1, Day = -1, DoW = 6, Hour = 20, Minute = 0, Second = 0}, -- Saturday
{Year = -1, Month = -1, Day = -1, DoW = 0, Hour = 20, Minute = 0, Second = 0}, -- Sunday
Prime time schedule:
Scheduler = {
{Hour = 12, Minute = 0}, -- Lunch time
{Hour = 18, Minute = 0}, -- Evening
{Hour = 21, Minute = 0}, -- Night
}
Automatic mode timing
The AI (automatic) mode has specific timing phases:
AIRegisterTime = 300, -- Registration open for 5 minutes
AIAnnounceTime = 40, -- Announce event 40 seconds before start
AIEventTime = 900, -- Event runs for 15 minutes
IARegisterCD = 300, -- 5 minute cooldown after registration
IAAnnounceCD = 30, -- 30 second cooldown after announcement
Timeline example:
00:00 - Registration opens (AIRegisterTime starts)
05:00 - Registration closes
05:00 - Cooldown period (IARegisterCD)
10:00 - Announcement phase (AIAnnounceTime)
10:40 - Event starts!
10:40 - Battle begins (AIEventTime)
25:40 - Event ends
Event flow example
🔔 Phase 1: Registration (12 minutes)
[Crystal Battle] Registration is now open!
Type /registerbattle to join!
Time remaining: 12 minutes
📢 Phase 2: Announcement (40 seconds)
[Crystal Battle] Event starting in 40 seconds!
All registered players, prepare for battle!
⚔️ Phase 3: Battle starts
[Crystal Battle] FIGHT!
Guild leaders try to complete the seal!
Protect your team's crystals!
Team Red: 50 players
Team Blue: 48 players
💎 Phase 4: Crystal damage
[Crystal Battle] Blue team is attacking Red crystal!
Continue damage for 10 seconds to score!
Blue Team: 2 crystals destroyed
Red Team: 1 crystal destroyed
🏆 Phase 5: Event ends
[Crystal Battle] Event finished!
Winner: Blue Team!
Top Killers:
1st: MasterPVP - 25 kills (+1000 WCoinC, +500 WCoinP)
2nd: WarriorKing - 18 kills (+500 WCoinC, +250 WCoinP)
Blue team members receive rewards!
Red team will be kicked from arena.
Gameplay mechanics
Crystal damage system
- Players must continuously damage a crystal for
NeedTimeToScoreseconds - If damage stops, timer resets
- Multiple players can attack same crystal (faster destroy)
- Crystals have high HP and defense
Friendly fire protection
FriendFireBlock = 1, -- Teammates cannot damage each other
FriendFireBlock = 0, -- Free for all (chaos mode!)
Damage boost
DamageRateInc = 100, -- 100% increased damage (double damage)
DamageRateInc = 200, -- 200% increased damage (triple damage)
DamageRateInc = 0, -- No damage boost (normal damage)
Winner/Loser handling
KickNoWinner = 1, -- Losing team gets kicked from arena
KickNoWinner = 0, -- Everyone stays (can explore/fight)
Arena map configuration
EventMap = 59, -- Crystal Battle arena map ID
-- Battle area boundaries
EventMapX1 = 97, -- Left boundary
EventMapY1 = 214, -- Top boundary
EventMapX2 = 181, -- Right boundary
EventMapY2 = 254, -- Bottom boundary
-- Player spawn point
EventPositionRegistrationX = 143,
EventPositionRegistrationY = 245,
-- Exit coordinates (after event)
RemoveFromCastleMapX = 143, -- Lorencia safe zone
RemoveFromCastleMapY = 191,
Visual representation:
Arena boundaries: (97, 214) to (181, 254)
Size: 84x40 coordinates
Spawn point: (143, 245) - center of arena
Tips for configuration
✅ Balance event duration
EventMaxTime = 600, -- 10 minutes (fast-paced)
EventMaxTime = 900, -- 15 minutes (balanced)
EventMaxTime = 1200, -- 20 minutes (epic battles)
✅ Adjust crystal damage time
NeedTimeToScore = 5, -- 5 seconds (easy to destroy)
NeedTimeToScore = 10, -- 10 seconds (balanced)
NeedTimeToScore = 20, -- 20 seconds (very tanky)
✅ Configure monster difficulty
-- Easy mode: Few weak monsters
{Monster = 295, Quantity = 5, RespawnTime = 3600}
-- Hard mode: Many strong monsters
{Monster = 592, Quantity = 50, RespawnTime = 60}
✅ Set registration time for server size
TimeToRegister = 5, -- Small server (quick fill)
TimeToRegister = 12, -- Medium server (balanced)
TimeToRegister = 20, -- Large server (more time to join)
✅ Scale rewards for economy
TopKillReward = {
[1] = {WCoinC = 5000, Ruud = 100000}, -- High reward server
[1] = {WCoinC = 100, Ruud = 5000}, -- Low reward server
}
Advanced features
Guild vs Guild battles
- Guilds can organize team battles
- Guild members automatically grouped
- Team coordination with friendly fire disabled
Strategic monster placement
- Guardians near crystals (small MoveRange)
- Roaming monsters in pathways (large MoveRange)
- Elite monsters in center (high Quantity)
Multi-server support
ServerCode = {0, 11, 19}, -- Run on specific servers only
GM control system
/openbattle- Start registration manually/announcebattle- Send announcement/startbattle- Force start immediately- Requires
GMCommandMinLevel = 16
Common configurations
Fast-paced battles (10 minutes)
EventMaxTime = 600,
NeedTimeToScore = 5,
DamageRateInc = 200,
TimeToRegister = 5,
Timer long battles (30 minutes)
EventMaxTime = 1800,
NeedTimeToScore = 15,
DamageRateInc = 50,
TimeToRegister = 15,
Guild war mode
FriendFireBlock = 1, -- No team damage
DamageRateInc = 100,
UseSpots = false, -- No monsters (pure PvP)
Chaos mode
FriendFireBlock = 0, -- Free for all!
DamageRateInc = 300, -- Triple damage
UseSpots = true,
Quantity = 100, -- Many monsters
See
CrystalBattleConfig.luafor all parameters and detailed examples.