This commit is contained in:
RavingManiac
2012-11-24 01:26:19 +08:00
36 changed files with 106 additions and 76 deletions

View File

@@ -308,6 +308,9 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
/datum/surgery_step/fix_vein /datum/surgery_step/fix_vein
required_tool = /obj/item/weapon/FixOVein required_tool = /obj/item/weapon/FixOVein
min_duration = 70
max_duration = 90
can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/datum/organ/external/affected = target.get_organ(target_zone) var/datum/organ/external/affected = target.get_organ(target_zone)
@@ -855,7 +858,8 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
target.cores-- target.cores--
user.visible_message("\blue [user] cuts out one of [target]'s cores with \the [tool].",, \ user.visible_message("\blue [user] cuts out one of [target]'s cores with \the [tool].",, \
"\blue You cut out one of [target]'s cores with \the [tool]. [target.cores] cores left.") "\blue You cut out one of [target]'s cores with \the [tool]. [target.cores] cores left.")
new/obj/item/metroid_core(target.loc) if(target.cores >= 0)
new/obj/item/metroid_core(target.loc)
if(target.cores <= 0) if(target.cores <= 0)
target.icon_state = "baby roro dead-nocore" target.icon_state = "baby roro dead-nocore"

View File

@@ -165,5 +165,5 @@
if(beaker) if(beaker)
if(!beaker.reagents.remove_reagent("virusfood",5)) if(!beaker.reagents.remove_reagent("virusfood",5))
foodsupply += 10 foodsupply += 10
if(!beaker.reagents.remove_reagent("toxins",1)) if(!beaker.reagents.remove_reagent("toxin",1))
toxins += 1 toxins += 1

View File

@@ -188,7 +188,9 @@
if(W.internal && !W.is_treated()) if(W.internal && !W.is_treated())
// internal wounds get worse over time // internal wounds get worse over time
W.open_wound(0.1 * wound_update_accuracy) W.open_wound(0.1 * wound_update_accuracy)
owner.vessel.remove_reagent("blood",0.2 * W.damage * wound_update_accuracy) owner.vessel.remove_reagent("blood",0.07 * W.damage * wound_update_accuracy)
if(prob(1 * wound_update_accuracy))
owner.custom_pain("You feel a stabbing pain in your [display_name]!",1)
if(W.bandaged || W.salved) if(W.bandaged || W.salved)
// slow healing // slow healing
@@ -489,9 +491,11 @@
W = new wound_type(damage) W = new wound_type(damage)
// Possibly trigger an internal wound, too. // Possibly trigger an internal wound, too.
if(damage > 10 && prob(damage) && type != BURN) var/local_damage = brute_dam + burn_dam + damage
if(damage > 10 && type != BURN && local_damage > 20 && prob(damage))
var/datum/wound/internal_bleeding/I = new (15) var/datum/wound/internal_bleeding/I = new (15)
wounds += I wounds += I
owner.custom_pain("You feel something rip in your [display_name]!", 1)
// check whether we can add the wound to an existing wound // check whether we can add the wound to an existing wound
for(var/datum/wound/other in wounds) for(var/datum/wound/other in wounds)

View File

@@ -116,9 +116,10 @@
uni_identity = temp uni_identity = temp
var/mutstring = "" var/mutstring = ""
for(var/i = 1, i <= 13, i++) for(var/i = 1, i <= STRUCDNASIZE, i++)
mutstring += add_zero2(num2hex(rand(1,1024)),3) mutstring += add_zero2(num2hex(rand(1,1024)),3)
struc_enzymes = mutstring struc_enzymes = mutstring
unique_enzymes = md5(character.real_name) unique_enzymes = md5(character.real_name)

View File

@@ -300,7 +300,8 @@ var/global/datum/controller/gameticker/ticker
emergency_shuttle.process() emergency_shuttle.process()
if(!mode.explosion_in_progress && mode.check_finished()) var/mode_finished = mode.check_finished() || (emergency_shuttle.location == 2 && emergency_shuttle.alert == 1)
if(!mode.explosion_in_progress && mode_finished)
current_state = GAME_STATE_FINISHED current_state = GAME_STATE_FINISHED
spawn spawn

View File

