mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 03:57:13 +01:00
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:
@@ -64,6 +64,24 @@ have ways of interacting with a specific mob and control it.
|
||||
)
|
||||
idle_behavior = /datum/idle_behavior/idle_monkey/pun_pun
|
||||
|
||||
/datum/ai_controller/monkey/uplifted_npc
|
||||
movement_delay = 7 DECISECONDS // uplifted npcs move slower so that they're less annoying
|
||||
planning_subtrees = list(
|
||||
/datum/ai_planning_subtree/generic_resist,
|
||||
/datum/ai_planning_subtree/monkey_combat,
|
||||
)
|
||||
|
||||
/datum/ai_controller/monkey/uplifted_npc/retaliate(mob/living/living_mob)
|
||||
var/mob/living/carbon/human/me = pawn
|
||||
var/mob/living/carbon/human/target = living_mob
|
||||
|
||||
if(istype(me) && istype(target) \
|
||||
&& target.mind && target.mind.has_antag_datum(/datum/antagonist/uplifted_primitive) \
|
||||
&& target.dna.species.type == me.dna.species.type)
|
||||
return
|
||||
|
||||
return ..()
|
||||
|
||||
/datum/ai_controller/monkey/angry
|
||||
|
||||
/datum/ai_controller/monkey/angry/try_possess_pawn(atom/new_pawn)
|
||||
|
||||
@@ -32,6 +32,7 @@ GLOBAL_LIST_INIT(huds, alist(
|
||||
DATA_HUD_HERETIC = new/datum/atom_hud/data/heretic(),
|
||||
ANTAG_HUD_HERETIC = new/datum/atom_hud/antag/hidden(),
|
||||
ANTAG_HUD_HERETIC_BEAST = new/datum/atom_hud/antag/hidden(),
|
||||
ANTAG_HUD_UPLIFTED_TEAMLESS = new/datum/atom_hud/antag/hidden/secondary(),
|
||||
))
|
||||
|
||||
/datum/atom_hud
|
||||
|
||||
@@ -502,6 +502,15 @@
|
||||
else
|
||||
. += "<b>NO</b>|<a href='byond://?src=[UID()];zombie=zombie'>zombie</a>|<a href='byond://?src=[UID()];zombie=zombievirus'>infect</a>"
|
||||
|
||||
/datum/mind/proc/memory_edit_uplifted(mob/living/H)
|
||||
. = _memory_edit_header("uplifted", list())
|
||||
if(has_antag_datum(/datum/antagonist/uplifted_primitive))
|
||||
. += "<a href='byond://?src=[UID()];uplifted=clear'>no</a>|<b><font color='red'>UPLIFTED</font></b>"
|
||||
else
|
||||
. += "<b>NO</b>|<a href='byond://?src=[UID()];uplifted=uplifted'>uplifted</a>"
|
||||
|
||||
. += _memory_edit_role_enabled(ROLE_UPLIFTED_PRIMITIVE)
|
||||
|
||||
/datum/mind/proc/memory_edit_eventmisc(mob/living/H)
|
||||
. = _memory_edit_header("event", list())
|
||||
if(has_antag_datum(/datum/antagonist/eventmisc))
|
||||
@@ -643,6 +652,8 @@
|
||||
sections["abductor"] = memory_edit_abductor(H)
|
||||
/** Zombies **/
|
||||
sections["zombie"] = memory_edit_zombie(H)
|
||||
/** Uplifted Primitives **/
|
||||
sections["uplifted"] = memory_edit_uplifted(H)
|
||||
sections["eventmisc"] = memory_edit_eventmisc(H)
|
||||
/** TRAITOR ***/
|
||||
sections["traitor"] = memory_edit_traitor()
|
||||
@@ -1426,6 +1437,22 @@
|
||||
log_admin("[key_name(usr)] has removed the zombie virus from [key_name(current)].")
|
||||
current.create_log(MISC_LOG, "[key_name(current)] had their zombie virus admin-removed by [key_name_admin(usr)]")
|
||||
|
||||
else if(href_list["uplifted"])
|
||||
switch(href_list["uplifted"])
|
||||
if("clear")
|
||||
if(!has_antag_datum(/datum/antagonist/uplifted_primitive))
|
||||
return
|
||||
remove_antag_datum(/datum/antagonist/uplifted_primitive)
|
||||
message_admins("[key_name_admin(usr)] has de-uplifted'ed [key_name(current)].")
|
||||
log_admin("[key_name(usr)] has de-uplifted'ed [key_name(current)].")
|
||||
if("uplifted")
|
||||
if(has_antag_datum(/datum/antagonist/uplifted_primitive))
|
||||
return
|
||||
add_antag_datum(/datum/antagonist/uplifted_primitive)
|
||||
message_admins("[key_name_admin(usr)] has uplifted'ed [key_name(current)].")
|
||||
log_admin("[key_name(usr)] has uplifted'ed [key_name(current)].")
|
||||
current.create_log(MISC_LOG, "[key_name(current)] was made into an uplifted primitive by [key_name_admin(usr)]")
|
||||
|
||||
else if(href_list["traitor"])
|
||||
switch(href_list["traitor"])
|
||||
if("clear")
|
||||
|
||||
Reference in New Issue
Block a user