Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Abandoned Containment Site Space ruins #4364

Open
wants to merge 18 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18,889 changes: 18,889 additions & 0 deletions _maps/RandomRuins/SpaceRuins/abandonedunknownsite1.dmm

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions code/__DEFINES/mobfactions.dm
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,8 @@
#define FACTION_VINES "vines"
/// Tamed creatures
#define FACTION_TAMED "tamed"
///Creates associated with plague doctor
#define FACTION_PLAGUE "plague"

// Antagonist factions

Expand Down
16 changes: 16 additions & 0 deletions code/datums/id_trim/ruins.dm
Original file line number Diff line number Diff line change
Expand Up @@ -214,3 +214,19 @@
/datum/id_trim/away/the_outlet/mad_manager
assignment = "The Mad Manager"
access = list(ACCESS_AWAY_GENERAL, ACCESS_AWAY_MEDICAL, ACCESS_AWAY_SEC)

/// Trim for the SCP site ruins.
/datum/id_trim/away/scp1
access = list(ACCESS_AWAY_GENERAL, ACCESS_AWAY_ENGINEERING, ACCESS_AWAY_MAINTENANCE, ACCESS_AWAY_GENERIC1, ACCESS_AWAY_SCIENCE)

/// Trim for the SCP site ruins.
/datum/id_trim/away/scp2
access = list(ACCESS_AWAY_GENERAL, ACCESS_AWAY_SEC, ACCESS_AWAY_MAINTENANCE, ACCESS_AWAY_ENGINEERING)

/// Trim for the SCP site ruins.
/datum/id_trim/away/scp3
access = list(ACCESS_AWAY_GENERAL, ACCESS_AWAY_MAINTENANCE, ACCESS_AWAY_SEC, ACCESS_AWAY_SCIENCE, ACCESS_AWAY_GENERIC1, ACCESS_AWAY_GENERIC2, ACCESS_AWAY_ENGINEERING)

/// Trim for the SCP site ruins.
/datum/id_trim/away/scp4
access = list(ACCESS_AWAY_GENERAL, ACCESS_AWAY_MAINTENANCE, ACCESS_AWAY_SEC, ACCESS_AWAY_SCIENCE, ACCESS_AWAY_GENERIC1, ACCESS_AWAY_GENERIC2, ACCESS_AWAY_COMMAND, ACCESS_AWAY_GENERIC3, ACCESS_AWAY_GENERIC4, ACCESS_AWAY_ENGINEERING)
8 changes: 8 additions & 0 deletions code/datums/ruins/space.dm
Original file line number Diff line number Diff line change
Expand Up @@ -467,8 +467,16 @@
name = "SYN-C Brutus"
description = "This wasn't an outbreak, this was a repelled attack."

/datum/map_template/ruin/space/abandoned_scp_site
id = "abandoned_scp_site"
suffix = "abandonedunknownsite1.dmm"
name = "Abandoned Containment Site"
description = "A forgotten containment site that once held anomalies deep in space, now a relic of man's hubris. \
The smell of death emanates from this ruin..."

/datum/map_template/ruin/space/syndicate_depot
id = "syndicate_depot"
suffix = "syndicate_depot.dmm"
name = "Syndicate Depot"
description = "A small depot ran by the Syndicate sitting out in space, responsible for logistics across the vast reaches of space."

70 changes: 70 additions & 0 deletions code/game/area/areas/ruins/space.dm
Original file line number Diff line number Diff line change
Expand Up @@ -701,7 +701,77 @@
//SYN-C Brutus, derelict frigate
/area/ruin/space/has_grav/infested_frigate
name = "SYN-C Brutus"

// Abandoned SCP Site Ruins
/area/ruin/space/has_grav/abandonedscpsite
name = "Abandoned Site Maintenance"

/area/ruin/space/has_grav/abandonedscpsite/enterance
name = "Enterance"

/area/ruin/space/has_grav/abandonedscpsite/ezhall
name = "Enterance Zone Hallway"

/area/ruin/space/has_grav/abandonedscpsite/engineering
name = "Containment Site Engineering"

/area/ruin/space/has_grav/abandonedscpsite/office1
name = "General Office"

/area/ruin/space/has_grav/abandonedscpsite/cafeteria
name = "Cafeteria"

/area/ruin/space/has_grav/abandonedscpsite/moffice
name = "Managers Office"

/area/ruin/space/has_grav/abandonedscpsite/hcz1
name = "HCZ Checkpoint 1"

/area/ruin/space/has_grav/abandonedscpsite/hcz2
name = "HCZ Checkpoint 2"

/area/ruin/space/has_grav/abandonedscpsite/lcz1
name = "LCZ Checkpoint 1"

/area/ruin/space/has_grav/abandonedscpsite/hczhall
name = "HCZ Hall"

/area/ruin/space/has_grav/abandonedscpsite/czbrig
name = "Containment Site Brig"

/area/ruin/space/has_grav/abandonedscpsite/containment1
name = "Containment 1"

