The World/Sect Array Domains·界

Sect Array Domains

v0.11.1

When another sect lays siege to yours, your Patriarch or an Elder can raise the sect's Array Domain (宗门大阵; the game's own text calls the feature Sect Array Domains). It is a ward over every chunk the sect has claimed, the hall and everything built around it. Nothing is placed in the world and no block changes: the array is a status effect on the people standing inside it, a ring of light along the border, and a few sounds. Your members and allies take less damage there. The besieging sect's members are slowed and hit softer. It also shaves the attackers' hold clock, and it fights back against an attacker's Dao Domain when one unfolds inside it.

It exists only in wartime, it is paid for out of the raiser's own contribution, and it falls when the siege does.

Not the Warding formation

The Array Domain is not the Mountain-Guarding Array (护山大阵), the Warding formation a sect lays with a flag. A Warding formation is placed on one chunk, stays until someone disperses it, chokes outsiders' meditation and needs no war to exist. An Array Domain is raised with a command once a siege is declared, covers the whole territory, places nothing and ends with the siege. The two stack on the siege clock. This page says Array Domain for the wartime ward and Warding formation for the placed one, because the game's text uses the word "array" for both.

Raising it

/sect array raise raises the array. Every one of these must hold:

When it works, every member of your sect who is online sees "Your sect's grand array rises over its territory, tuned to Metal. Defenders and allies inside take less damage; invaders are slowed and weakened." and hears a sound, naming the element your sect's array is tuned to (Heavenly Qi when the sect has none, or has one the mod has no flavor for, such as a root an add-on claimed). The besieging sect's online members are told the other half: "Sect Name has raised its grand array... Inside its territory you will be slowed and deal less damage." You get a private receipt, "The array is raised. 100 contribution spent."

When it refuses

The checks run in this order, and the first one that fails is what you are told:

MessageWhy
Sect Array Domains are not enabled on this server.The feature or the sect system is switched off.
Sect arrays are raised in wartime, and wars are switched off on this server.v0.11.1 The array switch is on but Wars-Enabled is off, so there can be no siege.
You are not in a sect.
Your rank in the sect is too low for that.You are not the Patriarch or an Elder.
Your sect holds no hall.There is no territory to cover.
Your sect's array already stands.
No siege has been declared against your sect, so there is nothing for an array to defend against.No siege where your sect is the defender, or it is in a momentary ending phase.
Raising the array costs 100 of your own contribution, and you don't have that much.The number is Sect-Array-Cost-Contribution.
Something prevents that right now.An add-on vetoed the raise (see For add-on developers). Nothing was charged.

Cost and refunds

Raising costs Sect-Array-Cost-Contribution (default 100) of the raiser's own contribution balance, the same currency as declaring a war or posting a guardian, and not the sect's. Set it to 0 and the array is free, though still wartime-only. An add-on can re-price a single raise; whatever is actually charged is what gets refunded.

The territory

The array covers every chunk the sect holds: the hall chunk and the chunk of every building, in whichever world each one lies. A chunk is 32 by 32 blocks and the array reaches every height in it. Who counts as inside is decided on the sect's real claims at that moment, once a second, so ground the sect gives up stops being covered and ground it takes in starts. See Sects for how ground is claimed.

Who is on which side

SideWho
DefendersMembers of the sect itself. Members of any sect that holds a full Alliance with it (Sect Diplomacy; Non-Aggression and Trade pacts do not count). Members of any sect the siege has recorded as a reinforcement.
AttackersMembers of the besieging sect, and only them. The war records reinforcements on the defending side only, so an attacker's allies are not touched.
NeitherEveryone else: other sects, players with no sect, spirit beasts, mobs and every other NPC. Also anyone dead, and a Nascent Soul fleeing as a soul in Soul Escape.

The array touches players only, and it ignores the world's PvP setting. The siege is the consent.

What it does inside

