Skip to main content

Overview

The Seven Signs is a recurring server-wide event system where players join either the Dawn or Dusk cabal to compete for control of three sacred seals. The winning cabal gains special bonuses and access to exclusive NPCs and areas.
Seven Signs operates on a weekly cycle with distinct competition and validation periods, affecting the entire game world’s economy and PvE content.

Cabals

Dawn Cabal

  • Representative: Anakim (NPC ID: 25286)
  • Philosophy: Light and order
  • Bonus: Access to Mammon services when holding seals

Dusk Cabal

  • Representative: Lilith (NPC ID: 25283)
  • Philosophy: Darkness and chaos
  • Bonus: Access to Mammon services when holding seals
Source: SevenSigns.java:60-96

The Three Seals

Seal of Avarice

  • Effect: Controls Mammon Merchant access
  • Bonus: Winning cabal can trade with Mammon Merchant (NPC 31113)
  • Strategy: Economic advantage through exclusive item trading

Seal of Gnosis

  • Effect: Controls Mammon Blacksmith access
  • Bonus: Access to Mammon Blacksmith (NPC 31126) for special crafting
  • NPC Spawns: Enables Orators (31094) and Preachers (31093)

Seal of Strife

  • Effect: Castle siege benefits
  • Bonus: Enhanced siege capabilities for winning cabal
Implementation: SevenSigns.java:64-67

Competition Mechanics

Period Cycle

The Seven Signs system operates on a 2-week cycle:
PeriodDurationPurpose
Recruitment15 minutesPlayers can join/switch cabals
Competition~7 daysActive contribution period
Results15 minutesScore calculation
Seal Validation~7 daysWinners enjoy seal bonuses
Constants:
public static final int PERIOD_COMP_RECRUITING = 0;
public static final int PERIOD_COMPETITION = 1;
public static final int PERIOD_COMP_RESULTS = 2;
public static final int PERIOD_SEAL_VALIDATION = 3;

public static final int PERIOD_MINOR_LENGTH = 900000;      // 15 min
public static final int PERIOD_MAJOR_LENGTH = 604800000 - PERIOD_MINOR_LENGTH;
Source: SevenSigns.java:69-81

Seal Stones

Players contribute by collecting and submitting Seal Stones:
Seal StoneItem IDPoint ValueContribution
Blue Seal Stone636033 points
Green Seal Stone636155 points
Red Seal Stone63621010 points
Mechanics:
  • Obtained from hunting monsters during competition period
  • Turned in to cabal NPCs for contribution points
  • Individual contribution affects personal rewards
  • Total contribution determines cabal score
Source: SevenSigns.java:98-115

Festival System

In addition to seal stones, cabals compete in Seven Signs Festivals:
  • Timed dungeon challenges
  • Party-based PvE content
  • Contribution to cabal’s festival score
  • Blood shards and Ancient Adena rewards
Festival scores are tracked separately from seal stone scores but both contribute to determining the winning cabal.

Scoring System

Total Score Calculation

CabalTotalScore = StoneScore + FestivalScore

Winner Determination

protected int getCabalHighestScore() {
    double dawnTotal = _dawnStoneScore + _dawnFestivalScore;
    double duskTotal = _duskStoneScore + _duskFestivalScore;
    
    if (dawnTotal > duskTotal)
        return CABAL_DAWN;
    else if (duskTotal > dawnTotal)
        return CABAL_DUSK;
    else
        return CABAL_NULL;  // Tie - no winner
}

Seal Assignment

  • Each seal goes to the cabal with highest contribution for that specific seal
  • Possible for seals to be split between cabals
  • Ties result in no cabal controlling the seal

NPC Spawning

Dynamic Spawns

During Seal Validation Period, special NPCs spawn based on seal ownership:
if (isSealValidationPeriod() || isCompResultsPeriod()) {
    // Mammon Marketeer always spawns
    for (AutoSpawnInstance spawnInst : marketeerSpawns) {
        AutoSpawnHandler.getInstance().setSpawnActive(spawnInst, true);
    }
    
    // Gnosis seal holder gets Blacksmith
    if (getSealOwner(SEAL_GNOSIS) == getCabalHighestScore()) {
        AutoSpawnHandler.getInstance().setSpawnActive(blacksmithSpawn, true);
        // Spawn Orators and Preachers
    }
    
    // Avarice seal holder gets Merchant
    if (getSealOwner(SEAL_AVARICE) == getCabalHighestScore()) {
        AutoSpawnHandler.getInstance().setSpawnActive(merchantSpawn, true);
    }
}
Source: SevenSigns.java:241-300

Rewards

Personal Rewards

Based on contribution ranking within winning cabal:
  • Ancient Adena rewards
  • Special items from Mammon
  • Enhanced festival participation bonuses
  • Moderate Ancient Adena rewards
  • Access to Mammon services
  • Basic Ancient Adena rewards
  • Minimal Ancient Adena rewards

Cabal Bonuses

Seal of Avarice:
  • Exclusive trading with Mammon Merchant
  • Special items and consumables
Seal of Gnosis:
  • Mammon Blacksmith services
  • Enchant scrolls and upgrade materials
  • Orator/Preacher buffs and services
Seal of Strife:
  • Castle siege advantages
  • Enhanced spawn rates in specific areas

Database Schema

seven_signs table

CREATE TABLE seven_signs (
    charId INT,
    cabal INT,              -- 0=None, 1=Dusk, 2=Dawn
    seal INT,               -- Which seal they support
    red_stones INT,
    green_stones INT,
    blue_stones INT,
    ancient_adena_amount INT,
    contribution_score INT,
    PRIMARY KEY (charId)
);

seven_signs_status table

Stores current period state:
  • current_cycle: Competition cycle number
  • active_period: Current period (0-3)
  • previous_winner: Last winning cabal
  • Stone scores for each cabal
  • Festival scores for each cabal
  • Seal ownership data

Configuration

Period Timing

public static final int PERIOD_START_HOUR = 18;  // 6 PM
public static final int PERIOD_START_MINS = 00;
public static final int PERIOD_START_DAY = Calendar.MONDAY;

Item Costs

public static final int RECORD_SEVEN_SIGNS_ID = 5707;
public static final int RECORD_SEVEN_SIGNS_COST = 500;

Strategy Tips

Focus on collecting high-value Red Seal Stones (10 points each) from appropriate level monsters. Participate in festivals when your cabal has enough members.
Coordinate festival participation for maximum cabal score contribution. Split between stone farming and festival runs.
If your cabal controls Avarice/Gnosis seals during validation, stockpile Ancient Adena for exclusive Mammon trades.
Prioritize Seal of Strife contribution if your clan actively participates in castle sieges.

Period Transitions

Automatic Period Changes

The system automatically transitions periods:
private class SevenSignsPeriodChange implements Runnable {
    @Override
    public void run() {
        // Calculate winners
        // Update seal ownership
        // Spawn/despawn NPCs
        // Distribute rewards
        // Reset scores for new cycle
    }
}
Scheduled via:
ThreadPool.schedule(new SevenSignsPeriodChange(), milliToChange);
Source: SevenSigns.java:190-192

FAQ

No, you can only join or switch cabals during the Recruitment period (15 minutes at cycle start).
Seal stones are consumed when submitted. Your contribution score is saved for reward calculation regardless of cabal victory.
In case of a tie, no cabal wins and all seals remain uncontrolled until the next competition.
Yes, they are independent systems. However, manage your time as both require regular participation.

References

  • SevenSigns.java - Core event system
  • SevenSignsFestival.java - Festival mechanics
  • Database tables: seven_signs, seven_signs_status

Build docs developers (and LLMs) love