owned this note
owned this note
Published
Linked with GitHub
# **Vision - What I want to do**
* Make Xenomorph endgame (1 - 2 hour +) gameplay more interesting and engaging for players.
* Allow the Xenomorph team an option to draw stalemated rounds to a decisive close once map control has been established.
* Replace pylon larva gain with a more dynamic and interesting system which encourages aggressive and decisive gameplay.
* Give the marine team adiquate feedback to allow a gameplay response to the actions of the Xenomorph team.
* Create a system which can be added to or modified later by future contributors.
# **Mission - How I will do it**
* Create and implement a framework for buffs which can be purchased by the Xenomorph team which is sustained by the communication tower pylons.
* Design a buff datum which is simple enough for future contributors to add their own buffs or modify the basic ones with their own behaviour.
* Create a new Xenomorph Caste at tier 4 which has the capability to decisively break FOB sieges and force a hijack leading to a round victory for Xenomorphs.
* Hook the game ender xenomorph caste into the buff system to streamline all endgame content into one easy to understand system for players.
# **Design Philosophy**
* When drafting ideas for this system I really wanted something that presented the Xenomorph team with options beyond current dry "wait for larva" gameplay. I wanted to design a system from which multiple options could be chosen based on the Xenomorph team's current needs.
* I wanted to make a system that was simple and clearly documented so that future Xenomorph contributors could design and make their own endgame hive buffs which could plug into it.
* I wanted to make a system whereby if we wanted to add further objectives into the CM gameplay loop in the future then this system would be scalable to include those.
* I wanted to make a system which would fit nicely into the current CM gameplay loop and not majorly disrupt current gameplay flow.
* I wanted to make a game-ender caste which was both rare enough to be exciting to see but common enough that players would stand a reasonable chance of playing it given enough rounds played.
* I wanted to design a system whereby all players could potentially benefit and be included.
---
# Step 1: Hive Buffs
Although I started this journey by designing the game-ender caste, it really begins with the Hive Buffs. This system is the entry point for the Xenomorph endgame content which would eventually lead to the deployment of the game-ender.
## **Outline**
Hive buffs are purchasable after at least 1 hour has passed in the round and are purchasble from a Hive Pylon, this means that the Xenomorphs need to hold at least one communications tower to access the system. Any hive leader can attempt to purchase a buff by interacting with a full health Hive Pylon with help intent. The Xenomorph will be then presented with a menu to choose the buff they wish to purchase for the hive. The Living Xenomorph Queen would then have to approve this hivebuff and pay a cost in "royal resin" (limited points per round) in order to engage the buff. The buff could either be a one-time effect such as an instant number of free larva or a sustained effect such as 10% more health for all xenomorphs.
## **Details**
Each Hive Buff has a few attributes.
* Name
* Description
* Tier
* Cost
* Number of Pylons Required
* If the buff is unique (cannot be used with other buffs concurrently)
* If the buff is repeatable (can be used in the same round more than once)
* Cooldown
* Duration (if sustained over time)
* Time to live (round time before the buff is available)
These attributes allow designers to choose exactly when they want their buff to be available, and with how many pylons (how much map control) they want to give.
## **Implementaion - Code**
Hive buffs are implemented through a class `/datum/hivebuff` of which all buffs are children of.
### **Variables**
* `hive<datum/hive_status>`
* The hive that the buff belongs to
* `susained_pylons<list(/obj/effect/alien/resin/special/pylon/endgame)>`
* A list of pylons currently sustaining the buff
* `name<string>`
* This is the name of the hive buff, presented to the Xenomorph purchaser.
* `desc<string>`
* A short description of what the hive buff does.
* `radial_icon<string>`
* State of the icon to show in the hivebuff radial menu stored in 'icons/ui_icons/hivebuff_radial.dmi'
* `tier<string>`
* Defines `HIVEBUFF_TIER_MINOR` and `HIVEBUFF_TIER_MAJOR` which determines the type of buff. This governs the importance of the buff and how announcements are presented to marines and xenomorphs.
* `number_of_required_pylons<int>`
* Number of controled pylons required for the buff to be purchasable.
* `is_unique<bool>`
* If the hive buff can be used with any other buffs consequtively, if TRUE this buff is the one and only.
* `is_reusable<bool>`
* If the hive buff can be purchased more than once per round. If TRUE it can only be purchased one time and never again.
* `duration<int>`
* How long the buff should be active for before ending its effects.
* `cost<int>`
* How many points does this buff cost to purchase
* `engage_flavourmessage<string>`
* The flavour message to present to the Xenomorphs when the buff engages.
* `cease_flavourmessage<string>`
* The flavour message to present to the Xenomorphs when the buff ceases.
* `engage_failure_message<string>`
* A message to present to the user and queen if the buff fails to engage even after all purchasing conditons are met.
* `marine_flavourmessage<string>`
* A message to announce to the marine team when the buff successfully engages.
### **Procs - Overridable**
* `on_engage() Returns: Bool`
* Behaviour related to the effect of the hive buff lives here, use this proc to apply the effect to the hive or xenomorphs within it. This is called by `_on_engage()` if all conditions are met. This proc should return `TRUE` if the effects applied correctly and `FALSE` if not.
* `on_cease() Returns: Bool`
* Behaviour relating to returning the hive to its unbuffed state should go in here. All effects applied in `on_engage()` should be reversed.
### **Procs - Not to be overridden**
* `_on_pylon_deletion(obj/effect/alien/resin/special/pylon/sustained_pylon)`
* Signal Handler for pylons being qdeleted, handles ending any buffs they were involved in sustaining.
* `_on_engage(mob/living/carbon/xenomorph/purchasing_mob, obj/effect/alien/resin/special/pylon/endgame/purchased_pylon) Returns: Bool`
* Wrapper for `on_engage()` which handles checking that the conditons are met to purchase the buff, as well as seeking authorisation from the queen. Also logs to the gamelog that a buff has been purchased. Once all conditons are met this will call `on_engage()` and set up require signal registrations as well as appending to the lists of current and used hive buffs. Also handles presenting announcements to Xeno and Marines.
* `_on_cease() Returns: null`
* Wrapper for `on_cease()` which handles signal unregistrations, announceing to the Xenomorph tea and nulling references before deleting the `datum/hivebuff`.
Procs to do with checking states are not listed here and should not be overridden, all are documents with comments in `code\modules\cm_aliens\hivebuffs\hivebuff.dm`
## **Implementaion - Player**
To purchase a hive buff the player must interact with a fully repaired Pylon in help intent. They are then presented with a radial menu which is filtered based on which buffs are currently available.
![dreamseeker_2024-02-10_13-13-46](https://hackmd.io/_uploads/B1wiIgBi6.png)
![dreamseeker_2024-02-10_13-13-50](https://hackmd.io/_uploads/B1wj8eBjT.png)
After the player selects the buff they wish to purchase via this menu,a prompt is presented to the queen to approve the purchase which she must approve.
![dreamseeker_2024-02-10_13-32-36](https://hackmd.io/_uploads/H1tZseriT.png)
After the buff has been approved by the queen it is engaged, its effects are applied and a message is presented to all living xenomorphs in the hive to tell them that a hive buff has been purchased. If the buff is a major buff, an announcement is also made to all marines.
![dreamseeker_2024-02-10_13-33-20](https://hackmd.io/_uploads/H1NrjlSop.png)
Once the buff has run its duration, another message is presented to the living xenomorphs to let them know that the effects of the buff have ended.
![dreamseeker_2024-02-10_13-33-24](https://hackmd.io/_uploads/H1aHjxBo6.png)
*(yes this is a placeholder message ~~no it won't make the final release~~)*
---
# Step 2: Game Ender Caste, The Destroyer
The purchase of this caste is to bring the game to an end in the favour of the Xenomorphs.
![dreamseeker_2024-02-10_13-43-44](https://hackmd.io/_uploads/r1fnperjT.png)![dreamseeker_2024-02-10_13-43-56](https://hackmd.io/_uploads/rJz3aeSj6.png)
## Outline
The Destroyer is a hulking mass of muscle and chitin, brought to bear when the Xenomorphs hold the entire map but are unable to break a FOB siege or bring the round to a close. Purchased via a hive buff - this caste will require both pylons to be held for 10 minutes after the 2 hour mark has passed in the round in order to spawn. Marines and Xeno players alike are notified when the spawning procedure has begun.
The Destroyer will firstly pick candidates from the living Xenomorphs so all current living Xenomorphs will get a roll to play it (excluding Queen). If no candidates are found it will fall back onto observers. A player must have 25 hours minimum playing Xenomorph to be eligible to play the Destroyer. If no candidates are found with > 25 hours played then the game will roll again with no hour requirements.
A cocoon will spawn at the hive core from which the Destroyer will emerge after the 10 minute timer has elapsed. Destroying a pylon will pause the timer, which will resume once both pylons are once again held.
## Attributes
* Health: High (exact value undecided)
* Armour: Medium (exact value undecided)
* Speed: Slow
* Plasma: 1000
## Abilities
### Passive - "Unstoppable"
The destroyer cannot be bodyblocked and will trample all underfoot, including its own hive mates. This deals damage to humans.
![dreamseeker_2024-02-10_13-52-04](https://hackmd.io/_uploads/BkV5yZBja.png)
### Ability 1 - "Rend"
* Cooldown: 2.5 seconds
* Damage: 25
The destroyer spins and hits all adjacent mobs around itself for a small amount of damage.
![dreamseeker_2024-02-10_13-49-14](https://hackmd.io/_uploads/S1GlybBoa.gif)
### Ability 2 - "Doom"
* Cooldown: 90 seconds
* Range: 7 tiles
The destroyer screeches, overwhelming the senses of nearby humans and extinguishing lights in the area. Applies a blur, daze and superslow to humans caught in the area.
![dreamseeker_2024-02-10_13-53-19](https://hackmd.io/_uploads/BkN1gWrja.png)
## Ability 3 - "Bulwark"
* Cooldown: 180 seconds
* Range: 6
A defensive ability which provides a shield to all nearby Xenomorphs. This shield caps damage taken to 10% of the xeno's max health per individual source of damage.
![dreamseeker_2024-02-10_13-55-24](https://hackmd.io/_uploads/S1lDg-Hoa.png)
## Ability 4 - "Destroy"
* Cooldown: 120 seconds
* Range: 7
* Damage: 75 to humans in AoE, 250 to cades in AoE
After channeling for 2 seconds, the destroyer leaps into the air, crashing down on its target and dealing large damage and throwing back all mobs in the landing area.
![destroy](https://i.imgur.com/N7tdRXm.gif)