@@ -499,7 +499,7 @@
// hack for alt titles // hack for alt titles
if(istype(loc, /mob)) if(istype(loc, /mob))
var/mob/M = loc var/mob/M = loc
if(M.mind.role_alt_title == jobName && M.mind.assigned_role in get_all_jobs()) if(M.mind && M.mind.role_alt_title == jobName && M.mind.assigned_role in get_all_jobs())
return M.mind.assigned_role return M.mind.assigned_role
if(istype(src, /obj/item/device/pda)) if(istype(src, /obj/item/device/pda))

View File

@@ -235,6 +235,9 @@
else else
dat += text("[]\tHealth %: [] ([])</FONT><BR>", (occupant.health > 50 ? "<font color='blue'>" : "<font color='red'>"), occupant.health, t1) dat += text("[]\tHealth %: [] ([])</FONT><BR>", (occupant.health > 50 ? "<font color='blue'>" : "<font color='red'>"), occupant.health, t1)
if(occupant.virus2)
dat += text("<font color='red'>Viral pathogen detected in blood stream.</font><BR>")
dat += text("[]\t-Brute Damage %: []</FONT><BR>", (occupant.getBruteLoss() < 60 ? "<font color='blue'>" : "<font color='red'>"), occupant.getBruteLoss()) dat += text("[]\t-Brute Damage %: []</FONT><BR>", (occupant.getBruteLoss() < 60 ? "<font color='blue'>" : "<font color='red'>"), occupant.getBruteLoss())
dat += text("[]\t-Respiratory Damage %: []</FONT><BR>", (occupant.getOxyLoss() < 60 ? "<font color='blue'>" : "<font color='red'>"), occupant.getOxyLoss()) dat += text("[]\t-Respiratory Damage %: []</FONT><BR>", (occupant.getOxyLoss() < 60 ? "<font color='blue'>" : "<font color='red'>"), occupant.getOxyLoss())
dat += text("[]\t-Toxin Content %: []</FONT><BR>", (occupant.getToxLoss() < 60 ? "<font color='blue'>" : "<font color='red'>"), occupant.getToxLoss()) dat += text("[]\t-Toxin Content %: []</FONT><BR>", (occupant.getToxLoss() < 60 ? "<font color='blue'>" : "<font color='red'>"), occupant.getToxLoss())

View File

@@ -820,14 +820,14 @@ Auto Patrol: []"},
projectile = /obj/item/projectile/energy/electrode projectile = /obj/item/projectile/energy/electrode
else if(lasercolor == "b") else if(lasercolor == "b")
if (src.emagged == 2) if (src.emagged == 2)
projectile = /obj/item/projectile/beam/omnitag projectile = /obj/item/projectile/beam/lastertag/omni
else else
projectile = /obj/item/projectile/beam/bluetag projectile = /obj/item/projectile/beam/lastertag/blue
else if(lasercolor == "r") else if(lasercolor == "r")
if (src.emagged == 2) if (src.emagged == 2)
projectile = /obj/item/projectile/beam/omnitag projectile = /obj/item/projectile/beam/lastertag/omni
else else
projectile = /obj/item/projectile/beam/redtag projectile = /obj/item/projectile/beam/lastertag/red
if (!( istype(U, /turf) )) if (!( istype(U, /turf) ))
return return
@@ -1011,7 +1011,7 @@ Auto Patrol: []"},
/obj/machinery/bot/ed209/bullet_act(var/obj/item/projectile/Proj) /obj/machinery/bot/ed209/bullet_act(var/obj/item/projectile/Proj)
if((src.lasercolor == "b") && (src.disabled == 0)) if((src.lasercolor == "b") && (src.disabled == 0))
if(istype(Proj, /obj/item/projectile/beam/redtag)) if(istype(Proj, /obj/item/projectile/beam/lastertag/red))
src.disabled = 1 src.disabled = 1
del (Proj) del (Proj)
sleep(100) sleep(100)
@@ -1019,7 +1019,7 @@ Auto Patrol: []"},
else else
..() ..()
else if((src.lasercolor == "r") && (src.disabled == 0)) else if((src.lasercolor == "r") && (src.disabled == 0))
if(istype(Proj, /obj/item/projectile/beam/bluetag)) if(istype(Proj, /obj/item/projectile/beam/lastertag/blue))
src.disabled = 1 src.disabled = 1
del (Proj) del (Proj)
sleep(100) sleep(100)

View File

@@ -133,7 +133,7 @@
return 0 return 0
src.heal_level = rand(75,100) //Randomizes what health the clone is when ejected src.heal_level = rand(0,40) //Randomizes what health the clone is when ejected
src.attempting = 1 //One at a time!! src.attempting = 1 //One at a time!!
src.locked = 1 src.locked = 1

