Merge pull request #10412 from Heroman3003/grand-theft-gender

Adds gender TF chemicals + Spontaneous TF pref
This commit is contained in:
Aronai Sieyes
2021-05-30 19:00:16 -04:00
committed by GitHub
10 changed files with 175 additions and 15 deletions
@@ -242,6 +242,7 @@
prob(2);/obj/item/weapon/storage/box/syndie_kit/spy,
prob(2);/obj/item/weapon/grenade/anti_photon,
prob(2);/obj/item/clothing/under/hyperfiber/bluespace,
prob(2);/obj/item/weapon/reagent_containers/glass/beaker/vial/amorphorovir,
prob(1);/obj/item/clothing/suit/storage/vest/heavy/merc,
prob(1);/obj/item/device/nif/bad,
prob(1);/obj/item/device/radio_jammer,
@@ -47,6 +47,58 @@
s.start()
holder.clear_reagents()
///////////////////////////////////////////////////////////////////////////////////
/// TF chemicals
/decl/chemical_reaction/instant/amorphorovir
name = "Amorphorovir"
id = "amorphorovir"
result = "amorphorovir"
required_reagents = list("cryptobiolin" = 30, "biomass" = 30, "hyperzine" = 20)
catalysts = list("phoron" = 5)
result_amount = 1
/decl/chemical_reaction/instant/androrovir
name = "Androrovir"
id = "androrovir"
result = "androrovir"
required_reagents = list("amorphorovir" = 1, "bicaridine" = 20, "iron" = 20, "ethanol" = 20)
result_amount = 1
/decl/chemical_reaction/instant/gynorovir
name = "Gynorovir"
id = "gynorovir"
result = "gynorovir"
required_reagents = list("amorphorovir" = 1, "inaprovaline" = 20, "silicon" = 20, "sugar" = 20)
result_amount = 1
/decl/chemical_reaction/instant/androgynorovir
name = "Androgynorovir"
id = "androgynorovir"
result = "androgynorovir"
required_reagents = list("amorphorovir" = 1, "anti_toxin" = 20, "fluorine" = 20, "tungsten" = 20)
result_amount = 1
/decl/chemical_reaction/instant/androrovir_bootleg
name = "Bootleg Androrovir"
id = "androrovir_bootleg"
result = "androrovir"
required_reagents = list("amorphorovir" = 1, "protein" = 10, "capsaicin" = 10)
result_amount = 1
/decl/chemical_reaction/instant/gynorovir_bootleg
name = "Bootleg Gynorovir"
id = "gynorovir_bootleg"
result = "gynorovir"
required_reagents = list("amorphorovir" = 1, "soymilk" = 10, "sugar" = 10)
result_amount = 1
/decl/chemical_reaction/instant/androgynorovir_bootleg
name = "Bootleg Androgynorovir"
id = "androgynorovir_bootleg"
result = "androgynorovir"
required_reagents = list("amorphorovir" = 1, "cola" = 10, "berryjuice" = 10)
result_amount = 1
///////////////////////////////////////////////////////////////////////////////////
/// Miscellaneous Reactions
@@ -85,7 +137,7 @@
required_reagents = list("water" = 1)
catalysts = list("fluorine" = 10)
result_amount = 1
/decl/chemical_reaction/instant/firefightingfoamqol //Please don't abuse this and make us remove it. Seriously.
name = "Firefighting Foam EZ"
id = "firefighting foam ez"
@@ -49,6 +49,10 @@
name = "vial (hyronalin)"
prefill = list("hyronalin" = 30)
/obj/item/weapon/reagent_containers/glass/beaker/vial/amorphorovir
name = "vial (amorphorovir)"
prefill = list("amorphorovir" = 1)
/obj/item/weapon/reagent_containers/glass/beaker/measuring_cup
name = "measuring cup"
desc = "A measuring cup."
@@ -6,6 +6,8 @@
color = "#13BC5E"
/datum/reagent/advmutationtoxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(!(M.allow_spontaneous_tf))
return
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.species.name != "Promethean")
@@ -119,3 +121,16 @@
if(nif.stat == NIF_TEMPFAIL)
nif.stat = NIF_INSTALLING
nif.durability = min(nif.durability + removed*0.1, initial(nif.durability))
//Special toxins for solargrubs
/datum/reagent/grubshock
name = "200 V" //in other words a painful shock
id = "shockchem"
description = "A liquid that quickly dissapates to deliver a painful shock."
reagent_state = LIQUID
color = "#E4EC2F"
metabolism = 2.50
var/power = 9
/datum/reagent/grubshock/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
M.take_organ_damage(0, removed * power * 0.2)
+68 -10
View File
@@ -117,16 +117,74 @@
P.absorbed = 0
M.visible_message("<font color='green'><b>Something spills into [M]'s [lowertext(B.name)]!</b></font>")
//Special toxins for solargrubs
////////////////////////// TF Drugs //////////////////////////
/datum/reagent/grubshock
name = "200 V" //in other words a painful shock
id = "shockchem"
description = "A liquid that quickly dissapates to deliver a painful shock."
/datum/reagent/amorphorovir
name = "Amorphorovir"
id = "amorphorovir"
description = "A base medical concoction, capable of rapidly altering genetic and physical structure of the body. Requires extra processing to allow for a targeted transformation."
reagent_state = LIQUID
color = "#E4EC2F"
metabolism = 2.50
var/power = 9
color = "#AAAAAA"
/datum/reagent/grubshock/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
M.take_organ_damage(0, removed * power * 0.2)
/datum/reagent/androrovir
name = "Androrovir"
id = "androrovir"
description = "A medical concoction, capable of rapidly altering genetic and physical structure of the body. This one seems to realign the target's gender to be male."
reagent_state = LIQUID
color = "#00BBFF"
/datum/reagent/androrovir/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(!(M.allow_spontaneous_tf))
return
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(M.reagents.has_reagent("gynorovir") || M.reagents.has_reagent("androgynorovir"))
H.Confuse(1)
else
if(!(H.gender == MALE))
H.set_gender(MALE)
H.change_gender_identity(MALE)
H.visible_message("<span class='notice'>[H] suddenly twitches as some of their features seem to contort and reshape, adjusting... In the end, it seems they are now male.</span>",
"<span class='warning'>Your body suddenly contorts, feeling very different in various ways... By the time the rushing feeling is over it seems you just became male.</span>")
/datum/reagent/gynorovir
name = "Gynorovir"
id = "gynorovir"
description = "A medical concoction, capable of rapidly altering genetic and physical structure of the body. This one seems to realign the target's gender to be female."
reagent_state = LIQUID
color = "#FF00AA"
/datum/reagent/gynorovir/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(!(M.allow_spontaneous_tf))
return
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(M.reagents.has_reagent("androrovir") || M.reagents.has_reagent("androgynorovir"))
H.Confuse(1)
else
if(!(H.gender == FEMALE))
H.set_gender(FEMALE)
H.change_gender_identity(FEMALE)
H.visible_message("<span class='notice'>[H] suddenly twitches as some of their features seem to contort and reshape, adjusting... In the end, it seems they are now female.</span>",
"<span class='warning'>Your body suddenly contorts, feeling very different in various ways... By the time the rushing feeling is over it seems you just became female.</span>")
/datum/reagent/androgynorovir
name = "Androgynorovir"
id = "androgynorovir"
description = "A medical concoction, capable of rapidly altering genetic and physical structure of the body. This one seems to realign the target's gender to be mixed."
reagent_state = LIQUID
color = "#6600FF"
/datum/reagent/androgynorovir/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(!(M.allow_spontaneous_tf))
return
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(M.reagents.has_reagent("gynorovir") || M.reagents.has_reagent("androrovir"))
H.Confuse(1)
else
if(!(H.gender == PLURAL))
H.set_gender(PLURAL)
H.change_gender_identity(PLURAL)
H.visible_message("<span class='notice'>[H] suddenly twitches as some of their features seem to contort and reshape, adjusting... In the end, it seems they are now of mixed gender.</span>",
"<span class='warning'>Your body suddenly contorts, feeling very different in various ways... By the time the rushing feeling is over it seems you just became of mixed gender.</span>")
+4
View File
@@ -28,6 +28,7 @@
var/permit_healbelly = TRUE
var/can_be_drop_prey = FALSE
var/can_be_drop_pred = TRUE // Mobs are pred by default.
var/allow_spontaneous_tf = FALSE // Obviously.
var/next_preyloop // For Fancy sound internal loop
var/adminbus_trash = FALSE // For abusing trash eater for event shenanigans.
var/adminbus_eat_minerals = FALSE // This creature subsists on a diet of pure adminium.
@@ -236,6 +237,7 @@
P.show_vore_fx = src.show_vore_fx
P.can_be_drop_prey = src.can_be_drop_prey
P.can_be_drop_pred = src.can_be_drop_pred
P.allow_spontaneous_tf = src.allow_spontaneous_tf
P.step_mechanics_pref = src.step_mechanics_pref
P.pickup_pref = src.pickup_pref
@@ -271,6 +273,7 @@
show_vore_fx = P.show_vore_fx
can_be_drop_prey = P.can_be_drop_prey
can_be_drop_pred = P.can_be_drop_pred
allow_spontaneous_tf = P.allow_spontaneous_tf
step_mechanics_pref = P.step_mechanics_pref
pickup_pref = P.pickup_pref
@@ -857,6 +860,7 @@
dispvoreprefs += "<b>Healbelly permission:</b> [permit_healbelly ? "Allowed" : "Disallowed"]<br>"
dispvoreprefs += "<b>Spontaneous vore prey:</b> [can_be_drop_prey ? "Enabled" : "Disabled"]<br>"
dispvoreprefs += "<b>Spontaneous vore pred:</b> [can_be_drop_pred ? "Enabled" : "Disabled"]<br>"
dispvoreprefs += "<b>Spontaneous transformation:</b> [allow_spontaneous_tf ? "Enabled" : "Disabled"]<br>"
dispvoreprefs += "<b>Can be stepped on/over:</b> [step_mechanics_pref ? "Allowed" : "Disallowed"]<br>"
dispvoreprefs += "<b>Can be picked up:</b> [pickup_pref ? "Allowed" : "Disallowed"]<br>"
user << browse("<html><head><title>Vore prefs: [src]</title></head><body><center>[dispvoreprefs]</center></body></html>", "window=[name]mvp;size=200x300;can_resize=0;can_minimize=0")
+5
View File
@@ -49,6 +49,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
var/feeding = TRUE
var/can_be_drop_prey = FALSE
var/can_be_drop_pred = FALSE
var/allow_spontaneous_tf = FALSE
var/digest_leave_remains = FALSE
var/allowmobvore = TRUE
var/permit_healbelly = TRUE
@@ -136,6 +137,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
show_vore_fx = json_from_file["show_vore_fx"]
can_be_drop_prey = json_from_file["can_be_drop_prey"]
can_be_drop_pred = json_from_file["can_be_drop_pred"]
allow_spontaneous_tf = json_from_file["allow_spontaneous_tf"]
step_mechanics_pref = json_from_file["step_mechanics_pref"]
pickup_pref = json_from_file["pickup_pref"]
belly_prefs = json_from_file["belly_prefs"]
@@ -163,6 +165,8 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
can_be_drop_prey = FALSE
if(isnull(can_be_drop_pred))
can_be_drop_pred = FALSE
if(isnull(allow_spontaneous_tf))
allow_spontaneous_tf = FALSE
if(isnull(step_mechanics_pref))
step_mechanics_pref = TRUE
if(isnull(pickup_pref))
@@ -192,6 +196,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
"show_vore_fx" = show_vore_fx,
"can_be_drop_prey" = can_be_drop_prey,
"can_be_drop_pred" = can_be_drop_pred,
"allow_spontaneous_tf" = allow_spontaneous_tf,
"step_mechanics_pref" = step_mechanics_pref,
"pickup_pref" = pickup_pref,
"belly_prefs" = belly_prefs,
+7
View File
@@ -224,6 +224,7 @@
"show_vore_fx" = host.show_vore_fx,
"can_be_drop_prey" = host.can_be_drop_prey,
"can_be_drop_pred" = host.can_be_drop_pred,
"allow_spontaneous_tf" = host.allow_spontaneous_tf,
"step_mechanics_active" = host.step_mechanics_pref,
"pickup_mechanics_active" = host.pickup_pref,
"noisy" = host.noisy,
@@ -354,6 +355,12 @@
host.client.prefs_vr.can_be_drop_prey = host.can_be_drop_prey
unsaved_changes = TRUE
return TRUE
if("toggle_allow_spontaneous_tf")
host.allow_spontaneous_tf = !host.allow_spontaneous_tf
if(host.client.prefs_vr)
host.client.prefs_vr.allow_spontaneous_tf = host.allow_spontaneous_tf
unsaved_changes = TRUE
return TRUE
if("toggle_digest")
host.digestable = !host.digestable
if(host.client.prefs_vr)
+17 -3
View File
@@ -607,6 +607,7 @@ const VoreUserPreferences = (props, context) => {
show_vore_fx,
can_be_drop_prey,
can_be_drop_pred,
allow_spontaneous_tf,
step_mechanics_active,
pickup_mechanics_active,
noisy,
@@ -767,7 +768,7 @@ const VoreUserPreferences = (props, context) => {
+ " Click this to enable showing FX.")}
content={show_vore_fx ? "Show Vore FX" : "Do Not Show Vore FX"} />
</Flex.Item>
<Flex.Item basis="49%">
<Flex.Item basis="32%">
<Button
onClick={() => act("toggle_leaveremains")}
icon={digest_leave_remains ? "toggle-on" : "toggle-off"}
@@ -779,9 +780,9 @@ const VoreUserPreferences = (props, context) => {
+ "if they do not, they will not leave your remains behind, even with this on. Click to disable remains"
: ("Regardless of Predator Setting, you will not leave remains behind."
+ " Click this to allow leaving remains.")}
content={digest_leave_remains ? "Allow Leaving Remains Behind" : "Do Not Allow Leaving Remains Behind"} />
content={digest_leave_remains ? "Allow Leaving Remains" : "Do Not Allow Leaving Remains"} />
</Flex.Item>
<Flex.Item basis="49%">
<Flex.Item basis="32%" grow={1}>
<Button
onClick={() => act("toggle_pickuppref")}
icon={pickup_mechanics_active ? "toggle-on" : "toggle-off"}
@@ -795,6 +796,19 @@ const VoreUserPreferences = (props, context) => {
+ " Click this to allow picking up/being picked up.")}
content={pickup_mechanics_active ? "Pick-up Mechanics Enabled" : "Pick-up Mechanics Disabled"} />
</Flex.Item>
<Flex.Item basis="32%">
<Button
onClick={() => act("toggle_allow_spontaneous_tf")}
icon={allow_spontaneous_tf ? "toggle-on" : "toggle-off"}
selected={allow_spontaneous_tf}
fluid
tooltip={"This toggle is for spontaneous or environment related transformation"
+ " as a victim, such as via chemicals. "
+ (allow_spontaneous_tf
? "Click here to allow being spontaneously transformed."
: "Click here to disable being spontaneously transformed.")}
content={allow_spontaneous_tf ? "Spontaneous TF Enabled" : "Spontaneous TF Disabled"} />
</Flex.Item>
<Flex.Item basis="49%">
<Button
fluid
File diff suppressed because one or more lines are too long