mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-18 02:25:06 +01:00
Merge branch 'master' of https://github.com/VOREStation/VOREStation into spriteshit
# Conflicts: # code/game/dna/dna2.dm # code/game/dna/dna2_helpers.dm
This commit is contained in:
@@ -21,7 +21,7 @@
|
||||
force to protect most of humanity's interests across the galaxy."
|
||||
work = "governing body of humanity's colonies"
|
||||
headquarters = "Paris, Earth"
|
||||
motto = "" // Latin, because latin. Says 'Nothing is too steep for mortals'.
|
||||
motto = ""
|
||||
autogenerate_destination_names = TRUE
|
||||
|
||||
ship_prefixes = list("SCG-T" = "transportation", "SCG-D" = "diplomatic", "SCG-F" = "freight")
|
||||
@@ -33,6 +33,32 @@
|
||||
"Titan"
|
||||
)// autogen will add a lot of other places as well.
|
||||
|
||||
/datum/lore/organization/gov/sifgov // Overrides Polaris stuff
|
||||
name = "Virgo-Erigone Governmental Authority"
|
||||
short_name = ""
|
||||
desc = "Existing far outside the reach of SolGov space, the only governing body of the Virgo-Erigone system is the Virgo Prime Governmental \
|
||||
Authority, also known as VEGA. It is a Technocracy founded and operated by NanoTrasen, using company appointed experts hired to see \
|
||||
to the comfort and well being of Virgo's citizens; most of whom are also NanoTrasen employees. VEGA provides basic social services \
|
||||
such as law enforcement, emergency services, medical care, education, and infrastructure. VEGA's operations are based on the world \
|
||||
of Virgo Prime, within the spaceport city of Anur. Although the government is an entity of NanoTrasen, some elements of democracy \
|
||||
are still practiced, such as voting on changes to local law, policy, or public works."
|
||||
history = "VEGA was founded in 2556, shortly after the Virgo-Erigone system was colonized by a population of 1000. That population has \
|
||||
multiplied many times since then as wealth and commerce come and go from this frontier star system."
|
||||
work = "governing body of Virgo-Erigone"
|
||||
headquarters = "Anur, Virgo Prime"
|
||||
motto = "Reach for the Stars."
|
||||
autogenerate_destination_names = FALSE
|
||||
|
||||
ship_prefixes = list("VEFD" = "fire rescue", "VEPD" = "patrol", "VEGA" = "administrative", "SAR" = "medivac")
|
||||
destination_names = list(
|
||||
"the colony at Virgo-3B",
|
||||
"the VORE-1 debris field",
|
||||
"a colony on Virgo-2",
|
||||
"a telecommunications satellite",
|
||||
"the Anur Spaceport",
|
||||
"to a local distress beacon"
|
||||
)
|
||||
|
||||
/datum/lore/organization/gov/federation
|
||||
name = "United Federation of Planets"
|
||||
short_name = "Federation"
|
||||
@@ -101,7 +127,7 @@
|
||||
"Mari Industrial Complex on Furlou Prime",
|
||||
"Runni Crystal Mines of Keid V")
|
||||
|
||||
/datum/lore/organization/mil/unsc // change to sif_guard in future to overwrite Polaris stuff
|
||||
/datum/lore/organization/gov/unsc // change to sif_guard in future to overwrite Polaris stuff
|
||||
name = "United Nations Space Command"
|
||||
short_name = "" // This is blank on purpose. Otherwise they call the ships "UNSC" "UNSC Name"
|
||||
desc = "The dedicated military force of SolGov, originally formed by the United Nations, is the might of SolGov. It is the \
|
||||
@@ -158,7 +184,7 @@
|
||||
"Hoenir",
|
||||
"In Amber Clad",
|
||||
"Iwo Jima",
|
||||
"Jörmungandr",
|
||||
"Jörmungandr",
|
||||
"Leonidas",
|
||||
"Meriwether Lewis",
|
||||
"Midsummer Night",
|
||||
@@ -265,7 +291,7 @@
|
||||
history = "Originally only a strike of miners on the dusty, arid planet of Ares in the year 2540, the Ares Confederation was quickly \
|
||||
established under the leadership of retired UNSC Colonel Rodrick Gellaume, who is now Prime Minister."
|
||||
work = "rebel fringe government"
|
||||
headquarters = "Paraiso a Àstrea"
|
||||
headquarters = "Paraiso a Àstrea"
|
||||
motto = "Liberty to the Stars!"
|
||||
|
||||
ship_prefixes = list("UFHV" = "military", "FFHV" = "shady")
|
||||
@@ -300,7 +326,7 @@
|
||||
"None Of Your Business")
|
||||
destination_names = list("Drydocks of the Ares Confederation",
|
||||
"a classified location",
|
||||
"a Homestead on Paraiso a Àstrea",
|
||||
"a Homestead on Paraiso a Àstrea",
|
||||
"a contested sector of ArCon space",
|
||||
"one of our free colonies",
|
||||
"the Gateway 98-C at Arest",
|
||||
@@ -406,4 +432,4 @@
|
||||
"Cor Galaxia",
|
||||
"near Cor Galaxia",
|
||||
"Segmentum Obscurum", // Basically their home territory, where our telescopes can't see. They prefer to keep it that way. They call it something else internally.
|
||||
)
|
||||
)
|
||||
|
||||
@@ -10,6 +10,6 @@
|
||||
name = "\improper CH252 helmet"
|
||||
desc = "If you wanna to keep your brain inside your head, you'd best put this on!"
|
||||
icon_state = "unsc_helm"
|
||||
item_state = "swat_hel"
|
||||
item_state = "unsc_helm"
|
||||
icon = 'icons/obj/clothing/hats_vr.dmi'
|
||||
icon_override = 'icons/mob/head_vr.dmi'
|
||||
@@ -2,7 +2,8 @@
|
||||
name = "\improper ODST Helmet"
|
||||
desc = "<i>\"... we are glad to plunge feet first into hell in the knowledge that we will rise.\"</i>"
|
||||
icon_state = "rig0-odst"
|
||||
item_state = "swat_hel" //Placeholder
|
||||
item_state = "rig0-odst"
|
||||
item_state_slots = null
|
||||
icon = 'icons/obj/clothing/hats_vr.dmi'
|
||||
icon_override = 'icons/mob/head_vr.dmi'
|
||||
light_overlay = "helmet_light_dual"
|
||||
@@ -19,6 +20,7 @@
|
||||
name = "ODST Armor"
|
||||
desc = "<i>\"... we are glad to plunge feet first into hell in the knowledge that we will rise.\"</i>"
|
||||
icon_state = "odst"
|
||||
item_state = "swat_suit"
|
||||
item_state = "odst"
|
||||
item_state_slots = null
|
||||
icon = 'icons/obj/clothing/suits_vr.dmi'
|
||||
icon_override = 'icons/mob/suit_vr.dmi'
|
||||
@@ -100,28 +100,7 @@
|
||||
icon = 'icons/obj/clothing/uniforms_vr.dmi'
|
||||
icon_override = 'icons/mob/uniform_vr.dmi'
|
||||
icon_state = "bdu_olive"
|
||||
verb/toggle_sleeves()
|
||||
set name = "Roll sleeves"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
if(!usr.canmove || usr.stat || usr.restrained())
|
||||
return 0
|
||||
|
||||
switch(icon_state)
|
||||
if("bdu_olive_rolled")
|
||||
src.icon_state = "bdu_olive"
|
||||
usr << "You roll down your sleeves."
|
||||
if("bdu_olive")
|
||||
src.icon_state = "bdu_olive_rolled"
|
||||
usr << "You roll up your sleeves."
|
||||
if("bdu_d_camo_rolled")
|
||||
src.icon_state = "bdu_d_camo"
|
||||
usr << "You roll down your sleeves."
|
||||
if("bdu_d_camo")
|
||||
src.icon_state = "bdu_d_camo_rolled"
|
||||
usr << "You roll up your sleeves."
|
||||
usr.update_inv_w_uniform() // So our uniform updates on our character.
|
||||
item_state = "bdu_olive"
|
||||
|
||||
/obj/item/clothing/under/utility/marine/desert
|
||||
name = "desert fatigues"
|
||||
@@ -129,28 +108,7 @@
|
||||
icon = 'icons/obj/clothing/uniforms_vr.dmi'
|
||||
icon_override = 'icons/mob/uniform_vr.dmi'
|
||||
icon_state = "bdu_olive"
|
||||
verb/toggle_sleeves()
|
||||
set name = "Roll sleeves"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
if(!usr.canmove || usr.stat || usr.restrained())
|
||||
return 0
|
||||
|
||||
switch(icon_state)
|
||||
if("bdu_olive_rolled")
|
||||
src.icon_state = "bdu_olive"
|
||||
usr << "You roll down your sleeves."
|
||||
if("bdu_olive")
|
||||
src.icon_state = "bdu_olive_rolled"
|
||||
usr << "You roll up your sleeves."
|
||||
if("bdu_d_camo_rolled")
|
||||
src.icon_state = "bdu_d_camo"
|
||||
usr << "You roll down your sleeves."
|
||||
if("bdu_d_camo")
|
||||
src.icon_state = "bdu_d_camo_rolled"
|
||||
usr << "You roll up your sleeves."
|
||||
usr.update_inv_w_uniform() // So our uniform updates on our character.
|
||||
item_state = "bdu_olive"
|
||||
|
||||
/obj/item/clothing/under/utility/marine/medical
|
||||
name = "marine medical fatigues"
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
else if(people_eaten && resting)
|
||||
icon_state = "[chassis]_rest_full"
|
||||
|
||||
/mob/living/carbon/robot/proc/examine_bellies_pai()
|
||||
/mob/living/silicon/pai/proc/examine_bellies_pai()
|
||||
|
||||
var/message = ""
|
||||
for (var/I in src.vore_organs)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/carbon/robot/proc/examine_bellies_borg()
|
||||
/mob/living/silicon/robot/proc/examine_bellies_borg()
|
||||
|
||||
var/message = ""
|
||||
for (var/I in src.vore_organs)
|
||||
|
||||
@@ -75,6 +75,7 @@
|
||||
src.modules += new /obj/item/weapon/reagent_containers/borghypo(src)//So medi-hounds aren't nearly useless
|
||||
src.modules += new /obj/item/weapon/reagent_containers/syringe(src) //In case the chemist is nice!
|
||||
src.modules += new /obj/item/weapon/reagent_containers/glass/beaker(src)//For holding the chemicals when the chemist is nice
|
||||
src.modules += new /obj/item/device/sleevemate(src) //Lets them scan people.
|
||||
R.icon = 'icons/mob/widerobot_vr.dmi'
|
||||
R.hands.icon = 'icons/mob/screen1_robot_vr.dmi'
|
||||
//R.icon_state = "medihound"
|
||||
@@ -82,6 +83,12 @@
|
||||
R.old_x = -16
|
||||
..()
|
||||
|
||||
/obj/item/weapon/robot_module/robot/medical/surgeon/New()
|
||||
src.modules += new /obj/item/device/sleevemate(src) //Lets them scan people.
|
||||
|
||||
/obj/item/weapon/robot_module/robot/medical/crisis/New()
|
||||
src.modules += new /obj/item/device/sleevemate(src) //Lets them scan people.
|
||||
|
||||
/obj/item/weapon/robot_module/ert
|
||||
name = "Emergency Responce module"
|
||||
channels = list("Security" = 1)
|
||||
@@ -132,4 +139,4 @@
|
||||
|
||||
/obj/item/weapon/robot_module/scrubpup/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
|
||||
var/obj/item/device/lightreplacer/LR = locate() in src.modules
|
||||
LR.Charge(R, amount)
|
||||
LR.Charge(R, amount)
|
||||
|
||||
@@ -22,8 +22,8 @@
|
||||
build_path = /obj/item/weapon/implantcase/backup
|
||||
|
||||
/datum/design/item/weapon/sizegun
|
||||
name = "Shrink ray"
|
||||
id = "shrinkray"
|
||||
name = "Size gun"
|
||||
id = "sizegun"
|
||||
req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 2000, "uranium" = 2000)
|
||||
build_path = /obj/item/weapon/gun/energy/sizegun
|
||||
|
||||
@@ -287,7 +287,7 @@
|
||||
name = "pharoah hound ears (Shock Diamond)"
|
||||
desc = ""
|
||||
icon_state = "shock"
|
||||
ckeys_allowed = list("icowom")
|
||||
ckeys_allowed = list("icowom","cameron653")
|
||||
|
||||
/datum/sprite_accessory/ears/alurane
|
||||
name = "alurane ears/hair (Pumila)"
|
||||
|
||||
@@ -345,534 +345,262 @@
|
||||
///////////////////////////// DM_TRANSFORM_HAIR_AND_EYES /////////////////////////////
|
||||
if(digest_mode == DM_TRANSFORM_HAIR_AND_EYES && ishuman(owner))
|
||||
for (var/mob/living/carbon/human/P in internal_contents)
|
||||
if(P.stat)
|
||||
if(P.stat == DEAD)
|
||||
continue
|
||||
|
||||
var/mob/living/carbon/human/O = owner
|
||||
|
||||
var/TFchance = 1 //This used to be RNG, resulting people waiting ages. This way does it instantly.
|
||||
if(TFchance == 1)
|
||||
if(P.r_hair != O.r_hair || P.g_hair != O.g_hair || P.b_hair != O.b_hair || P.r_skin != O.r_skin || P.g_skin != O.g_skin || P.b_skin != O.b_skin || P.r_facial != O.r_facial || P.g_facial != O.g_facial || P.b_facial != O.b_facial)
|
||||
P.r_hair = O.r_hair
|
||||
P.r_facial = O.r_facial
|
||||
P.g_hair = O.g_hair
|
||||
P.g_facial = O.g_facial
|
||||
P.b_hair = O.b_hair
|
||||
P.b_facial = O.b_facial
|
||||
P.r_skin = O.r_skin
|
||||
P.g_skin = O.g_skin
|
||||
P.b_skin = O.b_skin
|
||||
P.h_style = O.h_style
|
||||
P << "<span class='notice'>Your body tingles all over...</span>"
|
||||
owner << "<span class='notice'>You tingle as you make noticeable changes to your captive's body.</span>"
|
||||
P.update_hair()
|
||||
P.update_body()
|
||||
P.updateicon()
|
||||
|
||||
if(O.nutrition > 400 && P.nutrition < 400)
|
||||
O.nutrition -= 2
|
||||
P.nutrition += 1.5
|
||||
|
||||
if(check_eyes(P) || check_hair(P))
|
||||
change_eyes(P)
|
||||
change_hair(P,1)
|
||||
|
||||
return
|
||||
///////////////////////////// DM_TRANSFORM_MALE /////////////////////////////
|
||||
if(digest_mode == DM_TRANSFORM_MALE && ishuman(owner))
|
||||
for (var/mob/living/carbon/human/P in internal_contents)
|
||||
if(P.stat)
|
||||
if(P.stat == DEAD)
|
||||
continue
|
||||
|
||||
var/mob/living/carbon/human/O = owner
|
||||
|
||||
var/TFchance = 1
|
||||
if(TFchance == 1)
|
||||
|
||||
var/TFmodify = rand(1,3)
|
||||
if(TFmodify == 1 && P.r_eyes != O.r_eyes || P.g_eyes != O.g_eyes || P.b_eyes != O.b_eyes)
|
||||
P.r_eyes = O.r_eyes
|
||||
P.g_eyes = O.g_eyes
|
||||
P.b_eyes = O.b_eyes
|
||||
P << "<span class='notice'>You feel lightheaded and drowsy...</span>"
|
||||
owner << "<span class='notice'>You feel warm as you make subtle changes to your captive's body.</span>"
|
||||
P.update_eyes()
|
||||
|
||||
if(TFmodify == 2 && P.r_hair != O.r_hair || P.g_hair != O.g_hair || P.b_hair != O.b_hair || P.r_skin != O.r_skin || P.g_skin != O.g_skin || P.b_skin != O.b_skin || P.r_facial != O.r_facial || P.g_facial != O.g_facial || P.b_facial != O.b_facial)
|
||||
P.r_hair = O.r_hair
|
||||
P.r_facial = O.r_facial
|
||||
P.g_hair = O.g_hair
|
||||
P.g_facial = O.g_facial
|
||||
P.b_hair = O.b_hair
|
||||
P.b_facial = O.b_facial
|
||||
P.r_skin = O.r_skin
|
||||
P.g_skin = O.g_skin
|
||||
P.b_skin = O.b_skin
|
||||
P.h_style = O.h_style
|
||||
P << "<span class='notice'>Your body tingles all over...</span>"
|
||||
owner << "<span class='notice'>You tingle as you make noticeable changes to your captive's body.</span>"
|
||||
P.update_hair()
|
||||
P.update_body()
|
||||
P.updateicon()
|
||||
|
||||
if(TFmodify == 3 && P.gender != MALE && P.identifying_gender != MALE)
|
||||
P.gender = MALE
|
||||
P.identifying_gender = MALE
|
||||
P << "<span class='notice'>Your body feels very strange...</span>"
|
||||
owner << "<span class='notice'>You feel strange as you alter your captive's gender.</span>"
|
||||
P.update_body()
|
||||
P.updateicon()
|
||||
|
||||
if(O.nutrition > 400 && P.nutrition < 400)
|
||||
O.nutrition -= 2
|
||||
P.nutrition += 1.5
|
||||
|
||||
if(check_eyes(P))
|
||||
change_eyes(P,1)
|
||||
continue
|
||||
|
||||
if(check_hair(P) || check_skin(P))
|
||||
change_hair(P)
|
||||
change_skin(P,1)
|
||||
continue
|
||||
|
||||
if(check_gender(P,MALE))
|
||||
change_gender(P,MALE,1)
|
||||
|
||||
return
|
||||
|
||||
|
||||
///////////////////////////// DM_TRANSFORM_FEMALE /////////////////////////////
|
||||
if(digest_mode == DM_TRANSFORM_FEMALE && ishuman(owner))
|
||||
for (var/mob/living/carbon/human/P in internal_contents)
|
||||
if(P.stat)
|
||||
if(P.stat == DEAD)
|
||||
continue
|
||||
|
||||
var/mob/living/carbon/human/O = owner
|
||||
|
||||
var/TFchance = 1
|
||||
if(TFchance == 1)
|
||||
var/TFmodify = rand(1,3)
|
||||
if(TFmodify == 1 && P.r_eyes != O.r_eyes || P.g_eyes != O.g_eyes || P.b_eyes != O.b_eyes)
|
||||
P.r_eyes = O.r_eyes
|
||||
P.g_eyes = O.g_eyes
|
||||
P.b_eyes = O.b_eyes
|
||||
P << "<span class='notice'>You feel lightheaded and drowsy...</span>"
|
||||
owner << "<span class='notice'>You feel warm as your make subtle changes to your captive's body.</span>"
|
||||
P.update_eyes()
|
||||
|
||||
if(TFmodify == 2 && P.r_hair != O.r_hair || P.g_hair != O.g_hair || P.b_hair != O.b_hair || P.r_skin != O.r_skin || P.g_skin != O.g_skin || P.b_skin != O.b_skin)
|
||||
P.r_hair = O.r_hair
|
||||
P.g_hair = O.g_hair
|
||||
P.b_hair = O.b_hair
|
||||
P.r_skin = O.r_skin
|
||||
P.g_skin = O.g_skin
|
||||
P.b_skin = O.b_skin
|
||||
P.h_style = O.h_style
|
||||
P << "<span class='notice'>Your body tingles all over...</span>"
|
||||
owner << "<span class='notice'>You tingle as your make noticeable changes to your captive's body.</span>"
|
||||
P.update_hair()
|
||||
P.update_body()
|
||||
P.updateicon()
|
||||
|
||||
if(TFmodify == 3 && P.gender != FEMALE && P.identifying_gender != FEMALE)
|
||||
P.f_style = "Shaved"
|
||||
P.gender = FEMALE
|
||||
P.identifying_gender = FEMALE
|
||||
P << "<span class='notice'>Your body feels very strange...</span>"
|
||||
owner << "<span class='notice'>You feel strange as you alter your captive's gender.</span>"
|
||||
P.update_body()
|
||||
P.updateicon()
|
||||
|
||||
if(O.nutrition > 400 && P.nutrition < 400)
|
||||
O.nutrition -= 2
|
||||
P.nutrition += 1.5
|
||||
|
||||
if(check_eyes(P))
|
||||
change_eyes(P,1)
|
||||
continue
|
||||
|
||||
if(check_hair(P) || check_skin(P))
|
||||
change_hair(P)
|
||||
change_skin(P,1)
|
||||
continue
|
||||
|
||||
if(check_gender(P,FEMALE))
|
||||
change_gender(P,FEMALE,1)
|
||||
|
||||
return
|
||||
|
||||
///////////////////////////// DM_TRANSFORM_KEEP_GENDER /////////////////////////////
|
||||
if(digest_mode == DM_TRANSFORM_KEEP_GENDER && ishuman(owner))
|
||||
for (var/mob/living/carbon/human/P in internal_contents)
|
||||
if(P.stat)
|
||||
if(P.stat == DEAD)
|
||||
continue
|
||||
|
||||
var/mob/living/carbon/human/O = owner
|
||||
|
||||
var/TFchance = 1
|
||||
if(TFchance == 1)
|
||||
|
||||
var/TFmodify = rand(1,2)
|
||||
if(TFmodify == 1 && P.r_eyes != O.r_eyes || P.g_eyes != O.g_eyes || P.b_eyes != O.b_eyes)
|
||||
P.r_eyes = O.r_eyes
|
||||
P.g_eyes = O.g_eyes
|
||||
P.b_eyes = O.b_eyes
|
||||
P << "<span class='notice'>You feel lightheaded and drowsy...</span>"
|
||||
owner << "<span class='notice'>You feel warm as you make subtle changes to your captive's body.</span>"
|
||||
P.update_eyes()
|
||||
|
||||
if(TFmodify == 2 && P.r_hair != O.r_hair || P.g_hair != O.g_hair || P.b_hair != O.b_hair || P.r_skin != O.r_skin || P.g_skin != O.g_skin || P.b_skin != O.b_skin || P.r_facial != O.r_facial || P.g_facial != O.g_facial || P.b_facial != O.b_facial)
|
||||
P.r_hair = O.r_hair
|
||||
P.r_facial = O.r_facial
|
||||
P.g_hair = O.g_hair
|
||||
P.g_facial = O.g_facial
|
||||
P.b_hair = O.b_hair
|
||||
P.b_facial = O.b_facial
|
||||
P.r_skin = O.r_skin
|
||||
P.g_skin = O.g_skin
|
||||
P.b_skin = O.b_skin
|
||||
P.h_style = O.h_style
|
||||
P << "<span class='notice'>Your body tingles all over...</span>"
|
||||
owner << "<span class='notice'>You tingle as you make noticeable changes to your captive's body.</span>"
|
||||
P.update_hair()
|
||||
P.update_body()
|
||||
P.updateicon()
|
||||
|
||||
if(O.nutrition > 400 && P.nutrition < 400)
|
||||
O.nutrition -= 2
|
||||
P.nutrition += 1.5
|
||||
|
||||
if(check_eyes(P))
|
||||
change_eyes(P,1)
|
||||
continue
|
||||
|
||||
if(check_hair(P) || check_skin(P))
|
||||
change_hair(P)
|
||||
change_skin(P,1)
|
||||
|
||||
return
|
||||
|
||||
///////////////////////////// DM_TRANSFORM_CHANGE_SPECIES_AND_TAUR /////////////////////////////
|
||||
if(digest_mode == DM_TRANSFORM_CHANGE_SPECIES_AND_TAUR && ishuman(owner))
|
||||
for (var/mob/living/carbon/human/P in internal_contents)
|
||||
if(P.stat)
|
||||
if(P.stat == DEAD)
|
||||
continue
|
||||
|
||||
var/mob/living/carbon/human/O = owner
|
||||
|
||||
var/TFchance = 1 //This used to be RNG, resulting people waiting ages. This way does it instantly.
|
||||
if(TFchance == 1)
|
||||
if(P.species != O.species || P.tail_style != O.tail_style || P.custom_species != O.custom_species || P.ear_style != O.ear_style)
|
||||
P.tail_style = O.tail_style
|
||||
P.wing_style = O.wing_style
|
||||
P.ear_style = O.ear_style
|
||||
P.species = O.species
|
||||
P.custom_species = O.custom_species
|
||||
P.species.create_organs(P) //This is the only way to make it so Unathi TF doesn't result in people dying from organ rejection.
|
||||
for(var/obj/item/organ/I in P.organs) //This prevents organ rejection
|
||||
I.species = O.species
|
||||
for(var/obj/item/organ/I in P.internal_organs) //This prevents organ rejection
|
||||
I.species = O.species
|
||||
for(var/obj/item/organ/external/Z in P.organs)//Just in case.
|
||||
Z.sync_colour_to_human(P)
|
||||
P << "<span class='notice'>You lose sensation of your body, feeling only the warmth of everything around you... </span>"
|
||||
owner << "<span class='notice'>Your body shifts as you make dramatic changes to your captive's body.</span>"
|
||||
P.fixblood()
|
||||
P.update_body()
|
||||
P.update_tail_showing()
|
||||
P.updateicon()
|
||||
|
||||
if(O.nutrition > 400 && P.nutrition < 400)
|
||||
O.nutrition -= 2
|
||||
P.nutrition += 1.5
|
||||
|
||||
if(check_ears(P) || check_tail_nocolor(P) || check_wing_nocolor(P) || check_species(P))
|
||||
change_ears(P)
|
||||
change_tail_nocolor(P)
|
||||
change_wing_nocolor(P)
|
||||
change_species(P,1)
|
||||
|
||||
return
|
||||
|
||||
///////////////////////////// DM_TRANSFORM_REPLICA /////////////////////////////
|
||||
if(digest_mode == DM_TRANSFORM_REPLICA && ishuman(owner))
|
||||
for (var/mob/living/carbon/human/P in internal_contents)
|
||||
if(P.stat)
|
||||
if(P.stat == DEAD)
|
||||
continue
|
||||
|
||||
var/mob/living/carbon/human/O = owner
|
||||
|
||||
var/TFchance = 1 //This used to be RNG, resulting people waiting ages. This way does it instantly.
|
||||
if(TFchance == 1)
|
||||
var/TFmodify = rand(1,3)
|
||||
if(TFmodify == 1 && P.r_eyes != O.r_eyes || P.g_eyes != O.g_eyes || P.b_eyes != O.b_eyes)
|
||||
P.r_eyes = O.r_eyes
|
||||
P.g_eyes = O.g_eyes
|
||||
P.b_eyes = O.b_eyes
|
||||
P << "<span class='notice'>You feel lightheaded and drowsy...</span>"
|
||||
owner << "<span class='notice'>You feel warm as you make subtle changes to your captive's body.</span>"
|
||||
P.update_eyes()
|
||||
|
||||
if(TFmodify == 2 && P.r_hair != O.r_hair || P.g_hair != O.g_hair || P.b_hair != O.b_hair || P.r_skin != O.r_skin || P.g_skin != O.g_skin || P.b_skin != O.b_skin || P.r_facial != O.r_facial || P.g_facial != O.g_facial || P.b_facial != O.b_facial)
|
||||
P.r_hair = O.r_hair
|
||||
P.r_facial = O.r_facial
|
||||
P.g_hair = O.g_hair
|
||||
P.g_facial = O.g_facial
|
||||
P.b_hair = O.b_hair
|
||||
P.b_facial = O.b_facial
|
||||
P.r_skin = O.r_skin
|
||||
P.g_skin = O.g_skin
|
||||
P.b_skin = O.b_skin
|
||||
P.h_style = O.h_style
|
||||
P << "<span class='notice'>Your body tingles all over...</span>"
|
||||
owner << "<span class='notice'>You tingle as you make noticeable changes to your captive's body.</span>"
|
||||
P.update_hair()
|
||||
P.update_body()
|
||||
P.updateicon()
|
||||
|
||||
if(TFmodify == 3 && P.r_hair != O.r_hair || P.g_hair != O.g_hair || P.species != O.species || P.b_hair != O.b_hair || P.r_skin != O.r_skin || P.g_skin != O.g_skin || P.b_skin != O.b_skin || P.tail_style != O.tail_style || P.r_tail != O.r_tail || P.g_tail != O.g_tail || P.b_tail != O.b_tail || P.ear_style != O.ear_style || P.r_facial != O.r_facial || P.g_facial != O.g_facial || P.b_facial != O.b_facial || P.custom_species != O.custom_species)
|
||||
P.r_hair = O.r_hair
|
||||
P.r_facial = O.r_facial
|
||||
P.g_hair = O.g_hair
|
||||
P.g_facial = O.g_facial
|
||||
P.b_hair = O.b_hair
|
||||
P.b_facial = O.b_facial
|
||||
P.r_skin = O.r_skin
|
||||
P.g_skin = O.g_skin
|
||||
P.b_skin = O.b_skin
|
||||
P.tail_style = O.tail_style
|
||||
P.wing_style = O.wing_style
|
||||
P.r_tail = O.r_tail
|
||||
P.g_tail = O.g_tail
|
||||
P.b_tail = O.b_tail
|
||||
P.ear_style = O.ear_style
|
||||
P.species = O.species
|
||||
P.custom_species = O.custom_species
|
||||
P.species.create_organs(P)
|
||||
for(var/obj/item/organ/I in P.organs)
|
||||
I.species = O.species
|
||||
for(var/obj/item/organ/I in P.internal_organs)
|
||||
I.species = O.species
|
||||
for(var/obj/item/organ/external/Z in P.organs)
|
||||
Z.sync_colour_to_human(P)
|
||||
P << "<span class='notice'>You lose sensation of your body, feeling only the warmth of everything around you... </span>"
|
||||
owner << "<span class='notice'>Your body shifts as you make dramatic changes to your captive's body.</span>"
|
||||
P.fixblood()
|
||||
P.update_hair()
|
||||
P.update_body()
|
||||
P.update_tail_showing()
|
||||
P.updateicon()
|
||||
|
||||
if(O.nutrition > 400 && P.nutrition < 400)
|
||||
O.nutrition -= 2
|
||||
P.nutrition += 1.5
|
||||
|
||||
if(check_eyes(P))
|
||||
change_eyes(P,1)
|
||||
continue
|
||||
|
||||
if(check_hair(P) || check_skin(P))
|
||||
change_hair(P)
|
||||
change_skin(P,1)
|
||||
continue
|
||||
|
||||
if(check_ears(P) || check_tail(P) || check_wing(P) || check_species(P))
|
||||
change_ears(P)
|
||||
change_tail(P)
|
||||
change_wing(P)
|
||||
change_species(P,1)
|
||||
|
||||
return
|
||||
|
||||
///////////////////////////// DM_TRANSFORM_CHANGE_SPECIES_AND_TAUR_EGG /////////////////////////////
|
||||
if(digest_mode == DM_TRANSFORM_CHANGE_SPECIES_AND_TAUR_EGG && ishuman(owner))
|
||||
for (var/mob/living/carbon/human/P in internal_contents)
|
||||
if(P.stat)
|
||||
if(P.stat == DEAD)
|
||||
continue
|
||||
if(P.absorbed) //If they're absorbed, don't egg them
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/O = owner
|
||||
if(check_ears(P) || check_tail_nocolor(P) || check_wing_nocolor(P)|| check_species(P))
|
||||
change_ears(P)
|
||||
change_tail_nocolor(P)
|
||||
change_wing_nocolor(P)
|
||||
change_species(P,1)
|
||||
continue
|
||||
|
||||
P.tail_style = O.tail_style
|
||||
P.wing_style = O.wing_style
|
||||
P.ear_style = O.ear_style
|
||||
P.species = O.species
|
||||
P.custom_species = O.custom_species
|
||||
P.species.create_organs(P)
|
||||
for(var/obj/item/organ/I in P.organs)
|
||||
I.species = O.species
|
||||
for(var/obj/item/organ/I in P.internal_organs)
|
||||
I.species = O.species
|
||||
for(var/obj/item/organ/external/Z in P.organs)
|
||||
Z.sync_colour_to_human(P)
|
||||
P << "<span class='notice'>You lose sensation of your body, feeling only the warmth around you as are you as you're encased in an egg. </span>"
|
||||
owner << "<span class='notice'>You shift as you make dramatic changes to your captive's body as you encase them in an egg.</span>"
|
||||
P.fixblood()
|
||||
P.update_hair()
|
||||
P.update_body()
|
||||
P.update_tail_showing()
|
||||
P.update_eyes()
|
||||
P.updateicon()
|
||||
var/egg_path = /obj/structure/closet/secure_closet/egg //Full credit to Aronai for this version of the egg code.
|
||||
var/egg_name = "Odd egg"
|
||||
if(!P.absorbed)
|
||||
put_in_egg(P,1)
|
||||
|
||||
if(O.egg_type in tf_egg_types)
|
||||
egg_path = tf_egg_types[O.egg_type]
|
||||
egg_name = "[O.egg_type] egg"
|
||||
|
||||
var/obj/structure/closet/secure_closet/egg/egg = new egg_path(get_turf(O))
|
||||
P.forceMove(egg)
|
||||
egg.name = egg_name
|
||||
internal_contents -= P
|
||||
return
|
||||
|
||||
///////////////////////////// DM_TRANSFORM_KEEP_GENDER_EGG /////////////////////////////
|
||||
if(digest_mode == DM_TRANSFORM_KEEP_GENDER_EGG && ishuman(owner))
|
||||
for (var/mob/living/carbon/human/P in internal_contents)
|
||||
if(P.stat)
|
||||
if(P.stat == DEAD)
|
||||
continue
|
||||
if(P.absorbed) //If they're absorbed, don't egg them
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/O = owner
|
||||
if(check_eyes(P))
|
||||
change_eyes(P,1)
|
||||
continue
|
||||
|
||||
P.r_hair = O.r_hair
|
||||
P.r_facial = O.r_facial
|
||||
P.g_hair = O.g_hair
|
||||
P.g_facial = O.g_facial
|
||||
P.b_hair = O.b_hair
|
||||
P.b_facial = O.b_facial
|
||||
P.r_skin = O.r_skin
|
||||
P.g_skin = O.g_skin
|
||||
P.b_skin = O.b_skin
|
||||
P.h_style = O.h_style
|
||||
P.r_eyes = O.r_eyes
|
||||
P.g_eyes = O.g_eyes
|
||||
P.b_eyes = O.b_eyes
|
||||
P << "<span class='notice'>Your body tingles all over...</span>"
|
||||
owner << "<span class='notice'>You tingle as you make noticeable changes to your captive's body.</span>"
|
||||
P.update_hair()
|
||||
P.update_body()
|
||||
P.update_eyes()
|
||||
P.updateicon()
|
||||
var/egg_path = /obj/structure/closet/secure_closet/egg
|
||||
var/egg_name = "Odd egg"
|
||||
if(check_hair(P) || check_skin(P))
|
||||
change_hair(P)
|
||||
change_skin(P,1)
|
||||
continue
|
||||
|
||||
if(O.egg_type in tf_egg_types)
|
||||
egg_path = tf_egg_types[O.egg_type]
|
||||
egg_name = "[O.egg_type] egg"
|
||||
if(!P.absorbed)
|
||||
put_in_egg(P,1)
|
||||
|
||||
var/obj/structure/closet/secure_closet/egg/egg = new egg_path(get_turf(O))
|
||||
P.forceMove(egg)
|
||||
egg.name = egg_name
|
||||
internal_contents -= P
|
||||
return
|
||||
|
||||
///////////////////////////// DM_TRANSFORM_REPLICA_EGG /////////////////////////////
|
||||
if(digest_mode == DM_TRANSFORM_REPLICA_EGG && ishuman(owner))
|
||||
for (var/mob/living/carbon/human/P in internal_contents)
|
||||
if(P.stat)
|
||||
if(P.stat == DEAD)
|
||||
continue
|
||||
if(P.absorbed) //If they're absorbed, don't egg them
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/O = owner
|
||||
if(check_eyes(P))
|
||||
change_eyes(P,1)
|
||||
continue
|
||||
|
||||
P.r_hair = O.r_hair
|
||||
P.r_facial = O.r_facial
|
||||
P.g_hair = O.g_hair
|
||||
P.g_facial = O.g_facial
|
||||
P.b_hair = O.b_hair
|
||||
P.b_facial = O.b_facial
|
||||
P.r_skin = O.r_skin
|
||||
P.g_skin = O.g_skin
|
||||
P.b_skin = O.b_skin
|
||||
P.tail_style = O.tail_style
|
||||
P.wing_style = O.wing_style
|
||||
P.r_tail = O.r_tail
|
||||
P.g_tail = O.g_tail
|
||||
P.b_tail = O.b_tail
|
||||
P.ear_style = O.ear_style
|
||||
P.h_style = O.h_style
|
||||
P.species = O.species
|
||||
P.custom_species = O.custom_species
|
||||
P.r_eyes = O.r_eyes
|
||||
P.g_eyes = O.g_eyes
|
||||
P.b_eyes = O.b_eyes
|
||||
if(check_hair(P) || check_skin(P))
|
||||
change_hair(P)
|
||||
change_skin(P,1)
|
||||
continue
|
||||
|
||||
P.species.create_organs(P)
|
||||
for(var/obj/item/organ/I in P.organs)
|
||||
I.species = O.species
|
||||
for(var/obj/item/organ/I in P.internal_organs)
|
||||
I.species = O.species
|
||||
for(var/obj/item/organ/external/Z in P.organs)
|
||||
Z.sync_colour_to_human(P)
|
||||
P << "<span class='notice'>You lose sensation of your body, feeling only the warmth around you as are you as you're encased in an egg. </span>"
|
||||
owner << "<span class='notice'>You shift as you make dramatic changes to your captive's body as you encase them in an egg.</span>"
|
||||
P.fixblood()
|
||||
P.update_hair()
|
||||
P.update_body()
|
||||
P.update_tail_showing()
|
||||
P.update_eyes()
|
||||
P.updateicon()
|
||||
var/egg_path = /obj/structure/closet/secure_closet/egg
|
||||
var/egg_name = "Odd egg"
|
||||
if(check_ears(P) || check_tail(P) || check_wing(P) || check_species(P))
|
||||
change_ears(P)
|
||||
change_tail(P)
|
||||
change_wing(P)
|
||||
change_species(P,1)
|
||||
continue
|
||||
|
||||
if(O.egg_type in tf_egg_types)
|
||||
egg_path = tf_egg_types[O.egg_type]
|
||||
egg_name = "[O.egg_type] egg"
|
||||
if(!P.absorbed)
|
||||
put_in_egg(P,1)
|
||||
|
||||
var/obj/structure/closet/secure_closet/egg/egg = new egg_path(get_turf(O))
|
||||
P.forceMove(egg)
|
||||
egg.name = egg_name
|
||||
internal_contents -= P
|
||||
return
|
||||
|
||||
///////////////////////////// DM_TRANSFORM_MALE_EGG /////////////////////////////
|
||||
if(digest_mode == DM_TRANSFORM_MALE_EGG && ishuman(owner))
|
||||
for (var/mob/living/carbon/human/P in internal_contents)
|
||||
if(P.stat)
|
||||
if(P.stat == DEAD)
|
||||
continue
|
||||
if(P.absorbed) //If they're absorbed, don't egg them
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/O = owner
|
||||
if(check_eyes(P))
|
||||
change_eyes(P,1)
|
||||
continue
|
||||
|
||||
P.r_hair = O.r_hair
|
||||
P.r_facial = O.r_facial
|
||||
P.g_hair = O.g_hair
|
||||
P.g_facial = O.g_facial
|
||||
P.b_hair = O.b_hair
|
||||
P.b_facial = O.b_facial
|
||||
P.r_skin = O.r_skin
|
||||
P.g_skin = O.g_skin
|
||||
P.b_skin = O.b_skin
|
||||
P.h_style = O.h_style
|
||||
P.gender = MALE
|
||||
P.identifying_gender= MALE
|
||||
P.r_eyes = O.r_eyes
|
||||
P.g_eyes = O.g_eyes
|
||||
P.b_eyes = O.b_eyes
|
||||
P << "<span class='notice'>Your body feels very strange...</span>"
|
||||
owner << "<span class='notice'>You feel strange as you alter your captive's gender.</span>"
|
||||
P.update_hair()
|
||||
P.update_body()
|
||||
P.updateicon()
|
||||
var/egg_path = /obj/structure/closet/secure_closet/egg
|
||||
var/egg_name = "Odd egg"
|
||||
if(check_hair(P) || check_skin(P))
|
||||
change_hair(P)
|
||||
change_skin(P,1)
|
||||
continue
|
||||
|
||||
if(O.egg_type in tf_egg_types)
|
||||
egg_path = tf_egg_types[O.egg_type]
|
||||
egg_name = "[O.egg_type] egg"
|
||||
if(check_gender(P,MALE))
|
||||
change_gender(P,MALE,1)
|
||||
continue
|
||||
|
||||
if(!P.absorbed)
|
||||
put_in_egg(P,1)
|
||||
|
||||
var/obj/structure/closet/secure_closet/egg/egg = new egg_path(get_turf(O))
|
||||
P.forceMove(egg)
|
||||
egg.name = egg_name
|
||||
internal_contents -= P
|
||||
return
|
||||
|
||||
///////////////////////////// DM_TRANSFORM_FEMALE_EGG /////////////////////////////
|
||||
if(digest_mode == DM_TRANSFORM_FEMALE_EGG && ishuman(owner))
|
||||
for (var/mob/living/carbon/human/P in internal_contents)
|
||||
if(P.stat)
|
||||
if(P.stat == DEAD)
|
||||
continue
|
||||
if(P.absorbed) //If they're absorbed, don't egg them
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/O = owner
|
||||
if(check_eyes(P))
|
||||
change_eyes(P,1)
|
||||
continue
|
||||
|
||||
P.r_hair = O.r_hair
|
||||
P.r_facial = O.r_facial
|
||||
P.g_hair = O.g_hair
|
||||
P.g_facial = O.g_facial
|
||||
P.b_hair = O.b_hair
|
||||
P.b_facial = O.b_facial
|
||||
P.r_skin = O.r_skin
|
||||
P.g_skin = O.g_skin
|
||||
P.b_skin = O.b_skin
|
||||
P.h_style = O.h_style
|
||||
P.gender = FEMALE
|
||||
P.identifying_gender= FEMALE
|
||||
P.r_eyes = O.r_eyes
|
||||
P.g_eyes = O.g_eyes
|
||||
P.b_eyes = O.b_eyes
|
||||
owner << "<span class='notice'>You feel strange as you alter your captive's gender.</span>"
|
||||
P << "<span class='notice'>Your body feels very strange...</span>"
|
||||
P.update_hair()
|
||||
P.update_body()
|
||||
P.updateicon()
|
||||
var/egg_path = /obj/structure/closet/secure_closet/egg
|
||||
var/egg_name = "Odd egg"
|
||||
if(check_hair(P) || check_skin(P))
|
||||
change_hair(P)
|
||||
change_skin(P,1)
|
||||
continue
|
||||
|
||||
if(O.egg_type in tf_egg_types)
|
||||
egg_path = tf_egg_types[O.egg_type]
|
||||
egg_name = "[O.egg_type] egg"
|
||||
if(check_gender(P,MALE))
|
||||
change_gender(P,MALE,1)
|
||||
continue
|
||||
|
||||
if(!P.absorbed)
|
||||
put_in_egg(P,1)
|
||||
|
||||
var/obj/structure/closet/secure_closet/egg/egg = new egg_path(get_turf(O))
|
||||
P.forceMove(egg)
|
||||
egg.name = egg_name
|
||||
internal_contents -= P
|
||||
return
|
||||
|
||||
|
||||
///////////////////////////// DM_EGG /////////////////////////////
|
||||
if(digest_mode == DM_EGG && ishuman(owner))
|
||||
for (var/mob/living/carbon/human/P in internal_contents)
|
||||
if(P.stat)
|
||||
if(P.absorbed || P.stat == DEAD)
|
||||
continue
|
||||
if(P.absorbed) //If they're absorbed, don't egg them
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/O = owner
|
||||
P << "<span class='notice'>You lose sensation of your body, feeling only the warmth around you as you're encased in an egg. </span>"
|
||||
owner << "<span class='notice'>Your body shifts as you encase [P] in an egg.</span>"
|
||||
var/egg_path = /obj/structure/closet/secure_closet/egg
|
||||
var/egg_name = "Odd egg"
|
||||
|
||||
if(O.egg_type in tf_egg_types)
|
||||
egg_path = tf_egg_types[O.egg_type]
|
||||
egg_name = "[O.egg_type] egg"
|
||||
|
||||
var/obj/structure/closet/secure_closet/egg/egg = new egg_path(get_turf(O))
|
||||
P.forceMove(egg)
|
||||
egg.name = egg_name
|
||||
internal_contents -= P
|
||||
put_in_egg(P,1)
|
||||
@@ -0,0 +1,250 @@
|
||||
/datum/belly/proc/check_eyes(var/mob/living/carbon/human/M)
|
||||
var/mob/living/carbon/human/O = owner
|
||||
if(!istype(M) || !istype(O))
|
||||
return 0
|
||||
return (M.r_eyes != O.r_eyes || M.g_eyes != O.g_eyes || M.b_eyes != O.b_eyes)
|
||||
|
||||
/datum/belly/proc/change_eyes(var/mob/living/carbon/human/M, message=0)
|
||||
var/mob/living/carbon/human/O = owner
|
||||
if(!istype(M) || !istype(O))
|
||||
return
|
||||
|
||||
M.r_eyes = O.r_eyes
|
||||
M.g_eyes = O.g_eyes
|
||||
M.b_eyes = O.b_eyes
|
||||
M.update_eyes()
|
||||
M.update_body()
|
||||
if(message)
|
||||
to_chat(M, "<span class='notice'>You feel lightheaded and drowsy...</span>")
|
||||
to_chat(O, "<span class='notice'>You feel warm as you make subtle changes to your captive's body.</span>")
|
||||
|
||||
/datum/belly/proc/check_hair(var/mob/living/carbon/human/M)
|
||||
var/mob/living/carbon/human/O = owner
|
||||
if(!istype(M) || !istype(O))
|
||||
return 0
|
||||
|
||||
if(M.r_hair != O.r_hair || M.g_hair != O.g_hair || M.b_hair != O.b_hair)
|
||||
return 1
|
||||
if(M.r_facial != O.r_facial || M.g_facial != O.g_facial || M.b_facial != O.b_facial)
|
||||
return 1
|
||||
if(M.h_style != O.h_style || M.f_style != O.f_style)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/datum/belly/proc/change_hair(var/mob/living/carbon/human/M, message=0)
|
||||
var/mob/living/carbon/human/O = owner
|
||||
if(!istype(M) || !istype(O))
|
||||
return
|
||||
|
||||
M.r_hair = O.r_hair
|
||||
M.g_hair = O.g_hair
|
||||
M.b_hair = O.b_hair
|
||||
M.r_facial = O.r_facial
|
||||
M.g_facial = O.g_facial
|
||||
M.b_facial = O.b_facial
|
||||
M.h_style = O.h_style
|
||||
M.f_style = O.f_style
|
||||
M.update_hair()
|
||||
if(message)
|
||||
to_chat(M, "<span class='notice'>Your body tingles all over...</span>")
|
||||
to_chat(O, "<span class='notice'>You tingle as you make noticeable changes to your captive's body.</span>")
|
||||
|
||||
/datum/belly/proc/check_skin(var/mob/living/carbon/human/M)
|
||||
var/mob/living/carbon/human/O = owner
|
||||
if(!istype(M) || !istype(O))
|
||||
return 0
|
||||
|
||||
return (M.r_skin != O.r_skin || M.g_skin != O.g_skin || M.b_skin != O.b_skin)
|
||||
|
||||
/datum/belly/proc/change_skin(var/mob/living/carbon/human/M, message=0)
|
||||
var/mob/living/carbon/human/O = owner
|
||||
if(!istype(M) || !istype(O))
|
||||
return
|
||||
|
||||
M.r_skin = O.r_skin
|
||||
M.g_skin = O.g_skin
|
||||
M.b_skin = O.b_skin
|
||||
for(var/obj/item/organ/external/Z in M.organs)
|
||||
Z.sync_colour_to_human(M)
|
||||
M.update_body()
|
||||
if(message)
|
||||
to_chat(M, "<span class='notice'>Your body tingles all over...</span>")
|
||||
to_chat(O, "<span class='notice'>You tingle as you make noticeable changes to your captive's body.</span>")
|
||||
|
||||
/datum/belly/proc/check_gender(var/mob/living/carbon/human/M, target_gender)
|
||||
var/mob/living/carbon/human/O = owner
|
||||
if(!istype(M) || !istype(O))
|
||||
return 0
|
||||
|
||||
if(!target_gender)
|
||||
target_gender = O.gender
|
||||
|
||||
return (M.gender != target_gender || M.identifying_gender != target_gender)
|
||||
|
||||
/datum/belly/proc/change_gender(var/mob/living/carbon/human/M, target_gender, message=0)
|
||||
var/mob/living/carbon/human/O = owner
|
||||
if(!istype(M) || !istype(O))
|
||||
return
|
||||
|
||||
if(!target_gender)
|
||||
target_gender = O.gender
|
||||
|
||||
M.gender = target_gender
|
||||
M.identifying_gender = target_gender
|
||||
if(target_gender == FEMALE)
|
||||
M.f_style = "Shaved"
|
||||
M.dna.SetUIState(DNA_UI_GENDER,M.gender!=MALE,1)
|
||||
M.sync_organ_dna()
|
||||
M.update_body()
|
||||
if(message)
|
||||
to_chat(M, "<span class='notice'>Your body feels very strange...</span>")
|
||||
to_chat(O, "<span class='notice'>You feel strange as you alter your captive's gender.</span>")
|
||||
|
||||
/datum/belly/proc/check_tail(var/mob/living/carbon/human/M)
|
||||
var/mob/living/carbon/human/O = owner
|
||||
if(!istype(M) || !istype(O))
|
||||
return 0
|
||||
|
||||
if(M.tail_style != O.tail_style)
|
||||
return 1
|
||||
if(M.r_tail != O.r_tail || M.g_tail != O.g_tail || M.b_tail != O.b_tail)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/datum/belly/proc/change_tail(var/mob/living/carbon/human/M, message=0)
|
||||
var/mob/living/carbon/human/O = owner
|
||||
if(!istype(M) || !istype(O))
|
||||
return
|
||||
|
||||
M.r_tail = O.r_tail
|
||||
M.g_tail = O.g_tail
|
||||
M.b_tail = O.b_tail
|
||||
M.tail_style = O.tail_style
|
||||
M.update_tail_showing()
|
||||
if(message)
|
||||
to_chat(M, "<span class='notice'>Your body tingles all over...</span>")
|
||||
to_chat(O, "<span class='notice'>You tingle as you make noticeable changes to your captive's body.</span>")
|
||||
|
||||
/datum/belly/proc/check_tail_nocolor(var/mob/living/carbon/human/M)
|
||||
var/mob/living/carbon/human/O = owner
|
||||
if(!istype(M) || !istype(O))
|
||||
return 0
|
||||
|
||||
return (M.tail_style != O.tail_style)
|
||||
|
||||
/datum/belly/proc/change_tail_nocolor(var/mob/living/carbon/human/M, message=0)
|
||||
var/mob/living/carbon/human/O = owner
|
||||
if(!istype(M) || !istype(O))
|
||||
return
|
||||
|
||||
M.tail_style = O.tail_style
|
||||
M.update_tail_showing()
|
||||
if(message)
|
||||
to_chat(M, "<span class='notice'>Your body tingles all over...</span>")
|
||||
to_chat(O, "<span class='notice'>You tingle as you make noticeable changes to your captive's body.</span>")
|
||||
|
||||
/datum/belly/proc/check_wing(var/mob/living/carbon/human/M)
|
||||
var/mob/living/carbon/human/O = owner
|
||||
if(!istype(M) || !istype(O))
|
||||
return 0
|
||||
|
||||
if(M.wing_style != O.wing_style)
|
||||
return 1
|
||||
if(M.r_wing != O.r_wing || M.g_wing != O.g_wing || M.b_wing != O.b_wing)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/datum/belly/proc/change_wing(var/mob/living/carbon/human/M, message=0)
|
||||
var/mob/living/carbon/human/O = owner
|
||||
if(!istype(M) || !istype(O))
|
||||
return
|
||||
|
||||
M.r_wing = O.r_wing
|
||||
M.g_wing = O.g_wing
|
||||
M.b_wing = O.b_wing
|
||||
M.wing_style = O.wing_style
|
||||
M.update_wing_showing()
|
||||
if(message)
|
||||
to_chat(M, "<span class='notice'>Your body tingles all over...</span>")
|
||||
to_chat(O, "<span class='notice'>You tingle as you make noticeable changes to your captive's body.</span>")
|
||||
|
||||
/datum/belly/proc/check_wing_nocolor(var/mob/living/carbon/human/M)
|
||||
var/mob/living/carbon/human/O = owner
|
||||
if(!istype(M) || !istype(O))
|
||||
return 0
|
||||
|
||||
return (M.wing_style != O.wing_style)
|
||||
|
||||
/datum/belly/proc/change_wing_nocolor(var/mob/living/carbon/human/M, message=0)
|
||||
var/mob/living/carbon/human/O = owner
|
||||
if(!istype(M) || !istype(O))
|
||||
return
|
||||
|
||||
M.wing_style = O.wing_style
|
||||
M.update_wing_showing()
|
||||
if(message)
|
||||
to_chat(M, "<span class='notice'>Your body tingles all over...</span>")
|
||||
to_chat(O, "<span class='notice'>You tingle as you make noticeable changes to your captive's body.</span>")
|
||||
|
||||
/datum/belly/proc/check_ears(var/mob/living/carbon/human/M)
|
||||
var/mob/living/carbon/human/O = owner
|
||||
if(!istype(M) || !istype(O))
|
||||
return 0
|
||||
|
||||
return (M.ear_style != O.ear_style)
|
||||
|
||||
/datum/belly/proc/change_ears(var/mob/living/carbon/human/M, message=0)
|
||||
var/mob/living/carbon/human/O = owner
|
||||
if(!istype(M) || !istype(O))
|
||||
return
|
||||
|
||||
M.ear_style = O.ear_style
|
||||
M.update_hair()
|
||||
|
||||
/datum/belly/proc/check_species(var/mob/living/carbon/human/M)
|
||||
var/mob/living/carbon/human/O = owner
|
||||
if(!istype(M) || !istype(O))
|
||||
return 0
|
||||
|
||||
if(M.species != O.species || M.custom_species != O.custom_species)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/datum/belly/proc/change_species(var/mob/living/carbon/human/M, message=0)
|
||||
var/mob/living/carbon/human/O = owner
|
||||
if(!istype(M) || !istype(O))
|
||||
return
|
||||
|
||||
M.species = O.species
|
||||
M.custom_species = O.custom_species
|
||||
M.species.create_organs(M) //This is the only way to make it so Unathi TF doesn't result in people dying from organ rejection.
|
||||
for(var/obj/item/organ/I in M.organs) //This prevents organ rejection
|
||||
I.species = O.species
|
||||
for(var/obj/item/organ/I in M.internal_organs) //This prevents organ rejection
|
||||
I.species = O.species
|
||||
for(var/obj/item/organ/external/Z in M.organs)//Just in case.
|
||||
Z.sync_colour_to_human(M)
|
||||
M.fixblood()
|
||||
M.update_body()
|
||||
M.update_tail_showing()
|
||||
if(message)
|
||||
to_chat(M, "<span class='notice'>You lose sensation of your body, feeling only the warmth of everything around you... </span>")
|
||||
to_chat(O, "<span class='notice'>Your body shifts as you make dramatic changes to your captive's body.</span>")
|
||||
|
||||
/datum/belly/proc/put_in_egg(var/atom/movable/M, message=0)
|
||||
var/mob/living/carbon/human/O = owner
|
||||
var/egg_path = /obj/structure/closet/secure_closet/egg
|
||||
var/egg_name = "odd egg"
|
||||
|
||||
if(O.egg_type in tf_egg_types)
|
||||
egg_path = tf_egg_types[O.egg_type]
|
||||
egg_name = "[O.egg_type] egg"
|
||||
|
||||
var/obj/structure/closet/secure_closet/egg/egg = new egg_path(owner)
|
||||
M.forceMove(egg)
|
||||
egg.name = egg_name
|
||||
internal_contents -= M
|
||||
internal_contents += egg
|
||||
if(message)
|
||||
to_chat(M, "<span class='notice'>You lose sensation of your body, feeling only the warmth around you as you're encased in an egg.</span>")
|
||||
to_chat(O, "<span class='notice'>Your body shifts as you encase [M] in an egg.</span>")
|
||||
@@ -72,5 +72,5 @@
|
||||
|
||||
/obj/item/weapon/gun/energy/sizegun/examine(mob/user)
|
||||
..()
|
||||
var/size_examine = size_set_to
|
||||
var/size_examine = (size_set_to*100)
|
||||
user << "<span class='info'>It is currently set at [size_examine]%</span>"
|
||||
|
||||
Reference in New Issue
Block a user