mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-30 00:29:02 +01:00
+3








77616e8b0e
## About The Pull Request Adds the funny nanite blob dudes from Vigro code into the game. It's more of a port of the idea since they're coded from the ground up. They will be more of a utility focused species then a combat focused species. **They are fragile.** - Eats metal. You need metal to live and you need metal to heal. - Healed by materials. You feed Proteans metal to heal them. - Difficult to kill, but extremely fragile. They are considered a deathless species but they are stuck in their suit if they die. **You have to order a new refactory from cargo to revive them** **Order Refactory > Screwdriver suit > Insert refactory > Wait 5 minutes.** - Easily dismembered. They have 30 seconds to recover their limbs and pop them on or they will melt into nothingness. Can do a lengthy heal which replaces missing limbs and easy to replace organs. - Without a refactory, you will wither away. - Without an orchastrator, you will have a lot of issues moving. - You can lock your suit on someone. (OOC escape will work) - You can assimilate modsuits. - [x] OOC escape - [x] Suit Transformation fixes - [x] Modsuit Assimilation - [x] Ensure organs are working - [x] Species info and lore - [x] Antag Proteans - [x] Custom damage. Disable various surgeries. - [x] Testing, polish, feedback. - [x] Runtime and CI fixing. - [ ] Live testing and balance. ## Why It's Good For The Game This was the second to top vote on species people wanted to see added and this is more custom mechanics then what is just a human reskin. ## Proof Of Testing   ## Changelog 🆑 StrangeWeirdKitten, Majkl-J add: New species: Proteans /🆑 --------- Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com> Co-authored-by: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com> Co-authored-by: aKromatopzia <94389683+aKromatopzia@users.noreply.github.com> Co-authored-by: Jinshee <96621959+Jinshee@users.noreply.github.com> Co-authored-by: Jinshee <manastra2536@gmail.com> Co-authored-by: JustMeTheIInd <145101584+JustMeTheIInd@users.noreply.github.com> Co-authored-by: nevimer <77420409+nevimer@users.noreply.github.com> Co-authored-by: Odairu <39929315+Odairu@users.noreply.github.com> Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com> Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com>
115 lines
3.5 KiB
Plaintext
115 lines
3.5 KiB
Plaintext
/mob/living/carbon/human/verb/climax_verb()
|
|
set name = "Climax"
|
|
set category = "IC"
|
|
|
|
if(!has_status_effect(/datum/status_effect/climax_cooldown))
|
|
if(tgui_alert(usr, "Are you sure you want to cum?", "Climax", list("Yes", "No")) == "Yes")
|
|
if(stat != CONSCIOUS)
|
|
to_chat(usr, span_warning("You can't climax right now..."))
|
|
return
|
|
else
|
|
climax(TRUE)
|
|
else
|
|
to_chat(src, span_warning("You can't cum right now!"))
|
|
|
|
/mob/living/verb/reflexes_verb()
|
|
set name = "Toggle Reflexes"
|
|
set category = "IC"
|
|
if(!HAS_TRAIT_FROM(src, TRAIT_QUICKREFLEXES, REF(src)))
|
|
ADD_TRAIT(src, TRAIT_QUICKREFLEXES, REF(src))
|
|
to_chat(src, span_notice("[get_reflexes_gain_text()]"))
|
|
else
|
|
REMOVE_TRAIT(src, TRAIT_QUICKREFLEXES, REF(src))
|
|
to_chat(src, span_notice("[get_reflexes_lose_text()]"))
|
|
|
|
/mob/living/proc/get_reflexes_gain_text()
|
|
return "You don't feel like being touched right now."
|
|
|
|
/mob/living/proc/get_reflexes_lose_text()
|
|
return "You'll allow yourself to be touched now."
|
|
|
|
/mob/living/silicon/get_reflexes_gain_text()
|
|
return "Our systems will disallow platonic contact."
|
|
|
|
/mob/living/silicon/get_reflexes_lose_text()
|
|
return "Our systems will allow platonic contact."
|
|
|
|
/mob/living/carbon/human/Initialize(mapload)
|
|
. = ..()
|
|
if(CONFIG_GET(flag/disable_erp_preferences))
|
|
verbs -= /mob/living/carbon/human/verb/climax_verb
|
|
if(CONFIG_GET(flag/disable_lewd_items))
|
|
verbs -= /mob/living/carbon/human/verb/safeword
|
|
|
|
/mob/living/carbon/human/verb/remove_lewd_items()
|
|
set name = "Remove Lewd Items"
|
|
set category = "OOC"
|
|
set desc = "Removes any and all lewd items from you."
|
|
// literally just another way to safeword
|
|
safeword()
|
|
|
|
/mob/living/carbon/human/verb/safeword()
|
|
set name = "OOC Safe Word"
|
|
set category = "OOC"
|
|
set desc = "Removes any and all lewd items from you."
|
|
SEND_SIGNAL(src, COMSIG_OOC_ESCAPE)
|
|
log_message("[key_name(src)] used the OOC Safe Word verb.", LOG_ATTACK)
|
|
for(var/obj/item/equipped_item in get_equipped_items())
|
|
if(!(equipped_item.type in GLOB.pref_checked_clothes))
|
|
continue
|
|
|
|
log_message("[equipped_item] was removed from [key_name(src)].", LOG_ATTACK)
|
|
dropItemToGround(equipped_item, TRUE)
|
|
|
|
// Leashes are treated a smidge different than the rest of the clothing; and need their own handling here.
|
|
var/leash_check = src?.GetComponent(/datum/component/leash/erp)
|
|
if(leash_check)
|
|
qdel(leash_check)
|
|
|
|
// Vore Edit
|
|
if(istype(loc, /obj/vore_belly))
|
|
forceMove(get_turf(src))
|
|
|
|
return TRUE
|
|
|
|
/mob/living/carbon/human/verb/lick(mob/living/carbon/human/target in get_adjacent_humans())
|
|
set name = "Lick"
|
|
set category = "IC"
|
|
|
|
if(!istype(target))
|
|
return FALSE
|
|
|
|
var/taste = target?.dna?.features["taste"]
|
|
if(!taste)
|
|
to_chat(src, span_warning("[target] doesn't seem to have a taste."))
|
|
return FALSE
|
|
|
|
to_chat(src, span_notice("[target] tastes like [taste]."))
|
|
to_chat(target, span_notice("[src] licks you."))
|
|
|
|
/mob/living/carbon/human/verb/smell(mob/living/carbon/human/target in get_adjacent_humans())
|
|
set name = "Smell"
|
|
set category = "IC"
|
|
|
|
if(!istype(target))
|
|
return FALSE
|
|
|
|
var/smell = target?.dna?.features["smell"]
|
|
if(!smell)
|
|
to_chat(src, span_warning("[target] doesn't seem to have a smell."))
|
|
return FALSE
|
|
|
|
to_chat(src, span_notice("[target] smells like [smell]."))
|
|
|
|
/// Returns a list containing all of the humans adjacent to the user.
|
|
/mob/living/proc/get_adjacent_humans()
|
|
var/list/nearby_humans = orange(1, src)
|
|
for(var/mob/living/carbon/human/nearby_human as anything in nearby_humans)
|
|
if(ishuman(nearby_human))
|
|
continue
|
|
|
|
nearby_humans -= nearby_human
|
|
|
|
return nearby_humans
|
|
|