Idle Class Wiki Assignment

An actor's states can be defined within its DECORATE definition. State sequences describe all the behavior of the actor as well as its animation.

Usage

A state definition is started with the states keyword and enclosed by braces '', ''.

It consists of the following:

State labels

A state label is an identifier followed by a colon (). State labels are used to give names to state. A number of predefined labels exist (such as Spawn: or Death:), corresponding to states needed by the engine.

A single state can have several labels, each on a different line. However, most states do not have a label, instead they merely follow other states in sequences.

State definitions

The main elements of any given state are the following:

  1. Its sprite name
  2. Its frame letter
  3. Its duration in tics
  4. Its associated action function
  5. Its successor (the next state in sequence)

It also might have additional properties which are expressed through special keywords detailed below.

These consist of a sprite name, a frame letter, the duration in tics and optionally additional keywords and an action function name (code pointer). For example:

STUF C 5 Bright A_Look

Here, is the sprite name, is the frame letter, the duration, and the action function.

The successor is defined implicitly as the next defined state, unless a goto, loop, wait, or stop keyword is used to explicitly change it. For instance:

STUF C 5 Bright A_Look STUF D 5 Bright

Here, the successor for the first state is the second state. The second state's successor is not defined in this example.

If several states share the same sprite name, duration, keywords, and action functions, and they follow in sequence, the states can be "collapsed" together by stringing the frame letters in a word.

STUF ABCD 5 Bright A_Look

Here, four different states are defined on a single line. Each of A, B, C, and D are different states. And likewise:

STUF VVVVVV 5 Bright A_Look

The six V states are all entirely identical (except for their successor), but they are nonetheless separate states.

When the duration runs out, the actor moves to the next state in the sequence and runs the new state's action function immediately. Note that setting -1 as a duration means infinite duration. The actor, once it enters this state, will never leave it on its own; though it can still be moved to a different state by external actions (e.g., suffering damage might put it in the Pain state).

Random durations are possible with the function. Alternatively, you can use A_SetTics; this allows to use full-fledged DECORATE expressions to set any kind of dynamic duration; but prevents the state from having another action function.

The next state is automatically implied to be the following letter on a frame sequence, or if there aren't any more states on a line, the states defined in the next line. Alternatively, flow control keywords (loop, wait, goto, stop) listed after a state can change it. Jump functions such as A_Jump will ignore normal sequence logic and immediately move to their designated state, without waiting for the duration to run out first.

Variable duration

A state can have a random duration. Instead of defining a frame like this:

POSS A 10 A_Look

You can define it as:

POSS A random(10,20) A_Look

and the state will last a random duration between 10 and 20 tics, inclusive. More control can be obtained by using the A_SetTics function and DECORATE expressions.

POSS A 0 A_Look POSS A 10 A_SetTics((waterlevel + 10) - (accuracy / 10))

State keywords

The existing keywords can be used in a state between the duration and the action function call.

The sprite will be displayed as fullbright while the actor is in this state. Note that this is ignored in fog.
Mark the state as allowing A_VileChase to target the actor provided the other conditions are met. By default, only states with a -1 (infinite) duration are eligible. Also, if a state with this keyword is reached, a monster is eligible for respawning if respawning is enabled.
The state has its duration halved in fast mode (if using a skill with the property, or the command-line parameter) and for actors with the ALWAYSFAST flag. This has no effect on actors with the NEVERFAST flag.
Adds a dynamic light to the state. See below for further information.
Forces the action function associated to the state to be executed during the actor's first tic. This is only useful for the first state in an actor's spawn sequence.
Gives the state a sprite offset, only used for HUD sprites (most relevant for weapons. Note that Offset(0, 0) is interpreted as "keep previous offset", not as "reset offset to 0, 0" for compatibility with Hexen, which is the game from which this feature originates.
The state has its duration doubled in slow mode (if using a skill with the property).

Example

This defines 8 states. Each one of them uses the sprite POSS, has a duration of 4 and uses the code pointer A_Chase which is the standard walk function for monsters. Of these 8 states the first 2 will use the sprite frame 'A', the next 2 the frame 'B' and so on. The length of the frame sequence can be up to 256 characters. Valid frames are 'A'-'Z', '[', '\' and ']'. Different sprites can be freely mixed in an actor definition; however, each separate line of a state definition is limited to one sprite only.