Inside the territory the array gives each player on a side one effect. It is re-applied every second and lasts a second and a half, so it fades about a second after you step out or the array falls. The first time an array catches you, you get a line ("The array of Sect Name closes around you, turning aside part of every blow." for a defender, "The array of Sect Name bears down on you: you are slowed and your blows are weakened." for an attacker) and a sound, once per array, and not again afterward, even if you leave and come back.

DefendersAttackers
Status effectSect Array: WardedMetal Array: Suppressed, and so on for the sect's element
Asset idCultivation_SectArray_DefenderCultivation_SectArray_Attacker_<Element>
Damage taken15% less, from physical (slashing, bludgeoning, crushing), projectile and elemental damage (fire, ice, water, earth, wind, lightning, poison), and from the Dao-element, Dao Reaction and Dao Seal damage the mod adds. Not environmental damage.Unchanged, apart from the element's extra below.
Damage dealtUnchanged.10% less, whatever it hits (physical, elemental and projectile).
MovementUnchanged.15% slower (a horizontal speed of 0.85). Tinted in the element's color.

The attacker effect is skipped on a target that carries Immunity_Slow: such a player gets none of it, not the slow, not the damage cut and not the catch line.

These numbers live in the entity-effect assets, not in the config. Sect-Array-Defender-Damage-Reduction-Percent only changes the figure the Codex and /sect array quote; it does not change what the array does.

Each element's extra

Everything the array does wears the sect's element: the border ring, the attacker effect and the pitch of its sounds. Four elements add one extra to the attacker effect:

ArrayExtra on attackers
MetalTake 12% more physical damage (slashing, bludgeoning and crushing too).
WaterSlowed harder: a speed of 0.75 (25% slower) instead of 0.85.
FireTake 12% more elemental damage, the Dao-element, Dao Reaction and Dao Seal kinds included.
IceCannot sprint.
Wood, Earth, Wind, Poison, Lightning, VoidNone; the base effect only.
Heavenly Qi (a sect with no element)None; the base effect only.

A sect can only name Wood, Earth, Water, Fire or Metal as its Spiritual Root Type, so Ice, Wind, Poison, Lightning and Void arrays appear only for a sect that kept a mutant root from before 0.11.0.

The siege clock

While the array stands, is a real one, and no Siege Banner mutes the hall, it adds Sect-Array-Siege-Slow-Percent (default 15) to the attackers' hold-clock slow during the Contest. It draws from the same budget as the Warding formation and the Sect Guardians: the three are added together and the sum is cut at War-Total-Slow-Max-Percent (default 50). The array has no cap of its own.

SourceAt the defaults
Warding formation10% for a flag-placed array, plus 10% per altar tier, up to 50% (War-Warding-Slow-Base-Percent, War-Warding-Slow-Per-Tier-Percent, War-Warding-Slow-Max-Percent).
Sect Guardians12% for each living guardian, three at most (Guardian-Slow-Per-Living-Percent).
Array Domain15% (Sect-Array-Siege-Slow-Percent).
All togetherCapped at 50% (War-Total-Slow-Max-Percent).

With the array alone, the attackers earn 85 seconds of hold for every 100 they stand on the hall. A tier 3 Warding altar (40%) and three guardians (36%) already reach the cap without it, so the array adds nothing there; it matters most to a sect with modest defenses. An admin test array adds nothing to any siege.

Siege Banners

An attacker's Siege Banner mutes the array. Within War-Siege-Banner-Suppression-Radius-Chunks (default 2) chunks of the banner, a square reach in every direction, the array does nothing at all: no defender buff, no attacker slow, no catch line, and a Dao Domain unfolded there does not clash with it. If a banner's reach covers the hall chunk, the array's share of the siege clock drops to nothing as well, which is the same cut the banner makes to the Warding slow.

The mute holds only during a Contest, which is the only time a banner can stand, and only while War-Siege-Banner-Trap-Suppression-Steps (default 2) is above 0. Any defender can tear a banner down with bare hands, and the array comes back the moment it falls.

