Skip to main content

📚 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 /registerbattle command 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:

ParameterDescriptionExample
MonsterMonster ID from MonsterSetBase.txt295, 592, 294
MapMap number (59 = Crystal Battle)59
MoveRangeHow far monster can move from spawn3 = stay close, 30 = roam
MapXMin/YMinSpawn area minimum coordinates132, 223
MapXMax/YMaxSpawn area maximum coordinates178, 248
RespawnTimeSeconds until respawn (0 = instant)0, 3600
DirSpawn direction (-1 = random)-1
ElementElemental attribute0 = none
QuantityNumber of monsters to spawn10, 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 NeedTimeToScore seconds
  • 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.lua for all parameters and detailed examples.