Merge resolution.

This commit is contained in:
Zuhayr
2014-11-19 23:19:33 +10:30
19 changed files with 125 additions and 70 deletions

View File

@@ -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
@@ -87,8 +89,14 @@
return return
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
if (node1)
add_underlay(T, node1, turn(dir, -180), node1.icon_connect_type)
else else
add_underlay(T, node1, turn(dir, -180)) add_underlay(T, node1, turn(dir, -180))
if (node2)
add_underlay(T, node2, dir, node2.icon_connect_type)
else
add_underlay(T, node2, dir) 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)
@@ -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
..() ..()

View File

@@ -292,7 +292,11 @@ 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)

View File

@@ -104,6 +104,10 @@ 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!")
if (M.species && (M.species.flags & NO_PAIN))
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.", \ M.visible_message("\red [M] writhes in pain as the markings below \him glow a bloody red.", \
"\red AAAAAAHHHH!", \ "\red AAAAAAHHHH!", \
"\red You hear an anguished scream.") "\red You hear an anguished scream.")

View File

@@ -1026,6 +1026,9 @@ About the new airlock wires panel:
S.loc = M.loc S.loc = M.loc
spawn(20) spawn(20)
del(S) del(S)
if (iscarbon(M))
var/mob/living/carbon/C = M
if (!(C.species && (C.species.flags & NO_PAIN)))
M.emote("scream") M.emote("scream")
var/turf/location = src.loc var/turf/location = src.loc
if(istype(location, /turf/simulated)) if(istype(location, /turf/simulated))

View File

@@ -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

View File

@@ -330,13 +330,17 @@
for(i=0,i<4,i++) for(i=0,i<4,i++)
sleep(50) sleep(50)
if(src.OCCUPANT) if(src.OCCUPANT)
var/datum/organ/internal/diona/nutrients/rad_organ = locate() in OCCUPANT.internal_organs
if (!rad_organ)
if(src.issuperUV) if(src.issuperUV)
var/burndamage = rand(28,35) var/burndamage = rand(28,35)
OCCUPANT.take_organ_damage(0,burndamage) OCCUPANT.take_organ_damage(0,burndamage)
if (!(OCCUPANT.species && (OCCUPANT.species.flags & NO_PAIN)))
OCCUPANT.emote("scream") OCCUPANT.emote("scream")
else else
var/burndamage = rand(6,10) var/burndamage = rand(6,10)
OCCUPANT.take_organ_damage(0,burndamage) OCCUPANT.take_organ_damage(0,burndamage)
if (!(OCCUPANT.species && (OCCUPANT.species.flags & NO_PAIN)))
OCCUPANT.emote("scream") OCCUPANT.emote("scream")
if(i==3) //End of the cycle if(i==3) //End of the cycle
if(!src.issuperUV) if(!src.issuperUV)

View File

@@ -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)
if (!iscarbon(M))
M.emote("scream") 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>"

View File

@@ -9,6 +9,18 @@
//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

View File

@@ -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

View File

@@ -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

View File

@@ -72,6 +72,11 @@
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>"
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>" 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()

View File

@@ -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)

View File

@@ -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")

View File

@@ -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

View File

@@ -61,6 +61,8 @@
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))
var/mob/living/carbon/C = M
if (!(C.species && (C.species.flags & NO_PAIN)))
M << "<span class='danger'>[pick("You can feel your body becoming weak!", \ M << "<span class='danger'>[pick("You can feel your body becoming weak!", \
"You feel like you're about to die!", \ "You feel like you're about to die!", \
"You feel every part of your body screaming in agony!", \ "You feel every part of your body screaming in agony!", \

View File

@@ -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

View File

@@ -92,21 +92,20 @@ 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()

View File

@@ -98,6 +98,7 @@
brute -= brute / 2 brute -= brute / 2
if(status & ORGAN_BROKEN && prob(40) && brute) if(status & ORGAN_BROKEN && prob(40) && brute)
if (!(owner.species && (owner.species.flags & NO_PAIN)))
owner.emote("scream") //getting hit on broken hand hurts 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)

View File

@@ -1984,6 +1984,7 @@ 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
if (!(H.species && (H.species.flags & NO_PAIN)))
H.emote("scream") H.emote("scream")
H.status_flags |= DISFIGURED H.status_flags |= DISFIGURED
else else
@@ -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,12 +2156,14 @@ 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!"
if (!(victim.species && (victim.species.flags & NO_PAIN)))
victim.emote("scream") 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
if (!(victim.species && (victim.species.flags & NO_PAIN)))
victim.emote("scream") 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)