Against a Dao Domain

An attacker's Dao Domain that unfolds inside the territory meets the array and the two weigh their power. This needs both Domain-Clash-Enabled and Domain-Clash-Arrays-Enabled (both on by default, in Arts/DaoDomainConfig.json). Only an attacker's domain clashes (a member of the besieging sect, or the one admin who raised a test array), and not one anchored where a Siege Banner already mutes the array. Dao Domains has the full rule, and Against a sect array the same clash seen from the caster's side.

ResultWhat happens
The domain is strongerThe domain stands, and the array is silenced inside the domain's cylinder until the domain ends. Defenders there lose the buff and attackers lose the slow. The caster is told "The array is silenced inside your domain."
The array is strongerThe domain shatters, with the usual clash backlash on its caster: a slow for Domain-Clash-Backlash-Seconds and a share of the Qi the domain cost (Domain-Clash-Backlash-Qi-Percent).
A tieThe domain shatters, without backlash. The array holds.

Each domain meets each array once, when it unfolds, so renaming the sect mid-siege cannot start the clash again. At the defaults a Nascent Soul attacker ties the bare array (4 against 4). If the domain's element overcomes the sect's, the domain wins (5 against 4); if the sect's element overcomes the domain's, the array wins (4 against 5). A Soul Formation attacker beats the bare array (5 against 4) unless the sect's element overcomes the domain's, which ties it (5 against 5), or a defender of Soul Formation or higher stands inside.

How long it lasts

An array stands until something takes it down. The keeper checks about once a second, and every online member of the sect hears the line and a sound.

It ends whenThe line members readRefund
The siege ends, however: the attackers win or lose, the window lapses, or wars are switched offThe siege is over, and the array of Sect Name falls quiet.Only if the siege was called off
The sect loses its hall, to a conquest or by disbandingSect Name has lost its hall, and its array falls with it.No
A Patriarch or Elder runs /sect array lowerThe array of Sect Name is lowered.No
An admin runs /cultivation admin array lower, or an admin test array runs out of timeThe array of Sect Name was taken down by an admin.No
Sect arrays (or sects) are switched off in the configSect arrays have been switched off, and the array of Sect Name falls.No

A siege that has simply ended is given about three seconds before the array comes down, so a rename, which briefly leaves the war book filed under the old name, cannot tear down a paid array; a siege canceled by switching wars off ends it at once. For those few seconds /sect array still reports it as standing.

The array is saved on the sect, in SectsData.json. A server restart in the middle of a siege does not drop it, and if the siege is still going the array carries on. If Sect-Array-Enabled was turned off in the meantime, it ends as soon as the server is up. An admin test array is the exception: it is dropped at server start.

The border

The territory's edge is drawn in the sect element's color: a small ring at every exposed corner of the claimed ground (a corner where the claimed and unclaimed chunks meet, so a long straight edge gets a ring every 32 blocks) and a larger ring at the center of the hall chunk. Anyone nearby sees it, on any side or none.

Commands

Commands
CommandDescriptionPermission
/sect arrayThe status report below. Same as status.cultivation.sect
/sect array statusReports whether the array stands, and if not, why you can or cannot raise it. Any member may ask.cultivation.sect
/sect array raiseRaises the array (Patriarch or Elder).cultivation.sect
/sect array lowerTakes it down, with no refund (Patriarch or Elder). The refusals are Sect Array Domains are not enabled on this server., You are not in a sect., Your rank in the sect is too low for that. and Your sect has no array standing.cultivation.sect
/cultivation admin array raise <sect>An admin test array.cultivation.admin
/cultivation admin array lower <sect>Takes any sect's array down, whoever raised it.cultivation.admin

None of them takes an argument except the admin pair, and there are no aliases or flags. cultivation.sect is granted to everyone by default; the rank checks happen inside the sect.