/area/ruin/space/has_grav/abandonedscpsite/containment2
name = "Containment 2"

/area/ruin/space/has_grav/abandonedscpsite/czmedbay
name = "Containment Site Medbay"

/area/ruin/space/has_grav/abandonedscpsite/lounge
name = "Break Room"

/area/ruin/space/has_grav/abandonedscpsite/lczhall
name = "LCZ Hall"

/area/ruin/space/has_grav/abandonedscpsite/office2
name = "Specialized Office"

/area/ruin/space/has_grav/abandonedscpsite/czprison
name = "Containment Site Prison"

/area/ruin/space/has_grav/abandonedscpsite/prisoncafe
name = "Prison Cafeteria"

/area/ruin/space/has_grav/abandonedscpsite/prisonlibrary
name = "Prison Library"

/area/ruin/space/has_grav/abandonedscpsite/czmaintenance
name = "Maintenance"

/area/ruin/space/has_grav/abandonedscpsite/prisonguard
name = "Prison Watchpoint"

//Infested Flotilla
/area/ruin/space/has_grav/infested_flotilla
name = "Infested Flotilla"
20 changes: 20 additions & 0 deletions code/game/objects/items/cards_ids.dm
Original file line number Diff line number Diff line change
Expand Up @@ -836,6 +836,26 @@
icon_state = "retro"
registered_age = null

/obj/item/card/id/away/scp1
name = "Senior Scientist ID"
desc = "A strange card with writing on it spelling out SCP. You feel like you shouldn't mess with this... "
trim = /datum/id_trim/away/scp1

/obj/item/card/id/away/scp2
name = "Facility Guard ID"
desc = "A strange card with writing on it spelling out SCP. You feel like you shouldn't mess with this... "
trim = /datum/id_trim/away/scp2

/obj/item/card/id/away/scp3
name = "MTF Sergeant ID"
desc = "A strange card with writing on it spelling out SCP. You feel like you shouldn't mess with this... "
trim = /datum/id_trim/away/scp3

/obj/item/card/id/away/scp4
name = "Facility Manager"
desc = "A strange card with writing on it spelling out SCP. You feel like you shouldn't mess with this... "
trim = /datum/id_trim/away/scp4

/obj/item/card/id/away/hotel
name = "Staff ID"
desc = "A staff ID used to access the hotel's doors."
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
///ripped from the zombie code, for plague doctor summon ability
/mob/living/basic/space_fauna/plague_doc/minion_zombies
name = "Mutilated Corpse"
desc = "One of the doctor's 'cured' ones."
icon = 'icons/mob/simple/simple_human.dmi'
icon_state = "basic"
icon_living = "basic"
icon_dead = "basic"
mob_biotypes = MOB_ORGANIC|MOB_HUMANOID
faction = list(FACTION_HOSTILE, FACTION_PLAGUE)
sentience_type = SENTIENCE_HUMANOID
maxHealth = 100
health = 100
basic_mob_flags = DEL_ON_DEATH
melee_damage_lower = 21
melee_damage_upper = 21
attack_verb_continuous = "bites"
attack_verb_simple = "bite"
attack_sound = 'sound/hallucinations/growl1.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE
istate = ISTATE_HARM|ISTATE_BLOCKING
bodytemp_cold_damage_limit = -1
status_flags = CANPUSH
ai_controller = /datum/ai_controller/basic_controller/minion_zombies
icon_gib = "syndicate_gib"
death_message = "blood starts spewing out of every orifice."
var/outfit

/mob/living/basic/space_fauna/plague_doc/minion_zombies/Initialize(mapload)
. = ..()
var/static/list/death_loot = list(/obj/effect/decal/remains/human)
AddElement(/datum/element/death_drops, death_loot)
apply_dynamic_human_appearance(src, outfit, /datum/species/zombie, bloody_slots = ITEM_SLOT_OCLOTHING)

/datum/ai_controller/basic_controller/minion_zombies
blackboard = list(
BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic,
)

ai_movement = /datum/ai_movement/basic_avoidance
idle_behavior = /datum/idle_behavior/idle_random_walk
planning_subtrees = list(
/datum/ai_planning_subtree/simple_find_target,
/datum/ai_planning_subtree/basic_melee_attack_subtree,
)

/mob/living/basic/space_fauna/plague_doc/minion_zombies/zombieprisoner
name = "Cured Prisoner"
melee_damage_lower = 15
melee_damage_upper = 15
attack_verb_continuous = "weakly slashes"
attack_verb_simple = "slash"
outfit = /datum/outfit/dclassoutfit

/mob/living/basic/space_fauna/plague_doc/minion_zombies/zombielguard
name = "Cured Facility Guard"
melee_damage_lower = 20
melee_damage_upper = 20
attack_verb_continuous = "slashes"
attack_verb_simple = "slash"
outfit = /datum/outfit/lightguardcorpse