View File

@@ -76,8 +76,8 @@
// All energy-based weapons are applicable // All energy-based weapons are applicable
switch(E.type) switch(E.type)
if(/obj/item/weapon/gun/energy/laser/bluetag) if(/obj/item/weapon/gun/energy/laser/bluetag)
projectile = /obj/item/projectile/beam/bluetag projectile = /obj/item/projectile/beam/lastertag/blue
eprojectile = /obj/item/projectile/beam/omnitag//This bolt will stun ERRYONE with a vest eprojectile = /obj/item/projectile/beam/lastertag/omni//This bolt will stun ERRYONE with a vest
iconholder = null iconholder = null
reqpower = 100 reqpower = 100
lasercolor = "b" lasercolor = "b"
@@ -90,8 +90,8 @@
shot_delay = 30 shot_delay = 30
if(/obj/item/weapon/gun/energy/laser/redtag) if(/obj/item/weapon/gun/energy/laser/redtag)
projectile = /obj/item/projectile/beam/redtag projectile = /obj/item/projectile/beam/lastertag/red
eprojectile = /obj/item/projectile/beam/omnitag eprojectile = /obj/item/projectile/beam/lastertag/omni
iconholder = null iconholder = null
reqpower = 100 reqpower = 100
lasercolor = "r" lasercolor = "r"
@@ -375,13 +375,13 @@ Status: []<BR>"},
if (src.health <= 0) if (src.health <= 0)
src.die() // the death process :( src.die() // the death process :(
if((src.lasercolor == "b") && (src.disabled == 0)) if((src.lasercolor == "b") && (src.disabled == 0))
if(istype(Proj, /obj/item/projectile/beam/redtag)) if(istype(Proj, /obj/item/projectile/beam/lastertag/red))
src.disabled = 1 src.disabled = 1
del (Proj) del (Proj)
sleep(100) sleep(100)
src.disabled = 0 src.disabled = 0
if((src.lasercolor == "r") && (src.disabled == 0)) if((src.lasercolor == "r") && (src.disabled == 0))
if(istype(Proj, /obj/item/projectile/beam/bluetag)) if(istype(Proj, /obj/item/projectile/beam/lastertag/blue))
src.disabled = 1 src.disabled = 1
del (Proj) del (Proj)
sleep(100) sleep(100)

View File

@@ -221,9 +221,9 @@
if(4) if(4)
A = new /obj/item/projectile/change( loc ) A = new /obj/item/projectile/change( loc )
if(5) if(5)
A = new /obj/item/projectile/beam/bluetag( loc ) A = new /obj/item/projectile/beam/lastertag/blue( loc )
if(6) if(6)
A = new /obj/item/projectile/beam/redtag( loc ) A = new /obj/item/projectile/beam/lastertag/red( loc )
A.original = target.loc A.original = target.loc
use_power(500) use_power(500)
else else

View File

@@ -158,6 +158,10 @@ MASS SPECTROMETER
if(e.status & ORGAN_BROKEN) if(e.status & ORGAN_BROKEN)
user.show_message(text("\red Bone fractures detected. Advanced scanner required for location."), 1) user.show_message(text("\red Bone fractures detected. Advanced scanner required for location."), 1)
break break
for(var/datum/organ/external/e in H.organs)
for(var/datum/wound/W in e.wounds) if(W.internal)
user.show_message(text("\red Internal bleeding detected. Advanced scanner required for location."), 1)
break
if(M:vessel) if(M:vessel)
var/blood_volume = round(M:vessel.get_reagent_amount("blood")) var/blood_volume = round(M:vessel.get_reagent_amount("blood"))
var/blood_percent = blood_volume / 560 var/blood_percent = blood_volume / 560

View File

@@ -124,8 +124,8 @@
usr << "<span class='notice'>You can't clear the memory while playing or recording!</span>" usr << "<span class='notice'>You can't clear the memory while playing or recording!</span>"
return return
else else
storedinfo -= storedinfo if(storedinfo) storedinfo.Cut()
timestamp -= timestamp if(timestamp) timestamp.Cut()
timerecorded = 0 timerecorded = 0
usr << "<span class='notice'>Memory cleared.</span>" usr << "<span class='notice'>Memory cleared.</span>"
return return

