mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-09 00:13:55 +00:00
* Virtual Domains now have certain areas protected from ghost role interference (#82960) ## About The Pull Request This touches up on the bitrunning ghost roles that come with some maps, namely Corsair Cove and Syndicate Assault. The gist of it is: Ghost role spawners and Digital Anomalies (the random event boss mobs) are now restricted from entering the VDOM safehouse, and other areas where critical equipment is stored. Here's an example from Syndicate Assault -- The X-ed out area is considered "out of bounds" for digital anomalies/ghost roles:  Additionally, this also fixes the matter of pirate ghost role spawns creating their own antag datum/pirate team, which would carry into the roundend report. Since these are no longer legitimate pirate spawners and are now specifically designed spawners for virtual domains. Naturally, emagging the server jailbreaks all of these restrictions and notifies any virtual entities. The new subtype of spawners should also be scalable enough that new VDOMs should be able to implement new ghost role spawners with ease. ## Why It's Good For The Game It's one thing to have sentient mobs to fight, which can shake up the otherwise somewhat static nature of bitrunning maps, but when players are tossing equipment, spawncamping, or otherwise making it impossible for the runners to fight them it ends up being unfun for everyone involved. You can't get into a good fight with a bitrunner avatar if their only recourse is to wipe the map and everything (YOU) in it. This ensures a level of fairness between the (typically vindictive) ghost roles of a VDOM and the players. Also, pirate spawns don't make a new pirate team/datum. That's one of the fixes I was aiming for with this. ## Changelog 🆑 Rhials balance: Virtual domain ghost roles can no longer enter the safehouse/"equipment" areas of a domain. fix: Pirate virtual domain ghost roles will no longer make a pirate team antag datum. /🆑 --------- Co-authored-by: Jeremiah <42397676+jlsnow301@ users.noreply.github.com> * Virtual Domains now have certain areas protected from ghost role interference --------- Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com> Co-authored-by: Jeremiah <42397676+jlsnow301@ users.noreply.github.com>
52 lines
2.3 KiB
Plaintext
52 lines
2.3 KiB
Plaintext
/obj/effect/mob_spawn/ghost_role/human/virtual_domain
|
|
outfit = /datum/outfit/pirate
|
|
prompt_name = "a virtual domain debug entity"
|
|
flavour_text = "You probably shouldn't be seeing this, contact a coder!"
|
|
you_are_text = "You are NOT supposed to be here. How did you let this happen?"
|
|
|
|
/obj/effect/mob_spawn/ghost_role/human/virtual_domain/Initialize(mapload)
|
|
. = ..()
|
|
notify_ghosts("The [name] has been created. The virtual world calls for aid!", src, "Virtual Insanity!")
|
|
|
|
/obj/effect/mob_spawn/ghost_role/human/virtual_domain/special(mob/living/spawned_mob, mob/mob_possessor)
|
|
. = ..()
|
|
|
|
spawned_mob.mind.add_antag_datum(/datum/antagonist/domain_ghost_actor)
|
|
|
|
/obj/effect/mob_spawn/ghost_role/human/virtual_domain/pirate
|
|
name = "Virtual Pirate Remains"
|
|
desc = "Some inanimate bones. They feel like they could spring to life at any moment!"
|
|
density = FALSE
|
|
icon = 'icons/effects/blood.dmi'
|
|
icon_state = "remains"
|
|
prompt_name = "a virtual skeleton pirate"
|
|
you_are_text = "You are a virtual pirate. Yarrr!"
|
|
flavour_text = "You have awoken, without instruction. There's a LANDLUBBER after yer booty. Stop them!"
|
|
|
|
/obj/effect/mob_spawn/ghost_role/human/virtual_domain/pirate/special(mob/living/spawned_mob, mob/mob_possessor)
|
|
. = ..()
|
|
spawned_mob.fully_replace_character_name(spawned_mob.real_name, "[pick(strings(PIRATE_NAMES_FILE, "generic_beginnings"))][pick(strings(PIRATE_NAMES_FILE, "generic_endings"))]")
|
|
|
|
/obj/effect/mob_spawn/ghost_role/human/virtual_domain/syndie
|
|
name = "Virtual Syndicate Sleeper"
|
|
icon = 'icons/obj/machines/sleeper.dmi'
|
|
icon_state = "sleeper_s"
|
|
prompt_name = "a virtual syndicate operative"
|
|
you_are_text = "You are a virtual syndicate operative."
|
|
flavour_text = "You have awoken, without instruction. Alarms blare! We are being boarded!"
|
|
outfit = /datum/outfit/virtual_syndicate
|
|
spawner_job_path = /datum/job/space_syndicate
|
|
|
|
/datum/outfit/virtual_syndicate
|
|
name = "Virtual Syndie"
|
|
id = /obj/item/card/id/advanced/chameleon
|
|
id_trim = /datum/id_trim/chameleon/operative
|
|
uniform = /obj/item/clothing/under/syndicate
|
|
back = /obj/item/storage/backpack
|
|
gloves = /obj/item/clothing/gloves/tackler/combat/insulated
|
|
shoes = /obj/item/clothing/shoes/combat
|
|
implants = list(/obj/item/implant/weapons_auth)
|
|
|
|
/datum/outfit/virtual_syndicate/post_equip(mob/living/carbon/human/user, visualsOnly)
|
|
user.faction |= ROLE_SYNDICATE
|