/mob/living/basic/space_fauna/plague_doc/minion_zombies/zombiehguard
name = "Cured Facility Guard"
melee_damage_lower = 21
melee_damage_upper = 25
attack_verb_continuous = "strongly slashes"
attack_verb_simple = "slash"
outfit = /datum/outfit/heavyguardcorpse

/mob/living/basic/space_fauna/plague_doc/minion_zombies/zombiescientist
name = "Cured Scientist"
melee_damage_lower = 15
melee_damage_upper = 15
attack_verb_continuous = "weakly slashes"
attack_verb_simple = "slash"
outfit = /datum/outfit/scpscientistcorpse

/mob/living/basic/space_fauna/plague_doc/minion_zombies/zombiemanager
name = "Cured Manager"
melee_damage_lower = 15
melee_damage_upper = 17
attack_verb_continuous = "weakly slashes"
attack_verb_simple = "slash"
outfit = /datum/outfit/facilitymanagercorpse
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
///ripped from paper wizard code
/datum/action/cooldown/spell/conjure/plague_summon_minions
name = "Summon Cured Ones"
button_icon = 'icons/mob/actions/actions_minor_antag.dmi'
button_icon_state = "summon_dead"
invocation = "Come forth cured ones; let no disease be!"
invocation_type = INVOCATION_SHOUT
spell_requirements = NONE
cooldown_time = 15 SECONDS
summon_type = list(
/mob/living/basic/space_fauna/plague_doc/minion_zombies/zombieprisoner,
/mob/living/basic/space_fauna/plague_doc/minion_zombies/zombiehguard,
/mob/living/basic/space_fauna/plague_doc/minion_zombies/zombiescientist,
/mob/living/basic/space_fauna/plague_doc/minion_zombies/zombielguard,
)
summon_radius = 1
summon_amount = 2
///How many minions we summoned
var/summoned_minions = 0
///How many minions we can have at once
var/max_minions = 6

/datum/action/cooldown/spell/conjure/plague_summon_minions/can_cast_spell(feedback = TRUE)
. = ..()
if(!.)
return FALSE
if(summoned_minions >= max_minions)
return FALSE
return TRUE

/datum/action/cooldown/spell/conjure/plague_summon_minions/post_summon(atom/summoned_object, atom/cast_on)
var/mob/living/chosen_minion = summoned_object
RegisterSignals(chosen_minion, list(COMSIG_QDELETING, COMSIG_LIVING_DEATH), PROC_REF(lost_minion))
summoned_minions++

/datum/action/cooldown/spell/conjure/plague_summon_minions/proc/lost_minion(mob/source)
SIGNAL_HANDLER

UnregisterSignal(source, list(COMSIG_QDELETING, COMSIG_LIVING_DEATH))
summoned_minions--



58 changes: 58 additions & 0 deletions code/modules/mob/living/basic/space_fauna/plague_doc/plague_doc.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@

/mob/living/basic/plague_doc
name = "The Plague Doctor"
desc = "A mysterious figure with a birdmask and a long tattered black coat."
mob_biotypes = MOB_ORGANIC|MOB_HUMANOID
faction = list(FACTION_HOSTILE, FACTION_PLAGUE)
gender = MALE

response_help_continuous = "tries to poke"
response_help_simple = "tries to poke"
response_disarm_continuous = "pushes"
response_disarm_simple = "push"

basic_mob_flags = DEL_ON_DEATH
maxHealth = 1000
health = 1000
melee_damage_lower = 5
melee_damage_upper = 10
obj_damage = 50
attack_sound = 'sound/hallucinations/growl3.ogg'
ai_controller = /datum/ai_controller/basic_controller/plague_doc
///spell to summon minions
var/datum/action/cooldown/spell/conjure/plague_summon_minions/summon
icon_gib = "syndicate_gib"

/mob/living/basic/plague_doc/Initialize(mapload)
. = ..()
var/static/list/death_loot = list(/obj/effect/decal/remains/human)
AddElement(/datum/element/death_drops, death_loot)
apply_dynamic_human_appearance(src, mob_spawn_path = /obj/effect/mob_spawn/corpse/human/plaguedoctormob)
grant_abilities()

/mob/living/basic/plague_doc/proc/grant_abilities()
summon = new(src)
summon.Grant(src)
ai_controller.set_blackboard_key(BB_WIZARD_SUMMON_MINIONS, summon)


/datum/ai_controller/basic_controller/plague_doc
blackboard = list(
BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic,
)

ai_movement = /datum/ai_movement/basic_avoidance
idle_behavior = /datum/idle_behavior/idle_random_walk/less_walking
planning_subtrees = list(
/datum/ai_planning_subtree/simple_find_target,
/datum/ai_planning_subtree/use_mob_ability/wizard_summon_minions,
/datum/ai_planning_subtree/basic_melee_attack_subtree,
)

/datum/ai_planning_subtree/use_mob_ability/plague_summon_minions
ability_key = BB_WIZARD_SUMMON_MINIONS
finish_planning = FALSE



///ripped from paper wizard code
Loading
Loading