mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-15 11:39:18 +00:00
## About The Pull Request Quite a lot of mobs had faction defines as a string, which always has a chance for error. For example, the clown mob spawner had their faction written as "clown", when the official faction name was "clowns", and a define existed for it anyways! This PR moves every single string based factions over here. No references or special role factions. Hopefully I didn't miss anything. I also moved a global define used for picking your uplink provider's flavour to the only file that used it, datum_traitor.dm, and renamed them a bit to avoid confusion. I have also noticed that the mimic faction was assigned to the petrified player with += instead of |=. |= would ensure no duplicate factions, so I have changed it. Future improvement: I have noticed that there is a lot of bloat with factions that contain only one or two entries (examples: gnomes, floating eyeballs, penguins, the pet lizards), and some always appear in pairs (vines and plants, the rare exceptions being killer tomatoes and strange reagent spawned pine trees), but trimming consolidating them is a matter for a different time. ## Why It's Good For The Game Makes assigning factions a bit less error prone. I can finally remove the ```/// Later all mob factions will be moved here and their current factions replaced with faction defines.``` comment. Later is NOW. ## Changelog Nothing player facing
140 lines
5.7 KiB
Plaintext
140 lines
5.7 KiB
Plaintext
/obj/structure/spawner
|
|
name = "monster nest"
|
|
icon = 'icons/mob/simple/animal.dmi'
|
|
icon_state = "hole"
|
|
max_integrity = 100
|
|
|
|
move_resist = MOVE_FORCE_EXTREMELY_STRONG
|
|
anchored = TRUE
|
|
density = TRUE
|
|
|
|
var/max_mobs = 5
|
|
var/spawn_time = 30 SECONDS
|
|
var/mob_types = list(/mob/living/basic/carp)
|
|
var/spawn_text = "emerges from"
|
|
var/faction = list(FACTION_HOSTILE)
|
|
var/spawner_type = /datum/component/spawner
|
|
|
|
/obj/structure/spawner/Initialize(mapload)
|
|
. = ..()
|
|
AddComponent(spawner_type, mob_types, spawn_time, max_mobs, faction, spawn_text)
|
|
|
|
/obj/structure/spawner/attack_animal(mob/living/simple_animal/user, list/modifiers)
|
|
if(faction_check(faction, user.faction, FALSE) && !user.client)
|
|
return
|
|
return ..()
|
|
|
|
|
|
/obj/structure/spawner/syndicate
|
|
name = "warp beacon"
|
|
icon = 'icons/obj/device.dmi'
|
|
icon_state = "syndbeacon"
|
|
spawn_text = "warps in from"
|
|
mob_types = list(/mob/living/basic/syndicate/ranged)
|
|
faction = list(ROLE_SYNDICATE)
|
|
|
|
/obj/structure/spawner/skeleton
|
|
name = "bone pit"
|
|
desc = "A pit full of bones, and some still seem to be moving..."
|
|
icon_state = "hole"
|
|
icon = 'icons/mob/simple/lavaland/nest.dmi'
|
|
max_integrity = 150
|
|
max_mobs = 15
|
|
spawn_time = 15 SECONDS
|
|
mob_types = list(/mob/living/simple_animal/hostile/skeleton)
|
|
spawn_text = "climbs out of"
|
|
faction = list(FACTION_SKELETON)
|
|
|
|
/obj/structure/spawner/clown
|
|
name = "Laughing Larry"
|
|
desc = "A laughing, jovial figure. Something seems stuck in his throat."
|
|
icon_state = "clownbeacon"
|
|
icon = 'icons/obj/device.dmi'
|
|
max_integrity = 200
|
|
max_mobs = 15
|
|
spawn_time = 15 SECONDS
|
|
mob_types = list(/mob/living/simple_animal/hostile/retaliate/clown, /mob/living/simple_animal/hostile/retaliate/clown/fleshclown, /mob/living/simple_animal/hostile/retaliate/clown/clownhulk, /mob/living/simple_animal/hostile/retaliate/clown/longface, /mob/living/simple_animal/hostile/retaliate/clown/clownhulk/chlown, /mob/living/simple_animal/hostile/retaliate/clown/clownhulk/honcmunculus, /mob/living/simple_animal/hostile/retaliate/clown/mutant/glutton, /mob/living/simple_animal/hostile/retaliate/clown/banana, /mob/living/simple_animal/hostile/retaliate/clown/honkling, /mob/living/simple_animal/hostile/retaliate/clown/lube)
|
|
spawn_text = "climbs out of"
|
|
faction = list(FACTION_CLOWN)
|
|
|
|
/obj/structure/spawner/mining
|
|
name = "monster den"
|
|
desc = "A hole dug into the ground, harboring all kinds of monsters found within most caves or mining asteroids."
|
|
icon_state = "hole"
|
|
max_integrity = 200
|
|
max_mobs = 3
|
|
icon = 'icons/mob/simple/lavaland/nest.dmi'
|
|
spawn_text = "crawls out of"
|
|
mob_types = list(/mob/living/simple_animal/hostile/asteroid/goldgrub, /mob/living/simple_animal/hostile/asteroid/goliath, /mob/living/simple_animal/hostile/asteroid/hivelord, /mob/living/simple_animal/hostile/asteroid/basilisk, /mob/living/basic/wumborian_fugu)
|
|
faction = list(FACTION_MINING)
|
|
|
|
/obj/structure/spawner/mining/goldgrub
|
|
name = "goldgrub den"
|
|
desc = "A den housing a nest of goldgrubs, annoying but arguably much better than anything else you'll find in a nest."
|
|
mob_types = list(/mob/living/simple_animal/hostile/asteroid/goldgrub)
|
|
|
|
/obj/structure/spawner/mining/goliath
|
|
name = "goliath den"
|
|
desc = "A den housing a nest of goliaths, oh god why?"
|
|
mob_types = list(/mob/living/simple_animal/hostile/asteroid/goliath)
|
|
|
|
/obj/structure/spawner/mining/hivelord
|
|
name = "hivelord den"
|
|
desc = "A den housing a nest of hivelords."
|
|
mob_types = list(/mob/living/simple_animal/hostile/asteroid/hivelord)
|
|
|
|
/obj/structure/spawner/mining/basilisk
|
|
name = "basilisk den"
|
|
desc = "A den housing a nest of basilisks, bring a coat."
|
|
mob_types = list(/mob/living/simple_animal/hostile/asteroid/basilisk)
|
|
|
|
/obj/structure/spawner/mining/wumborian
|
|
name = "wumborian fugu den"
|
|
desc = "A den housing a nest of wumborian fugus, how do they all even fit in there?"
|
|
mob_types = list(/mob/living/basic/wumborian_fugu)
|
|
|
|
/obj/structure/spawner/nether
|
|
name = "netherworld link"
|
|
desc = null //see examine()
|
|
icon_state = "nether"
|
|
max_integrity = 50
|
|
spawn_time = 60 SECONDS
|
|
max_mobs = 15
|
|
icon = 'icons/mob/simple/lavaland/nest.dmi'
|
|
spawn_text = "crawls through"
|
|
mob_types = list(/mob/living/basic/migo, /mob/living/basic/creature, /mob/living/basic/blankbody)
|
|
faction = list(FACTION_NETHER)
|
|
|
|
/obj/structure/spawner/nether/Initialize(mapload)
|
|
. = ..()
|
|
START_PROCESSING(SSprocessing, src)
|
|
|
|
/obj/structure/spawner/nether/examine(mob/user)
|
|
. = ..()
|
|
if(isskeleton(user) || iszombie(user))
|
|
. += "A direct link to another dimension full of creatures very happy to see you. [span_nicegreen("You can see your house from here!")]"
|
|
else
|
|
. += "A direct link to another dimension full of creatures not very happy to see you. [span_warning("Entering the link would be a very bad idea.")]"
|
|
|
|
/obj/structure/spawner/nether/attack_hand(mob/user, list/modifiers)
|
|
. = ..()
|
|
if(isskeleton(user) || iszombie(user))
|
|
to_chat(user, span_notice("You don't feel like going home yet..."))
|
|
else
|
|
user.visible_message(span_warning("[user] is violently pulled into the link!"), \
|
|
span_userdanger("Touching the portal, you are quickly pulled through into a world of unimaginable horror!"))
|
|
contents.Add(user)
|
|
|
|
/obj/structure/spawner/nether/process(delta_time)
|
|
for(var/mob/living/living_mob in contents)
|
|
if(living_mob)
|
|
playsound(src, 'sound/magic/demon_consume.ogg', 50, TRUE)
|
|
living_mob.adjustBruteLoss(60 * delta_time)
|
|
new /obj/effect/gibspawner/generic(get_turf(living_mob), living_mob)
|
|
if(living_mob.stat == DEAD)
|
|
var/mob/living/basic/blankbody/newmob = new(loc)
|
|
newmob.name = "[living_mob]"
|
|
newmob.desc = "It's [living_mob], but [living_mob.p_their()] flesh has an ashy texture, and [living_mob.p_their()] face is featureless save an eerie smile."
|
|
src.visible_message(span_warning("[living_mob] reemerges from the link!"))
|
|
qdel(living_mob)
|