mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-15 04:32:42 +00:00
@@ -108,8 +108,8 @@ Filter types:
|
||||
else
|
||||
filtered_out = null
|
||||
|
||||
|
||||
filtered_out.update_values()
|
||||
if(filtered_out)
|
||||
filtered_out.update_values()
|
||||
air2.merge(filtered_out)
|
||||
air3.merge(removed)
|
||||
|
||||
|
||||
@@ -466,6 +466,8 @@ datum
|
||||
//Outputs: 0 if the self-check failed (local airgroup breaks?)
|
||||
// then -1 if sharer-check failed (sharing airgroup breaks?)
|
||||
// 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_carbon_dioxide = QUANTIZE(carbon_dioxide_archived - sharer.carbon_dioxide_archived)/TRANSFER_FRACTION
|
||||
@@ -552,6 +554,10 @@ datum
|
||||
//Inputs: Air datum to share with
|
||||
//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_carbon_dioxide = QUANTIZE(carbon_dioxide_archived - sharer.carbon_dioxide_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)
|
||||
else
|
||||
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 (!active_hotspot.process(possible_fire_spreads))
|
||||
return 0
|
||||
if(air.temperature > MINIMUM_TEMPERATURE_START_SUPERCONDUCTION)
|
||||
consider_superconductivity(starting = 1)
|
||||
|
||||
if(air.temperature > MINIMUM_TEMPERATURE_START_SUPERCONDUCTION)
|
||||
consider_superconductivity(starting = 1)
|
||||
if(air.check_tile_graphic())
|
||||
update_visuals(air)
|
||||
|
||||
if(air.check_tile_graphic())
|
||||
update_visuals(air)
|
||||
|
||||
if(air.temperature > FIRE_MINIMUM_TEMPERATURE_TO_EXIST)
|
||||
// reset_delay() //hotspots always process quickly
|
||||
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)
|
||||
if(air.temperature > FIRE_MINIMUM_TEMPERATURE_TO_EXIST)
|
||||
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
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
updateappearance(O,O.dna.uni_identity)
|
||||
O.loc = loc
|
||||
O.viruses = viruses
|
||||
O.s_tone = s_tone
|
||||
viruses = list()
|
||||
for(var/datum/disease/D in O.viruses)
|
||||
D.affected_mob = O
|
||||
@@ -47,6 +48,10 @@
|
||||
client.mob = O
|
||||
if(mind)
|
||||
mind.transfer_to(O)
|
||||
|
||||
del(O.stand_icon) //Force it to update.
|
||||
del(O.lying_icon)
|
||||
|
||||
O.update_body()
|
||||
O.update_face()
|
||||
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) )
|
||||
tail_shown = 0
|
||||
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 (face_lying)
|
||||
@@ -339,7 +344,12 @@
|
||||
var/datum/organ/external/head = organs["head"]
|
||||
if(!head.destroyed)
|
||||
//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
|
||||
if (belt)
|
||||
|
||||
@@ -1044,11 +1044,12 @@
|
||||
potency = 40
|
||||
On_Consume()
|
||||
if(!reagents.total_volume)
|
||||
var/mob/M = usr
|
||||
var/obj/item/weapon/corncob/W = new /obj/item/weapon/corncob( M )
|
||||
M << "<span class='notice'>You chew on the corn, leaving nothing behind but a cob.</span>"
|
||||
M.put_in_hand(W)
|
||||
W.add_fingerprint(M)
|
||||
var/mob/living/M = usr
|
||||
if(M)
|
||||
var/obj/item/weapon/corncob/W = new /obj/item/weapon/corncob( M )
|
||||
M << "<span class='notice'>You chew on the corn, leaving nothing behind but a cob.</span>"
|
||||
M.put_in_hand(W)
|
||||
W.add_fingerprint(M)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 1+round((potency / 10), 1))
|
||||
|
||||
@@ -213,7 +213,8 @@
|
||||
for(var/obj/effect/decal/cleanable/blood/B in T.contents)
|
||||
if(!B.blood_DNA[M.dna.unique_enzymes])
|
||||
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)
|
||||
var/datum/disease/newDisease = new D.type
|
||||
B.viruses += newDisease
|
||||
|
||||
@@ -193,17 +193,19 @@
|
||||
del(ghost) //Don't leave ghosts everywhere!!
|
||||
|
||||
if(!src.occupant.dna)
|
||||
src.occupant.dna = new /datum/dna( )
|
||||
src.occupant.dna = new /datum/dna()
|
||||
if(ui)
|
||||
src.occupant.dna.uni_identity = ui
|
||||
updateappearance(src.occupant, ui)
|
||||
if(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_body()
|
||||
src.occupant:mutantrace = mrace
|
||||
src.occupant:suiciding = 0
|
||||
occupant.brainloss = 100
|
||||
src.attempting = 0
|
||||
return 1
|
||||
|
||||
|
||||
@@ -217,8 +217,9 @@
|
||||
if(2)
|
||||
dat += "<h4>Current records</h4>"
|
||||
dat += "<a href='byond://?src=\ref[src];menu=1'>Back</a><br><br>"
|
||||
for(var/datum/data/record/R in geneticsrecords)
|
||||
dat += "<a href='byond://?src=\ref[src];view_rec=\ref[R]'>[R.fields["id"]]-[R.fields["name"]]</a><br>"
|
||||
for(var/id in geneticsrecords)
|
||||
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)
|
||||
dat += "<h4>Selected Record</h4>"
|
||||
@@ -250,7 +251,7 @@
|
||||
dat += {"<b>UI:</b> [src.active_record.fields["UI"]]<br>
|
||||
<b>SE:</b> [src.active_record.fields["SE"]]<br><br>"}
|
||||
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 (!src.active_record)
|
||||
@@ -281,7 +282,7 @@
|
||||
src.scanner.locked = 0
|
||||
|
||||
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"] == ""))
|
||||
del(src.active_record)
|
||||
src.temp = "ERROR: Record Corrupt"
|
||||
@@ -299,7 +300,7 @@
|
||||
var/obj/item/weapon/card/id/C = usr.equipped()
|
||||
if (istype(C)||istype(C, /obj/item/device/pda))
|
||||
if(src.check_access(C))
|
||||
geneticsrecords.Remove(src.active_record)
|
||||
geneticsrecords.Remove(active_record["id"])
|
||||
del(src.active_record)
|
||||
src.temp = "Record deleted."
|
||||
src.menu = 2
|
||||
@@ -359,10 +360,11 @@
|
||||
src.updateUsrDialog()
|
||||
|
||||
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!
|
||||
if(C)
|
||||
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")
|
||||
if(answer == "No")
|
||||
selected = null
|
||||
@@ -371,7 +373,7 @@
|
||||
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"]))
|
||||
src.temp = "Cloning cycle activated."
|
||||
geneticsrecords.Remove(C)
|
||||
geneticsrecords.Remove(C.fields["id"])
|
||||
del(C)
|
||||
src.menu = 1
|
||||
|
||||
@@ -438,7 +440,7 @@
|
||||
if (!isnull(subject.mind)) //Save that mind so traitors can continue traitoring after cloning.
|
||||
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."
|
||||
|
||||
//Find a specific record by key.
|
||||
|
||||
@@ -1612,7 +1612,7 @@ About the new airlock wires panel:
|
||||
name = "CentCom Secure Airlock"
|
||||
desc = "I hope you have insulated gloves...."
|
||||
icon = 'Doorhatchele.dmi'
|
||||
var/list/mob/morons
|
||||
var/list/mob/morons = list()
|
||||
|
||||
pulse(var/wireColor)
|
||||
if(prob(25))
|
||||
|
||||
@@ -562,6 +562,8 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
|
||||
R.word2 = w2
|
||||
R.word3 = w3
|
||||
R.check_icon()
|
||||
if(!R.blood_DNA)
|
||||
R.blood_DNA = list()
|
||||
R.blood_DNA[H.dna.unique_enzymes] = H.dna.b_type
|
||||
return
|
||||
else
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//UNTICKED DUE TO BUGGY SHIT
|
||||
|
||||
/obj/effect/biomass
|
||||
icon = 'biomass.dmi'
|
||||
icon_state = "stage1"
|
||||
|
||||
@@ -466,7 +466,7 @@ Code:
|
||||
|
||||
else
|
||||
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>"
|
||||
|
||||
|
||||
@@ -238,9 +238,8 @@ obj/machinery/computer/forensic_scanning
|
||||
var/list/blood = outputs[3]
|
||||
if(blood && blood.len)
|
||||
temp += " <b>Blood:</b><br>"
|
||||
for(var/j = 1, j <= blood.len, j++)
|
||||
var/list/templist2 = blood[j]
|
||||
temp += " Type: [templist2[2]], DNA: [templist2[1]]<br>"
|
||||
for(var/named in blood)
|
||||
temp += " Type: [blood[named]], DNA: [named]<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=databaseprint;identifier=[href_list["identifier"]]'>{Print}</a>"
|
||||
else
|
||||
|
||||
@@ -104,7 +104,7 @@ datum
|
||||
on_mob_life(var/mob/living/M)
|
||||
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.adjustOxyLoss(rand(1,1.5))
|
||||
..()
|
||||
|
||||
@@ -185,9 +185,10 @@
|
||||
if(W:amount >= 1)
|
||||
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
||||
if(do_after(user, 20))
|
||||
W:use(1)
|
||||
user << "\blue You put in the glass lens."
|
||||
src.state = 5
|
||||
if(W)
|
||||
W:use(1)
|
||||
user << "\blue You put in the glass lens."
|
||||
src.state = 5
|
||||
if(5)
|
||||
if(istype(W, /obj/item/weapon/crowbar))
|
||||
playsound(src.loc, 'Crowbar.ogg', 50, 1)
|
||||
|
||||
@@ -872,7 +872,7 @@
|
||||
if(E.name == "l_hand" || E.name == "l_arm")
|
||||
if(hand && equipped())
|
||||
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()
|
||||
spark_system.set_up(5, 0, src)
|
||||
spark_system.attach(src)
|
||||
@@ -882,7 +882,7 @@
|
||||
else if(E.name == "r_hand" || E.name == "r_arm")
|
||||
if(!hand && equipped())
|
||||
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()
|
||||
spark_system.set_up(5, 0, src)
|
||||
spark_system.attach(src)
|
||||
@@ -915,6 +915,15 @@
|
||||
var/blood_volume = round(vessel.get_reagent_amount("blood"))
|
||||
if(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)
|
||||
bloodloss = 0
|
||||
else if(blood_volume > 448)
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
del(O.organs)
|
||||
O.organs = 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
|
||||
for(var/obj/item/weapon/implant/implant in organ.implant)
|
||||
implant.imp_in = O
|
||||
|
||||
@@ -30,7 +30,9 @@
|
||||
overlays += image('power.dmi', "cell-o1")
|
||||
|
||||
/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
|
||||
/obj/item/weapon/cell/proc/use(var/amount)
|
||||
|
||||
Reference in New Issue
Block a user