Notes

  • If the frames '', '' or '' are used the frame sequence has to be enclosed in quotation marks ('').
  • Sprite name and frame means no sprite, making the actor invisible for the duration of the state.
  • It is possible for a state to keep the actor's current sprite and/or frame, using special sprite names such as or . See the sprite page for more information.

Anonymous functions

You can declare an anonymous function by using braces in place of an action function at the end of a state. This allows you to call multiple action functions from a single state. A semicolon is required after each statement.

POSS A 4 { A_Chase; //<-- Semicolon is REQUIRED when inside of these! A_SpawnItemEx("BloodyTrail",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION); }
Return

To terminate an anonymous function early, use return. It can either return a value or not. The type of value returned is used to infer the return type of the anonymous function, so if you have more than one return statement, they must all return the same type. The types are state (including jumping functions), int, bool and float. To jump to a new state, you can return a state, either by specifying it directly or by calling a jump function.

{ return state("Null"); } // Destroys the actor. All actors have a Null state by default unless overridden. { return state("JumpState"); } // Guarantees a jump. { return A_Jump(256, "JumpState"); } // So does this. { return state(""); } //Aborts an anonymous function without jumping and plays the rest of the tics. { return state(0); } //Same here. { return; }
Break

Used in for, do-while and while loops. When encountered, a loop is stopped entirely and the code after the loop will continue executing.

Continue

Used in for, do-while and while loops. When encountered, a loop will restart and skip execution of all commands after the statement.

If and else keywords

Anonymous function blocks support if/else statements to do different things based a condition without the need to use an A_Jump* function to jump to another state.

It is possible to use an A_Jump-type function inside the condition part of the if statement. The jump will not happen, but if it would have, the condition is considered as true.

NOTE: All jump functions used as the condition check for an if statement need to be passed a valid state label, or the function will always return false for that condition. "Null" is a valid state that can be used instead of needing to define one, as the jump is never performed.

POSS A 4 { if (CheckClass("PlayerPawn",AAPTR_TARGET,true)) { //A_Warp performs what it's meant to do, but will never jump. //The same applies to all functionality that can jump -- they do nothing here. A_Warp(AAPTR_TARGET,x,y,z,0,WARPF_NOCHECKPOSITION|WARPF_USECALLERANGLE|WARPF_ABSOLUTEPOSITION|WARPF_COPYVELOCITY,"Enrage"); A_Jump(256,"Enrage"); //<-- This does nothing A_SetUserVar(user_enrage,1); } else { A_SetUserVar(user_enrage,0); if (user_cooldown != 0) { // This returns from the function, skipping the rest of it. return; } A_SetuserVar(user_cooldown,100); } // Using a jump function to check a condition instead of jumping if (CountInv("Cell") > 0) { // We still have cell ammo! } else if (CountInv("RocketAmmo") > 0) { // We still have rocket ammo! } else { // We're out of ammo! } }

For keyword

For loops will repeatedly execute code within until a user variable reaches its destined amount, or it encounters a return/continue/break keyword. The syntax of a for loop is very much like C++.

TNT1 A 1 {     for (A_SetUserVar(user_i, 0); user_i < 15; A_SetUserVar(user_i, user_i + 1))     {         //...stuff to execute in here. This is all done in an instant.     } }

While keyword

While loops will repeatedly execute code until the condition is met. Unlike for loops, the while syntax only has a condition and does not auto increment. The condition is checked before the execution of the code. The syntax of a while loop is very much like C++.

TNT1 A 1 {     while (user_i < 30)     {         //...stuff.         A_SetUserVar(user_i, user_i + 1);     } }

Do/While keyword

Do-while loops will repeatedly execute code until the condition is met. Unlike for loops, the do-while syntax only has a condition and does not auto increment. The condition is checked after the execution of the code. The syntax of a do-while loop is very much like C++.

TNT1 A 1 {     do     {         //...stuff.         A_SetUserVar(user_i, user_i + 1);     } while (user_i < 30); //Semicolon here is important. }

Dynamic light binding

(GZDoom only: not supported by ZDoom)
It is possible to attach a dynamic light directly to an actor state in its DECORATE definition, rather than binding it to the actor in a GLDEFS lump. The dynamic light itself must still be defined in GLDEFS, however. Contrarily to lights attached to actors in GLDEFS, a binding made to a state directly in the state definition will be inherited by derived actors.

This is done by adding the Light keyword, followed by the name of the light within parentheses and quote marks, in this way:

BLAH A 1337 Bright Light("MyLight") A_DoSomething

ZDoom itself does not support dynamic lights and thus will ignore the Light keyword and its parameter, but the actor will otherwise work correctly.

Flow control

There are 5 different instructions that control the execution order of an actor's frames directly:

loop
Jumps to the most recently defined state label. This is used for a looping animation. Do not put a loop on a state with a duration of -1, this is unnecessary and can cause problems.
stop
Stops animating this actor. Normally this is used at the end of the death sequences. If the last state has a duration > -1 the actor will be removed. Note that if a state contains only the stop instruction, the actor will behave as if it doesn't have that state. This can be useful, for example, to remove a state that an actor has inherited from its parent.
wait
Loops the last defined state. This is useful if a code pointer is used that waits a given time or for a certain event. Currently useful code pointers include A_WeaponReady, A_Raise, A_FreezeDeathChunks, and similar code pointer functionality.
fail
Used with custom inventory items, means that the state sequence failed to succeed.
goto label [+offset]
Jumps to an arbitrary state in the current actor. With this, you can also jump to a base class state, i.e. one that was inherited by a parent. The statement goto See jumps to the walking animation that has been overriden in the current actor class, or if such does not exist, to the inherited class's state. goto is however static, i.e. will not do virtual jumps — for that, see A_Jump.
Offset specifies the number of frames to skip after the specified label. That is, using "goto Spawn+2" will jump to this frame:
Spawn: TNT1 AAAAAAAA 0
In addition, if an actor is using inheritance, you can use goto with the scope operator (::) to go to a parent class' state. The keyword "super" always refers to the immediate parent, but any parent class can be referred to by name as well, for example "goto Actor::GenericFreezeDeath" is a valid instruction.

Important note

This format has been designed for maximum flexibility. As a result no assumptions are made about what the designer wants. States are never implicitly created.

Also, if no flow control is used ZDoom will continue to the state provided directly after. Consecutive state labels can be used to assign the same frames to more than one state.

States

These are the predefined states each actor has access to:

Spawn
Defines the state that is displayed when an actor is spawned. For monsters this is normally also the idle loop.
Note: An actor that has just been spawned does not run the codepointer from its first “Spawn” frame. An example of this behavior in the original games is ArchvileFire. It will be called, however, if the actor loops or returns to its Spawn state later. An easy workaround to have actors call a codepointer immediately after spawning consists in having the very first frame have a duration of 0 tics, followed by another frame in which the codepointer instruction is given. Another solution is to use the NoDelay keyword.
Idle
Defines an alternate idle state for a monster to return to when it has run out of targets. If this state is not present, the monster will return to the Spawn state instead.
See
Defines the walking animation for a monster. Note that this state must be present for actors which are able to chase and attack other actors.
Melee
Defines the melee (near) attack.
Missile
Defines the missile (far) attack.
Pain
Defines the pain action. Multiple Pain states can be used depending on the type of damage inflicted. See custom damage types.
Death
Defines the normal death sequence. Multiple Death states can be used depending on the type of damage that kills the actor. See custom damage types. Also entered by projectiles when hitting a wall (or an actor as well if the Crash and/or XDeath states are not defined).
Death.Sky
Defines an alternate death sequence for projectiles. This is entered when hitting a sky plane. The projectile needs to be non-fast and have the SKYEXPLODE flag set for this state to be entered successfully.

XDeath (alternatively, Death.Extreme)

Defines the extreme (splatter) death sequence. Multiple XDeath states can be used depending on the type of damage that kills the actor. Also entered by projectiles when hitting a bleeding actor (if no XDeath state is defined, they enter their Death state instead).
Warning: For monsters that disappear with their death states, always ensure there is at least a 1 tic delay before the stop of the actor. A VM abort can potentially happen otherwise.
Burn
Defines the burn (Fire) death sequence.
Ice
Defines the freeze (Ice) death sequence.
Disintegrate
Defines the disintegration death sequence.
Raise
Defines the resurrection sequence.
note: This is when a monster is being resurrected (ie: by an Arch-Vile), not when its resurrecting another monster.
Heal
Define the healing sequence. This is entered when this monster is resurrecting another one. Note that by the time this monster enters this state, the resurrection process has already started. The process is usually started either by A_Chase, with the CHF_RESURRECT flag passed to it, or A_VileChase.
Crash
Defines the crash sequence. Multiple Crash states can be used depending on the type of damage that kills the actor. This is entered when the actor is a corpse and hits the floor. Also entered by projectiles when hitting a non-bleeding actor (if no Crash state is defined, they enter their Death state instead).

Crash.Extreme

Defines the extreme (splatter) crash sequence. Multiple Crash.Extreme states can be used depending on the type of damage that kills the actor. This is entered when the actor is a corpse and hits the floor after being gibbed.
Crush
Defines the crush sequence. This is entered when the actor is crushed by ceiling/door/etc.
Wound
This state is entered when the actor's health is lower than its WoundHealth but greater than 0. Multiple Wound states can be used depending on what type of damage is inflicted upon the actor. See custom damage types.
Greetings
This is used by the Strife dialog system. It is entered when a conversation is about to start.
Yes
This is used by the Strife dialog system. It is entered when the actor reacts positively to the player's choice.
No
This is used by the Strife dialog system. It is entered when the actor reacts negatively to the player's choice.
Active
This is used by Hexen-style switchable decorations. It is entered when the actor is activated.
Inactive
This is used by Hexen-style switchable decorations. It is entered when the actor is deactivated.
Bounce
This is used by bouncers with the USEBOUNCESTATE flag. It is entered when the actor bounces. Multiple bounce states can be used depending on what the actor bounced off:
  • Bounce
  • Bounce.Floor
  • Bounce.Ceiling
  • Bounce.Wall
  • Bounce.Actor
  • Bounce.Actor.Creature
Partial matches work just like Pain states, so if an actor bounces off a floor and you don't have a Bounce.Floor state, but you do have a Bounce state, it will use the Bounce state. Conversely, if you only have a Bounce.Floor state but no Bounce state, then the actor will only enter the Bounce.Floor state when it bounces on a floor; bouncing off anything else will not cause it to change state. The Bounce.Actor.Creature state is used for bouncing over a shootable actor without the NOBLOOD flag.

Weapons and custom inventory items define a few more states to define their animations.

Note that you can also define your own states that can be referred to using A_Jump or other jump instructions.

Examples

This is an example of a state sequence. The rest of this actor has been removed for readability:

actor ZombieMan 3004 { ... states { Spawn: POSS AB 10 A_Look loop See: POSS AABBCCDD 4 A_Chase loop Missile: POSS E 10 A_FaceTarget POSS F 8 A_PosAttack POSS E 8 goto See Pain: POSS G 3 POSS G 3 A_Pain goto See Death: POSS H 5 POSS I 5 A_Scream POSS J 5 A_Fall POSS K 5 POSS L -1 stop XDeath: POSS M 5 POSS N 5 A_XScream POSS O 5 A_Fall POSS PQRST 5 POSS U -1 stop Raise: POSS KJIH 5 goto See } }

Note: The first frame of the “Spawn” state, “POSS A 10”, contains a codepointer, . This codepointer is not called the very first time the zombie is spawned in the map, so it has to wait 10 tics to get into its second frame, “POSS B 10”. From then on, it will call all its codepointers reliably. If it runs out of targets, and since it has no “Idle” state, it will return to its Spawn state where it will call immediately, even in the A frame.


This example demonstrates using the stop keyword to remove a state. This definition uses inheritance to define a tougher version of the imp that cannot be resurrected by the Arch-Vile:

actor SuperImp : DoomImp { health 1500 mass 200 painchance 10 States { Raise: stop } }

See also

Using inheritance

Location:Milky Way / Omega Nebula / Sahrabarik

Description Edit

Built in the mined-out husk of a metallic asteroid, Omega has been a haven for criminals, terrorists, and malcontents for thousands of years. At times, the station has lain idle and abandoned for centuries, only to be reactivated by a new group of outlaws seeking a fresh start. The space station's original elegant design has given way to haphazard expansion by scrabbling factions of every species. There is no central government or unifying authority on Omega, and nobody can recall a time there ever was one.

  • Population: 7.8 million
  • Orbital Distance: 2.43 AU
  • Orbital Period: 6.9 Earth Years
  • Total Length: 44.7 Km

Codex EntryEdit

Originally an asteroid rich in element zero, Omega was briefly mined by the Protheans, who eventually abandoned it due to its thick, impenetrable crust. Thousands of years later, nature did what even the Protheans could not: a collision with another asteroid broke Omega in half, exposing its trove of element zero for easy mining.

A rush ensued as corporations and private individuals tried to strike it rich on Omega, and thieves and outlaws followed in their wake. As space became tight, construction of processing facilities extended vertically from the asteroid, creating Omega's jellyfish-like silhouette. To prevent future collisions, the station is ringed with enormous mass-effect field generators that redirect incoming debris.

Today, Omega is a major hub of narcotics, weapons, and eezo trafficking without even a pretense of civilian government or military control. Only mercenary groups have been able to instill a limited order; the most ruthless is an asari syndicate run by the notorious Aria T'Loak.

History Edit

Omega is described as "the Terminus Systems' dark, twisted counterpart to the Citadel." It is a huge mining station built from the remains of a massive, irregularly shaped asteroid with twisting streets populated with homes, shops and warehouses. Omega's inhabitants are usually lawless. Territory is controlled by the strongest faction in that area and frequently changes hands, often after brutal violence. The station's current "de facto" ruler is Aria T'Loak. As of 2185, Omega has a population of 7.8 million people, composed of various different species. The station's major export is element zero.[1]

The earliest known ruler of Omega was a turian; he controlled the station until he was killed by a krogan crimelord who ate his heart and wore his skull on his armor. The krogan reigned over Omega undisputed for a time until around the 1980s CE, when Aria T'Loak, once one of his most trusted lieutenants, defeated him in single combat and usurped him.

The heavy-metal-rich core of the original asteroid was mined until the asteroid was almost completely hollow, providing the initial resources used to construct Omega's buildings and facilities. Over the years, these have been expanded until they completely cover every exposed inch of its surface, making Omega a bizarre mishmash of architecture and technology. The station is home to dozens of species, including batarians, vorcha, and Lysthenisalarians, as well as many other species not welcome in Citadel space.

While humans refer to it as Omega, the asari name for it translates as "the heart of evil", the salarian name as "the place of secrets", the turian name as "the world without law", and the krogan name it as the "land of opportunity", clearly reflecting their cultural attitudes towards the society within Omega.

Mass Effect: Ascension Edit

Cerberus controls a large warehouse and smuggling operation at Omega in 2183, led by Pel, a Cerberus operative. Pel finally betrays Cerberus, leading to the deaths of all of his team, and there has been no word about the warehouse since.

Mass Effect: Redemption Edit

Liara T'Soni hitches a ride to Omega on a batarian freighter in order to meet an informant with news of the then-missing Commander Shepard. Liara learns from Aria that Shepard's body is being taken to the station's lower levels, at an old mining processing plant, as part of a transaction between the Blue Suns and the Shadow Broker. A brief scuffle at the area ensues over possession of Shepard's body, resulting in explosions, moderate fire damage, and a lot of mercenary casualties.

Mass Effect 2 Edit

In 2185, Commander Shepard travels to Omega to recruit Mordin Solus, Garrus Vakarian, and Zaeed Massani. At the time, a plague is ravaging Omega's populace, killing dozens of people from various races but mysteriously sparing humans. Elsewhere, a vigilante called "Archangel" has been cornered at his base by Omega's three dominant mercenary factions: the Blue Suns, Eclipse, and Blood Pack.

Shepard meets with Mordin Solus, a salarian scientist and former STG operative who runs a clinic in one of Omega's slums. The plague is revealed to have been caused by the vorcha, who aligned with the Collectors in order to take over the station. Using a cure for the plague developed by Mordin, Shepard stops the outbreak and foils the vorcha scheme.

Shepard later signs on with the Blue Suns as a freelancer in order to help the besieged Archangel. After taking a Blue Suns advance force by surprise and discovering Archangel is actually Garrus Vakarian, Shepard and Garrus fight off the last waves of the merc attack and escape. News reports after the fact indicate that the merc groups covered up their defeat, and claim that Archangel had been killed. During the course of the mission, Shepard also learns that the three merc groups planned to try and topple Aria's regime after getting rid of Archangel. Shepard can pass this information on to Aria, who can be found on a balcony overlooking Afterlife.

Mass Effect: Retribution Edit

In 2186, Paul Grayson lives on Omega and works for Aria T'Loak as an enforcer under the alias "Paul Johnson". Grayson gradually gains Aria's trust through the efforts of her daughter, Liselle, who has become Grayson's lover. Grayson, Liselle, and more of Aria's enforcers ambush a group of turians belonging to the growing Talons mercenary group and take red sand which the Talons had been smuggling on the side.

Later, after being implanted with Reaper technology, Grayson returns to Omega to meet with Kahlee Sanders, which turns out to be a trap ultimately set by the Illusive Man and permitted by Aria, who thinks Grayson killed Liselle and wants revenge. Grayson is wounded in the attack but manages to escape Omega.

Mass Effect: Invasion Edit

Omega comes under attack as Reaper creatures called Adjutants break loose from Cerberus's research bases beyond the Omega 4 Relay and invade the station. A Cerberus fleet led by General Oleg Petrovsky and Colonel Raymond Ashe arrives and helps eliminate the Adjutants. The Adjutant attack turns out to be only a prelude to an attempt by Cerberus to conquer the station and secure exclusive access to the Omega 4 Relay and its treasure trove of Reaper technology. Aria unites Omega's warring gangs to fight against the Cerberus occupation force, but General Petrovsky outsmarts her by taking the entire station hostage and threatening to destroy it level-by-level. Aria surrenders and accepts exile. Cerberus proceeds to take control of Omega, furthering the Illusive Man's plans to counter the Reapers.

Mass Effect 3: Omega Edit

The occupation of Omega gave Cerberus a huge strategic advantage during the Reaper invasion of 2186, bolstering their mobility throughout the Galaxy. Cerberus would overuse the mining facilities of Omega, pushing the mining equipment of the asteroid to its limits. Cerberus had difficulties maintaining the occupation, however. The Talons gang led by Nyreen Kandros is one of those groups still able to resist the occupation. In order to contain the civilian population, General Oleg Petrovsky erected large energy-intensive force fields throughout the station along with a large number of mechs and troops to maintain order.

Cerberus also conducted experiments with the Reaper-based adjutants in Omega. Initially this proved to be disaster. Large sections of Omega had to be shut down and sealed at a great cost of lives to contain outbreaks of uncontrolled Adjutants. Further experimentation would give Cerberus a full control of these creatures.

Aria begins her campaign to liberate Omega from Cerberus, having enlisted Commander Shepard in the process. Traveling aboard a captured Cerberus cruiser in order to infiltrate the Cerberus fleet surrounding the station, Aria opens her attack with a crippling blow to the fleet's flagship as her own fleet charges in via mass relay. The tables are soon turned, however, as Petrovsky reveals Omega's upgraded defenses by proceeding to inflict heavy damage on her fleet.

The initial invasion force lands on the station in escape pods. Aria and Shepard first disable Omega's defenses in order to give the invading fleet a chance. Later, with the help of Nyreen Kandros, they fight their way to Aria's Bunker on Omega's D-Deck, where Aria decides that in order to get to Petrovsky's command center in Afterlife, she needs to rally the Talons gang to her cause to supplement her ground forces, and disable the force fields that Cerberus has set up.

Cerberus is siphoning power for the force fields from one of Omega's main reactors deep within its mines. As access to it is mostly cut off by the force fields, Aria devises a plan to go through a powered-down eezo processing plant. Navigating the mines, Aria notices the machinery's overworked condition and estimates a month before they give out if the current trend continues.

Aria and company eventually reach an elevator to the reactor's back door, although General Petrovsky traps the squad in more force fields in anticipation of the move. Aria is not to be outdone, and forcibly opens a hole in the barrier for Shepard to pass through and disable the reactor.

Petrovsky dishes out another difficult dilemma at the turn of events: immediately shutting down the reactor will cause loss of life support in a lot of Omega's areas, which translates to loss of civilian lives. Taking the time to reroute the power increases the chance of Aria and Nyreen dying as they're still holding their own against endless waves of mechs in the trap. Regardless of choice Shepard disables the reactor and ends the forced internal blockades.

With the Talons recruited, the populace incited, and the force fields down, the true war for Omega begins as the civilians revolt against Cerberus. Aria and Shepard prevent Cerberus from destroying Omega by blowing up the station's central support column, then join in the offensive to Afterlife from the Gozu District. Nyreen, who had been leading a separate assault with her Talons, sacrifices herself to kill a group of rogue Adjutants. Enraged at Nyreen's loss, Aria charges into Afterlife ahead of Shepard.

Afterlife has been repurposed by Petrovsky in the course of making it his base of operations: the General traps Aria in a stasis field at the center of the establishment, powered by generators positioned at the corners. Shepard breaks her out and defeats all the Cerberus forces in Afterlife.

Defeated, Petrovsky surrenders himself and orders his troops to stand down, but Aria and Shepard decide whether he should be spared or executed on the spot. With Omega hers to rule once more, Aria announces its liberation to the citizenry, and vows to never lose the station again.

Districts Edit

Omega is divided into several districts. Known districts include:

  • Carrd District - A district controlled by the elcor. An ongoing war between volus and batarians in a neighboring district in 2183 forced merchants and customers alike to move their business over to the relative stability of this district.
  • Doru District - A district located near several vital Omega utility systems, including a water treatment facility, the main ventilation system, and the station's central support column. Cerberus fortified the area during their occupation in 2186.
  • Fumi District - A district the Talonsraided to free civilians during the Cerberus occupation of Omega in 2186.[2][3]
  • Gozu District - A residential area in the lower levels of Omega accessible by shuttle, notable for being the location of the Omega Clinic. Once policed by the Blue Suns, the district fell into chaos after being quarantined to prevent the spread of an unknown plague in 2185.
  • Kenzo District - A district where Garm and the Blood Pack were allegedly carrying out a large gun running operation in 2185. This turned out to be a ruse set up by Sidonis for Archangel so that Omega's gangs could attack Archangel's hideout.
  • Kima District - Another residential area that borders Gozu District. The vigilante Archangel and his team occupied a building in Kima District in 2185 where they were cornered by the Blue Suns, Eclipse, and Blood Pack.
  • Tuhi District - A commercial area filled with shops and businesses, including Tuhi District Storage, that is located near Aria's Bunker. Cerberus fortified this area during their occupation in 2186.
  • Zeta District - A district where Cerberus deployedRampart Mechs during their occupation in 2186.[2][3]

Missions Edit

Mass Effect 2 Edit

Mass Effect 3 Edit

0 thoughts on “Idle Class Wiki Assignment”

    -->

Leave a Comment

Your email address will not be published. Required fields are marked *