mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 20:16:55 +01:00
Merge pull request #2355 from Fox-McCloud/eye-fixes
Eyes Fixes and Chem Tweaks
This commit is contained in:
@@ -79,7 +79,7 @@
|
||||
component_parts += new /obj/item/stack/cable_coil(null, 1)
|
||||
component_parts += new /obj/item/stack/cable_coil(null, 1)
|
||||
RefreshParts()
|
||||
|
||||
|
||||
/obj/machinery/dna_scannernew/RefreshParts()
|
||||
scan_level = 0
|
||||
damage_coeff = 0
|
||||
@@ -190,7 +190,7 @@
|
||||
return
|
||||
if(L == user)
|
||||
return
|
||||
visible_message("[user] puts [L.name] into the DNA Scanner.", 3)
|
||||
visible_message("[user] puts [L.name] into the DNA Scanner.")
|
||||
put_in(L)
|
||||
if(user.pulling == L)
|
||||
user.pulling = null
|
||||
@@ -316,21 +316,21 @@
|
||||
for(var/atom/movable/A as mob|obj in src)
|
||||
A.forceMove(src.loc)
|
||||
qdel(src)
|
||||
|
||||
|
||||
// Checks if occupants can be irradiated/mutated - prevents exploits where wearing full rad protection would still let you gain mutations
|
||||
/obj/machinery/dna_scannernew/proc/radiation_check()
|
||||
if(!occupant)
|
||||
return 1
|
||||
|
||||
|
||||
if(ishuman(occupant))
|
||||
var/mob/living/carbon/human/H = occupant
|
||||
if((H.species.flags & NO_DNA_RAD))
|
||||
return 1
|
||||
|
||||
|
||||
var/radiation_protection = occupant.run_armor_check(null, "rad", "Your clothes feel warm.", "Your clothes feel warm.")
|
||||
if (radiation_protection > NEGATE_MUTATION_THRESHOLD)
|
||||
return 1
|
||||
|
||||
|
||||
return 0
|
||||
|
||||
/obj/machinery/computer/scan_consolenew
|
||||
@@ -445,9 +445,9 @@
|
||||
if(..(user))
|
||||
return
|
||||
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
|
||||
ui_interact(user)
|
||||
|
||||
/**
|
||||
@@ -588,10 +588,10 @@
|
||||
return 1 // return 1 forces an update to all Nano uis attached to src
|
||||
|
||||
var/radiation = (((src.radiation_intensity*3)+src.radiation_duration*3) / connected.damage_coeff)
|
||||
src.connected.occupant.apply_effect(radiation,IRRADIATE,0)
|
||||
if(src.connected.radiation_check())
|
||||
src.connected.occupant.apply_effect(radiation,IRRADIATE,0)
|
||||
if(src.connected.radiation_check())
|
||||
return 1
|
||||
|
||||
|
||||
if (prob(95))
|
||||
if(prob(75))
|
||||
randmutb(src.connected.occupant)
|
||||
@@ -691,29 +691,29 @@
|
||||
|
||||
if (!src.connected.occupant)
|
||||
return 1
|
||||
|
||||
|
||||
if (prob((80 + (src.radiation_duration / 2))))
|
||||
var/radiation = (src.radiation_intensity+src.radiation_duration)
|
||||
src.connected.occupant.apply_effect(radiation,IRRADIATE,0)
|
||||
|
||||
|
||||
if(src.connected.radiation_check())
|
||||
return 1
|
||||
|
||||
|
||||
block = miniscrambletarget(num2text(selected_ui_target), src.radiation_intensity, src.radiation_duration)
|
||||
src.connected.occupant.dna.SetUISubBlock(src.selected_ui_block,src.selected_ui_subblock,block)
|
||||
src.connected.occupant.UpdateAppearance()
|
||||
else
|
||||
var/radiation = ((src.radiation_intensity*2)+src.radiation_duration)
|
||||
src.connected.occupant.apply_effect(radiation,IRRADIATE,0)
|
||||
src.connected.occupant.apply_effect(radiation,IRRADIATE,0)
|
||||
if(src.connected.radiation_check())
|
||||
return 1
|
||||
|
||||
|
||||
if (prob(20+src.radiation_intensity))
|
||||
randmutb(src.connected.occupant)
|
||||
domutcheck(src.connected.occupant,src.connected)
|
||||
else
|
||||
randmuti(src.connected.occupant)
|
||||
src.connected.occupant.UpdateAppearance()
|
||||
src.connected.occupant.UpdateAppearance()
|
||||
return 1 // return 1 forces an update to all Nano uis attached to src
|
||||
|
||||
////////////////////////////////////////////////////////
|
||||
@@ -755,16 +755,16 @@
|
||||
sleep(10*src.radiation_duration) // sleep for radiation_duration seconds
|
||||
|
||||
irradiating = 0
|
||||
src.connected.locked = lock_state
|
||||
|
||||
if(src.connected.occupant)
|
||||
src.connected.locked = lock_state
|
||||
|
||||
if(src.connected.occupant)
|
||||
if (prob((80 + ((src.radiation_duration / 2) + (connected.precision_coeff ** 3)))))
|
||||
var/radiation = ((src.radiation_intensity+src.radiation_duration) / connected.damage_coeff)
|
||||
src.connected.occupant.apply_effect(radiation,IRRADIATE,0)
|
||||
|
||||
src.connected.occupant.apply_effect(radiation,IRRADIATE,0)
|
||||
|
||||
if(src.connected.radiation_check())
|
||||
return 1
|
||||
|
||||
|
||||
var/real_SE_block=selected_se_block
|
||||
block = miniscramble(block, src.radiation_intensity, src.radiation_duration)
|
||||
if(prob(20))
|
||||
@@ -782,7 +782,7 @@
|
||||
|
||||
if(src.connected.radiation_check())
|
||||
return 1
|
||||
|
||||
|
||||
if (prob(80-src.radiation_duration))
|
||||
//testing("Random bad mut!")
|
||||
randmutb(src.connected.occupant)
|
||||
@@ -893,8 +893,8 @@
|
||||
src.connected.locked = lock_state
|
||||
|
||||
var/radiation = (rand(20,50) / connected.damage_coeff)
|
||||
src.connected.occupant.apply_effect(radiation,IRRADIATE,0)
|
||||
|
||||
src.connected.occupant.apply_effect(radiation,IRRADIATE,0)
|
||||
|
||||
if(src.connected.radiation_check())
|
||||
return 1
|
||||
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
if (C == user)
|
||||
user.visible_message("[user] climbs on the operating table.","You climb on the operating table.")
|
||||
else
|
||||
visible_message("<span class='alert'>[C] has been laid on the operating table by [user].</span>", 3)
|
||||
visible_message("<span class='alert'>[C] has been laid on the operating table by [user].</span>")
|
||||
if (C.client)
|
||||
C.client.perspective = EYE_PERSPECTIVE
|
||||
C.client.eye = src
|
||||
|
||||
@@ -308,7 +308,7 @@
|
||||
user.visible_message("[user] adds \a [G] to \the [src]!", "You add \a [G] to \the [src]!")
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
|
||||
|
||||
else
|
||||
user << "\red The sleeper has a beaker already."
|
||||
return
|
||||
@@ -354,7 +354,7 @@
|
||||
usr << "[G:affecting.name] will not fit into the sleeper because they have a slime latched onto their head."
|
||||
return
|
||||
|
||||
visible_message("[user] starts putting [G:affecting:name] into the sleeper.", 3)
|
||||
visible_message("[user] starts putting [G:affecting:name] into the sleeper.")
|
||||
|
||||
if(do_after(user, 20, target = G:affecting))
|
||||
if(src.occupant)
|
||||
@@ -555,9 +555,9 @@
|
||||
usr << "[L.name] will not fit into the sleeper because they have a slime latched onto their head."
|
||||
return
|
||||
if(L == user)
|
||||
visible_message("[user] starts climbing into the sleeper.", 3)
|
||||
visible_message("[user] starts climbing into the sleeper.")
|
||||
else
|
||||
visible_message("[user] starts putting [L.name] into the sleeper.", 3)
|
||||
visible_message("[user] starts putting [L.name] into the sleeper.")
|
||||
|
||||
if(do_after(user, 20, target = L))
|
||||
if(src.occupant)
|
||||
@@ -599,7 +599,7 @@
|
||||
if(M.Victim == usr)
|
||||
usr << "You're too busy getting your life sucked out of you."
|
||||
return
|
||||
visible_message("[usr] starts climbing into the sleeper.", 3)
|
||||
visible_message("[usr] starts climbing into the sleeper.")
|
||||
if(do_after(usr, 20, target = usr))
|
||||
if(src.occupant)
|
||||
usr << "\blue <B>The sleeper is already occupied!</B>"
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
|
||||
component_parts += new /obj/item/stack/cable_coil(null, 2)
|
||||
RefreshParts()
|
||||
|
||||
|
||||
/obj/machinery/bodyscanner/upgraded/New()
|
||||
..()
|
||||
component_parts = list()
|
||||
@@ -129,9 +129,9 @@
|
||||
usr << "[L.name] will not fit into the body scanner because they have a slime latched onto their head."
|
||||
return
|
||||
if(L == user)
|
||||
visible_message("[user] climbs into the body scanner.", 3)
|
||||
visible_message("[user] climbs into the body scanner.")
|
||||
else
|
||||
visible_message("[user] puts [L.name] into the body scanner.", 3)
|
||||
visible_message("[user] puts [L.name] into the body scanner.")
|
||||
|
||||
if (L.client)
|
||||
L.client.perspective = EYE_PERSPECTIVE
|
||||
@@ -350,21 +350,21 @@
|
||||
|
||||
/obj/machinery/body_scanconsole/attack_ai(user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
|
||||
/obj/machinery/body_scanconsole/attack_ghost(user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/body_scanconsole/attack_hand(user as mob)
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
|
||||
|
||||
if (panel_open)
|
||||
user << "<span class='notice'>Close the maintenance panel first.</span>"
|
||||
return
|
||||
|
||||
|
||||
if(!src.connected)
|
||||
findscanner()
|
||||
|
||||
|
||||
if (src.connected)
|
||||
if(!connected.occupant)
|
||||
user << "<span class='notice'>The scanner is empty.</span>"
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
/obj/machinery/computer/HolodeckControl/attack_hand(var/mob/user as mob)
|
||||
if(..())
|
||||
return 1
|
||||
|
||||
|
||||
user.set_machine(src)
|
||||
var/dat
|
||||
|
||||
@@ -195,7 +195,7 @@
|
||||
|
||||
if(!..())
|
||||
return
|
||||
|
||||
|
||||
if(active)
|
||||
if(!checkInteg(linkedholodeck))
|
||||
damaged = 1
|
||||
@@ -348,10 +348,10 @@
|
||||
/obj/structure/table/holotable
|
||||
name = "table"
|
||||
|
||||
/obj/structure/table/holotable/attack_alien(mob/user as mob)
|
||||
/obj/structure/table/holotable/attack_alien(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/structure/table/holotable/attack_animal(mob/living/simple_animal/user as mob)
|
||||
/obj/structure/table/holotable/attack_animal(mob/living/simple_animal/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/structure/table/holotable/attack_hand(mob/user as mob)
|
||||
@@ -387,11 +387,11 @@
|
||||
pressure_resistance = 4*ONE_ATMOSPHERE
|
||||
anchored = 1.0
|
||||
flags = ON_BORDER
|
||||
|
||||
|
||||
/obj/structure/rack/holorack
|
||||
name = "rack"
|
||||
|
||||
/obj/structure/rack/holorack/attack_alien(mob/user as mob)
|
||||
/obj/structure/rack/holorack/attack_alien(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/structure/rack/holorack/attack_animal(mob/living/simple_animal/user as mob)
|
||||
@@ -480,12 +480,12 @@
|
||||
return
|
||||
G.affecting.loc = src.loc
|
||||
G.affecting.Weaken(5)
|
||||
visible_message("<span class='warning'>[G.assailant] dunks [G.affecting] into the [src]!</span>", 3)
|
||||
visible_message("<span class='warning'>[G.assailant] dunks [G.affecting] into the [src]!</span>")
|
||||
qdel(W)
|
||||
return
|
||||
else if (istype(W, /obj/item) && get_dist(src,user)<2)
|
||||
user.drop_item(src)
|
||||
visible_message("<span class='notice'>[user] dunks [W] into the [src]!</span>", 3)
|
||||
visible_message("<span class='notice'>[user] dunks [W] into the [src]!</span>")
|
||||
return
|
||||
|
||||
/obj/structure/holohoop/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||
@@ -495,9 +495,9 @@
|
||||
return
|
||||
if(prob(50))
|
||||
I.loc = src.loc
|
||||
visible_message("<span class='notice'>Swish! \the [I] lands in \the [src].</span>", 3)
|
||||
visible_message("<span class='notice'>Swish! \the [I] lands in \the [src].</span>")
|
||||
else
|
||||
visible_message("<span class='alert'>\The [I] bounces off of \the [src]'s rim!</span>", 3)
|
||||
visible_message("<span class='alert'>\The [I] bounces off of \the [src]'s rim!</span>")
|
||||
return 0
|
||||
else
|
||||
return ..(mover, target, height, air_group)
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
|
||||
component_parts += new /obj/item/stack/cable_coil(null, 1)
|
||||
RefreshParts()
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/unary/cryo_cell/construction()
|
||||
..(dir,dir)
|
||||
|
||||
@@ -113,9 +113,9 @@
|
||||
return
|
||||
if(put_mob(L))
|
||||
if(L == user)
|
||||
visible_message("[user] climbs into the cryo cell.", 3)
|
||||
visible_message("[user] climbs into the cryo cell.")
|
||||
else
|
||||
visible_message("[user] puts [L.name] into the cryo cell.", 3)
|
||||
visible_message("[user] puts [L.name] into the cryo cell.")
|
||||
if(user.pulling == L)
|
||||
user.pulling = null
|
||||
|
||||
@@ -157,11 +157,11 @@
|
||||
|
||||
/obj/machinery/atmospherics/unary/cryo_cell/attack_ghost(mob/user)
|
||||
return attack_hand(user)
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/unary/cryo_cell/attack_hand(mob/user)
|
||||
if(user == occupant)
|
||||
return
|
||||
|
||||
|
||||
if(panel_open)
|
||||
usr << "\blue <b>Close the maintenance panel first.</b>"
|
||||
return
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
user << "<span class='notice'>\The [I] is no longer in storage.</span>"
|
||||
return
|
||||
|
||||
visible_message("<span class='notice'>The console beeps happily as it disgorges \the [I].</span>", 3)
|
||||
visible_message("<span class='notice'>The console beeps happily as it disgorges \the [I].</span>")
|
||||
|
||||
I.loc = get_turf(src)
|
||||
frozen_items -= I
|
||||
@@ -125,7 +125,7 @@
|
||||
user << "<span class='notice'>There is nothing to recover from storage.</span>"
|
||||
return
|
||||
|
||||
visible_message("<span class='notice'>The console beeps happily as it disgorges the desired objects.</span>", 3)
|
||||
visible_message("<span class='notice'>The console beeps happily as it disgorges the desired objects.</span>")
|
||||
|
||||
for(var/obj/item/I in frozen_items)
|
||||
I.loc = get_turf(src)
|
||||
@@ -420,7 +420,7 @@
|
||||
else
|
||||
announce.autosay("[occupant.real_name] [on_store_message]", "[on_store_name]")
|
||||
|
||||
visible_message("<span class='notice'>\The [src] hums and hisses as it moves [occupant.real_name] into storage.</span>", 3)
|
||||
visible_message("<span class='notice'>\The [src] hums and hisses as it moves [occupant.real_name] into storage.</span>")
|
||||
|
||||
// Delete the mob.
|
||||
qdel(occupant)
|
||||
@@ -458,7 +458,7 @@
|
||||
|
||||
if(willing)
|
||||
|
||||
visible_message("[user] starts putting [G:affecting:name] into \the [src].", 3)
|
||||
visible_message("[user] starts putting [G:affecting:name] into \the [src].")
|
||||
|
||||
if(do_after(user, 20, target = G:affecting))
|
||||
if(!M || !G || !G:affecting) return
|
||||
@@ -547,9 +547,9 @@
|
||||
|
||||
if(willing)
|
||||
if(L == user)
|
||||
visible_message("[user] starts climbing into the cryo pod.", 3)
|
||||
visible_message("[user] starts climbing into the cryo pod.")
|
||||
else
|
||||
visible_message("[user] starts putting [L] into the cryo pod.", 3)
|
||||
visible_message("[user] starts putting [L] into the cryo pod.")
|
||||
|
||||
if(do_after(user, 20, target = L))
|
||||
if(!L) return
|
||||
@@ -637,7 +637,7 @@
|
||||
usr << "You're too busy getting your life sucked out of you."
|
||||
return
|
||||
|
||||
visible_message("[usr] starts climbing into \the [src].", 3)
|
||||
visible_message("[usr] starts climbing into \the [src].")
|
||||
|
||||
if(do_after(usr, 20, target = usr))
|
||||
|
||||
|
||||
@@ -389,7 +389,7 @@
|
||||
src.SUIT = null
|
||||
if(src.MASK)
|
||||
src.MASK = null
|
||||
visible_message("<font color='red'>With a loud whining noise, the Suit Storage Unit's door grinds open. Puffs of ashen smoke come out of its chamber.</font>", 3)
|
||||
visible_message("<font color='red'>With a loud whining noise, the Suit Storage Unit's door grinds open. Puffs of ashen smoke come out of its chamber.</font>")
|
||||
src.isbroken = 1
|
||||
src.isopen = 1
|
||||
src.islocked = 0
|
||||
@@ -484,7 +484,7 @@
|
||||
if ( (src.OCCUPANT) || (src.HELMET) || (src.SUIT) )
|
||||
usr << "<font color='red'>It's too cluttered inside for you to fit in!</font>"
|
||||
return
|
||||
visible_message("[usr] starts squeezing into the suit storage unit!", 3)
|
||||
visible_message("[usr] starts squeezing into the suit storage unit!")
|
||||
if(do_after(usr, 10, target = usr))
|
||||
usr.stop_pulling()
|
||||
usr.client.perspective = EYE_PERSPECTIVE
|
||||
@@ -528,7 +528,7 @@
|
||||
if ( (src.OCCUPANT) || (src.HELMET) || (src.SUIT) ) //Unit needs to be absolutely empty
|
||||
user << "<font color='red'>The unit's storage area is too cluttered.</font>"
|
||||
return
|
||||
visible_message("[user] starts putting [G.affecting.name] into the Suit Storage Unit.", 3)
|
||||
visible_message("[user] starts putting [G.affecting.name] into the Suit Storage Unit.")
|
||||
if(do_after(user, 20, target = G:affecting))
|
||||
if(!G || !G.affecting) return //derpcheck
|
||||
var/mob/M = G.affecting
|
||||
@@ -685,7 +685,7 @@
|
||||
user << "\red There is no room inside the cycler for [G.affecting.name]."
|
||||
return
|
||||
|
||||
visible_message("[user] starts putting [G.affecting.name] into the suit cycler.", 3)
|
||||
visible_message("[user] starts putting [G.affecting.name] into the suit cycler.")
|
||||
|
||||
if(do_after(user, 20, target = G:affecting))
|
||||
if(!G || !G.affecting) return
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
if(!ticker)
|
||||
alert("The game hasn't started yet!")
|
||||
return
|
||||
|
||||
|
||||
var/list/incompatible_species = list("Plasmaman")
|
||||
for(var/mob/living/carbon/human/H in player_list)
|
||||
if(H.stat == DEAD || !(H.client))
|
||||
if(H.stat == DEAD || !(H.client))
|
||||
continue
|
||||
if(is_special_character(H))
|
||||
if(is_special_character(H))
|
||||
continue
|
||||
if(H.species.name in incompatible_species)
|
||||
H.set_species("Human")
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
H.species.equip(H)
|
||||
H.regenerate_icons()
|
||||
|
||||
|
||||
message_admins("[key_name_admin(usr)] used DODGEBAWWWWWWWL! -NO ATTACK LOGS WILL BE SENT TO ADMINS FROM THIS POINT FORTH-", 1)
|
||||
log_admin("[key_name(usr)] used dodgeball.")
|
||||
nologevent = 1
|
||||
@@ -85,6 +85,6 @@
|
||||
return
|
||||
else
|
||||
playsound(src, 'sound/items/dodgeball.ogg', 50, 1)
|
||||
visible_message("<span class='danger'>[H] HAS BEEN ELIMINATED!</span>", 3)
|
||||
visible_message("<span class='danger'>[H] HAS BEEN ELIMINATED!</span>")
|
||||
H.melt()
|
||||
return
|
||||
|
||||
@@ -18,6 +18,12 @@
|
||||
/obj/item/organ/brain/attack_self(mob/user as mob)
|
||||
return //let's not have players taken out of the round as easily as a click, once you have their brain.
|
||||
|
||||
/obj/item/organ/brain/surgeryize()
|
||||
if(!owner)
|
||||
return
|
||||
owner.ear_damage = 0 //Yeah, didn't you...hear? The ears are totally inside the brain.
|
||||
owner.ear_deaf = 0
|
||||
|
||||
/obj/item/organ/brain/xeno
|
||||
name = "thinkpan"
|
||||
desc = "It looks kind of like an enormous wad of purple bubblegum."
|
||||
|
||||
@@ -323,4 +323,7 @@ var/list/organ_cache = list()
|
||||
if(fingerprintslast) O.fingerprintslast = fingerprintslast
|
||||
|
||||
user.put_in_active_hand(O)
|
||||
qdel(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/organ/proc/surgeryize()
|
||||
return
|
||||
@@ -81,6 +81,14 @@
|
||||
owner.b_eyes ? owner.b_eyes : 0
|
||||
)
|
||||
|
||||
/obj/item/organ/eyes/surgeryize()
|
||||
if(!owner)
|
||||
return
|
||||
owner.disabilities &= ~NEARSIGHTED
|
||||
owner.sdisabilities &= ~BLIND
|
||||
owner.eye_blurry = 0
|
||||
owner.eye_blind = 0
|
||||
|
||||
/obj/item/organ/liver
|
||||
name = "liver"
|
||||
icon_state = "liver"
|
||||
|
||||
@@ -513,16 +513,25 @@ datum/reagent/morphine/addiction_act_stage4(var/mob/living/M as mob)
|
||||
|
||||
datum/reagent/oculine/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.eye_blurry = max(M.eye_blurry-5 , 0)
|
||||
M.eye_blind = max(M.eye_blind-5 , 0)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/eyes/E = H.internal_organs_by_name["eyes"]
|
||||
if(istype(E))
|
||||
if(E.damage > 0)
|
||||
E.damage -= 1
|
||||
if(prob(80))
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/eyes/E = H.internal_organs_by_name["eyes"]
|
||||
if(istype(E))
|
||||
E.damage = max(E.damage-1, 0)
|
||||
M.eye_blurry = max(M.eye_blurry-1 , 0)
|
||||
M.ear_damage = max(M.ear_damage-1, 0)
|
||||
if(prob(50))
|
||||
M.disabilities &= ~NEARSIGHTED
|
||||
if(prob(30))
|
||||
M.sdisabilities &= ~BLIND
|
||||
M.eye_blind = 0
|
||||
if(M.ear_damage <= 25)
|
||||
if(prob(30))
|
||||
M.ear_deaf = 0
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/oculine
|
||||
name = "Oculine"
|
||||
id = "oculine"
|
||||
|
||||
@@ -30,13 +30,6 @@
|
||||
result_amount = 2
|
||||
mix_message = "The solvent extracts an antibiotic compound from the fungus."
|
||||
|
||||
audioline
|
||||
name = "Audioline"
|
||||
id = "audioline"
|
||||
result = "audioline"
|
||||
required_reagents = list("spaceacillin" = 1, "salglu_solution" = 1, "epinephrine" = 1)
|
||||
result_amount = 3
|
||||
|
||||
rezadone
|
||||
name = "Rezadone"
|
||||
id = "rezadone"
|
||||
|
||||
@@ -61,20 +61,6 @@
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/audioline
|
||||
name = "Audioline"
|
||||
id = "audioline"
|
||||
description = "Heals ear damage."
|
||||
reagent_state = LIQUID
|
||||
color = "#6600FF" // rgb: 100, 165, 255
|
||||
|
||||
/datum/reagent/audioline/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.ear_damage = 0
|
||||
M.ear_deaf = 0
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/mitocholide
|
||||
name = "Mitocholide"
|
||||
id = "mitocholide"
|
||||
@@ -91,7 +77,7 @@
|
||||
for(var/name in H.internal_organs_by_name)
|
||||
var/obj/item/organ/I = H.internal_organs_by_name[name]
|
||||
if(I.damage > 0)
|
||||
I.damage -= 0.20
|
||||
I.damage = max(I.damage-0.4, 0)
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
@@ -150,6 +150,8 @@
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
|
||||
for(var/obj/item/organ/I in affected.internal_organs)
|
||||
if(I)
|
||||
I.surgeryize()
|
||||
if(I && I.damage > 0)
|
||||
if(I.robotic < 2)
|
||||
user.visible_message("\blue [user] treats damage to [target]'s [I.name] with [tool_name].", \
|
||||
@@ -193,7 +195,7 @@
|
||||
|
||||
if (!..())
|
||||
return 0
|
||||
|
||||
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
|
||||
if(!(affected && !(affected.status & ORGAN_ROBOT)))
|
||||
@@ -310,7 +312,7 @@
|
||||
|
||||
if(!istype(O))
|
||||
return 0
|
||||
|
||||
|
||||
if((affected.status & ORGAN_ROBOT) && !(O.status & ORGAN_ROBOT))
|
||||
user << "<span class='danger'>You cannot install a naked organ into a robotic body.</span>"
|
||||
return 2
|
||||
|
||||
Reference in New Issue
Block a user