mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-19 06:32:25 +00:00
@@ -616,7 +616,6 @@
|
|||||||
#include "code\game\mecha\working\firefighter.dm"
|
#include "code\game\mecha\working\firefighter.dm"
|
||||||
#include "code\game\mecha\working\ripley.dm"
|
#include "code\game\mecha\working\ripley.dm"
|
||||||
#include "code\game\mecha\working\working.dm"
|
#include "code\game\mecha\working\working.dm"
|
||||||
#include "code\game\objects\biomass.dm"
|
|
||||||
#include "code\game\objects\blood.dm"
|
#include "code\game\objects\blood.dm"
|
||||||
#include "code\game\objects\bodybag.dm"
|
#include "code\game\objects\bodybag.dm"
|
||||||
#include "code\game\objects\bombspawner.dm"
|
#include "code\game\objects\bombspawner.dm"
|
||||||
|
|||||||
@@ -108,8 +108,8 @@ Filter types:
|
|||||||
else
|
else
|
||||||
filtered_out = null
|
filtered_out = null
|
||||||
|
|
||||||
|
if(filtered_out)
|
||||||
filtered_out.update_values()
|
filtered_out.update_values()
|
||||||
air2.merge(filtered_out)
|
air2.merge(filtered_out)
|
||||||
air3.merge(removed)
|
air3.merge(removed)
|
||||||
|
|
||||||
|
|||||||
@@ -466,6 +466,8 @@ datum
|
|||||||
//Outputs: 0 if the self-check failed (local airgroup breaks?)
|
//Outputs: 0 if the self-check failed (local airgroup breaks?)
|
||||||
// then -1 if sharer-check failed (sharing airgroup breaks?)
|
// then -1 if sharer-check failed (sharing airgroup breaks?)
|
||||||
// then 1 if both checks pass (share succesful?)
|
// then 1 if both checks pass (share succesful?)
|
||||||
|
if(!istype(sharer))
|
||||||
|
return
|
||||||
|
|
||||||
var/delta_oxygen = QUANTIZE(oxygen_archived - sharer.oxygen_archived)/TRANSFER_FRACTION
|
var/delta_oxygen = QUANTIZE(oxygen_archived - sharer.oxygen_archived)/TRANSFER_FRACTION
|
||||||
var/delta_carbon_dioxide = QUANTIZE(carbon_dioxide_archived - sharer.carbon_dioxide_archived)/TRANSFER_FRACTION
|
var/delta_carbon_dioxide = QUANTIZE(carbon_dioxide_archived - sharer.carbon_dioxide_archived)/TRANSFER_FRACTION
|
||||||
@@ -552,6 +554,10 @@ datum
|
|||||||
//Inputs: Air datum to share with
|
//Inputs: Air datum to share with
|
||||||
//Outputs: Amount of gas exchanged (Negative if lost air, positive if gained.)
|
//Outputs: Amount of gas exchanged (Negative if lost air, positive if gained.)
|
||||||
|
|
||||||
|
|
||||||
|
if(!istype(sharer))
|
||||||
|
return
|
||||||
|
|
||||||
var/delta_oxygen = QUANTIZE(oxygen_archived - sharer.oxygen_archived)/TRANSFER_FRACTION
|
var/delta_oxygen = QUANTIZE(oxygen_archived - sharer.oxygen_archived)/TRANSFER_FRACTION
|
||||||
var/delta_carbon_dioxide = QUANTIZE(carbon_dioxide_archived - sharer.carbon_dioxide_archived)/TRANSFER_FRACTION
|
var/delta_carbon_dioxide = QUANTIZE(carbon_dioxide_archived - sharer.carbon_dioxide_archived)/TRANSFER_FRACTION
|
||||||
var/delta_nitrogen = QUANTIZE(nitrogen_archived - sharer.nitrogen_archived)/TRANSFER_FRACTION
|
var/delta_nitrogen = QUANTIZE(nitrogen_archived - sharer.nitrogen_archived)/TRANSFER_FRACTION
|
||||||
|
|||||||
@@ -378,25 +378,24 @@ turf
|
|||||||
enemy_tile.consider_pressure_difference(connection_difference, direction)
|
enemy_tile.consider_pressure_difference(connection_difference, direction)
|
||||||
else
|
else
|
||||||
air_master.active_singletons -= src //not active if not processing!
|
air_master.active_singletons -= src //not active if not processing!
|
||||||
|
if(air)
|
||||||
|
air.react()
|
||||||
|
|
||||||
air.react()
|
if(active_hotspot)
|
||||||
|
if (!active_hotspot.process(possible_fire_spreads))
|
||||||
|
return 0
|
||||||
|
|
||||||
if(active_hotspot)
|
if(air.temperature > MINIMUM_TEMPERATURE_START_SUPERCONDUCTION)
|
||||||
if (!active_hotspot.process(possible_fire_spreads))
|
consider_superconductivity(starting = 1)
|
||||||
return 0
|
|
||||||
|
|
||||||
if(air.temperature > MINIMUM_TEMPERATURE_START_SUPERCONDUCTION)
|
if(air.check_tile_graphic())
|
||||||
consider_superconductivity(starting = 1)
|
update_visuals(air)
|
||||||
|
|
||||||
if(air.check_tile_graphic())
|
if(air.temperature > FIRE_MINIMUM_TEMPERATURE_TO_EXIST)
|
||||||
update_visuals(air)
|
hotspot_expose(air.temperature, CELL_VOLUME)
|
||||||
|
for(var/atom/movable/item in src)
|
||||||
if(air.temperature > FIRE_MINIMUM_TEMPERATURE_TO_EXIST)
|
item.temperature_expose(air, air.temperature, CELL_VOLUME)
|
||||||
// reset_delay() //hotspots always process quickly
|
temperature_expose(air, air.temperature, CELL_VOLUME)
|
||||||
hotspot_expose(air.temperature, CELL_VOLUME)
|
|
||||||
for(var/atom/movable/item in src)
|
|
||||||
item.temperature_expose(air, air.temperature, CELL_VOLUME)
|
|
||||||
temperature_expose(air, air.temperature, CELL_VOLUME)
|
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
|||||||
@@ -37,6 +37,7 @@
|
|||||||
updateappearance(O,O.dna.uni_identity)
|
updateappearance(O,O.dna.uni_identity)
|
||||||
O.loc = loc
|
O.loc = loc
|
||||||
O.viruses = viruses
|
O.viruses = viruses
|
||||||
|
O.s_tone = s_tone
|
||||||
viruses = list()
|
viruses = list()
|
||||||
for(var/datum/disease/D in O.viruses)
|
for(var/datum/disease/D in O.viruses)
|
||||||
D.affected_mob = O
|
D.affected_mob = O
|
||||||
@@ -47,6 +48,10 @@
|
|||||||
client.mob = O
|
client.mob = O
|
||||||
if(mind)
|
if(mind)
|
||||||
mind.transfer_to(O)
|
mind.transfer_to(O)
|
||||||
|
|
||||||
|
del(O.stand_icon) //Force it to update.
|
||||||
|
del(O.lying_icon)
|
||||||
|
|
||||||
O.update_body()
|
O.update_body()
|
||||||
O.update_face()
|
O.update_face()
|
||||||
spawn(1)
|
spawn(1)
|
||||||
|
|||||||
@@ -303,7 +303,12 @@
|
|||||||
if ( istype(wear_suit, /obj/item/clothing/suit/bio_suit) || istype(wear_suit, /obj/item/clothing/suit/bomb_suit) || istype(wear_suit, /obj/item/clothing/suit/space) )
|
if ( istype(wear_suit, /obj/item/clothing/suit/bio_suit) || istype(wear_suit, /obj/item/clothing/suit/bomb_suit) || istype(wear_suit, /obj/item/clothing/suit/space) )
|
||||||
tail_shown = 0
|
tail_shown = 0
|
||||||
if(tail_shown)
|
if(tail_shown)
|
||||||
overlays += image("icon" = icon('tajaran.dmi', "tail_[gender==FEMALE ? "f" : "m"]_[lying ? "l" : "s"]"), "layer" = MOB_LAYER)
|
var/icon/tail_icon = image("icon" = icon('tajaran.dmi', "tail_[gender==FEMALE ? "f" : "m"]_[lying ? "l" : "s"]"), "layer" = MOB_LAYER)
|
||||||
|
if (s_tone >= 0)
|
||||||
|
tail_icon.Blend(rgb(s_tone, s_tone, s_tone), ICON_ADD)
|
||||||
|
else
|
||||||
|
tail_icon.Blend(rgb(-s_tone, -s_tone, -s_tone), ICON_SUBTRACT)
|
||||||
|
overlays += tail_icon
|
||||||
|
|
||||||
if (lying)
|
if (lying)
|
||||||
if (face_lying)
|
if (face_lying)
|
||||||
@@ -339,7 +344,12 @@
|
|||||||
var/datum/organ/external/head = organs["head"]
|
var/datum/organ/external/head = organs["head"]
|
||||||
if(!head.destroyed)
|
if(!head.destroyed)
|
||||||
//if not wearing anything on the head, show the ears
|
//if not wearing anything on the head, show the ears
|
||||||
overlays += image("icon" = icon('tajaran.dmi', "ears_[gender==FEMALE ? "f" : "m"]_[lying ? "l" : "s"]"), "layer" = MOB_LAYER)
|
var/icon/ears_icon = image("icon" = icon('tajaran.dmi', "ears_[gender==FEMALE ? "f" : "m"]_[lying ? "l" : "s"]"), "layer" = MOB_LAYER)
|
||||||
|
if (s_tone >= 0)
|
||||||
|
ears_icon.Blend(rgb(s_tone, s_tone, s_tone), ICON_ADD)
|
||||||
|
else
|
||||||
|
ears_icon.Blend(rgb(-s_tone, -s_tone, -s_tone), ICON_SUBTRACT)
|
||||||
|
overlays += ears_icon
|
||||||
|
|
||||||
// Belt
|
// Belt
|
||||||
if (belt)
|
if (belt)
|
||||||
|
|||||||
@@ -1044,11 +1044,12 @@
|
|||||||
potency = 40
|
potency = 40
|
||||||
On_Consume()
|
On_Consume()
|
||||||
if(!reagents.total_volume)
|
if(!reagents.total_volume)
|
||||||
var/mob/M = usr
|
var/mob/living/M = usr
|
||||||
var/obj/item/weapon/corncob/W = new /obj/item/weapon/corncob( M )
|
if(M)
|
||||||
M << "<span class='notice'>You chew on the corn, leaving nothing behind but a cob.</span>"
|
var/obj/item/weapon/corncob/W = new /obj/item/weapon/corncob( M )
|
||||||
M.put_in_hand(W)
|
M << "<span class='notice'>You chew on the corn, leaving nothing behind but a cob.</span>"
|
||||||
W.add_fingerprint(M)
|
M.put_in_hand(W)
|
||||||
|
W.add_fingerprint(M)
|
||||||
New()
|
New()
|
||||||
..()
|
..()
|
||||||
reagents.add_reagent("nutriment", 1+round((potency / 10), 1))
|
reagents.add_reagent("nutriment", 1+round((potency / 10), 1))
|
||||||
|
|||||||
@@ -213,7 +213,8 @@
|
|||||||
for(var/obj/effect/decal/cleanable/blood/B in T.contents)
|
for(var/obj/effect/decal/cleanable/blood/B in T.contents)
|
||||||
if(!B.blood_DNA[M.dna.unique_enzymes])
|
if(!B.blood_DNA[M.dna.unique_enzymes])
|
||||||
B.blood_DNA[M.dna.unique_enzymes] = M.dna.b_type
|
B.blood_DNA[M.dna.unique_enzymes] = M.dna.b_type
|
||||||
B.virus2 += M.virus2
|
if(!B.virus2)
|
||||||
|
B.virus2 = M.virus2
|
||||||
for(var/datum/disease/D in M.viruses)
|
for(var/datum/disease/D in M.viruses)
|
||||||
var/datum/disease/newDisease = new D.type
|
var/datum/disease/newDisease = new D.type
|
||||||
B.viruses += newDisease
|
B.viruses += newDisease
|
||||||
|
|||||||
@@ -193,17 +193,19 @@
|
|||||||
del(ghost) //Don't leave ghosts everywhere!!
|
del(ghost) //Don't leave ghosts everywhere!!
|
||||||
|
|
||||||
if(!src.occupant.dna)
|
if(!src.occupant.dna)
|
||||||
src.occupant.dna = new /datum/dna( )
|
src.occupant.dna = new /datum/dna()
|
||||||
if(ui)
|
if(ui)
|
||||||
src.occupant.dna.uni_identity = ui
|
src.occupant.dna.uni_identity = ui
|
||||||
updateappearance(src.occupant, ui)
|
updateappearance(src.occupant, ui)
|
||||||
if(se)
|
if(se)
|
||||||
src.occupant.dna.struc_enzymes = se
|
src.occupant.dna.struc_enzymes = se
|
||||||
randmutb(src.occupant) //Sometimes the clones come out wrong.
|
for(var/i = 0 to 5)
|
||||||
|
randmutb(src.occupant) //Sometimes the clones come out wrong.
|
||||||
src.occupant:update_face()
|
src.occupant:update_face()
|
||||||
src.occupant:update_body()
|
src.occupant:update_body()
|
||||||
src.occupant:mutantrace = mrace
|
src.occupant:mutantrace = mrace
|
||||||
src.occupant:suiciding = 0
|
src.occupant:suiciding = 0
|
||||||
|
occupant.brainloss = 100
|
||||||
src.attempting = 0
|
src.attempting = 0
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
|||||||
@@ -217,8 +217,9 @@
|
|||||||
if(2)
|
if(2)
|
||||||
dat += "<h4>Current records</h4>"
|
dat += "<h4>Current records</h4>"
|
||||||
dat += "<a href='byond://?src=\ref[src];menu=1'>Back</a><br><br>"
|
dat += "<a href='byond://?src=\ref[src];menu=1'>Back</a><br><br>"
|
||||||
for(var/datum/data/record/R in geneticsrecords)
|
for(var/id in geneticsrecords)
|
||||||
dat += "<a href='byond://?src=\ref[src];view_rec=\ref[R]'>[R.fields["id"]]-[R.fields["name"]]</a><br>"
|
var/datum/data/record/R = geneticsrecords[id]
|
||||||
|
dat += "<a href='byond://?src=\ref[src];view_rec=[id]'>[R.fields["id"]]-[R.fields["name"]]</a><br>"
|
||||||
|
|
||||||
if(3)
|
if(3)
|
||||||
dat += "<h4>Selected Record</h4>"
|
dat += "<h4>Selected Record</h4>"
|
||||||
@@ -250,7 +251,7 @@
|
|||||||
dat += {"<b>UI:</b> [src.active_record.fields["UI"]]<br>
|
dat += {"<b>UI:</b> [src.active_record.fields["UI"]]<br>
|
||||||
<b>SE:</b> [src.active_record.fields["SE"]]<br><br>"}
|
<b>SE:</b> [src.active_record.fields["SE"]]<br><br>"}
|
||||||
if(wantspod)
|
if(wantspod)
|
||||||
dat += "<a href='byond://?src=\ref[src];clone=\ref[src.active_record]'>Clone</a><br>"
|
dat += "<a href='byond://?src=\ref[src];clone=[src.active_record.fields["id"]]'>Clone</a><br>"
|
||||||
|
|
||||||
if(4)
|
if(4)
|
||||||
if (!src.active_record)
|
if (!src.active_record)
|
||||||
@@ -281,7 +282,7 @@
|
|||||||
src.scanner.locked = 0
|
src.scanner.locked = 0
|
||||||
|
|
||||||
else if (href_list["view_rec"])
|
else if (href_list["view_rec"])
|
||||||
src.active_record = locate(href_list["view_rec"])
|
src.active_record = geneticsrecords[href_list["view_rec"]]
|
||||||
if ((isnull(src.active_record.fields["ckey"])) || (src.active_record.fields["ckey"] == ""))
|
if ((isnull(src.active_record.fields["ckey"])) || (src.active_record.fields["ckey"] == ""))
|
||||||
del(src.active_record)
|
del(src.active_record)
|
||||||
src.temp = "ERROR: Record Corrupt"
|
src.temp = "ERROR: Record Corrupt"
|
||||||
@@ -299,7 +300,7 @@
|
|||||||
var/obj/item/weapon/card/id/C = usr.equipped()
|
var/obj/item/weapon/card/id/C = usr.equipped()
|
||||||
if (istype(C)||istype(C, /obj/item/device/pda))
|
if (istype(C)||istype(C, /obj/item/device/pda))
|
||||||
if(src.check_access(C))
|
if(src.check_access(C))
|
||||||
geneticsrecords.Remove(src.active_record)
|
geneticsrecords.Remove(active_record["id"])
|
||||||
del(src.active_record)
|
del(src.active_record)
|
||||||
src.temp = "Record deleted."
|
src.temp = "Record deleted."
|
||||||
src.menu = 2
|
src.menu = 2
|
||||||
@@ -359,10 +360,11 @@
|
|||||||
src.updateUsrDialog()
|
src.updateUsrDialog()
|
||||||
|
|
||||||
else if (href_list["clone"])
|
else if (href_list["clone"])
|
||||||
var/datum/data/record/C = locate(href_list["clone"])
|
var/datum/data/record/C = geneticsrecords[href_list["clone"]]
|
||||||
//Look for that player! They better be dead!
|
//Look for that player! They better be dead!
|
||||||
if(C)
|
if(C)
|
||||||
var/mob/selected = find_dead_player("[C.fields["ckey"]]")
|
var/mob/selected = find_dead_player("[C.fields["ckey"]]")
|
||||||
|
selected << 'chime.ogg' //probably not the best sound but I think it's reasonable
|
||||||
var/answer = alert(selected,"Do you want to return to life?","Cloning","Yes","No")
|
var/answer = alert(selected,"Do you want to return to life?","Cloning","Yes","No")
|
||||||
if(answer == "No")
|
if(answer == "No")
|
||||||
selected = null
|
selected = null
|
||||||
@@ -371,7 +373,7 @@
|
|||||||
src.temp = "Unable to initiate cloning cycle." // most helpful error message in THE HISTORY OF THE WORLD
|
src.temp = "Unable to initiate cloning cycle." // most helpful error message in THE HISTORY OF THE WORLD
|
||||||
else if (src.pod1.growclone(selected, C.fields["name"], C.fields["UI"], C.fields["SE"], C.fields["mind"], C.fields["mrace"], C.fields["interface"],C.fields["changeling"],C.fields["original"]))
|
else if (src.pod1.growclone(selected, C.fields["name"], C.fields["UI"], C.fields["SE"], C.fields["mind"], C.fields["mrace"], C.fields["interface"],C.fields["changeling"],C.fields["original"]))
|
||||||
src.temp = "Cloning cycle activated."
|
src.temp = "Cloning cycle activated."
|
||||||
geneticsrecords.Remove(C)
|
geneticsrecords.Remove(C.fields["id"])
|
||||||
del(C)
|
del(C)
|
||||||
src.menu = 1
|
src.menu = 1
|
||||||
|
|
||||||
@@ -438,7 +440,7 @@
|
|||||||
if (!isnull(subject.mind)) //Save that mind so traitors can continue traitoring after cloning.
|
if (!isnull(subject.mind)) //Save that mind so traitors can continue traitoring after cloning.
|
||||||
R.fields["mind"] = "\ref[subject.mind]"
|
R.fields["mind"] = "\ref[subject.mind]"
|
||||||
|
|
||||||
geneticsrecords += R //Save it to the global scan list.
|
geneticsrecords["[copytext(md5(subject.real_name), 2, 6)]"] = R //Save it to the global scan list.
|
||||||
src.temp = "Subject successfully scanned."
|
src.temp = "Subject successfully scanned."
|
||||||
|
|
||||||
//Find a specific record by key.
|
//Find a specific record by key.
|
||||||
|
|||||||
@@ -1612,7 +1612,7 @@ About the new airlock wires panel:
|
|||||||
name = "CentCom Secure Airlock"
|
name = "CentCom Secure Airlock"
|
||||||
desc = "I hope you have insulated gloves...."
|
desc = "I hope you have insulated gloves...."
|
||||||
icon = 'Doorhatchele.dmi'
|
icon = 'Doorhatchele.dmi'
|
||||||
var/list/mob/morons
|
var/list/mob/morons = list()
|
||||||
|
|
||||||
pulse(var/wireColor)
|
pulse(var/wireColor)
|
||||||
if(prob(25))
|
if(prob(25))
|
||||||
|
|||||||
@@ -562,6 +562,8 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
|
|||||||
R.word2 = w2
|
R.word2 = w2
|
||||||
R.word3 = w3
|
R.word3 = w3
|
||||||
R.check_icon()
|
R.check_icon()
|
||||||
|
if(!R.blood_DNA)
|
||||||
|
R.blood_DNA = list()
|
||||||
R.blood_DNA[H.dna.unique_enzymes] = H.dna.b_type
|
R.blood_DNA[H.dna.unique_enzymes] = H.dna.b_type
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
//UNTICKED DUE TO BUGGY SHIT
|
||||||
|
|
||||||
/obj/effect/biomass
|
/obj/effect/biomass
|
||||||
icon = 'biomass.dmi'
|
icon = 'biomass.dmi'
|
||||||
icon_state = "stage1"
|
icon_state = "stage1"
|
||||||
|
|||||||
@@ -466,7 +466,7 @@ Code:
|
|||||||
|
|
||||||
else
|
else
|
||||||
for(var/obj/machinery/bot/mulebot/B in QC.botlist)
|
for(var/obj/machinery/bot/mulebot/B in QC.botlist)
|
||||||
menu += "<A href='byond://?src=\ref[QC];op=control;bot=\ref[B]'>[B] at [B.loc.loc]</A><BR>"
|
menu += "<A href='byond://?src=\ref[QC];op=control;bot=\ref[B]'>[B] at [get_area(B)]</A><BR>"
|
||||||
|
|
||||||
menu += "<BR><A href='byond://?src=\ref[QC];op=scanbots'><img src=pda_scanner.png> Scan for active bots</A><BR>"
|
menu += "<BR><A href='byond://?src=\ref[QC];op=scanbots'><img src=pda_scanner.png> Scan for active bots</A><BR>"
|
||||||
|
|
||||||
|
|||||||
@@ -238,9 +238,8 @@ obj/machinery/computer/forensic_scanning
|
|||||||
var/list/blood = outputs[3]
|
var/list/blood = outputs[3]
|
||||||
if(blood && blood.len)
|
if(blood && blood.len)
|
||||||
temp += " <b>Blood:</b><br>"
|
temp += " <b>Blood:</b><br>"
|
||||||
for(var/j = 1, j <= blood.len, j++)
|
for(var/named in blood)
|
||||||
var/list/templist2 = blood[j]
|
temp += " Type: [blood[named]], DNA: [named]<br>"
|
||||||
temp += " Type: [templist2[2]], DNA: [templist2[1]]<br>"
|
|
||||||
temp += "<br><a href='?src=\ref[src];operation=database;delete_record=[href_list["identifier"]]'>{Delete this Dossier}</a>"
|
temp += "<br><a href='?src=\ref[src];operation=database;delete_record=[href_list["identifier"]]'>{Delete this Dossier}</a>"
|
||||||
temp += "<br><a href='?src=\ref[src];operation=databaseprint;identifier=[href_list["identifier"]]'>{Print}</a>"
|
temp += "<br><a href='?src=\ref[src];operation=databaseprint;identifier=[href_list["identifier"]]'>{Print}</a>"
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ datum
|
|||||||
on_mob_life(var/mob/living/M)
|
on_mob_life(var/mob/living/M)
|
||||||
if(!data || !data["blood_type"])
|
if(!data || !data["blood_type"])
|
||||||
..()
|
..()
|
||||||
else if(istype(M, /mob/living/carbon/human) && blood_incompatible(data["blood_type"],M.dna.b_type))
|
else if(istype(M, /mob/living/carbon/human) && blood_incompatible(data["blood_type"],M.dna.b_type) && !M.changeling)
|
||||||
M.adjustToxLoss(rand(0.5,1.5))
|
M.adjustToxLoss(rand(0.5,1.5))
|
||||||
M.adjustOxyLoss(rand(1,1.5))
|
M.adjustOxyLoss(rand(1,1.5))
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -185,9 +185,10 @@
|
|||||||
if(W:amount >= 1)
|
if(W:amount >= 1)
|
||||||
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
||||||
if(do_after(user, 20))
|
if(do_after(user, 20))
|
||||||
W:use(1)
|
if(W)
|
||||||
user << "\blue You put in the glass lens."
|
W:use(1)
|
||||||
src.state = 5
|
user << "\blue You put in the glass lens."
|
||||||
|
src.state = 5
|
||||||
if(5)
|
if(5)
|
||||||
if(istype(W, /obj/item/weapon/crowbar))
|
if(istype(W, /obj/item/weapon/crowbar))
|
||||||
playsound(src.loc, 'Crowbar.ogg', 50, 1)
|
playsound(src.loc, 'Crowbar.ogg', 50, 1)
|
||||||
|
|||||||
@@ -872,7 +872,7 @@
|
|||||||
if(E.name == "l_hand" || E.name == "l_arm")
|
if(E.name == "l_hand" || E.name == "l_arm")
|
||||||
if(hand && equipped())
|
if(hand && equipped())
|
||||||
drop_item()
|
drop_item()
|
||||||
emote("custom v drops what they were holding, their limb malfunctioning!")
|
emote("custom v drops what they were holding, their [E] malfunctioning!")
|
||||||
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, src)
|
spark_system.set_up(5, 0, src)
|
||||||
spark_system.attach(src)
|
spark_system.attach(src)
|
||||||
@@ -882,7 +882,7 @@
|
|||||||
else if(E.name == "r_hand" || E.name == "r_arm")
|
else if(E.name == "r_hand" || E.name == "r_arm")
|
||||||
if(!hand && equipped())
|
if(!hand && equipped())
|
||||||
drop_item()
|
drop_item()
|
||||||
emote("custom v drops what they were holding, their limb malfunctioning!")
|
emote("custom v drops what they were holding, their [E] malfunctioning!")
|
||||||
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, src)
|
spark_system.set_up(5, 0, src)
|
||||||
spark_system.attach(src)
|
spark_system.attach(src)
|
||||||
@@ -915,6 +915,15 @@
|
|||||||
var/blood_volume = round(vessel.get_reagent_amount("blood"))
|
var/blood_volume = round(vessel.get_reagent_amount("blood"))
|
||||||
if(bloodloss)
|
if(bloodloss)
|
||||||
drip(bloodloss)
|
drip(bloodloss)
|
||||||
|
else if(blood_volume < 560 && blood_volume)
|
||||||
|
var/datum/reagent/blood/B = locate() in vessel //Grab some blood
|
||||||
|
if(!B.data["donor"] == src) //If it's not theirs, then we look for theirs
|
||||||
|
for(var/datum/reagent/blood/D in vessel)
|
||||||
|
if(D.data["donor"] == src)
|
||||||
|
B = D
|
||||||
|
break
|
||||||
|
//At this point, we dun care which blood we are adding to, as long as they get more blood.
|
||||||
|
B.volume = max(min(B.volume + 560/blood_volume,560), 0) //Less blood = More blood generated per tick
|
||||||
if(!blood_volume)
|
if(!blood_volume)
|
||||||
bloodloss = 0
|
bloodloss = 0
|
||||||
else if(blood_volume > 448)
|
else if(blood_volume > 448)
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
del(O.organs)
|
del(O.organs)
|
||||||
O.organs = organs
|
O.organs = organs
|
||||||
for(var/name in O.organs)
|
for(var/name in O.organs)
|
||||||
var/datum/organ/external/organ = O[name]
|
var/datum/organ/external/organ = O.organs[name]
|
||||||
organ.owner = O
|
organ.owner = O
|
||||||
for(var/obj/item/weapon/implant/implant in organ.implant)
|
for(var/obj/item/weapon/implant/implant in organ.implant)
|
||||||
implant.imp_in = O
|
implant.imp_in = O
|
||||||
|
|||||||
@@ -30,7 +30,9 @@
|
|||||||
overlays += image('power.dmi', "cell-o1")
|
overlays += image('power.dmi', "cell-o1")
|
||||||
|
|
||||||
/obj/item/weapon/cell/proc/percent() // return % charge of cell
|
/obj/item/weapon/cell/proc/percent() // return % charge of cell
|
||||||
return 100.0*charge/maxcharge
|
if(maxcharge)
|
||||||
|
return 100.0*charge/maxcharge
|
||||||
|
return 0
|
||||||
|
|
||||||
// use power from a cell
|
// use power from a cell
|
||||||
/obj/item/weapon/cell/proc/use(var/amount)
|
/obj/item/weapon/cell/proc/use(var/amount)
|
||||||
|
|||||||
Reference in New Issue
Block a user