Bleeding edgy refresh (#303)
* not code stuff * other things * global vars, defines, helpers * onclick hud stuff, orphans, world.dm * controllers and datums * game folder * everything not client/mobs in modules * client folder * stage 1 mob stuff * simple animal things * silicons * carbon things * ayylmaos and monkeys * hyoomahn * icons n shit * sprite fixes * compile fixes * some fixes I cherrypicked. * qdel fixes * forgot brain refractors
This commit is contained in:
@@ -31,7 +31,7 @@
|
||||
|
||||
/obj/item/organ/cyberimp/arm/examine(mob/user)
|
||||
..()
|
||||
user << "<span class='info'>[src] is assembled in the [zone == "r_arm" ? "right" : "left"] arm configuration. You can use a screwdriver to reassemble it.</span>"
|
||||
to_chat(user, "<span class='info'>[src] is assembled in the [zone == "r_arm" ? "right" : "left"] arm configuration. You can use a screwdriver to reassemble it.</span>")
|
||||
|
||||
/obj/item/organ/cyberimp/arm/attackby(obj/item/weapon/W, mob/user, params)
|
||||
..()
|
||||
@@ -41,7 +41,7 @@
|
||||
else
|
||||
zone = "r_arm"
|
||||
slot = zone + "_device"
|
||||
user << "<span class='notice'>You modify [src] to be installed on the [zone == "r_arm" ? "right" : "left"] arm.</span>"
|
||||
to_chat(user, "<span class='notice'>You modify [src] to be installed on the [zone == "r_arm" ? "right" : "left"] arm.</span>")
|
||||
update_icon()
|
||||
else if(istype(W, /obj/item/weapon/card/emag))
|
||||
emag_act()
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
/obj/item/organ/cyberimp/arm/gun/emp_act(severity)
|
||||
if(prob(15/severity) && owner)
|
||||
owner << "<span class='warning'>[src] is hit by EMP!</span>"
|
||||
to_chat(owner, "<span class='warning'>[src] is hit by EMP!</span>")
|
||||
// give the owner an idea about why his implant is glitching
|
||||
Retract()
|
||||
..()
|
||||
@@ -70,7 +70,7 @@
|
||||
|
||||
if(istype(holder, /obj/item/device/assembly/flash/armimplant))
|
||||
var/obj/item/device/assembly/flash/F = holder
|
||||
F.SetLuminosity(0)
|
||||
F.set_light(0)
|
||||
|
||||
owner.transferItemToLoc(holder, src, TRUE)
|
||||
holder = null
|
||||
@@ -90,20 +90,20 @@
|
||||
|
||||
if(istype(holder, /obj/item/device/assembly/flash/armimplant))
|
||||
var/obj/item/device/assembly/flash/F = holder
|
||||
F.SetLuminosity(7)
|
||||
F.set_light(7)
|
||||
|
||||
var/obj/item/arm_item = owner.get_active_held_item()
|
||||
|
||||
if(arm_item)
|
||||
if(!owner.dropItemToGround(arm_item))
|
||||
owner << "<span class='warning'>Your [arm_item] interferes with [src]!</span>"
|
||||
to_chat(owner, "<span class='warning'>Your [arm_item] interferes with [src]!</span>")
|
||||
return
|
||||
else
|
||||
owner << "<span class='notice'>You drop [arm_item] to activate [src]!</span>"
|
||||
to_chat(owner, "<span class='notice'>You drop [arm_item] to activate [src]!</span>")
|
||||
|
||||
var/result = (zone == "r_arm" ? owner.put_in_r_hand(holder) : owner.put_in_l_hand(holder))
|
||||
if(!result)
|
||||
owner << "<span class='warning'>Your [src] fails to activate!</span>"
|
||||
to_chat(owner, "<span class='warning'>Your [src] fails to activate!</span>")
|
||||
return
|
||||
|
||||
// Activate the hand that now holds our item.
|
||||
@@ -116,7 +116,7 @@
|
||||
|
||||
/obj/item/organ/cyberimp/arm/ui_action_click()
|
||||
if(crit_fail || (!holder && !contents.len))
|
||||
owner << "<span class='warning'>The implant doesn't respond. It seems to be broken...</span>"
|
||||
to_chat(owner, "<span class='warning'>The implant doesn't respond. It seems to be broken...</span>")
|
||||
return
|
||||
|
||||
// You can emag the arm-mounted implant by activating it while holding emag in it's hand.
|
||||
@@ -141,7 +141,7 @@
|
||||
Retract()
|
||||
owner.visible_message("<span class='danger'>A loud bang comes from [owner]\'s [zone == "r_arm" ? "right" : "left"] arm!</span>")
|
||||
playsound(get_turf(owner), 'sound/weapons/flashbang.ogg', 100, 1)
|
||||
owner << "<span class='userdanger'>You feel an explosion erupt inside your [zone == "r_arm" ? "right" : "left"] arm as your implant breaks!</span>"
|
||||
to_chat(owner, "<span class='userdanger'>You feel an explosion erupt inside your [zone == "r_arm" ? "right" : "left"] arm as your implant breaks!</span>")
|
||||
owner.adjust_fire_stacks(20)
|
||||
owner.IgniteMob()
|
||||
owner.adjustFireLoss(25)
|
||||
@@ -184,7 +184,7 @@
|
||||
|
||||
/obj/item/organ/cyberimp/arm/toolset/emag_act()
|
||||
if(!(locate(/obj/item/weapon/kitchen/knife/combat/cyborg) in items_list))
|
||||
usr << "<span class='notice'>You unlock [src]'s integrated knife!</span>"
|
||||
to_chat(usr, "<span class='notice'>You unlock [src]'s integrated knife!</span>")
|
||||
items_list += new /obj/item/weapon/kitchen/knife/combat/cyborg(src)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
if(owner.nutrition <= hunger_threshold)
|
||||
synthesizing = TRUE
|
||||
owner << "<span class='notice'>You feel less hungry...</span>"
|
||||
to_chat(owner, "<span class='notice'>You feel less hungry...</span>")
|
||||
owner.nutrition += 50
|
||||
sleep(50)
|
||||
synthesizing = FALSE
|
||||
@@ -31,7 +31,7 @@
|
||||
if(!owner)
|
||||
return
|
||||
owner.reagents.add_reagent("bad_food", poison_amount / severity)
|
||||
owner << "<span class='warning'>You feel like your insides are burning.</span>"
|
||||
to_chat(owner, "<span class='warning'>You feel like your insides are burning.</span>")
|
||||
|
||||
|
||||
/obj/item/organ/cyberimp/chest/nutriment/plus
|
||||
@@ -61,7 +61,7 @@
|
||||
else
|
||||
cooldown = revive_cost + world.time
|
||||
reviving = FALSE
|
||||
owner << "<span class='notice'>Your reviver implant shuts down and starts recharging. It will be ready again in [revive_cost/10] seconds.</span>"
|
||||
to_chat(owner, "<span class='notice'>Your reviver implant shuts down and starts recharging. It will be ready again in [revive_cost/10] seconds.</span>")
|
||||
return
|
||||
|
||||
if(cooldown > world.time)
|
||||
@@ -73,7 +73,7 @@
|
||||
|
||||
revive_cost = 0
|
||||
reviving = TRUE
|
||||
owner << "<span class='notice'>You feel a faint buzzing as your reviver implant starts patching your wounds...</span>"
|
||||
to_chat(owner, "<span class='notice'>You feel a faint buzzing as your reviver implant starts patching your wounds...</span>")
|
||||
|
||||
/obj/item/organ/cyberimp/chest/reviver/proc/heal()
|
||||
if(owner.getOxyLoss())
|
||||
@@ -102,7 +102,7 @@
|
||||
var/mob/living/carbon/human/H = owner
|
||||
if(H.stat != DEAD && prob(50 / severity) && H.can_heartattack())
|
||||
H.set_heartattack(TRUE)
|
||||
H << "<span class='userdanger'>You feel a horrible agony in your chest!</span>"
|
||||
to_chat(H, "<span class='userdanger'>You feel a horrible agony in your chest!</span>")
|
||||
addtimer(CALLBACK(src, .proc/undo_heart_attack), 600 / severity)
|
||||
|
||||
/obj/item/organ/cyberimp/chest/reviver/proc/undo_heart_attack()
|
||||
@@ -111,7 +111,7 @@
|
||||
return
|
||||
H.set_heartattack(FALSE)
|
||||
if(H.stat == CONSCIOUS)
|
||||
H << "<span class='notice'>You feel your heart beating again!</span>"
|
||||
to_chat(H, "<span class='notice'>You feel your heart beating again!</span>")
|
||||
|
||||
|
||||
/obj/item/organ/cyberimp/chest/thrusters
|
||||
@@ -146,17 +146,17 @@
|
||||
if(!on)
|
||||
if(crit_fail)
|
||||
if(!silent)
|
||||
owner << "<span class='warning'>Your thrusters set seems to be broken!</span>"
|
||||
to_chat(owner, "<span class='warning'>Your thrusters set seems to be broken!</span>")
|
||||
return 0
|
||||
on = 1
|
||||
if(allow_thrust(0.01))
|
||||
ion_trail.start()
|
||||
if(!silent)
|
||||
owner << "<span class='notice'>You turn your thrusters set on.</span>"
|
||||
to_chat(owner, "<span class='notice'>You turn your thrusters set on.</span>")
|
||||
else
|
||||
ion_trail.stop()
|
||||
if(!silent)
|
||||
owner << "<span class='notice'>You turn your thrusters set off.</span>"
|
||||
to_chat(owner, "<span class='notice'>You turn your thrusters set off.</span>")
|
||||
on = 0
|
||||
update_icon()
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
return
|
||||
var/stun_amount = 5 + (severity-1 ? 0 : 5)
|
||||
owner.Stun(stun_amount)
|
||||
owner << "<span class='warning'>Your body seizes up!</span>"
|
||||
to_chat(owner, "<span class='warning'>Your body seizes up!</span>")
|
||||
return stun_amount
|
||||
|
||||
|
||||
@@ -56,17 +56,17 @@
|
||||
|
||||
var/list/L = owner.get_empty_held_indexes()
|
||||
if(LAZYLEN(L) == owner.held_items.len)
|
||||
owner << "<span class='notice'>You are not holding any items, your hands relax...</span>"
|
||||
to_chat(owner, "<span class='notice'>You are not holding any items, your hands relax...</span>")
|
||||
active = 0
|
||||
stored_items = list()
|
||||
else
|
||||
for(var/obj/item/I in stored_items)
|
||||
owner << "<span class='notice'>Your [owner.get_held_index_name(owner.get_held_index_of_item(I))]'s grip tightens.</span>"
|
||||
to_chat(owner, "<span class='notice'>Your [owner.get_held_index_name(owner.get_held_index_of_item(I))]'s grip tightens.</span>")
|
||||
I.flags |= NODROP
|
||||
|
||||
else
|
||||
release_items()
|
||||
owner << "<span class='notice'>Your hands relax...</span>"
|
||||
to_chat(owner, "<span class='notice'>Your hands relax...</span>")
|
||||
|
||||
|
||||
/obj/item/organ/cyberimp/brain/anti_drop/emp_act(severity)
|
||||
@@ -80,7 +80,7 @@
|
||||
for(var/obj/item/I in stored_items)
|
||||
A = pick(oview(range))
|
||||
I.throw_at(A, range, 2)
|
||||
owner << "<span class='warning'>Your [owner.get_held_index_name(owner.get_held_index_of_item(I))] spasms and throws the [I.name]!</span>"
|
||||
to_chat(owner, "<span class='warning'>Your [owner.get_held_index_name(owner.get_held_index_of_item(I))] spasms and throws the [I.name]!</span>")
|
||||
stored_items = list()
|
||||
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
|
||||
/obj/item/organ/cyberimp/mouth/breathing_tube/emp_act(severity)
|
||||
if(prob(60/severity))
|
||||
owner << "<span class='warning'>Your breathing tube suddenly closes!</span>"
|
||||
to_chat(owner, "<span class='warning'>Your breathing tube suddenly closes!</span>")
|
||||
owner.losebreath += 2
|
||||
|
||||
|
||||
|
||||
@@ -17,10 +17,10 @@
|
||||
|
||||
/obj/item/device/autoimplanter/attack_self(mob/user)//when the object it used...
|
||||
if(!uses)
|
||||
user << "<span class='warning'>[src] has already been used. The tools are dull and won't reactivate.</span>"
|
||||
to_chat(user, "<span class='warning'>[src] has already been used. The tools are dull and won't reactivate.</span>")
|
||||
return
|
||||
else if(!storedorgan)
|
||||
user << "<span class='notice'>[src] currently has no implant stored.</span>"
|
||||
to_chat(user, "<span class='notice'>[src] currently has no implant stored.</span>")
|
||||
return
|
||||
storedorgan.Insert(user)//insert stored organ into the user
|
||||
user.visible_message("<span class='notice'>[user] presses a button on [src], and you hear a short mechanical noise.</span>", "<span class='notice'>You feel a sharp sting as [src] plunges into your body.</span>")
|
||||
@@ -34,23 +34,23 @@
|
||||
/obj/item/device/autoimplanter/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, organ_type))
|
||||
if(storedorgan)
|
||||
user << "<span class='notice'>[src] already has an implant stored.</span>"
|
||||
to_chat(user, "<span class='notice'>[src] already has an implant stored.</span>")
|
||||
return
|
||||
else if(!uses)
|
||||
user << "<span class='notice'>[src] has already been used up.</span>"
|
||||
to_chat(user, "<span class='notice'>[src] has already been used up.</span>")
|
||||
return
|
||||
if(!user.drop_item())
|
||||
return
|
||||
I.loc = src
|
||||
storedorgan = I
|
||||
user << "<span class='notice'>You insert the [I] into [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You insert the [I] into [src].</span>")
|
||||
else if(istype(I, /obj/item/weapon/screwdriver))
|
||||
if(!storedorgan)
|
||||
user << "<span class='notice'>There's no implant in [src] for you to remove.</span>"
|
||||
to_chat(user, "<span class='notice'>There's no implant in [src] for you to remove.</span>")
|
||||
else
|
||||
var/turf/open/floorloc = get_turf(user)
|
||||
floorloc.contents += contents
|
||||
user << "<span class='notice'>You remove the [storedorgan] from [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You remove the [storedorgan] from [src].</span>")
|
||||
playsound(get_turf(user), I.usesound, 50, 1)
|
||||
storedorgan = null
|
||||
if(uses != INFINITE)
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
/obj/item/organ/examine(mob/user)
|
||||
..()
|
||||
if(status == ORGAN_ROBOTIC && crit_fail)
|
||||
user << "<span class='warning'>[src] seems to be broken!</span>"
|
||||
to_chat(user, "<span class='warning'>[src] seems to be broken!</span>")
|
||||
|
||||
|
||||
/obj/item/organ/proc/prepare_eat()
|
||||
@@ -181,7 +181,7 @@
|
||||
var/mob/living/carbon/human/H = owner
|
||||
if(H.dna && !(NOBLOOD in H.dna.species.species_traits))
|
||||
H.blood_volume = max(H.blood_volume - blood_loss, 0)
|
||||
H << "<span class = 'userdanger'>You have to keep pumping your blood!</span>"
|
||||
to_chat(H, "<span class = 'userdanger'>You have to keep pumping your blood!</span>")
|
||||
if(add_colour)
|
||||
H.add_client_colour(/datum/client_colour/cursed_heart_blood) //bloody screen so real
|
||||
add_colour = FALSE
|
||||
@@ -191,7 +191,7 @@
|
||||
/obj/item/organ/heart/cursed/Insert(mob/living/carbon/M, special = 0)
|
||||
..()
|
||||
if(owner)
|
||||
owner << "<span class ='userdanger'>Your heart has been replaced with a cursed one, you have to pump this one manually otherwise you'll die!</span>"
|
||||
to_chat(owner, "<span class ='userdanger'>Your heart has been replaced with a cursed one, you have to pump this one manually otherwise you'll die!</span>")
|
||||
|
||||
/datum/action/item_action/organ_action/cursed_heart
|
||||
name = "Pump your blood"
|
||||
@@ -203,12 +203,12 @@
|
||||
var/obj/item/organ/heart/cursed/cursed_heart = target
|
||||
|
||||
if(world.time < (cursed_heart.last_pump + (cursed_heart.pump_delay-10))) //no spam
|
||||
owner << "<span class='userdanger'>Too soon!</span>"
|
||||
to_chat(owner, "<span class='userdanger'>Too soon!</span>")
|
||||
return
|
||||
|
||||
cursed_heart.last_pump = world.time
|
||||
playsound(owner,'sound/effects/singlebeat.ogg',40,1)
|
||||
owner << "<span class = 'notice'>Your heart beats.</span>"
|
||||
to_chat(owner, "<span class = 'notice'>Your heart beats.</span>")
|
||||
|
||||
var/mob/living/carbon/human/H = owner
|
||||
if(istype(H))
|
||||
@@ -577,10 +577,10 @@
|
||||
var/datum/species/abductor/Byy = H.dna.species
|
||||
if(Ayy.team != Byy.team)
|
||||
continue
|
||||
H << rendered
|
||||
to_chat(H, rendered)
|
||||
for(var/mob/M in dead_mob_list)
|
||||
var/link = FOLLOW_LINK(M, user)
|
||||
M << "[link] [rendered]"
|
||||
to_chat(M, "[link] [rendered]")
|
||||
return ""
|
||||
|
||||
/obj/item/organ/tongue/zombie
|
||||
@@ -704,6 +704,8 @@
|
||||
return 0
|
||||
|
||||
/mob/living/carbon/regenerate_organs()
|
||||
CHECK_DNA_AND_SPECIES(src)
|
||||
|
||||
if(!(NOBREATH in dna.species.species_traits) && !getorganslot("lungs"))
|
||||
var/obj/item/organ/lungs/L = new()
|
||||
L.Insert(src)
|
||||
@@ -747,18 +749,21 @@
|
||||
var/sight_flags = 0
|
||||
var/see_in_dark = 2
|
||||
var/tint = 0
|
||||
var/eye_color = "fff"
|
||||
var/eye_color = "" //set to a hex code to override a mob's eye color
|
||||
var/old_eye_color = "fff"
|
||||
var/flash_protect = 0
|
||||
var/see_invisible = SEE_INVISIBLE_LIVING
|
||||
|
||||
/obj/item/organ/eyes/Insert(mob/living/carbon/M, special = 0)
|
||||
..()
|
||||
if(ishuman(owner) && eye_color)
|
||||
if(ishuman(owner))
|
||||
var/mob/living/carbon/human/HMN = owner
|
||||
old_eye_color = HMN.eye_color
|
||||
HMN.eye_color = eye_color
|
||||
HMN.regenerate_icons()
|
||||
if(eye_color)
|
||||
HMN.eye_color = eye_color
|
||||
HMN.regenerate_icons()
|
||||
else
|
||||
eye_color = HMN.eye_color
|
||||
M.update_tint()
|
||||
owner.update_sight()
|
||||
|
||||
@@ -812,7 +817,7 @@
|
||||
if(severity > 1)
|
||||
if(prob(10 * severity))
|
||||
return
|
||||
owner << "<span class='warning'>Static obfuscates your vision!</span>"
|
||||
to_chat(owner, "<span class='warning'>Static obfuscates your vision!</span>")
|
||||
owner.flash_act(visual = 1)
|
||||
|
||||
/obj/item/organ/eyes/robotic/xray
|
||||
@@ -846,11 +851,11 @@
|
||||
|
||||
/obj/item/organ/eyes/robotic/flashlight/Insert(var/mob/living/carbon/M, var/special = 0)
|
||||
..()
|
||||
M.AddLuminosity(15)
|
||||
set_light(15)
|
||||
|
||||
|
||||
/obj/item/organ/eyes/robotic/flashlight/Remove(var/mob/living/carbon/M, var/special = 0)
|
||||
M.AddLuminosity(-15)
|
||||
set_light(-15)
|
||||
..()
|
||||
|
||||
// Welding shield implant
|
||||
|
||||
@@ -101,7 +101,7 @@ var/static/regex/multispin_words = regex("like a record baby|right round")
|
||||
. = ..()
|
||||
if(!IsAvailable())
|
||||
if(world.time < cords.next_command)
|
||||
owner << "<span class='notice'>You must wait [(cords.next_command - world.time)/10] seconds before Speaking again.</span>"
|
||||
to_chat(owner, "<span class='notice'>You must wait [(cords.next_command - world.time)/10] seconds before Speaking again.</span>")
|
||||
return
|
||||
var/command = input(owner, "Speak with the Voice of God", "Command")
|
||||
if(QDELETED(src) || QDELETED(owner))
|
||||
@@ -112,12 +112,12 @@ var/static/regex/multispin_words = regex("like a record baby|right round")
|
||||
|
||||
/obj/item/organ/vocal_cords/colossus/can_speak_with()
|
||||
if(world.time < next_command)
|
||||
owner << "<span class='notice'>You must wait [(next_command - world.time)/10] seconds before Speaking again.</span>"
|
||||
to_chat(owner, "<span class='notice'>You must wait [(next_command - world.time)/10] seconds before Speaking again.</span>")
|
||||
return FALSE
|
||||
if(!owner)
|
||||
return FALSE
|
||||
if(!owner.can_speak())
|
||||
owner << "<span class='warning'>You are unable to speak!</span>"
|
||||
to_chat(owner, "<span class='warning'>You are unable to speak!</span>")
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
|
||||
Reference in New Issue
Block a user