mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-16 12:07:48 +00:00
## About The Pull Request This PR moves random name generation for species onto their languages. What does this mean? - For species with a predefined name list, such as Lizards and Moths, nothing. - For species without predefined name lists, such as Felinids, their names will now be randomly generated from their language's syllables.   (In the prefs menu:)  Why? - Well, we actually had some dead code that did this. All I did was fix it up and re-enable it. - Generates some pretty believable in-universe names for various languages that are lacking name lists. Obviously defined lists would be preferred, but until they are added, at least. - Moves some stuff off of species, which is always nice. - Also hopefully makes it a tad easier to work with name generation. There's now a standard framework for getting a random name for a mob, and for getting a random name based on a species. Misc: - Adds a generic `species_prototype` global, uses it in a lot of places in prefs code. - Makes `GLOB.species_list` init via the global defines - Deletes Language SS - Alphabetizes some instances of admin tooling using the list of all species IDs - Docs language stuff - Deletes random_skin_tone, it does pretty much nothin ## Changelog 🆑 Melbert refactor: Random Name Generation has been refactored. Report any instances of people having weird (or "Unknown") names. qol: Felinids, Slimepeople, Podpeople, and some other species without defined namelists now automatically generate names based on their primary language(s). qol: More non-human names can be generated in codewords (and other misc. areas) than just lizard names. /🆑
87 lines
2.2 KiB
Plaintext
87 lines
2.2 KiB
Plaintext
/obj/structure/headpike
|
|
name = "spooky head on a spear"
|
|
desc = "When you really want to send a message."
|
|
icon = 'icons/obj/structures.dmi'
|
|
icon_state = "headpike"
|
|
density = FALSE
|
|
anchored = TRUE
|
|
var/obj/item/spear/spear
|
|
var/obj/item/spear/speartype = /obj/item/spear
|
|
var/obj/item/bodypart/head/victim
|
|
|
|
/obj/structure/headpike/bone //for bone spears
|
|
icon_state = "headpike-bone"
|
|
speartype = /obj/item/spear/bonespear
|
|
|
|
/obj/structure/headpike/bamboo //for bamboo spears
|
|
icon_state = "headpike-bamboo"
|
|
speartype = /obj/item/spear/bamboospear
|
|
|
|
/obj/structure/headpike/military //for military spears
|
|
icon_state = "headpike-military"
|
|
speartype = /obj/item/spear/military
|
|
|
|
/obj/structure/headpike/Initialize(mapload)
|
|
. = ..()
|
|
if(mapload)
|
|
CheckParts()
|
|
pixel_x = rand(-8, 8)
|
|
|
|
/obj/structure/headpike/Destroy()
|
|
QDEL_NULL(victim)
|
|
QDEL_NULL(spear)
|
|
return ..()
|
|
|
|
/obj/structure/headpike/CheckParts(list/parts_list)
|
|
victim = locate() in parts_list
|
|
if(!victim) //likely a mapspawned one
|
|
victim = new(src)
|
|
victim.real_name = generate_random_name()
|
|
spear = locate(speartype) in parts_list
|
|
if(!spear)
|
|
spear = new speartype(src)
|
|
update_appearance()
|
|
return ..()
|
|
|
|
/obj/structure/headpike/update_name()
|
|
name = "[victim.real_name] on a [spear.name]"
|
|
return ..()
|
|
|
|
/obj/structure/headpike/update_overlays()
|
|
. = ..()
|
|
if(!victim)
|
|
return
|
|
var/mutable_appearance/appearance = new()
|
|
appearance.copy_overlays(victim)
|
|
appearance.pixel_y = 12
|
|
appearance.layer = layer + 0.1
|
|
. += appearance
|
|
|
|
/obj/structure/headpike/Exited(atom/movable/gone, direction)
|
|
. = ..()
|
|
if(gone != victim && gone != spear)
|
|
return
|
|
if(gone == victim)
|
|
victim = null
|
|
if(gone == spear)
|
|
spear = null
|
|
if(!QDELETED(src))
|
|
deconstruct(TRUE)
|
|
|
|
/obj/structure/headpike/atom_deconstruct(disassembled)
|
|
var/obj/item/bodypart/head/our_head = victim
|
|
var/obj/item/spear/our_spear = spear
|
|
victim = null
|
|
spear = null
|
|
our_head?.forceMove(drop_location()) //Make sure the head always comes off
|
|
if(!disassembled)
|
|
return ..()
|
|
our_spear?.forceMove(drop_location())
|
|
|
|
/obj/structure/headpike/attack_hand(mob/user, list/modifiers)
|
|
. = ..()
|
|
if(.)
|
|
return
|
|
to_chat(user, span_notice("You take down [src]."))
|
|
deconstruct(TRUE)
|