View File

@@ -86,13 +86,12 @@
else else
H.Stun(time) H.Stun(time)
if(H.stat != 2) H.stat = 1 if(H.stat != 2) H.stat = 1
for(var/mob/O in viewers(H, null)) user.visible_message("\red <B>[H] has been knocked unconscious!</B>", "\red <B>You knock [H] unconscious!</B>")
O.show_message(text("\red <B>[] has been knocked unconscious!</B>", H), 1, "\red You hear someone fall.", 2) return
else else
H << text("\red [] tried to knock you unconscious!",user) H.visible_message("\red [user] tried to knock [H] unconscious!", "\red [user] tried to knock you unconscious!")
H.eye_blurry += 3 H.eye_blurry += 3
return ..()
return
/* /*
* Trays - Agouri * Trays - Agouri

View File

@@ -589,7 +589,7 @@
</head> </head>
<body> <body>
<iframe width='100%' height='97%' src="http://nanotrasen.com/wiki/index.php?title=Space_Law&printable=yes&remove_links=1" frameborder="0" id="main_frame"></iframe> <iframe width='100%' height='97%' src="http://baystation12.net/wiki/index.php?title=Space_law&printable=yes&remove_links=1" frameborder="0" id="main_frame"></iframe>
</body> </body>
</html> </html>
@@ -607,7 +607,7 @@
</head> </head>
<body> <body>
<iframe width='100%' height='97%' src="http://nanotrasen.com/wiki/index.php?title=Guide_to_engineering&printable=yes&remove_links=1" frameborder="0" id="main_frame"></iframe> <iframe width='100%' height='97%' src="http://baystation12.net/wiki/index.php?title=Guide_to_engineering&printable=yes&remove_links=1" frameborder="0" id="main_frame"></iframe>
</body> </body>
</html> </html>

View File

@@ -25,7 +25,7 @@
for (var/client/C in admin_list) for (var/client/C in admin_list)
if (src.holder.rank == "Admin Observer") if (src.holder.rank == "Admin Observer")
C << "<span class='adminobserver'><span class='prefix'>ADMIN:</span> <EM>[key_name(usr, C)]:</EM> <span class='message'>[msg]</span></span>" C << "<span class='adminobserver'><span class='prefix'>ADMIN:</span> <EM>[key_name(usr, C)]:</EM> <span class='message'>[msg]</span></span>"
else if(C.holder.level != 0) else if(C.holder && C.holder.level != 0)
C << "<span class='admin'><span class='prefix'>ADMIN:</span> <EM>[key_name(usr, C)]</EM> (<A HREF='?src=\ref[C.holder];adminplayerobservejump=\ref[mob]'>JMP</A>): <span class='message'>[msg]</span></span>" C << "<span class='admin'><span class='prefix'>ADMIN:</span> <EM>[key_name(usr, C)]</EM> (<A HREF='?src=\ref[C.holder];adminplayerobservejump=\ref[mob]'>JMP</A>): <span class='message'>[msg]</span></span>"
/client/proc/cmd_mod_say(msg as text) /client/proc/cmd_mod_say(msg as text)

View File

@@ -249,16 +249,16 @@ BLIND // can't see anything
H.holstered = usr.get_active_hand() H.holstered = usr.get_active_hand()
usr.drop_item() usr.drop_item()
H.holstered.loc = src H.holstered.loc = src
usr.visible_message("\blue [usr] holsters \the [H.holstered].", "You holster \the [H.holstered].") usr.visible_message("\blue \The [usr] holsters \the [H.holstered].", "You holster \the [H.holstered].")
else else
if(istype(usr.get_active_hand(),/obj) && istype(usr.get_inactive_hand(),/obj)) if(istype(usr.get_active_hand(),/obj) && istype(usr.get_inactive_hand(),/obj))
usr << "\red You need an empty hand to draw the gun!" usr << "\red You need an empty hand to draw the gun!"
else else
if(usr.a_intent == "hurt") if(usr.a_intent == "hurt")
usr.visible_message("\red [usr] draws \the [H.holstered], ready to shoot!", \ usr.visible_message("\red \The [usr] draws \the [H.holstered], ready to shoot!", \
"\red You draw \the [H.holstered], ready to shoot!") "\red You draw \the [H.holstered], ready to shoot!")
else else
usr.visible_message("\blue [usr] draws \the [H.holstered], pointing it at the ground.", \ usr.visible_message("\blue \The [usr] draws \the [H.holstered], pointing it at the ground.", \
"\blue You draw \the [H.holstered], pointing it at tthe ground.") "\blue You draw \the [H.holstered], pointing it at the ground.")
usr.put_in_hands(H.holstered) usr.put_in_hands(H.holstered)
H.holstered = null H.holstered = null

View File

@@ -418,8 +418,8 @@
if (fire) fire.icon_state = "fire[fire_alert ? 1 : 0]" if (fire) fire.icon_state = "fire[fire_alert ? 1 : 0]"
//NOTE: the alerts dont reset when youre out of danger. dont blame me, //NOTE: the alerts dont reset when youre out of danger. dont blame me,
//blame the person who coded them. Temporary fix added. //blame the person who coded them. Temporary fix added.
if (client)
client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired) client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired)
if ((blind && stat != 2)) if ((blind && stat != 2))
if ((blinded)) if ((blinded))
@@ -441,7 +441,7 @@
if (!( machine.check_eye(src) )) if (!( machine.check_eye(src) ))
reset_view(null) reset_view(null)
else else
if(!client.adminobs) if(client && !client.adminobs)
reset_view(null) reset_view(null)
return 1 return 1

View File

@@ -332,9 +332,8 @@ FUCK YOU MORE FAT CODE -Hawk*/
if (fire) fire.icon_state = "fire[fire_alert ? 1 : 0]" if (fire) fire.icon_state = "fire[fire_alert ? 1 : 0]"
//NOTE: the alerts dont reset when youre out of danger. dont blame me, //NOTE: the alerts dont reset when youre out of danger. dont blame me,
//blame the person who coded them. Temporary fix added. //blame the person who coded them. Temporary fix added.
if (client)
client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired)
client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired)
if ((blind && stat != 2)) if ((blind && stat != 2))
if ((blinded)) if ((blinded))
@@ -356,7 +355,7 @@ FUCK YOU MORE FAT CODE -Hawk*/
if (!( machine.check_eye(src) )) if (!( machine.check_eye(src) ))
reset_view(null) reset_view(null)
else else
if(!client.adminobs) if(client && !client.adminobs)
reset_view(null) reset_view(null)
return 1 return 1

