Ape Uprising (#31609)

* Allow monkey-like species to craft

* Add signal for mobs entering vents

* Implement basic uplifted antag datum & nest

* Make phrasing nicer

* Allow primitive species to vary & add time requirements

* Add spawning functionality to nest

* Make primitives unable to be humanised a little less violently

* Fix linter complaints

* Fix typo which made the linter mad

* Add objectives and antag teams

* Make nests consider other nests for spawn limit

* Add greeting text

* Add guaranteed early spawns

* Allow deconstruction of nests & recovery of scrap

* Allow uplifted mobs to ventcrawl with small items

* Clarify nest spawning conditions on examine

* Tweak NPC numbers & AI

* Add obtain objective and give an extra objective

* Give thanks to the linter

* Change team objective & make the alert nicer

* Make event only spawn monkeys by default

* Add examine text explaining deconstruction

* Allow ghosts to see nest materials

* Handle stacks properly in nest deconstruction

* Add on-demand ghost spawn to reduce roll spam

* Add nest crafting

* Allow lesser mobs to use medical stacks

I don't believe this should affect anything else, as every other mob capable of holding these items is an advanced tool user.

* Add hint about crafting on examine

* Ensure only nest monkeys retaliate to nest damage

* Add uplifted primitive nests to the spawners menu
This commit is contained in:
unknownuser782
2026-05-07 05:03:30 +00:00
committed by GitHub
parent 85002cca6c
commit 13c3cc803c
30 changed files with 942 additions and 16 deletions
@@ -580,7 +580,10 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
to_chat(src, SPAN_WARNING("You cannot crawl into a vent while buckled to something!"))
return
if(iscarbon(src) && length(contents) && ventcrawlerlocal < VENTCRAWLER_ALWAYS) // If we're here you can only ventcrawl while completely nude
if(ventcrawlerlocal == VENTCRAWLER_SIGNAL && !SEND_SIGNAL(src, COMSIG_LIVING_TRY_VENTCRAWL))
return
if(ventcrawlerlocal == VENTCRAWLER_NUDE && iscarbon(src) && length(contents)) // If we're here you can only ventcrawl while completely nude
for(var/obj/item/I in contents)
if(istype(I, /obj/item/bio_chip))
continue
@@ -602,7 +605,7 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
var/datum/pipeline/pipenet = starting_machine.returnPipenet(target_move)
pipenet.add_ventcrawler(src)
add_ventcrawl_images(pipenet)
SEND_SIGNAL(src, COMSIG_LIVING_ENTER_VENTCRAWL)
/mob/living/proc/add_ventcrawl_images(datum/pipeline/pipenet)
var/list/totalMembers = list()
@@ -96,7 +96,6 @@
var/meat_type = /obj/item/food/meat
var/no_equip // bitflags of slots the race can't equip stuff to
var/nojumpsuit = 0 // this is sorta... weird. it basically lets you equip stuff that usually needs jumpsuits without one, like belts and pockets and ids
var/can_craft = TRUE // Can this mob using crafting or not?
var/bodyflags = 0
var/dietflags = 0 // Make sure you set this, otherwise it won't be able to digest a lot of foods
@@ -971,7 +970,7 @@
if(radiation > RAD_MOB_VOMIT && prob(RAD_MOB_VOMIT_PROB))
H.vomit(10, TRUE)
if(radiation > RAD_MOB_MUTATE)
if(radiation > RAD_MOB_MUTATE && !HAS_TRAIT(H, TRAIT_GENELESS))
if(prob(1))
to_chat(H, SPAN_DANGER("You mutate!"))
randmutb(H)
@@ -15,7 +15,6 @@
greater_form = /datum/species/human
no_equip = ITEM_SLOT_BELT | ITEM_SLOT_ID | ITEM_SLOT_LEFT_EAR | ITEM_SLOT_RIGHT_EAR | ITEM_SLOT_EYES | ITEM_SLOT_GLOVES | ITEM_SLOT_SHOES | ITEM_SLOT_OUTER_SUIT | ITEM_SLOT_JUMPSUIT | ITEM_SLOT_LEFT_POCKET | ITEM_SLOT_RIGHT_POCKET | ITEM_SLOT_SUIT_STORE | ITEM_SLOT_PDA | ITEM_SLOT_NECK
inherent_factions = list("jungle", "monkey")
can_craft = FALSE
is_small = 1
has_fine_manipulation = 0
ventcrawler = VENTCRAWLER_NUDE