The status report. With no array standing it prints the header, then "No array stands over your territory. Raising one costs 100 of your own contribution and needs a siege declared against your sect." and either "You can raise it now with /sect array raise." or "You cannot raise it right now:" followed by the first refusal that applies to you. With one standing it prints, in order:

Admin test arrays

A real array needs a siege, and a siege needs two sects with members. /cultivation admin array raise <sect> lets an admin exercise the array's effects, border and clashes on a quiet test server. The sect name is the rest of the line, so it may contain spaces.

Refusals: There is no sect called 'Name'., Name holds no hall, so it has no territory for an array to cover., The array of Name already stands., The array of Name is not standing.

Configuration

mods/Siren_Cultivation/Society/SectArrayConfig.json. Also editable in the Sect Array Domains section of the in-game admin menu (/cultivation admin), where a value typed out of range snaps back at once. A key missing from an older file reads as the default. The mod resets ConfigName and Description-Sect-Array on every load, so do not hand-edit them.

KeyDefaultRangeWhat it does
Sect-Array-EnabledtrueMaster switch. Turning it off ends every standing array within a second, with no refund.
Sect-Array-Cost-Contribution1000 - 1,000,000The raiser's own contribution spent per raise. 0 is free.
Sect-Array-Defender-Damage-Reduction-Percent150 - 90Display only. The figure the Codex and /sect array quote. The real 15% is in the effect asset, so keep the two equal by hand.
Sect-Array-Siege-Slow-Percent150 - 90Percent the array adds to the siege slow budget, before the War-Total-Slow-Max-Percent cap.
Sect-Array-Base-RealmNASCENT_SOULany realmThe floor of the array's clash power. A realm name, or its number from 1 to 7; anything else resets to Nascent Soul.
Sect-Array-Border-Seconds11 - 10Seconds between border redraws.
Sect-Array-Border-Max-Posts160 - 64Border rings shown per viewer; 0 hides the border.
Sect-Array-Admin-Test-Minutes301 - 240How long an admin test array stands.

The file also carries ConfigName, ConfigVersion (2) and the Description-Sect-Array text. The other numbers a player feels, the 15% and 10% damage figures, the 0.85 and 0.75 speeds and the 12% extras, are in the Cultivation_SectArray_* entity-effect assets and are not config keys. Sect-Array-Siege-Slow-Percent shares its ceiling with the keys in Sect Wars; the ones the clash reads live in DaoDomainConfig.json.

The Sect Array Domain article in the in-game Codex (id cultivation:sectArray, in the World category) explains all of this to players, quotes the live cost, slow and cap, and says whether your own sect's array stands.

For add-on developers

Three events in plugin.siren.API.SectArrayEvents, registered with onPreSectArrayRaise, onSectArrayRaised and onSectArrayEnded. See API Events for the shared conventions.

EventCancellableFiresCarries
PreSectArrayRaiseEventYesAfter every gate has passed and before anything is spent. Never fires for an admin raise.sect(), raiser(), cost() / setCost(int). Cancelling fails the raise with Something prevents that right now. The cost left in the event is clamped to 0 - 1,000,000, and the raiser must still hold it.
SectArrayRaisedEventNoThe array stands.sect, raiser (null for an admin raise), cost actually charged, adminRaised.
SectArrayEndedEventNoThe array came down.sect, reason, secondsActive.

The end reasons are SIEGE_ENDED (including a siege canceled by switching wars off, which refunds), HALL_LOST (a conquest took the hall, or the sect was disbanded), LOWERED, ADMIN (including an admin test array timing out) and DISABLED. An end fires from whichever world's keeper noticed it, so do not block, and do not call back into raising or lowering from a listener. A clash with a Dao Domain is reported by DaoDomainEvents.DomainClashEvent, whose second() is null and whose arraySect() names the sect.

See also Sect Wars for the siege itself, Formations for the Warding formation and the Siege Banner, Dao Domains for the domain the array fights, and Sects for territory and contribution.