View File

@@ -242,8 +242,8 @@
healths.icon_state = "health7" healths.icon_state = "health7"
if(pullin) pullin.icon_state = "pull[pulling ? 1 : 0]" if(pullin) pullin.icon_state = "pull[pulling ? 1 : 0]"
if (client)
client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired) client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired)
if ((blind && stat != 2)) if ((blind && stat != 2))
if ((blinded)) if ((blinded))
@@ -265,7 +265,7 @@
if (!( machine.check_eye(src) )) if (!( machine.check_eye(src) ))
reset_view(null) reset_view(null)
else else
if(!client.adminobs) if(client && !client.adminobs)
reset_view(null) reset_view(null)
return 1 return 1

View File

@@ -461,6 +461,7 @@ The else statement is for equipping stuff to empty slots.
It can still be worn/put on as normal. It can still be worn/put on as normal.
*/ */
/obj/effect/equip_e/human/done() //TODO: And rewrite this :< ~Carn /obj/effect/equip_e/human/done() //TODO: And rewrite this :< ~Carn
target.cpr_time = 1
if(!source || !target) return //Target or source no longer exist if(!source || !target) return //Target or source no longer exist
if(source.loc != s_loc) return //source has moved if(source.loc != s_loc) return //source has moved
if(target.loc != t_loc) return //target has moved if(target.loc != t_loc) return //target has moved
@@ -549,7 +550,6 @@ It can still be worn/put on as normal.
O.show_message("\red [source] performs CPR on [target]!", 1) O.show_message("\red [source] performs CPR on [target]!", 1)
target << "\blue <b>You feel a breath of fresh air enter your lungs. It feels good.</b>" target << "\blue <b>You feel a breath of fresh air enter your lungs. It feels good.</b>"
source << "\red Repeat at least every 7 seconds." source << "\red Repeat at least every 7 seconds."
target.cpr_time = 1
if("dnainjector") if("dnainjector")
var/obj/item/weapon/dnainjector/S = item var/obj/item/weapon/dnainjector/S = item
if(S) if(S)

View File

