mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-12 11:13:16 +00:00
@@ -285,11 +285,14 @@
|
|||||||
playsound(src.loc, 'sound/effects/glass_step.ogg', 50, 1)
|
playsound(src.loc, 'sound/effects/glass_step.ogg', 50, 1)
|
||||||
if(ishuman(M))
|
if(ishuman(M))
|
||||||
var/mob/living/carbon/human/H = M
|
var/mob/living/carbon/human/H = M
|
||||||
|
|
||||||
|
if(H.species.flags & IS_SYNTHETIC)
|
||||||
|
return
|
||||||
|
|
||||||
if( !H.shoes && ( !H.wear_suit || !(H.wear_suit.body_parts_covered & FEET) ) )
|
if( !H.shoes && ( !H.wear_suit || !(H.wear_suit.body_parts_covered & FEET) ) )
|
||||||
var/datum/organ/external/affecting = H.get_organ(pick("l_foot", "r_foot"))
|
var/datum/organ/external/affecting = H.get_organ(pick("l_foot", "r_foot"))
|
||||||
if(affecting.status & ORGAN_ROBOT)
|
if(affecting.status & ORGAN_ROBOT)
|
||||||
return
|
return
|
||||||
|
|
||||||
H.Weaken(3)
|
H.Weaken(3)
|
||||||
if(affecting.take_damage(5, 0))
|
if(affecting.take_damage(5, 0))
|
||||||
H.UpdateDamageIcon()
|
H.UpdateDamageIcon()
|
||||||
|
|||||||
@@ -449,11 +449,15 @@
|
|||||||
item_state = "crowbar_red"
|
item_state = "crowbar_red"
|
||||||
|
|
||||||
/obj/item/weapon/weldingtool/attack(mob/M as mob, mob/user as mob)
|
/obj/item/weapon/weldingtool/attack(mob/M as mob, mob/user as mob)
|
||||||
|
|
||||||
if(hasorgans(M))
|
if(hasorgans(M))
|
||||||
|
|
||||||
var/datum/organ/external/S = M:organs_by_name[user.zone_sel.selecting]
|
var/datum/organ/external/S = M:organs_by_name[user.zone_sel.selecting]
|
||||||
|
|
||||||
if (!S) return
|
if (!S) return
|
||||||
if(!(S.status & ORGAN_ROBOT) || user.a_intent != "help")
|
if(!(S.status & ORGAN_ROBOT) || user.a_intent != "help")
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
if(S.brute_dam)
|
if(S.brute_dam)
|
||||||
S.heal_damage(15,0,0,1)
|
S.heal_damage(15,0,0,1)
|
||||||
if(user != M)
|
if(user != M)
|
||||||
@@ -464,7 +468,26 @@
|
|||||||
user.visible_message("\red \The [user] patches some dents on their [S.display_name] with \the [src]",\
|
user.visible_message("\red \The [user] patches some dents on their [S.display_name] with \the [src]",\
|
||||||
"\red You patch some dents on your [S.display_name]",\
|
"\red You patch some dents on your [S.display_name]",\
|
||||||
"You hear a welder.")
|
"You hear a welder.")
|
||||||
else
|
return
|
||||||
user << "Nothing to fix!"
|
|
||||||
|
if(istype(M,/mob/living/carbon/human))
|
||||||
|
|
||||||
|
var/mob/living/carbon/human/H = M
|
||||||
|
|
||||||
|
if(H.species.flags & IS_SYNTHETIC)
|
||||||
|
|
||||||
|
if(H.getBruteLoss() > 0)
|
||||||
|
|
||||||
|
if(M == user)
|
||||||
|
user << "\red You can't repair damage to your own body - it's against OH&S."
|
||||||
|
return
|
||||||
|
|
||||||
|
user.visible_message("\red \The [user] patches some dents on \the [M] with \the [src]",\
|
||||||
|
"\red You patch some of the dents on \the [M].",\
|
||||||
|
"You hear a welder.")
|
||||||
|
H.heal_overall_damage(5,0)
|
||||||
|
return
|
||||||
|
|
||||||
|
user << "Nothing to fix!"
|
||||||
else
|
else
|
||||||
return ..()
|
return ..()
|
||||||
|
|||||||
@@ -63,7 +63,7 @@
|
|||||||
hud_list[IMPTRACK_HUD] = image('icons/mob/hud.dmi', src, "hudblank")
|
hud_list[IMPTRACK_HUD] = image('icons/mob/hud.dmi', src, "hudblank")
|
||||||
hud_list[SPECIALROLE_HUD] = image('icons/mob/hud.dmi', src, "hudblank")
|
hud_list[SPECIALROLE_HUD] = image('icons/mob/hud.dmi', src, "hudblank")
|
||||||
hud_list[STATUS_HUD_OOC] = image('icons/mob/hud.dmi', src, "hudhealthy")
|
hud_list[STATUS_HUD_OOC] = image('icons/mob/hud.dmi', src, "hudhealthy")
|
||||||
|
|
||||||
|
|
||||||
..()
|
..()
|
||||||
|
|
||||||
@@ -860,6 +860,10 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
/mob/living/carbon/human/proc/vomit()
|
/mob/living/carbon/human/proc/vomit()
|
||||||
|
|
||||||
|
if(species.flags & IS_SYNTHETIC)
|
||||||
|
return //Machines don't throw up.
|
||||||
|
|
||||||
if(!lastpuke)
|
if(!lastpuke)
|
||||||
lastpuke = 1
|
lastpuke = 1
|
||||||
src << "<spawn class='warning'>You feel nauseous..."
|
src << "<spawn class='warning'>You feel nauseous..."
|
||||||
|
|||||||
@@ -73,6 +73,10 @@
|
|||||||
|
|
||||||
/mob/living/carbon/human/adjustCloneLoss(var/amount)
|
/mob/living/carbon/human/adjustCloneLoss(var/amount)
|
||||||
..()
|
..()
|
||||||
|
|
||||||
|
if(species.flags & IS_SYNTHETIC)
|
||||||
|
return
|
||||||
|
|
||||||
var/heal_prob = max(0, 80 - getCloneLoss())
|
var/heal_prob = max(0, 80 - getCloneLoss())
|
||||||
var/mut_prob = min(80, getCloneLoss()+10)
|
var/mut_prob = min(80, getCloneLoss()+10)
|
||||||
if (amount > 0)
|
if (amount > 0)
|
||||||
|
|||||||
@@ -225,6 +225,9 @@
|
|||||||
|
|
||||||
proc/handle_mutations_and_radiation()
|
proc/handle_mutations_and_radiation()
|
||||||
|
|
||||||
|
if(species.flags & IS_SYNTHETIC) //Robots don't suffer from mutations or radloss.
|
||||||
|
return
|
||||||
|
|
||||||
if(getFireLoss())
|
if(getFireLoss())
|
||||||
if((COLD_RESISTANCE in mutations) || (prob(1)))
|
if((COLD_RESISTANCE in mutations) || (prob(1)))
|
||||||
heal_organ_damage(0,1)
|
heal_organ_damage(0,1)
|
||||||
@@ -249,6 +252,7 @@
|
|||||||
radiation = 0
|
radiation = 0
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
if(species.flags & RAD_ABSORB)
|
if(species.flags & RAD_ABSORB)
|
||||||
var/rads = radiation/25
|
var/rads = radiation/25
|
||||||
radiation -= rads
|
radiation -= rads
|
||||||
@@ -258,8 +262,6 @@
|
|||||||
adjustToxLoss(-(rads))
|
adjustToxLoss(-(rads))
|
||||||
updatehealth()
|
updatehealth()
|
||||||
return
|
return
|
||||||
if(species.flags & IS_SYNTHETIC)
|
|
||||||
return
|
|
||||||
|
|
||||||
var/damage = 0
|
var/damage = 0
|
||||||
switch(radiation)
|
switch(radiation)
|
||||||
|
|||||||
@@ -515,8 +515,6 @@ This function completely restores a damaged organ to perfect condition.
|
|||||||
|
|
||||||
var/obj/organ //Dropped limb object
|
var/obj/organ //Dropped limb object
|
||||||
switch(body_part)
|
switch(body_part)
|
||||||
if(LOWER_TORSO)
|
|
||||||
owner << "\red You are now sterile."
|
|
||||||
if(HEAD)
|
if(HEAD)
|
||||||
if(owner.species.flags & IS_SYNTHETIC)
|
if(owner.species.flags & IS_SYNTHETIC)
|
||||||
organ= new /obj/item/weapon/organ/head/posi(owner.loc, owner)
|
organ= new /obj/item/weapon/organ/head/posi(owner.loc, owner)
|
||||||
|
|||||||
@@ -638,11 +638,14 @@ obj/structure/cable/proc/cableColor(var/colorC)
|
|||||||
|
|
||||||
/obj/item/weapon/cable_coil/attack(mob/M as mob, mob/user as mob)
|
/obj/item/weapon/cable_coil/attack(mob/M as mob, mob/user as mob)
|
||||||
if(hasorgans(M))
|
if(hasorgans(M))
|
||||||
|
|
||||||
var/datum/organ/external/S = M:get_organ(user.zone_sel.selecting)
|
var/datum/organ/external/S = M:get_organ(user.zone_sel.selecting)
|
||||||
if(!(S.status & ORGAN_ROBOT) || user.a_intent != "help")
|
if(!(S.status & ORGAN_ROBOT) || user.a_intent != "help")
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
if(S.burn_dam > 0 && use(1))
|
if(S.burn_dam > 0 && use(1))
|
||||||
S.heal_damage(0,15,0,1)
|
S.heal_damage(0,15,0,1)
|
||||||
|
|
||||||
if(user != M)
|
if(user != M)
|
||||||
user.visible_message("<span class='notice'>\The [user] repairs some burn damage on [M]'s [S.display_name] with \the [src]</span>",\
|
user.visible_message("<span class='notice'>\The [user] repairs some burn damage on [M]'s [S.display_name] with \the [src]</span>",\
|
||||||
"<span class='notice'>\The [user] repairs some burn damage on your [S.display_name]</span>",\
|
"<span class='notice'>\The [user] repairs some burn damage on your [S.display_name]</span>",\
|
||||||
@@ -651,7 +654,28 @@ obj/structure/cable/proc/cableColor(var/colorC)
|
|||||||
user.visible_message("<span class='notice'>\The [user] repairs some burn damage on their [S.display_name] with \the [src]</span>",\
|
user.visible_message("<span class='notice'>\The [user] repairs some burn damage on their [S.display_name] with \the [src]</span>",\
|
||||||
"<span class='notice'>You repair some burn damage on your [S.display_name]</span>",\
|
"<span class='notice'>You repair some burn damage on your [S.display_name]</span>",\
|
||||||
"You hear wires being cut.")
|
"You hear wires being cut.")
|
||||||
else
|
|
||||||
user << "Nothing to fix!"
|
return
|
||||||
|
|
||||||
|
if(istype(M,/mob/living/carbon/human))
|
||||||
|
|
||||||
|
var/mob/living/carbon/human/H = M
|
||||||
|
|
||||||
|
if(H.species.flags & IS_SYNTHETIC)
|
||||||
|
|
||||||
|
if(H.getFireLoss() > 0)
|
||||||
|
|
||||||
|
if(M == user)
|
||||||
|
user << "\red You can't repair damage to your own body - it's against OH&S."
|
||||||
|
return
|
||||||
|
|
||||||
|
user.visible_message("<span class='notice'>\The [user] repairs some burn damage on [M] with \the [src]</span>",\
|
||||||
|
"<span class='notice'>You repair some of \the [M]'s burn damage.</span>",\
|
||||||
|
"You hear wires being cut.")
|
||||||
|
H.heal_overall_damage(0,5)
|
||||||
|
return
|
||||||
|
|
||||||
|
user << "Nothing to fix!"
|
||||||
|
|
||||||
else
|
else
|
||||||
return ..()
|
return ..()
|
||||||
|
|||||||
@@ -27,6 +27,13 @@
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
if(M == user)
|
if(M == user)
|
||||||
|
|
||||||
|
if(istype(M,/mob/living/carbon/human))
|
||||||
|
var/mob/living/carbon/human/H = M
|
||||||
|
if(H.species.flags & IS_SYNTHETIC)
|
||||||
|
H << "\red You have a monitor for a head, where do you think you're going to put that?"
|
||||||
|
return
|
||||||
|
|
||||||
M << "\blue You swallow a gulp of [src]."
|
M << "\blue You swallow a gulp of [src]."
|
||||||
if(reagents.total_volume)
|
if(reagents.total_volume)
|
||||||
reagents.trans_to_ingest(M, gulp_size)
|
reagents.trans_to_ingest(M, gulp_size)
|
||||||
@@ -35,6 +42,11 @@
|
|||||||
return 1
|
return 1
|
||||||
else if( istype(M, /mob/living/carbon/human) )
|
else if( istype(M, /mob/living/carbon/human) )
|
||||||
|
|
||||||
|
var/mob/living/carbon/human/H = M
|
||||||
|
if(H.species.flags & IS_SYNTHETIC)
|
||||||
|
H << "\red They have a monitor for a head, where do you think you're going to put that?"
|
||||||
|
return
|
||||||
|
|
||||||
for(var/mob/O in viewers(world.view, user))
|
for(var/mob/O in viewers(world.view, user))
|
||||||
O.show_message("\red [user] attempts to feed [M] [src].", 1)
|
O.show_message("\red [user] attempts to feed [M] [src].", 1)
|
||||||
if(!do_mob(user, M)) return
|
if(!do_mob(user, M)) return
|
||||||
|
|||||||
@@ -37,9 +37,15 @@
|
|||||||
M.drop_from_inventory(src) //so icons update :[
|
M.drop_from_inventory(src) //so icons update :[
|
||||||
del(src)
|
del(src)
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
if(istype(M, /mob/living/carbon))
|
if(istype(M, /mob/living/carbon))
|
||||||
if(M == user) //If you're eating it yourself.
|
var/fullness = M.nutrition + (M.reagents.get_reagent_amount("nutriment") * 25)
|
||||||
var/fullness = M.nutrition + (M.reagents.get_reagent_amount("nutriment") * 25)
|
if(M == user) //If you're eating it yourself
|
||||||
|
if(istype(M,/mob/living/carbon/human))
|
||||||
|
var/mob/living/carbon/human/H = M
|
||||||
|
if(H.species.flags & IS_SYNTHETIC)
|
||||||
|
H << "\red You have a monitor for a head, where do you think you're going to put that?"
|
||||||
|
return
|
||||||
if (fullness <= 50)
|
if (fullness <= 50)
|
||||||
M << "\red You hungrily chew out a piece of [src] and gobble it!"
|
M << "\red You hungrily chew out a piece of [src] and gobble it!"
|
||||||
if (fullness > 50 && fullness <= 150)
|
if (fullness > 50 && fullness <= 150)
|
||||||
@@ -52,8 +58,14 @@
|
|||||||
M << "\red You cannot force any more of [src] to go down your throat."
|
M << "\red You cannot force any more of [src] to go down your throat."
|
||||||
return 0
|
return 0
|
||||||
else
|
else
|
||||||
|
if(istype(M,/mob/living/carbon/human))
|
||||||
|
var/mob/living/carbon/human/H = M
|
||||||
|
if(H.species.flags & IS_SYNTHETIC)
|
||||||
|
H << "\red They have a monitor for a head, where do you think you're going to put that?"
|
||||||
|
return
|
||||||
|
|
||||||
if(!istype(M, /mob/living/carbon/slime)) //If you're feeding it to someone else.
|
if(!istype(M, /mob/living/carbon/slime)) //If you're feeding it to someone else.
|
||||||
var/fullness = M.nutrition + (M.reagents.get_reagent_amount("nutriment") * 25)
|
|
||||||
if (fullness <= (550 * (1 + M.overeatduration / 1000)))
|
if (fullness <= (550 * (1 + M.overeatduration / 1000)))
|
||||||
for(var/mob/O in viewers(world.view, user))
|
for(var/mob/O in viewers(world.view, user))
|
||||||
O.show_message("\red [user] attempts to feed [M] [src].", 1)
|
O.show_message("\red [user] attempts to feed [M] [src].", 1)
|
||||||
|
|||||||
@@ -20,6 +20,13 @@
|
|||||||
return
|
return
|
||||||
attack(mob/M as mob, mob/user as mob, def_zone)
|
attack(mob/M as mob, mob/user as mob, def_zone)
|
||||||
if(M == user)
|
if(M == user)
|
||||||
|
|
||||||
|
if(istype(M, /mob/living/carbon/human))
|
||||||
|
var/mob/living/carbon/human/H = M
|
||||||
|
if(H.species.flags & IS_SYNTHETIC)
|
||||||
|
H << "\red You have a monitor for a head, where do you think you're going to put that?"
|
||||||
|
return
|
||||||
|
|
||||||
M << "\blue You swallow [src]."
|
M << "\blue You swallow [src]."
|
||||||
M.drop_from_inventory(src) //icon update
|
M.drop_from_inventory(src) //icon update
|
||||||
if(reagents.total_volume)
|
if(reagents.total_volume)
|
||||||
@@ -31,6 +38,11 @@
|
|||||||
|
|
||||||
else if(istype(M, /mob/living/carbon/human) )
|
else if(istype(M, /mob/living/carbon/human) )
|
||||||
|
|
||||||
|
var/mob/living/carbon/human/H = M
|
||||||
|
if(H.species.flags & IS_SYNTHETIC)
|
||||||
|
H << "\red They have a monitor for a head, where do you think you're going to put that?"
|
||||||
|
return
|
||||||
|
|
||||||
for(var/mob/O in viewers(world.view, user))
|
for(var/mob/O in viewers(world.view, user))
|
||||||
O.show_message("\red [user] attempts to force [M] to swallow [src].", 1)
|
O.show_message("\red [user] attempts to force [M] to swallow [src].", 1)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user