Adds Arousal as a Damage Type (#204)

* auto vote runtime error fix

* part 1

* conflict resolution

stop fighting, damnit

* includes

* species flags

* toggleable

* reagent recipes
This commit is contained in:
TalkingCactus
2017-02-07 00:57:29 -05:00
committed by Poojawa
parent fc18933fc8
commit cdea2c6766
22 changed files with 549 additions and 3 deletions
+3
View File
@@ -130,4 +130,7 @@
#define DIGITIGRADE 25 //Uses weird leg sprites. Optional for Lizards, required for ashwalkers. Don't give it to other races unless you make sprites for this (see human_parts_greyscale.dmi)
#define MUTCOLORS2 26
#define MUTCOLORS3 27
//citadel code
#define NOAROUSAL 28//Stops all arousal effects
#define NOGENITALS 29//Cannot create, use, or otherwise have genitals
//#define SUBSPECIES 28
+67
View File
@@ -0,0 +1,67 @@
//Global defines for most of the unmentionables.
//Be sure to update the min/max of these if you do change them.
//Measurements are in imperial units. Inches, feet, yards, miles. Tsp, tbsp, cups, quarts, gallons, etc
//arousal HUD location
#define ui_arousal "EAST-1:28,CENTER-3:11"//Below the health doll
//organ defines
#define COCK_SIZE_MIN 1
#define COCK_SIZE_MAX 24
#define COCK_GIRTH_RATIO_MAX 1.25
#define COCK_GIRTH_RATIO_DEF 0.75
#define COCK_GIRTH_RATIO_MIN 0.5
#define KNOT_GIRTH_RATIO_MAX 3
#define KNOT_GIRTH_RATIO_DEF 2.1
#define KNOT_GIRTH_RATIO_MIN 1.25
#define BALLS_VOLUME_BASE 50
#define BALLS_VOLUME_MULT 1
#define BALLS_SIZE_MIN 1
#define BALLS_SIZE_SMALL 2
#define BALLS_SIZE_NORMAL 3
#define BALLS_SIZE_BIG 4
#define BALLS_SIZE_BIGGER 5
#define BALLS_SIZE_BIGGEST 6
#define BALLS_SIZE_MAX 7
#define BALLS_SACK_SIZE_DEF 8
#define CUM_RATE 5
#define CUM_RATE_MULT 1
#define CUM_EFFICIENCY 1//amount of nutrition required per life()
#define EGG_GIRTH_MIN 1//inches
#define EGG_GIRTH_DEF 6
#define EGG_GIRTH_MAX 16
#define BREASTS_VOLUME_BASE 50 //base volume for the reagents in the breasts, multiplied by the size then multiplier. 50u for A cups, 850u for HH cups.
#define BREASTS_VOLUME_MULT 1 //global multiplier for breast volume.
#define BREASTS_SIZE_FLAT 0
#define BREASTS_SIZE_A 1
#define BREASTS_SIZE_AA 1.5
#define BREASTS_SIZE_B 2
#define BREASTS_SIZE_BB 2.5
#define BREASTS_SIZE_C 3
#define BREASTS_SIZE_CC 3.5
#define BREASTS_SIZE_D 4
#define BREASTS_SIZE_DD 4.5
#define BREASTS_SIZE_E 5
#define BREASTS_SIZE_EE 5.5
#define BREASTS_SIZE_F 6
#define BREASTS_SIZE_FF 6.5
#define BREASTS_SIZE_G 7
#define BREASTS_SIZE_GG 7.5//Are these even real sizes? The world may never know because cup sizes make no fucking sense.
#define BREASTS_SIZE_H 8
#define BREASTS_SIZE_HH 8.5//Largest size, ever. For now.
#define BREASTS_SIZE_MIN BREASTS_SIZE_A
#define BREASTS_SIZE_MAX BREASTS_SIZE_HH
#define MILK_RATE 5
#define MILK_RATE_MULT 1
#define MILK_EFFICIENCY 1
+4
View File
@@ -9,6 +9,8 @@
#define OXY "oxy"
#define CLONE "clone"
#define STAMINA "stamina"
//citadel code
#define AROUSAL "arousal"
//bitflag damage defines used for suicide_act
#define BRUTELOSS 1
@@ -16,6 +18,8 @@
#define TOXLOSS 4
#define OXYLOSS 8
#define SHAME 16
//citadel code
#define AROUSAL 32
#define STUN "stun"
#define WEAKEN "weaken"
+2
View File
@@ -50,6 +50,8 @@
var/obj/screen/healths
var/obj/screen/healthdoll
var/obj/screen/internals
//citadel code
var/obj/screen/arousal
var/ui_style_icon = 'icons/mob/screen_midnight.dmi'
+4
View File
@@ -293,6 +293,10 @@
healths = new /obj/screen/healths()
infodisplay += healths
//citadel code
arousal = new /obj/screen/arousal()
infodisplay += arousal
healthdoll = new /obj/screen/healthdoll()
infodisplay += healthdoll
-1
View File
@@ -1,6 +1,5 @@
//THIS FILE CONTAINS CONSTANTS, PROCS, DEFINES, AND OTHER THINGS//
////////////////////////////////////////////////////////////////////
/mob/proc/setClickCooldown(var/timeout)
next_move = max(world.time + timeout, next_move)
+156
View File
@@ -0,0 +1,156 @@
//Mob vars
/mob/living
var/arousalloss = 0 //How aroused the mob is.
var/min_arousal = 0 //The lowest this mobs arousal will get. default = 0
var/max_arousal = 100 //The highest this mobs arousal will get. default = 100
var/arousal_rate = 1 //The base rate that arousal will increase in this mob.
var/arousal_loss_rate = 1 //How easily arousal can be relieved for this mob.
var/canbearoused = FALSE //Mob-level disabler for arousal. Starts off and can be enabled as features are added for different mob types.
var/mb_cd_length = 100 //10 second cooldown for masturbating because fuck spam
var/mb_cd_timer = 0 //The timer itself
/mob/living/carbon/human
canbearoused = TRUE
//Species vars
/datum/species
var/arousal_gain_rate = 1 //Rate at which this species becomes aroused
var/arousal_lose_rate = 1 //Multiplier for how easily arousal can be relieved
//Mob procs
/mob/living/Life()
if(stat != DEAD)
handle_arousal()
..()
/mob/living/proc/handle_arousal()
return
/mob/living/carbon/handle_arousal()
..()
var/datum/species/S
if(has_dna())
S = dna.species
if(S && SSmob.times_fired%36==2 && getArousalLoss() < 100)//Totally stolen from breathing code. Do this every 36 ticks.
adjustArousalLoss(arousal_rate * S.arousal_gain_rate)
/mob/living/proc/getArousalLoss()
return arousalloss
/mob/living/proc/adjustArousalLoss(amount, updating_arousal=1)
if(status_flags & GODMODE || !canbearoused)
return 0
arousalloss = Clamp(arousalloss + amount, min_arousal, max_arousal)
if(updating_arousal)
updatearousal()
/mob/living/proc/setArousalLoss(amount, updating_arousal=1)
if(status_flags & GODMODE || !canbearoused)
return 0
arousalloss = Clamp(amount, min_arousal, max_arousal)
if(updating_arousal)
updatearousal()
/mob/living/proc/getPercentAroused()
return ((100 / max_arousal) * arousalloss)
/mob/living/proc/isPercentAroused(percentage)//returns true if the mob's arousal (measured in a percent of 100) is greater than the arg percentage.
if(!isnum(percentage))
return FALSE
if(getPercentAroused() >= percentage)
return TRUE
/mob/living/proc/mob_masturbate()//This is just so I can test this shit without being forced to add actual content to get rid of arousal. Will be a very basic proc for a while.
set name = "Masturbate"
set category = "IC"
if(canbearoused && !restrained() && !stat)
if(mb_cd_timer <= world.time)
//start the cooldown even if it fails
mb_cd_timer = world.time + mb_cd_length
if(getArousalLoss() >= ((max_arousal / 100) * 33))//33% arousal or greater required
src.visible_message("<span class='danger'>[src] starts masturbating!</span>", \
"<span class='userdanger'>You start masturbating.</span>")
if(do_after(src, 100, target = src))
src.visible_message("<span class='danger'>[src] relieves themself!</span>", \
"<span class='userdanger'>You have relieved yourself.</span>")
setArousalLoss(min_arousal)
/*
switch(gender)
if(MALE)
PoolOrNew(/obj/effect/decal/cleanable/semen, loc)
if(FEMALE)
PoolOrNew(/obj/effect/decal/cleanable/femcum, loc)
*/
else
src << "<span class='notice'>You aren't aroused enough for that.</span>"
//H U D//
/mob/living/proc/updatearousal()
update_arousal_hud()
/mob/living/proc/update_arousal_hud()
return 0
/datum/species/proc/update_arousal_hud(mob/living/carbon/human/H)
return 0
/mob/living/carbon/human/update_arousal_hud()
if(!client || !hud_used)
return 0
if(dna.species.update_arousal_hud())
return 0
if(!canbearoused)
hud_used.arousal.icon_state = "arousal0"
return 0
else
if(hud_used.arousal)
if(stat == DEAD)
hud_used.arousal.icon_state = "arousal0"
return 1
if(getArousalLoss() == max_arousal)
hud_used.arousal.icon_state = "arousal100"
return 1
if(getArousalLoss() >= (max_arousal / 100) * 90)//M O D U L A R , W O W
hud_used.arousal.icon_state = "arousal90"
return 1
if(getArousalLoss() >= (max_arousal / 100) * 80)//M O D U L A R , W O W
hud_used.arousal.icon_state = "arousal80"
return 1
if(getArousalLoss() >= (max_arousal / 100) * 70)//M O D U L A R , W O W
hud_used.arousal.icon_state = "arousal70"
return 1
if(getArousalLoss() >= (max_arousal / 100) * 60)//M O D U L A R , W O W
hud_used.arousal.icon_state = "arousal60"
return 1
if(getArousalLoss() >= (max_arousal / 100) * 50)//M O D U L A R , W O W
hud_used.arousal.icon_state = "arousal50"
return 1
if(getArousalLoss() >= (max_arousal / 100) * 40)//M O D U L A R , W O W
hud_used.arousal.icon_state = "arousal40"
return 1
if(getArousalLoss() >= (max_arousal / 100) * 30)//M O D U L A R , W O W
hud_used.arousal.icon_state = "arousal30"
return 1
if(getArousalLoss() >= (max_arousal / 100) * 20)//M O D U L A R , W O W
hud_used.arousal.icon_state = "arousal10"
return 1
if(getArousalLoss() >= (max_arousal / 100) * 10)//M O D U L A R , W O W
hud_used.arousal.icon_state = "arousal10"
return 1
else
hud_used.arousal.icon_state = "arousal0"
/obj/screen/arousal
name = "arousal"
icon_state = "arousal0"
screen_loc = ui_arousal
/obj/screen/arousal/Click()
if(!isliving(usr))
return 0
var/mob/living/M = usr
if(M.canbearoused)
M.mob_masturbate()
return 1
else
M << "<span class='warning'>Arousal is disabled. Feature is unavailable.</span>"
+211
View File
@@ -0,0 +1,211 @@
//body bluids
/datum/reagent/consumable/semen
name = "Semen"
id = "semen"
description = "Sperm from some animal. Useless for anything but insemination, really."
data = list("donor"=null,"viruses"=null,"donor_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null)
reagent_state = LIQUID
color = "#FFFFFF" // rgb: 255, 255, 255
nutriment_factor = 0.5 * REAGENTS_METABOLISM
/datum/reagent/consumable/semen/reaction_turf(turf/T, reac_volume)
if(!istype(T))
return
if(reac_volume < 3)
return
var/obj/effect/decal/cleanable/semen/S = locate() in T
if(!S)
S = new(T)
S.reagents.add_reagent("semen", reac_volume)
if(data["blood_DNA"])
S.blood_DNA[data["blood_DNA"]] = data["blood_type"]
/obj/effect/decal/cleanable/semen
name = "semen"
desc = null
gender = PLURAL
density = 0
layer = ABOVE_NORMAL_TURF_LAYER
icon = 'code/citadel/icons/effects.dmi'
icon_state = "semen1"
random_icon_states = list("semen1", "semen2", "semen3", "semen4")
// blood_state = BLOOD_STATE_SEMEN
// bloodiness = MAX_SHOE_BLOODINESS
/obj/effect/decal/cleanable/semen/New()
dir = pick(1,2,4,8)
..()
/obj/effect/decal/cleanable/semen/replace_decal(obj/effect/decal/cleanable/semen/S)
// if(S.reagent_DNA["semen"])
// reagent_DNA["semen"] |= S.reagent_DNA["semen"]
..()
/datum/reagent/consumable/femcum
name = "Female Ejaculate"
id = "femcum"
description = "Vaginal lubricant found in most mammals and other animals of similar nature. Where you found this is your own business."
data = list("donor"=null,"viruses"=null,"donor_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null)
reagent_state = LIQUID
color = "#AAAAAA77"
nutriment_factor = 0.5 * REAGENTS_METABOLISM
/obj/effect/decal/cleanable/femcum
name = "female ejaculate"
desc = null
gender = PLURAL
density = 0
layer = ABOVE_NORMAL_TURF_LAYER
icon = 'code/citadel/icons/effects.dmi'
icon_state = "fem1"
random_icon_states = list("fem1", "fem2", "fem3", "fem4")
blood_DNA = list()
blood_state = null
bloodiness = null
/obj/effect/decal/cleanable/femcum/New()
dir = pick(1,2,4,8)
..()
/obj/effect/decal/cleanable/femcum/replace_decal(obj/effect/decal/cleanable/femcum/F)
if (F.blood_DNA)
blood_DNA |= F.blood_DNA.Copy()
..()
//aphrodisiac & anaphrodisiac
/datum/reagent/aphrodisiac
name = "Crocin"
id = "aphro"
description = "Naturally found in the crocus and gardenia flowers, this drug acts as a natural and safe aphrodisiac."
color = "#FFADFF"//PINK, rgb(255, 173, 255)
/datum/reagent/aphrodisiac/on_mob_life(mob/living/M)
if(prob(33))
M.adjustArousalLoss(2)
if(prob(5))
M.emote(pick("moan","blush"))
if(prob(5))
var/aroused_message = pick("You feel frisky.", "You're having trouble suppressing your urges.", "You feel in the mood.")
M << "<span class='love'>[aroused_message]</span>"
..()
/datum/reagent/aphrodisiacplus
name = "Hexacrocin"
id = "aphro+"
description = "Chemically condensed form of basic crocin. This aphrodisiac is extremely powerful and addictive in most animals.\
Addiction withdrawals can cause brain damage and shortness of breath. Overdosage can lead to brain damage and a\
permanent increase in libido (commonly referred to as 'bimbofication')."
color = "#FF2BFF"//dark pink
addiction_threshold = 20
overdose_threshold = 20
/datum/reagent/aphrodisiacplus/on_mob_life(mob/living/M)
if(prob(33))
M.adjustArousalLoss(6)//not quite six times as powerful, but still considerably more powerful.
if(prob(5))
if(M.getArousalLoss() > 75)
M.say(pick("Hnnnnngghh...", "Ohh...", "Mmnnn..."))
else
M.emote(pick("moan","blush"))
if(prob(5))
if(M.getArousalLoss() > 90)
var/aroused_message = pick("You need to fuck someone!", "You're bursting with sexual tension!", "You can't get sex off your mind!")
M << "<span class='love'>[aroused_message]</span>"
else
var/aroused_message = pick("You feel a bit hot.", "You feel strong sexual urges.", "You feel in the mood.", "You're ready to go down on someone.")
M << "<span class='love'>[aroused_message]</span>"
// if(iscarbon(M) && has_dna(M))
// M.force_ejaculation()
..()
/datum/reagent/aphrodisiacplus/addiction_act_stage2(mob/living/M)
if(prob(30))
M.adjustBrainLoss(2)
..()
/datum/reagent/aphrodisiacplus/addiction_act_stage3(mob/living/M)
if(prob(30))
M.adjustBrainLoss(3)
..()
/datum/reagent/aphrodisiacplus/addiction_act_stage4(mob/living/M)
if(prob(30))
M.adjustBrainLoss(4)
..()
/datum/reagent/aphrodisiacplus/overdose_process(mob/living/M)
if(prob(66))
if(M.min_arousal < 50)
M.min_arousal += 1
if(M.max_arousal < 200)
M.max_arousal += 1
M.adjustArousalLoss(2)
..()
/datum/reagent/anaphrodisiac
name = "Camphor"
id = "anaphro"
description = "Naturally found in some species of evergreen trees, camphor is a waxy substance. When injested by most animals, it acts as an anaphrodisiac\
, reducing libido and calming them. Non-habit forming and not addictive."
color = "#D9D9D9"//rgb(217, 217, 217)
reagent_state = SOLID
/datum/reagent/anaphrodisiac/on_mob_life(mob/living/M)
if(prob(33))
M.adjustArousalLoss(-2)
..()
/datum/reagent/anaphrodisiacplus
name = "Hexacamphor"
id = "anaphro+"
description = "Chemically condensed camphor. Causes an extreme reduction in libido and a permanent one if overdosed. Non-addictive."
color = "#D9D9D9"//rgb(217, 217, 217)
reagent_state = SOLID
overdose_threshold = 20
/datum/reagent/anaphrodisiacplus/on_mob_life(mob/living/M)
if(prob(33))
M.adjustArousalLoss(-4)
..()
/datum/reagent/anaphrodisiacplus/overdose_process(mob/living/M)
if(prob(33))
if(M.min_arousal > 0)
M.min_arousal -= 1
if(M.max_arousal > 75)
M.min_arousal -= 1
M.adjustArousalLoss(-2)
..()
//recipes
/datum/chemical_reaction/aphro
name = "crocin"
id = "aphro"
results = list("aphro" = 6)
required_reagents = list("carbon" = 2, "hydrogen" = 2, "oxygen" = 2, "water" = 1)
required_temp = 400
mix_message = "The mixture boils off a pink vapor..."//The water boils off, leaving the crocin
/datum/chemical_reaction/aphroplus
name = "hexacrocin"
id = "aphro+"
results = list("aphro+" = 1)
required_reagents = list("aphro" = 6, "phenol" = 1)
required_temp = 400
mix_message = "The mixture rapidly condenses and darkens in color..."
/datum/chemical_reaction/anaphro
name = "camphor"
id = "anaphro"
results = list("anaphro" = 6)
required_reagents = list("carbon" = 2, "hydrogen" = 2, "oxygen" = 2, "sulfur" = 1)
required_temp = 400
mix_message = "The mixture boils off a yellow, smelly vapor..."//Sulfur burns off, leaving the camphor
/datum/chemical_reaction/anaphroplus
name = "pentacamphor"
id = "anaphro+"
results = list("anaphro+" = 1)
required_reagents = list("anaphro" = 5, "acetone" = 1)
required_temp = 300
mix_message = "The mixture thickens and heats up slighty..."
Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 B

+41
View File
@@ -0,0 +1,41 @@
/obj/structure/reagent_dispensers/keg
name = "keg"
desc = "A keg."
icon = 'code/citadel/icons/objects.dmi'
icon_state = "keg"
reagent_id = "water"
/obj/structure/reagent_dispensers/keg/mead
name = "keg of mead"
desc = "A keg of mead."
icon_state = "orangekeg"
reagent_id = "mead"
/obj/structure/reagent_dispensers/keg/aphro
name = "keg of aphrodisiac"
desc = "A keg of aphrodisiac."
icon_state = "pinkkeg"
reagent_id = "aphro"
/obj/structure/reagent_dispensers/keg/aphro/strong
name = "keg of strong aphrodisiac"
desc = "A keg of strong and addictive aphrodisiac."
reagent_id = "aphro+"
/obj/structure/reagent_dispensers/keg/milk
name = "keg of milk"
desc = "It's not quite what you were hoping for."
icon_state = "whitekeg"
reagent_id = "milk"
/obj/structure/reagent_dispensers/keg/semen
name = "keg of semen"
desc = "Dear lord, where did this even come from?"
icon_state = "whitekeg"
reagent_id = "semen"
/obj/structure/reagent_dispensers/keg/gargle
name = "keg of pan galactic gargleblaster"
desc = "A keg of... wow that's a long name."
icon_state = "bluekeg"
reagent_id = "gargleblaster"
+2
View File
@@ -80,6 +80,7 @@
if(A.dir)
atomsnowflake += "<br><font size='1'><a href='?_src_=vars;rotatedatum=[refid];rotatedir=left'><<</a> <a href='?_src_=vars;datumedit=[refid];varnameedit=dir'>[dir2text(A.dir)]</a> <a href='?_src_=vars;rotatedatum=[refid];rotatedir=right'>>></a></font>"
var/mob/living/M = A
//citadel code
atomsnowflake += {"
<br><font size='1'><a href='?_src_=vars;datumedit=[refid];varnameedit=ckey'>[M.ckey ? M.ckey : "No ckey"]</a> / <a href='?_src_=vars;datumedit=[refid];varnameedit=real_name'>[M.real_name ? M.real_name : "No real name"]</a></font>
<br><font size='1'>
@@ -90,6 +91,7 @@
CLONE:<font size='1'><a href='?_src_=vars;mobToDamage=[refid];adjustDamage=clone'>[M.getCloneLoss()]</a>
BRAIN:<font size='1'><a href='?_src_=vars;mobToDamage=[refid];adjustDamage=brain'>[M.getBrainLoss()]</a>
STAMINA:<font size='1'><a href='?_src_=vars;mobToDamage=[refid];adjustDamage=stamina'>[M.getStaminaLoss()]</a>
AROUSAL:<font size='1'><a href='?_src_=vars;mobToDamage=\ref[D];adjustDamage=arousal'>[M.getArousalLoss()]</a>
</font>
"}
else
+34
View File
@@ -84,6 +84,9 @@ var/list/preferences_datums = list()
var/job_engsec_med = 0
var/job_engsec_low = 0
//citadel code
var/arousable = TRUE //Allows players to disable arousal from the character creation menu
// Want randomjob if preferences already filled - Donkie
var/joblessrole = BERANDOMJOB //defaults to 1 for fewer assistants
@@ -435,6 +438,24 @@ var/list/preferences_datums = list()
dat += "</td>"
dat += "</tr></table>"
//citadel code
if(NOGENITALS in pref_species.species_traits)
dat += "<h2>Your species ([pref_species.name]) does not support genitals!</h2>"
else
dat += "<h2>Genitals</h2>"
dat += "<table width='100%'><tr><td width='20%' valign='top'>"
dat += "<td valign='top' width='20%'>"
dat += "<h3>Options</h3>"
dat += "<b>Arousal:</b><a href='?_src_=prefs;preference=arousable'>[arousable == TRUE ? "Enabled" : "Disabled"]</a><BR>"
dat += "<h2>More Coming Soon(tm)</h2>"
dat += "</td>"
dat += "</td></tr></table>"
if (1) // Game Preferences
@@ -1301,6 +1322,17 @@ var/list/preferences_datums = list()
else
switch(href_list["preference"])
//citadel code
if("arousable")
switch(arousable)
if(TRUE)
arousable = FALSE
if(FALSE)
arousable = TRUE
else//failsafe
arousable = FALSE
if("publicity")
if(unlock_content)
toggles ^= MEMBER_PUBLIC
@@ -1420,6 +1452,8 @@ var/list/preferences_datums = list()
else if(firstspace == name_length)
real_name += "[pick(last_names)]"
//citadel code
character.canbearoused = arousable
character.real_name = real_name
character.name = character.real_name
@@ -175,6 +175,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
S["clientfps"] >> clientfps
S["parallax"] >> parallax
S["uplink_loc"] >> uplink_spawn_loc
//citadel code
S["arousable"] >> arousable
//try to fix any outdated data if necessary
if(needs_update >= 0)
@@ -231,6 +233,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
S["uses_glasses_colour"]<< uses_glasses_colour
S["clientfps"] << clientfps
S["parallax"] << parallax
//citadel code
S["arousable"] << arousable
return 1
+1
View File
@@ -2,6 +2,7 @@
/mob/living/carbon/human/verb/suicide()
set hidden = 1
return
if(!canSuicide())
return
var/oldkey = ckey
+13 -2
View File
@@ -25,6 +25,9 @@
adjustCloneLoss(damage * hit_percent)
if(STAMINA)
adjustStaminaLoss(damage * hit_percent)
//citadel code
if(AROUSAL)
adjustArousalLoss(damage * hit_percent)
return 1
/mob/living/proc/apply_damage_type(damage = 0, damagetype = BRUTE) //like apply damage except it always uses the damage procs
@@ -41,6 +44,9 @@
return adjustCloneLoss(damage)
if(STAMINA)
return adjustStaminaLoss(damage)
//citadel code
if(AROUSAL)
return adjustArousalLoss(damage)
/mob/living/proc/get_damage_amount(damagetype = BRUTE)
switch(damagetype)
@@ -56,9 +62,12 @@
return getCloneLoss()
if(STAMINA)
return getStaminaLoss()
//citadel code
if(AROUSAL)
return getArousalLoss()
/mob/living/proc/apply_damages(brute = 0, burn = 0, tox = 0, oxy = 0, clone = 0, def_zone = null, blocked = 0, stamina = 0)
/mob/living/proc/apply_damages(brute = 0, burn = 0, tox = 0, oxy = 0, clone = 0, def_zone = null, blocked = 0, stamina = 0, arousal = 0)
if(blocked >= 100)
return 0
if(brute)
@@ -73,6 +82,9 @@
apply_damage(clone, CLONE, def_zone, blocked)
if(stamina)
apply_damage(stamina, STAMINA, def_zone, blocked)
//citadel code
if(arousal)
apply_damage(arousal, AROUSAL, def_zone, blocked)
return 1
@@ -232,7 +244,6 @@
/mob/living/proc/setStaminaLoss(amount, updating_stamina = TRUE, forced = FALSE)
return
// heal ONE external organ, organ gets randomly selected from damaged ones.
/mob/living/proc/heal_bodypart_damage(brute, burn, updating_health = 1)
adjustBruteLoss(-brute, 0) //zero as argument for no instant health update