@@ -187,6 +187,10 @@
var/word = pick("dizzy","woosey","faint") var/word = pick("dizzy","woosey","faint")
src << "\red You feel extremely [word]" src << "\red You feel extremely [word]"
if(0 to 122) if(0 to 122)
// There currently is a strange bug here. If the mob is not below -100 health
// when death() is called, apparently they will be just fine, and this way it'll
// spam deathgasp. Adjusting toxloss ensures the mob will stay dead.
toxloss += 300 // just to be safe!
death() death()
@@ -489,7 +493,7 @@
domutcheck(src,null) domutcheck(src,null)
emote("gasp") emote("gasp")
updatehealth() updatehealth()
if(damage && organs.len) if(damage && organs.len)
var/datum/organ/external/O = pick(organs) var/datum/organ/external/O = pick(organs)
if(istype(O)) O.add_autopsy_data("Radiation Poisoning", damage) if(istype(O)) O.add_autopsy_data("Radiation Poisoning", damage)
@@ -499,6 +503,7 @@
if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) return if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) return
var/lung_ruptured = is_lung_ruptured() var/lung_ruptured = is_lung_ruptured()
if(lung_ruptured && prob(2)) if(lung_ruptured && prob(2))
spawn emote("me", 1, "coughs up blood!") spawn emote("me", 1, "coughs up blood!")
src.drip(10) src.drip(10)
@@ -527,7 +532,7 @@
if(!breath) if(!breath)
if(isobj(loc)) if(isobj(loc))
var/obj/location_as_object = loc var/obj/location_as_object = loc
breath = location_as_object.handle_internal_lifeform(src, BREATH_VOLUME) breath = location_as_object.handle_internal_lifeform(src, BREATH_MOLES)
else if(isturf(loc)) else if(isturf(loc))
var/breath_moles = 0 var/breath_moles = 0
/*if(environment.return_pressure() > ONE_ATMOSPHERE) /*if(environment.return_pressure() > ONE_ATMOSPHERE)
@@ -538,6 +543,13 @@
breath_moles = environment.total_moles()*BREATH_PERCENTAGE breath_moles = environment.total_moles()*BREATH_PERCENTAGE
breath = loc.remove_air(breath_moles) breath = loc.remove_air(breath_moles)
if(!lung_ruptured)
if(!breath || breath.total_moles < BREATH_MOLES / 5 || breath.total_moles > BREATH_MOLES * 5)
if(prob(5))
rupture_lung()
// Handle chem smoke effect -- Doohl // Handle chem smoke effect -- Doohl
var/block = 0 var/block = 0
if(wear_mask) if(wear_mask)
@@ -713,9 +725,6 @@
apply_damage(HEAT_GAS_DAMAGE_LEVEL_3, BURN, "head", used_weapon = "Excessive Heat") apply_damage(HEAT_GAS_DAMAGE_LEVEL_3, BURN, "head", used_weapon = "Excessive Heat")
fire_alert = max(fire_alert, 2) fire_alert = max(fire_alert, 2)
if(oxyloss >= 50 && prob(oxyloss / 5))
rupture_lung()
//Temporary fixes to the alerts. //Temporary fixes to the alerts.
return 1 return 1
@@ -1480,7 +1489,7 @@
if((mRemote in mutations) && remoteview_target) if((mRemote in mutations) && remoteview_target)
if(remoteview_target.stat==CONSCIOUS) if(remoteview_target.stat==CONSCIOUS)
isRemoteObserve = 1 isRemoteObserve = 1
if(!isRemoteObserve && !client.adminobs) if(!isRemoteObserve && client && !client.adminobs)
remoteview_target = null remoteview_target = null
reset_view(null) reset_view(null)
return 1 return 1

View File

@@ -551,7 +551,7 @@
if (!( machine.check_eye(src) )) if (!( machine.check_eye(src) ))
reset_view(null) reset_view(null)
else else
if(!client.adminobs) if(client && !client.adminobs)
reset_view(null) reset_view(null)
return 1 return 1

View File

@@ -25,7 +25,7 @@
dna = new /datum/dna( null ) dna = new /datum/dna( null )
dna.real_name = real_name dna.real_name = real_name
dna.uni_identity = "00600200A00E0110148FC01300B009" dna.uni_identity = "00600200A00E0110148FC01300B009"
dna.struc_enzymes = "0983E840344C39F4B059D5145FC5785DC6406A4BB8" dna.struc_enzymes = "43359156756131E13763334D1C369012032164D4FE4CD61544B6C03F251B6C60A42821D26BA3B0FD6"
dna.unique_enzymes = md5(name) dna.unique_enzymes = md5(name)
//////////blah //////////blah
var/gendervar var/gendervar

View File

@@ -1,6 +1,7 @@
/mob/living/Logout() /mob/living/Logout()
..() ..()
if(!key && mind) //key and mind have become seperated. if (mind)
mind.active = 0 //This is to stop say, a mind.transfer_to call on a corpse causing a ghost to re-enter its body. if(!key) //key and mind have become seperated.
if(!immune_to_ssd && sleeping < 2 && mind.active) mind.active = 0 //This is to stop say, a mind.transfer_to call on a corpse causing a ghost to re-enter its body.
sleeping = 2 if(!immune_to_ssd && sleeping < 2 && mind.active)
sleeping = 2

View File

@@ -195,10 +195,13 @@
m_type = 2 m_type = 2
if("law") if("law")
message = "<B>[src]</B> shows its legal authorization barcode." if (istype(module,/obj/item/weapon/robot_module/security))
message = "<B>[src]</B> shows its legal authorization barcode."
playsound(src.loc, 'biamthelaw.ogg', 50, 0) playsound(src.loc, 'biamthelaw.ogg', 50, 0)
m_type = 2 m_type = 2
else
src << "You are not THE LAW, pal."
else else
src << text("Invalid Emote: []", act) src << text("Invalid Emote: []", act)
if ((message && src.stat == 0)) if ((message && src.stat == 0))

View File

@@ -255,7 +255,7 @@
if (!( src.machine.check_eye(src) )) if (!( src.machine.check_eye(src) ))
src.reset_view(null) src.reset_view(null)
else else
if(!client.adminobs) if(client && !client.adminobs)
reset_view(null) reset_view(null)
return 1 return 1

View File

@@ -226,7 +226,7 @@
/obj/item/weapon/paper/Topic(href, href_list) /obj/item/weapon/paper/Topic(href, href_list)
..() ..()
if((usr.stat || usr.restrained())) if(!usr || (usr.stat || usr.restrained()))
return return
if(href_list["write"]) if(href_list["write"])

View File

@@ -61,7 +61,7 @@
/obj/machinery/power/smes/proc/chargedisplay() /obj/machinery/power/smes/proc/chargedisplay()
return round(5.5*charge/capacity) return round(5.5*charge/(capacity ? capacity : 5e6))
#define SMESRATE 0.05 // rate of internal charge to external power #define SMESRATE 0.05 // rate of internal charge to external power

View File

@@ -90,7 +90,7 @@ obj/item/weapon/gun/energy/laser/retro
name = "laser tag gun" name = "laser tag gun"
icon_state = "bluetag" icon_state = "bluetag"
desc = "Standard issue weapon of the Imperial Guard" desc = "Standard issue weapon of the Imperial Guard"
projectile_type = "/obj/item/projectile/beam/bluetag" projectile_type = "/obj/item/projectile/beam/lastertag/blue"
origin_tech = "combat=1;magnets=2" origin_tech = "combat=1;magnets=2"
clumsy_check = 0 clumsy_check = 0
var/charge_tick = 0 var/charge_tick = 0
@@ -127,7 +127,7 @@ obj/item/weapon/gun/energy/laser/retro
name = "laser tag gun" name = "laser tag gun"
icon_state = "redtag" icon_state = "redtag"
desc = "Standard issue weapon of the Imperial Guard" desc = "Standard issue weapon of the Imperial Guard"
projectile_type = "/obj/item/projectile/beam/redtag" projectile_type = "/obj/item/projectile/beam/lastertag/red"
origin_tech = "combat=1;magnets=2" origin_tech = "combat=1;magnets=2"
clumsy_check = 0 clumsy_check = 0
var/charge_tick = 0 var/charge_tick = 0

View File

@@ -111,7 +111,7 @@ var/list/beam_master = list()
/obj/item/projectile/beam/bluetag /obj/item/projectile/beam/lastertag/blue
name = "lasertag beam" name = "lasertag beam"
icon_state = "bluelaser" icon_state = "bluelaser"
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
@@ -126,7 +126,7 @@ var/list/beam_master = list()
M.Weaken(5) M.Weaken(5)
return 1 return 1
/obj/item/projectile/beam/redtag /obj/item/projectile/beam/lastertag/red
name = "lasertag beam" name = "lasertag beam"
icon_state = "laser" icon_state = "laser"
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
@@ -141,7 +141,7 @@ var/list/beam_master = list()
M.Weaken(5) M.Weaken(5)
return 1 return 1
/obj/item/projectile/beam/omnitag//A laser tag bolt that stuns EVERYONE /obj/item/projectile/beam/lastertag/omni//A laser tag bolt that stuns EVERYONE
name = "lasertag beam" name = "lasertag beam"
icon_state = "omnilaser" icon_state = "omnilaser"
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE

View File

@@ -145,7 +145,8 @@
bullet_act(var/obj/item/projectile/Proj) bullet_act(var/obj/item/projectile/Proj)
if(istype(Proj ,/obj/item/projectile/beam)||istype(Proj,/obj/item/projectile/bullet)) if(istype(Proj ,/obj/item/projectile/beam)||istype(Proj,/obj/item/projectile/bullet))
explode() if(!istype(Proj ,/obj/item/projectile/beam/lastertag) && !istype(Proj ,/obj/item/projectile/beam/practice) )
explode()
blob_act() blob_act()
explode() explode()

View File

@@ -153,8 +153,6 @@
if(istype(P,/obj/item/projectile/beam)) src.Artifact_Activate() if(istype(P,/obj/item/projectile/beam)) src.Artifact_Activate()
else if(istype(P,/obj/item/projectile/ion)) src.Artifact_Activate() else if(istype(P,/obj/item/projectile/ion)) src.Artifact_Activate()
else if(istype(P,/obj/item/projectile/energy)) src.Artifact_Activate() else if(istype(P,/obj/item/projectile/energy)) src.Artifact_Activate()
else if(istype(P,/obj/item/projectile/beam/bluetag)) src.Artifact_Activate()
else if(istype(P,/obj/item/projectile/beam/redtag)) src.Artifact_Activate()
if (my_effect.trigger == "heat") if (my_effect.trigger == "heat")
if(istype(P,/obj/item/projectile/temp)) src.Artifact_Activate() if(istype(P,/obj/item/projectile/temp)) src.Artifact_Activate()

View File

@@ -221,7 +221,7 @@
findarti++ findarti++
cur_artifact = A cur_artifact = A
if (findarti == 1) if (findarti == 1)
if(cur_artifact.being_used) if(cur_artifact && cur_artifact.being_used)
var/message = "<b>[src]</b> states, \"Cannot analyse. Excess energy drain is disrupting signal.\"" var/message = "<b>[src]</b> states, \"Cannot analyse. Excess energy drain is disrupting signal.\""
src.visible_message(message, message) src.visible_message(message, message)
else else

View File

@@ -20,7 +20,8 @@
#define MIN_PLASMA_DAMAGE 20 #define MIN_PLASMA_DAMAGE 20
#define BREATH_VOLUME 0.5 //liters in a normal breath #define BREATH_VOLUME 0.5 //liters in a normal breath
#define BREATH_PERCENTAGE BREATH_VOLUME/CELL_VOLUME #define BREATH_MOLES (ONE_ATMOSPHERE * BREATH_VOLUME /(T20C*R_IDEAL_GAS_EQUATION))
#define BREATH_PERCENTAGE BREATH_MOLES/MOLES_CELLSTANDARD
//Amount of air to take a from a tile //Amount of air to take a from a tile
#define HUMAN_NEEDED_OXYGEN MOLES_CELLSTANDARD*BREATH_PERCENTAGE*0.16 #define HUMAN_NEEDED_OXYGEN MOLES_CELLSTANDARD*BREATH_PERCENTAGE*0.16
//Amount of air needed before pass out/suffocation commences //Amount of air needed before pass out/suffocation commences

View File

@@ -18,8 +18,8 @@
src.load_mode() src.load_mode()
src.load_motd() src.load_motd()
src.load_mods()
src.load_admins() src.load_admins()
src.load_mods()
investigate_reset() investigate_reset()
if (config.usewhitelist) if (config.usewhitelist)
load_whitelist() load_whitelist()
@@ -147,6 +147,8 @@ Starting up. [time2text(world.timeofday, "hh:mm.ss")]
if(revdata) s["revision"] = revdata.revision if(revdata) s["revision"] = revdata.revision
s["admins"] = admins s["admins"] = admins
s["end"] = "end"
return list2params(s) return list2params(s)