mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-13 11:43:31 +00:00
Merge resolution.
This commit is contained in:
@@ -27,6 +27,8 @@
|
|||||||
active_power_usage = 7500 //This also doubles as a measure of how powerful the pump is, in Watts. 7500 W ~ 10 HP
|
active_power_usage = 7500 //This also doubles as a measure of how powerful the pump is, in Watts. 7500 W ~ 10 HP
|
||||||
var/last_power_draw = 0
|
var/last_power_draw = 0
|
||||||
|
|
||||||
|
connect_types = list(1,2,3) //connects to regular, supply and scrubbers pipes
|
||||||
|
|
||||||
var/on = 0
|
var/on = 0
|
||||||
var/pump_direction = 1 //0 = siphoning, 1 = releasing
|
var/pump_direction = 1 //0 = siphoning, 1 = releasing
|
||||||
|
|
||||||
@@ -62,7 +64,7 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
overlays.Cut()
|
overlays.Cut()
|
||||||
|
|
||||||
var/vent_icon = "vent"
|
var/vent_icon = "vent"
|
||||||
|
|
||||||
var/turf/T = get_turf(src)
|
var/turf/T = get_turf(src)
|
||||||
@@ -71,7 +73,7 @@
|
|||||||
|
|
||||||
if(T.intact && node1 && node2 && node1.level == 1 && node2.level == 1 && istype(node1, /obj/machinery/atmospherics/pipe) && istype(node2, /obj/machinery/atmospherics/pipe))
|
if(T.intact && node1 && node2 && node1.level == 1 && node2.level == 1 && istype(node1, /obj/machinery/atmospherics/pipe) && istype(node2, /obj/machinery/atmospherics/pipe))
|
||||||
vent_icon += "h"
|
vent_icon += "h"
|
||||||
|
|
||||||
if(!powered())
|
if(!powered())
|
||||||
vent_icon += "off"
|
vent_icon += "off"
|
||||||
else
|
else
|
||||||
@@ -88,8 +90,14 @@
|
|||||||
if(T.intact && node1 && node2 && node1.level == 1 && node2.level == 1 && istype(node1, /obj/machinery/atmospherics/pipe) && istype(node2, /obj/machinery/atmospherics/pipe))
|
if(T.intact && node1 && node2 && node1.level == 1 && node2.level == 1 && istype(node1, /obj/machinery/atmospherics/pipe) && istype(node2, /obj/machinery/atmospherics/pipe))
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
add_underlay(T, node1, turn(dir, -180))
|
if (node1)
|
||||||
add_underlay(T, node2, dir)
|
add_underlay(T, node1, turn(dir, -180), node1.icon_connect_type)
|
||||||
|
else
|
||||||
|
add_underlay(T, node1, turn(dir, -180))
|
||||||
|
if (node2)
|
||||||
|
add_underlay(T, node2, dir, node2.icon_connect_type)
|
||||||
|
else
|
||||||
|
add_underlay(T, node2, dir)
|
||||||
|
|
||||||
/obj/machinery/atmospherics/binary/dp_vent_pump/hide(var/i)
|
/obj/machinery/atmospherics/binary/dp_vent_pump/hide(var/i)
|
||||||
update_icon()
|
update_icon()
|
||||||
@@ -97,7 +105,7 @@
|
|||||||
|
|
||||||
/obj/machinery/atmospherics/binary/dp_vent_pump/process()
|
/obj/machinery/atmospherics/binary/dp_vent_pump/process()
|
||||||
..()
|
..()
|
||||||
|
|
||||||
if(stat & (NOPOWER|BROKEN) || !on)
|
if(stat & (NOPOWER|BROKEN) || !on)
|
||||||
update_use_power(0) //usually we get here because a player turned a pump off - definitely want to update.
|
update_use_power(0) //usually we get here because a player turned a pump off - definitely want to update.
|
||||||
last_power_draw = 0
|
last_power_draw = 0
|
||||||
@@ -107,19 +115,19 @@
|
|||||||
var/datum/gas_mixture/environment = loc.return_air()
|
var/datum/gas_mixture/environment = loc.return_air()
|
||||||
|
|
||||||
var/power_draw = -1
|
var/power_draw = -1
|
||||||
|
|
||||||
//Figure out the target pressure difference
|
//Figure out the target pressure difference
|
||||||
var/pressure_delta = get_pressure_delta(environment)
|
var/pressure_delta = get_pressure_delta(environment)
|
||||||
|
|
||||||
if(pressure_delta > 0.5)
|
if(pressure_delta > 0.5)
|
||||||
if(pump_direction) //internal -> external
|
if(pump_direction) //internal -> external
|
||||||
if (node1 && (environment.temperature || air1.temperature))
|
if (node1 && (environment.temperature || air1.temperature))
|
||||||
var/output_volume = environment.volume * environment.group_multiplier
|
var/output_volume = environment.volume * environment.group_multiplier
|
||||||
var/air_temperature = environment.temperature? environment.temperature : air1.temperature
|
var/air_temperature = environment.temperature? environment.temperature : air1.temperature
|
||||||
var/transfer_moles = pressure_delta*output_volume/(air_temperature * R_IDEAL_GAS_EQUATION)
|
var/transfer_moles = pressure_delta*output_volume/(air_temperature * R_IDEAL_GAS_EQUATION)
|
||||||
|
|
||||||
power_draw = pump_gas(src, air1, environment, transfer_moles, active_power_usage)
|
power_draw = pump_gas(src, air1, environment, transfer_moles, active_power_usage)
|
||||||
|
|
||||||
if(power_draw >= 0 && network1)
|
if(power_draw >= 0 && network1)
|
||||||
network1.update = 1
|
network1.update = 1
|
||||||
else //external -> internal
|
else //external -> internal
|
||||||
@@ -127,15 +135,15 @@
|
|||||||
var/output_volume = air2.volume + (network2? network2.volume : 0)
|
var/output_volume = air2.volume + (network2? network2.volume : 0)
|
||||||
var/air_temperature = air2.temperature? air2.temperature : environment.temperature
|
var/air_temperature = air2.temperature? air2.temperature : environment.temperature
|
||||||
var/transfer_moles = pressure_delta*output_volume/(air_temperature * R_IDEAL_GAS_EQUATION)
|
var/transfer_moles = pressure_delta*output_volume/(air_temperature * R_IDEAL_GAS_EQUATION)
|
||||||
|
|
||||||
//limit flow rate from turfs
|
//limit flow rate from turfs
|
||||||
transfer_moles = min(transfer_moles, environment.total_moles*air2.volume/environment.volume) //group_multiplier gets divided out here
|
transfer_moles = min(transfer_moles, environment.total_moles*air2.volume/environment.volume) //group_multiplier gets divided out here
|
||||||
|
|
||||||
power_draw = pump_gas(src, environment, air2, transfer_moles, active_power_usage)
|
power_draw = pump_gas(src, environment, air2, transfer_moles, active_power_usage)
|
||||||
|
|
||||||
if(power_draw >= 0 && network2)
|
if(power_draw >= 0 && network2)
|
||||||
network2.update = 1
|
network2.update = 1
|
||||||
|
|
||||||
if (power_draw < 0)
|
if (power_draw < 0)
|
||||||
last_power_draw = 0
|
last_power_draw = 0
|
||||||
last_flow_rate = 0
|
last_flow_rate = 0
|
||||||
@@ -149,7 +157,7 @@
|
|||||||
/obj/machinery/atmospherics/binary/dp_vent_pump/proc/get_pressure_delta(datum/gas_mixture/environment)
|
/obj/machinery/atmospherics/binary/dp_vent_pump/proc/get_pressure_delta(datum/gas_mixture/environment)
|
||||||
var/pressure_delta = DEFAULT_PRESSURE_DELTA
|
var/pressure_delta = DEFAULT_PRESSURE_DELTA
|
||||||
var/environment_pressure = environment.return_pressure()
|
var/environment_pressure = environment.return_pressure()
|
||||||
|
|
||||||
if(pump_direction) //internal -> external
|
if(pump_direction) //internal -> external
|
||||||
if(pressure_checks & PRESSURE_CHECK_EXTERNAL)
|
if(pressure_checks & PRESSURE_CHECK_EXTERNAL)
|
||||||
pressure_delta = min(pressure_delta, external_pressure_bound - environment_pressure) //increasing the pressure here
|
pressure_delta = min(pressure_delta, external_pressure_bound - environment_pressure) //increasing the pressure here
|
||||||
@@ -160,9 +168,9 @@
|
|||||||
pressure_delta = min(pressure_delta, environment_pressure - external_pressure_bound) //decreasing the pressure here
|
pressure_delta = min(pressure_delta, environment_pressure - external_pressure_bound) //decreasing the pressure here
|
||||||
if(pressure_checks & PRESSURE_CHECK_OUTPUT)
|
if(pressure_checks & PRESSURE_CHECK_OUTPUT)
|
||||||
pressure_delta = min(pressure_delta, output_pressure_max - air2.return_pressure()) //increasing the pressure here
|
pressure_delta = min(pressure_delta, output_pressure_max - air2.return_pressure()) //increasing the pressure here
|
||||||
|
|
||||||
return pressure_delta
|
return pressure_delta
|
||||||
|
|
||||||
|
|
||||||
//Radio remote control
|
//Radio remote control
|
||||||
|
|
||||||
@@ -204,6 +212,7 @@
|
|||||||
if(..(user, 1))
|
if(..(user, 1))
|
||||||
user << "A small gauge in the corner reads [round(last_flow_rate, 0.1)] L/s; [round(last_power_draw)] W"
|
user << "A small gauge in the corner reads [round(last_flow_rate, 0.1)] L/s; [round(last_power_draw)] W"
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/atmospherics/unary/vent_pump/power_change()
|
/obj/machinery/atmospherics/unary/vent_pump/power_change()
|
||||||
var/old_stat = stat
|
var/old_stat = stat
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -292,8 +292,12 @@ mob/living/parasite/meme/verb/Agony()
|
|||||||
|
|
||||||
spawn
|
spawn
|
||||||
// backup the host incase we switch hosts after using the verb
|
// backup the host incase we switch hosts after using the verb
|
||||||
var/mob/host = src.host
|
var/mob/living/carbon/host = src.host
|
||||||
|
|
||||||
|
if (host.species && (host.species.flags & NO_PAIN))
|
||||||
|
usr << "Nothing seems to happen."
|
||||||
|
return
|
||||||
|
|
||||||
host.paralysis = max(host.paralysis, 2)
|
host.paralysis = max(host.paralysis, 2)
|
||||||
|
|
||||||
host.flash_weak_pain()
|
host.flash_weak_pain()
|
||||||
|
|||||||
@@ -104,9 +104,13 @@ var/list/sacrificed = list()
|
|||||||
if(M.stat==2)
|
if(M.stat==2)
|
||||||
continue
|
continue
|
||||||
usr.say("Mah[pick("'","`")]weyh pleggh at e'ntrath!")
|
usr.say("Mah[pick("'","`")]weyh pleggh at e'ntrath!")
|
||||||
M.visible_message("\red [M] writhes in pain as the markings below \him glow a bloody red.", \
|
|
||||||
"\red AAAAAAHHHH!", \
|
if (M.species && (M.species.flags & NO_PAIN))
|
||||||
"\red You hear an anguished scream.")
|
M.visible_message("\red The markings below [M] glow a bloody red.")
|
||||||
|
else
|
||||||
|
M.visible_message("\red [M] writhes in pain as the markings below \him glow a bloody red.", \
|
||||||
|
"\red AAAAAAHHHH!", \
|
||||||
|
"\red You hear an anguished scream.")
|
||||||
if(is_convertable_to_cult(M.mind) && !jobban_isbanned(M, "cultist"))//putting jobban check here because is_convertable uses mind as argument
|
if(is_convertable_to_cult(M.mind) && !jobban_isbanned(M, "cultist"))//putting jobban check here because is_convertable uses mind as argument
|
||||||
|
|
||||||
// Mostly for the benefit of those who resist, but it makes sense for even those who join to have some.. effect.
|
// Mostly for the benefit of those who resist, but it makes sense for even those who join to have some.. effect.
|
||||||
|
|||||||
@@ -1026,7 +1026,10 @@ About the new airlock wires panel:
|
|||||||
S.loc = M.loc
|
S.loc = M.loc
|
||||||
spawn(20)
|
spawn(20)
|
||||||
del(S)
|
del(S)
|
||||||
M.emote("scream")
|
if (iscarbon(M))
|
||||||
|
var/mob/living/carbon/C = M
|
||||||
|
if (!(C.species && (C.species.flags & NO_PAIN)))
|
||||||
|
M.emote("scream")
|
||||||
var/turf/location = src.loc
|
var/turf/location = src.loc
|
||||||
if(istype(location, /turf/simulated))
|
if(istype(location, /turf/simulated))
|
||||||
location.add_blood(M)
|
location.add_blood(M)
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
var/locked = 1
|
var/locked = 1
|
||||||
|
|
||||||
attack_self(mob/user as mob)
|
attack_self(mob/user as mob)
|
||||||
if (!ishuman(user) && !istype(user,/mob/living/silicon/robot/drone))
|
if (!ishuman(user) && !istype(user,/mob/living/silicon/robot))
|
||||||
return ..(user)
|
return ..(user)
|
||||||
|
|
||||||
var/mob/living/carbon/human/H = user
|
var/mob/living/carbon/human/H = user
|
||||||
|
|||||||
@@ -330,14 +330,18 @@
|
|||||||
for(i=0,i<4,i++)
|
for(i=0,i<4,i++)
|
||||||
sleep(50)
|
sleep(50)
|
||||||
if(src.OCCUPANT)
|
if(src.OCCUPANT)
|
||||||
if(src.issuperUV)
|
var/datum/organ/internal/diona/nutrients/rad_organ = locate() in OCCUPANT.internal_organs
|
||||||
var/burndamage = rand(28,35)
|
if (!rad_organ)
|
||||||
OCCUPANT.take_organ_damage(0,burndamage)
|
if(src.issuperUV)
|
||||||
OCCUPANT.emote("scream")
|
var/burndamage = rand(28,35)
|
||||||
else
|
OCCUPANT.take_organ_damage(0,burndamage)
|
||||||
var/burndamage = rand(6,10)
|
if (!(OCCUPANT.species && (OCCUPANT.species.flags & NO_PAIN)))
|
||||||
OCCUPANT.take_organ_damage(0,burndamage)
|
OCCUPANT.emote("scream")
|
||||||
OCCUPANT.emote("scream")
|
else
|
||||||
|
var/burndamage = rand(6,10)
|
||||||
|
OCCUPANT.take_organ_damage(0,burndamage)
|
||||||
|
if (!(OCCUPANT.species && (OCCUPANT.species.flags & NO_PAIN)))
|
||||||
|
OCCUPANT.emote("scream")
|
||||||
if(i==3) //End of the cycle
|
if(i==3) //End of the cycle
|
||||||
if(!src.issuperUV)
|
if(!src.issuperUV)
|
||||||
if(src.HELMET)
|
if(src.HELMET)
|
||||||
|
|||||||
@@ -310,7 +310,13 @@
|
|||||||
|
|
||||||
for(var/mob/living/M in contents)
|
for(var/mob/living/M in contents)
|
||||||
if (M.stat!=2)
|
if (M.stat!=2)
|
||||||
M.emote("scream")
|
if (!iscarbon(M))
|
||||||
|
M.emote("scream")
|
||||||
|
else
|
||||||
|
var/mob/living/carbon/C = M
|
||||||
|
if (!(C.species && (C.species.flags & NO_PAIN)))
|
||||||
|
C.emote("scream")
|
||||||
|
|
||||||
//Logging for this causes runtimes resulting in the cremator locking up. Commenting it out until that's figured out.
|
//Logging for this causes runtimes resulting in the cremator locking up. Commenting it out until that's figured out.
|
||||||
//M.attack_log += "\[[time_stamp()]\] Has been cremated by <b>[user]/[user.ckey]</b>" //No point in this when the mob's about to be deleted
|
//M.attack_log += "\[[time_stamp()]\] Has been cremated by <b>[user]/[user.ckey]</b>" //No point in this when the mob's about to be deleted
|
||||||
//user.attack_log +="\[[time_stamp()]\] Cremated <b>[M]/[M.ckey]</b>"
|
//user.attack_log +="\[[time_stamp()]\] Cremated <b>[M]/[M.ckey]</b>"
|
||||||
|
|||||||
@@ -8,7 +8,19 @@
|
|||||||
//Does the speaker have a client? It's either random stuff that observers won't care about (Experiment 97B says, 'EHEHEHEHEHEHEHE')
|
//Does the speaker have a client? It's either random stuff that observers won't care about (Experiment 97B says, 'EHEHEHEHEHEHEHE')
|
||||||
//Or someone snoring. So we make it where they won't hear it.
|
//Or someone snoring. So we make it where they won't hear it.
|
||||||
return
|
return
|
||||||
|
|
||||||
|
//make sure the air can transmit speech - hearer's side
|
||||||
|
var/turf/T = get_turf(src)
|
||||||
|
if (T)
|
||||||
|
var/datum/gas_mixture/environment = T.return_air()
|
||||||
|
var/pressure = (environment)? environment.return_pressure() : 0
|
||||||
|
if(pressure < SOUND_MINIMUM_PRESSURE && get_dist(speaker, src) > 1)
|
||||||
|
return
|
||||||
|
|
||||||
|
if (pressure < ONE_ATMOSPHERE*0.4) //sound distortion pressure, to help clue people in that the air is thin, even if it isn't a vacuum yet
|
||||||
|
italics = 1
|
||||||
|
sound_vol *= 0.5 //muffle the sound a bit, so it's like we're actually talking through contact
|
||||||
|
|
||||||
if(sleeping || stat == 1)
|
if(sleeping || stat == 1)
|
||||||
hear_sleep(message)
|
hear_sleep(message)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
/mob/living/carbon/alien/diona/New()
|
/mob/living/carbon/alien/diona/New()
|
||||||
|
|
||||||
..()
|
..()
|
||||||
|
species = all_species["Diona"]
|
||||||
verbs += /mob/living/carbon/proc/eat_weeds
|
verbs += /mob/living/carbon/proc/eat_weeds
|
||||||
verbs += /mob/living/carbon/proc/fertilize_plant
|
verbs += /mob/living/carbon/proc/fertilize_plant
|
||||||
verbs += /mob/living/carbon/alien/diona/proc/steal_blood
|
verbs += /mob/living/carbon/alien/diona/proc/steal_blood
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
/mob/living/carbon/
|
/mob/living/carbon/
|
||||||
gender = MALE
|
gender = MALE
|
||||||
|
var/datum/species/species //Contains icon generation and language information, set during New().
|
||||||
var/list/stomach_contents = list()
|
var/list/stomach_contents = list()
|
||||||
var/list/datum/disease2/disease/virus2 = list()
|
var/list/datum/disease2/disease/virus2 = list()
|
||||||
var/antibodies = 0
|
var/antibodies = 0
|
||||||
|
|||||||
@@ -72,7 +72,12 @@
|
|||||||
|
|
||||||
if(B.host_brain.ckey)
|
if(B.host_brain.ckey)
|
||||||
src << "\red <B>You send a punishing spike of psychic agony lancing into your host's brain.</B>"
|
src << "\red <B>You send a punishing spike of psychic agony lancing into your host's brain.</B>"
|
||||||
B.host_brain << "\red <B><FONT size=3>Horrific, burning agony lances through you, ripping a soundless scream from your trapped mind!</FONT></B>"
|
|
||||||
|
if (species && (species.flags & NO_PAIN))
|
||||||
|
B.host_brain << "\red You feel a strange sensation as a foreign influence prods your mind."
|
||||||
|
src << "\red <B>It doesn't seem to be as effective as you hoped.</B>"
|
||||||
|
else
|
||||||
|
B.host_brain << "\red <B><FONT size=3>Horrific, burning agony lances through you, ripping a soundless scream from your trapped mind!</FONT></B>"
|
||||||
|
|
||||||
/mob/living/carbon/proc/spawn_larvae()
|
/mob/living/carbon/proc/spawn_larvae()
|
||||||
set category = "Abilities"
|
set category = "Abilities"
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
icon_state = "body_m_s"
|
icon_state = "body_m_s"
|
||||||
|
|
||||||
var/list/hud_list[9]
|
var/list/hud_list[9]
|
||||||
var/datum/species/species //Contains icon generation and language information, set during New().
|
|
||||||
var/embedded_flag //To check if we've need to roll for damage on movement while an item is imbedded in us.
|
var/embedded_flag //To check if we've need to roll for damage on movement while an item is imbedded in us.
|
||||||
|
|
||||||
/mob/living/carbon/human/New(var/new_loc, var/new_species = null)
|
/mob/living/carbon/human/New(var/new_loc, var/new_species = null)
|
||||||
|
|||||||
@@ -351,7 +351,7 @@ This function restores all organs.
|
|||||||
|
|
||||||
//Handle other types of damage
|
//Handle other types of damage
|
||||||
if((damagetype != BRUTE) && (damagetype != BURN))
|
if((damagetype != BRUTE) && (damagetype != BURN))
|
||||||
if(damagetype == HALLOSS)
|
if(damagetype == HALLOSS && !(species && (species.flags & NO_PAIN)))
|
||||||
if ((damage > 25 && prob(20)) || (damage > 50 && prob(60)))
|
if ((damage > 25 && prob(20)) || (damage > 50 && prob(60)))
|
||||||
emote("scream")
|
emote("scream")
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,8 @@
|
|||||||
var/health_deficiency = (100 - health)
|
var/health_deficiency = (100 - health)
|
||||||
if(health_deficiency >= 40) tally += (health_deficiency / 25)
|
if(health_deficiency >= 40) tally += (health_deficiency / 25)
|
||||||
|
|
||||||
if(halloss >= 10) tally += (halloss / 10)
|
if (!(species && (species.flags & NO_PAIN)))
|
||||||
|
if(halloss >= 10) tally += (halloss / 10) //halloss shouldn't slow you down if you can't even feel it
|
||||||
|
|
||||||
var/hungry = (500 - nutrition)/5 // So overeat would be 100 and default level would be 80
|
var/hungry = (500 - nutrition)/5 // So overeat would be 100 and default level would be 80
|
||||||
if (hungry >= 70) tally += hungry/50
|
if (hungry >= 70) tally += hungry/50
|
||||||
|
|||||||
@@ -61,13 +61,15 @@
|
|||||||
loc = M.loc
|
loc = M.loc
|
||||||
|
|
||||||
if(prob(15) && M.client && istype(M, /mob/living/carbon))
|
if(prob(15) && M.client && istype(M, /mob/living/carbon))
|
||||||
M << "<span class='danger'>[pick("You can feel your body becoming weak!", \
|
var/mob/living/carbon/C = M
|
||||||
"You feel like you're about to die!", \
|
if (!(C.species && (C.species.flags & NO_PAIN)))
|
||||||
"You feel every part of your body screaming in agony!", \
|
M << "<span class='danger'>[pick("You can feel your body becoming weak!", \
|
||||||
"A low, rolling pain passes through your body!", \
|
"You feel like you're about to die!", \
|
||||||
"Your body feels as if it's falling apart!", \
|
"You feel every part of your body screaming in agony!", \
|
||||||
"You feel extremely weak!", \
|
"A low, rolling pain passes through your body!", \
|
||||||
"A sharp, deep pain bathes every inch of your body!")]</span>"
|
"Your body feels as if it's falling apart!", \
|
||||||
|
"You feel extremely weak!", \
|
||||||
|
"A sharp, deep pain bathes every inch of your body!")]</span>"
|
||||||
|
|
||||||
if(istype(M, /mob/living/carbon))
|
if(istype(M, /mob/living/carbon))
|
||||||
Victim.adjustCloneLoss(rand(5,6))
|
Victim.adjustCloneLoss(rand(5,6))
|
||||||
|
|||||||
@@ -41,6 +41,9 @@
|
|||||||
reagents = R
|
reagents = R
|
||||||
R.my_atom = src
|
R.my_atom = src
|
||||||
|
|
||||||
|
species = all_species[greaterform]
|
||||||
|
add_language(species.language)
|
||||||
|
|
||||||
if(name == initial(name)) //To stop Pun-Pun becoming generic.
|
if(name == initial(name)) //To stop Pun-Pun becoming generic.
|
||||||
name = "[name] ([rand(1, 1000)])"
|
name = "[name] ([rand(1, 1000)])"
|
||||||
real_name = name
|
real_name = name
|
||||||
@@ -78,24 +81,22 @@
|
|||||||
|
|
||||||
/mob/living/carbon/monkey/unathi/New()
|
/mob/living/carbon/monkey/unathi/New()
|
||||||
|
|
||||||
..()
|
|
||||||
dna.mutantrace = "lizard"
|
dna.mutantrace = "lizard"
|
||||||
greaterform = "Unathi"
|
greaterform = "Unathi"
|
||||||
add_language("Sinta'unathi")
|
..()
|
||||||
|
|
||||||
/mob/living/carbon/monkey/skrell/New()
|
/mob/living/carbon/monkey/skrell/New()
|
||||||
|
|
||||||
..()
|
|
||||||
dna.mutantrace = "skrell"
|
dna.mutantrace = "skrell"
|
||||||
greaterform = "Skrell"
|
greaterform = "Skrell"
|
||||||
add_language("Skrellian")
|
..()
|
||||||
|
|
||||||
/mob/living/carbon/monkey/tajara/New()
|
/mob/living/carbon/monkey/tajara/New()
|
||||||
|
|
||||||
..()
|
|
||||||
dna.mutantrace = "tajaran"
|
dna.mutantrace = "tajaran"
|
||||||
greaterform = "Tajara"
|
greaterform = "Tajara"
|
||||||
add_language("Siik'tajr")
|
..()
|
||||||
|
|
||||||
/mob/living/carbon/monkey/movement_delay()
|
/mob/living/carbon/monkey/movement_delay()
|
||||||
var/tally = 0
|
var/tally = 0
|
||||||
@@ -287,4 +288,4 @@
|
|||||||
|
|
||||||
message = capitalize(trim_left(message))
|
message = capitalize(trim_left(message))
|
||||||
|
|
||||||
..(message, speaking, verb, alt_name, italics, message_range, used_radios)
|
..(message, speaking, verb, alt_name, italics, message_range, used_radios)
|
||||||
|
|||||||
@@ -91,22 +91,21 @@ proc/get_radio_key_from_channel(var/channel)
|
|||||||
|
|
||||||
if (speaking.flags & SIGNLANG)
|
if (speaking.flags & SIGNLANG)
|
||||||
return say_signlang(message, pick(speaking.signlang_verb), speaking)
|
return say_signlang(message, pick(speaking.signlang_verb), speaking)
|
||||||
|
|
||||||
//make sure the air can transmit speech
|
|
||||||
var/datum/gas_mixture/environment = T.return_air()
|
|
||||||
if(environment)
|
|
||||||
var/pressure = environment.return_pressure()
|
|
||||||
if(pressure < SOUND_MINIMUM_PRESSURE)
|
|
||||||
italics = 1
|
|
||||||
message_range = 1
|
|
||||||
|
|
||||||
if (speech_sound)
|
|
||||||
sound_vol *= 0.5 //muffle the sound a bit, so it's like we're actually talking through contact
|
|
||||||
|
|
||||||
var/list/listening = list()
|
var/list/listening = list()
|
||||||
var/list/listening_obj = list()
|
var/list/listening_obj = list()
|
||||||
|
|
||||||
if(T)
|
if(T)
|
||||||
|
//make sure the air can transmit speech - speaker's side
|
||||||
|
var/datum/gas_mixture/environment = T.return_air()
|
||||||
|
var/pressure = (environment)? environment.return_pressure() : 0
|
||||||
|
if(pressure < SOUND_MINIMUM_PRESSURE)
|
||||||
|
message_range = 1
|
||||||
|
|
||||||
|
if (pressure < ONE_ATMOSPHERE*0.4) //sound distortion pressure, to help clue people in that the air is thin, even if it isn't a vacuum yet
|
||||||
|
italics = 1
|
||||||
|
sound_vol *= 0.5 //muffle the sound a bit, so it's like we're actually talking through contact
|
||||||
|
|
||||||
var/list/hear = hear(message_range, T)
|
var/list/hear = hear(message_range, T)
|
||||||
var/list/hearturfs = list()
|
var/list/hearturfs = list()
|
||||||
|
|
||||||
|
|||||||
@@ -98,7 +98,8 @@
|
|||||||
brute -= brute / 2
|
brute -= brute / 2
|
||||||
|
|
||||||
if(status & ORGAN_BROKEN && prob(40) && brute)
|
if(status & ORGAN_BROKEN && prob(40) && brute)
|
||||||
owner.emote("scream") //getting hit on broken hand hurts
|
if (!(owner.species && (owner.species.flags & NO_PAIN)))
|
||||||
|
owner.emote("scream") //getting hit on broken hand hurts
|
||||||
if(used_weapon)
|
if(used_weapon)
|
||||||
add_autopsy_data("[used_weapon]", brute + burn)
|
add_autopsy_data("[used_weapon]", brute + burn)
|
||||||
|
|
||||||
@@ -648,7 +649,7 @@ Note that amputating the affected organ does in fact remove the infection from t
|
|||||||
if(status & ORGAN_ROBOT && !no_explode && sabotaged)
|
if(status & ORGAN_ROBOT && !no_explode && sabotaged)
|
||||||
owner.visible_message("\red \The [owner]'s [display_name] explodes violently!",\
|
owner.visible_message("\red \The [owner]'s [display_name] explodes violently!",\
|
||||||
"\red <b>Your [display_name] explodes!</b>",\
|
"\red <b>Your [display_name] explodes!</b>",\
|
||||||
"You hear an explosion followed by a scream!")
|
"You hear an explosion!")
|
||||||
explosion(get_turf(owner),-1,-1,2,3)
|
explosion(get_turf(owner),-1,-1,2,3)
|
||||||
var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
|
var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
|
||||||
spark_system.set_up(5, 0, owner)
|
spark_system.set_up(5, 0, owner)
|
||||||
|
|||||||
@@ -1984,7 +1984,8 @@ datum
|
|||||||
if(affecting.take_damage(4*toxpwr, 2*toxpwr))
|
if(affecting.take_damage(4*toxpwr, 2*toxpwr))
|
||||||
H.UpdateDamageIcon()
|
H.UpdateDamageIcon()
|
||||||
if(prob(meltprob)) //Applies disfigurement
|
if(prob(meltprob)) //Applies disfigurement
|
||||||
H.emote("scream")
|
if (!(H.species && (H.species.flags & NO_PAIN)))
|
||||||
|
H.emote("scream")
|
||||||
H.status_flags |= DISFIGURED
|
H.status_flags |= DISFIGURED
|
||||||
else
|
else
|
||||||
M.take_organ_damage(min(6*toxpwr, volume * toxpwr)) // uses min() and volume to make sure they aren't being sprayed in trace amounts (1 unit != insta rape) -- Doohl
|
M.take_organ_damage(min(6*toxpwr, volume * toxpwr)) // uses min() and volume to make sure they aren't being sprayed in trace amounts (1 unit != insta rape) -- Doohl
|
||||||
@@ -2146,7 +2147,7 @@ datum
|
|||||||
if ( eyes_covered && mouth_covered )
|
if ( eyes_covered && mouth_covered )
|
||||||
victim << "\red Your [safe_thing] protects you from the pepperspray!"
|
victim << "\red Your [safe_thing] protects you from the pepperspray!"
|
||||||
return
|
return
|
||||||
else if ( mouth_covered ) // Reduced effects if partially protected
|
else if ( eyes_covered ) // Reduced effects if partially protected
|
||||||
victim << "\red Your [safe_thing] protect you from most of the pepperspray!"
|
victim << "\red Your [safe_thing] protect you from most of the pepperspray!"
|
||||||
victim.eye_blurry = max(M.eye_blurry, 15)
|
victim.eye_blurry = max(M.eye_blurry, 15)
|
||||||
victim.eye_blind = max(M.eye_blind, 5)
|
victim.eye_blind = max(M.eye_blind, 5)
|
||||||
@@ -2155,13 +2156,15 @@ datum
|
|||||||
//victim.Paralyse(10)
|
//victim.Paralyse(10)
|
||||||
//victim.drop_item()
|
//victim.drop_item()
|
||||||
return
|
return
|
||||||
else if ( eyes_covered ) // Eye cover is better than mouth cover
|
else if ( mouth_covered ) // Mouth cover is better than eye cover
|
||||||
victim << "\red Your [safe_thing] protects your eyes from the pepperspray!"
|
victim << "\red Your [safe_thing] protects your face from the pepperspray!"
|
||||||
victim.emote("scream")
|
if (!(victim.species && (victim.species.flags & NO_PAIN)))
|
||||||
|
victim.emote("scream")
|
||||||
victim.eye_blurry = max(M.eye_blurry, 5)
|
victim.eye_blurry = max(M.eye_blurry, 5)
|
||||||
return
|
return
|
||||||
else // Oh dear :D
|
else // Oh dear :D
|
||||||
victim.emote("scream")
|
if (!(victim.species && (victim.species.flags & NO_PAIN)))
|
||||||
|
victim.emote("scream")
|
||||||
victim << "\red You're sprayed directly in the eyes with pepperspray!"
|
victim << "\red You're sprayed directly in the eyes with pepperspray!"
|
||||||
victim.eye_blurry = max(M.eye_blurry, 25)
|
victim.eye_blurry = max(M.eye_blurry, 25)
|
||||||
victim.eye_blind = max(M.eye_blind, 10)
|
victim.eye_blind = max(M.eye_blind, 10)
|
||||||
|
|||||||
Reference in New Issue
Block a user