mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-19 02:54:41 +01:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
@@ -138,14 +138,6 @@
|
||||
if(hand) return drop_l_hand(Target)
|
||||
else return drop_r_hand(Target)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//TODO: phase out this proc
|
||||
/mob/proc/before_take_item(var/obj/item/W) //TODO: what is this?
|
||||
W.loc = null
|
||||
@@ -154,6 +146,27 @@
|
||||
update_icons()
|
||||
return
|
||||
|
||||
/mob/proc/delay_clothing_u_equip(obj/item/clothing/X as obj) // Bone White - delays unequipping by parameter. Requires W to be /obj/item/clothing/
|
||||
|
||||
if(!istype(X)) return 0
|
||||
|
||||
if(X.equipping == 1) return 0 // Item is already being (un)equipped
|
||||
|
||||
var/tempX = usr.x
|
||||
var/tempY = usr.y
|
||||
usr << "\blue You start unequipping the [X]."
|
||||
X.equipping = 1
|
||||
var/equip_time = round(X.equip_time/10)
|
||||
var/i
|
||||
for(i=1; i<=equip_time; i++)
|
||||
sleep (10) // Check if they've moved every 10 time units
|
||||
if ((tempX != usr.x) || (tempY != usr.y))
|
||||
src << "\red \The [X] is too fiddly to unequip whilst moving."
|
||||
X.equipping = 0
|
||||
return 0
|
||||
u_equip(X)
|
||||
usr << "\blue You have finished unequipping the [X]."
|
||||
X.equipping = 0
|
||||
|
||||
/mob/proc/u_equip(W as obj)
|
||||
if (W == r_hand)
|
||||
|
||||
@@ -1090,7 +1090,8 @@
|
||||
H.brainmob.mind.transfer_to(src)
|
||||
del(H)
|
||||
|
||||
for(var/datum/organ/internal/I in internal_organs)
|
||||
for(var/name in internal_organs_by_name)
|
||||
var/datum/organ/internal/I = internal_organs_by_name[name]
|
||||
I.damage = 0
|
||||
|
||||
for (var/ID in virus2)
|
||||
|
||||
@@ -11,8 +11,15 @@
|
||||
total_burn += O.burn_dam
|
||||
health = 100 - getOxyLoss() - getToxLoss() - getCloneLoss() - total_burn - total_brute
|
||||
//TODO: fix husking
|
||||
if( ((100 - total_burn) < config.health_threshold_dead) && stat == DEAD) //100 only being used as the magic human max health number, feel free to change it if you add a var for it -- Urist
|
||||
if( (((100 - total_burn) < config.health_threshold_dead) && stat == DEAD) && (!species.flags & IS_SYNTHETIC))//100 only being used as the magic human max health number, feel free to change it if you add a var for it -- Urist
|
||||
ChangeToHusk()
|
||||
if (species.flags & IS_SYNTHETIC)
|
||||
var/datum/organ/external/H = organs_by_name["head"]
|
||||
if (!H.amputated)
|
||||
if ((health >= (config.health_threshold_dead/100*75)) && stat == DEAD) //need to get them 25% away from death point before reviving them
|
||||
dead_mob_list -= src
|
||||
living_mob_list += src
|
||||
stat = CONSCIOUS
|
||||
return
|
||||
|
||||
/mob/living/carbon/human/getBrainLoss()
|
||||
|
||||
@@ -179,7 +179,6 @@ emp_act
|
||||
if(O.status & ORGAN_DESTROYED) continue
|
||||
O.emp_act(severity)
|
||||
for(var/datum/organ/internal/I in O.internal_organs)
|
||||
if(I.robotic == 0) continue
|
||||
I.emp_act(severity)
|
||||
..()
|
||||
|
||||
|
||||
@@ -1050,7 +1050,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
|
||||
|
||||
// Sobering multiplier.
|
||||
// Sober block grants quadruple the alcohol metabolism.
|
||||
var/sober_str=!(M_SOBER in mutations)?1:4
|
||||
// var/sober_str=!(M_SOBER in mutations)?1:4
|
||||
|
||||
updatehealth() //TODO
|
||||
if(!in_stasis)
|
||||
|
||||
@@ -82,28 +82,17 @@
|
||||
H.organs_by_name["r_foot"] = new/datum/organ/external/r_foot(H.organs_by_name["r_leg"])
|
||||
|
||||
if (name!="Slime People")
|
||||
H.internal_organs = list()
|
||||
H.internal_organs_by_name["heart"] = new/datum/organ/internal/heart(H)
|
||||
H.internal_organs_by_name["lungs"] = new/datum/organ/internal/lungs(H)
|
||||
H.internal_organs_by_name["liver"] = new/datum/organ/internal/liver(H)
|
||||
H.internal_organs_by_name["kidney"] = new/datum/organ/internal/kidney(H)
|
||||
H.internal_organs_by_name["brain"] = new/datum/organ/internal/brain(H)
|
||||
H.internal_organs_by_name["eyes"] = new/datum/organ/internal/eyes(H)
|
||||
new/datum/organ/internal/heart(H)
|
||||
new/datum/organ/internal/lungs(H)
|
||||
new/datum/organ/internal/liver(H)
|
||||
new/datum/organ/internal/kidney(H)
|
||||
new/datum/organ/internal/brain(H)
|
||||
new/datum/organ/internal/eyes(H)
|
||||
|
||||
for(var/name in H.organs_by_name)
|
||||
H.organs += H.organs_by_name[name]
|
||||
|
||||
for(var/datum/organ/external/O in H.organs)
|
||||
for(var/n in H.organs_by_name)
|
||||
var/datum/organ/external/O = H.organs_by_name[n]
|
||||
O.owner = H
|
||||
|
||||
if(flags & IS_SYNTHETIC)
|
||||
for(var/datum/organ/external/E in H.organs)
|
||||
if(E.status & ORGAN_CUT_AWAY || E.status & ORGAN_DESTROYED) continue
|
||||
E.status |= ORGAN_ROBOT
|
||||
for(var/datum/organ/internal/I in H.internal_organs)
|
||||
I.mechanize()
|
||||
|
||||
|
||||
H.organs += O
|
||||
return
|
||||
|
||||
/datum/species/proc/handle_breath(var/datum/gas_mixture/breath, var/mob/living/carbon/human/H)
|
||||
@@ -601,6 +590,38 @@
|
||||
var/datum/organ/external/O = H.organs_by_name["head"]
|
||||
O.droplimb(1)
|
||||
|
||||
/datum/species/machine/create_organs(var/mob/living/carbon/human/H)
|
||||
|
||||
H.organs = new /list()
|
||||
H.organs_by_name["chest"] = new/datum/organ/external/chest()
|
||||
H.organs_by_name["groin"] = new/datum/organ/external/groin(H.organs_by_name["chest"])
|
||||
H.organs_by_name["head"] = new/datum/organ/external/head(H.organs_by_name["chest"])
|
||||
H.organs_by_name["l_arm"] = new/datum/organ/external/l_arm(H.organs_by_name["chest"])
|
||||
H.organs_by_name["r_arm"] = new/datum/organ/external/r_arm(H.organs_by_name["chest"])
|
||||
H.organs_by_name["r_leg"] = new/datum/organ/external/r_leg(H.organs_by_name["groin"])
|
||||
H.organs_by_name["l_leg"] = new/datum/organ/external/l_leg(H.organs_by_name["groin"])
|
||||
H.organs_by_name["l_hand"] = new/datum/organ/external/l_hand(H.organs_by_name["l_arm"])
|
||||
H.organs_by_name["r_hand"] = new/datum/organ/external/r_hand(H.organs_by_name["r_arm"])
|
||||
H.organs_by_name["l_foot"] = new/datum/organ/external/l_foot(H.organs_by_name["l_leg"])
|
||||
H.organs_by_name["r_foot"] = new/datum/organ/external/r_foot(H.organs_by_name["r_leg"])
|
||||
|
||||
new/datum/organ/internal/heart/robotic(H)
|
||||
new/datum/organ/internal/lungs/robotic(H)
|
||||
new/datum/organ/internal/liver/robotic(H)
|
||||
new/datum/organ/internal/kidney/robotic(H)
|
||||
new/datum/organ/internal/brain/robotic(H)
|
||||
new/datum/organ/internal/eyes/robotic(H)
|
||||
|
||||
|
||||
for(var/n in H.organs_by_name)
|
||||
var/datum/organ/external/O = H.organs_by_name[n]
|
||||
O.owner = H
|
||||
if(!(O.status & ORGAN_CUT_AWAY || O.status & ORGAN_DESTROYED))
|
||||
O.status |= ORGAN_ROBOT
|
||||
H.organs += O
|
||||
return
|
||||
|
||||
|
||||
//Species unarmed attacks
|
||||
|
||||
/datum/unarmed_attack
|
||||
|
||||
+36
-2
@@ -105,8 +105,19 @@
|
||||
/mob/proc/attack_ui(slot)
|
||||
var/obj/item/W = get_active_hand()
|
||||
|
||||
//if(istype(W))
|
||||
// equip_to_slot_if_possible(W, slot)
|
||||
|
||||
if(istype(W))
|
||||
equip_to_slot_if_possible(W, slot)
|
||||
|
||||
if(W:rig_restrict_helmet)
|
||||
src << "\red You must fasten the helmet to a hardsuit first. (Target the head)" // Stop eva helms equipping.
|
||||
else
|
||||
if(W:equip_time > 0)
|
||||
delay_clothing_equip_to_slot_if_possible(W, slot)
|
||||
else
|
||||
equip_to_slot_if_possible(W, slot)
|
||||
|
||||
if(ishuman(src) && W == src:head)
|
||||
src:update_hair()
|
||||
|
||||
@@ -117,6 +128,29 @@
|
||||
return 1
|
||||
return 0
|
||||
|
||||
//This is a SAFE proc. Use this instead of equip_to_splot()!
|
||||
/mob/proc/delay_clothing_equip_to_slot_if_possible(obj/item/clothing/X as obj, slot, del_on_fail = 0, disable_warning = 0, redraw_mob = 1, delay_time = 0)
|
||||
if(!istype(X)) return 0
|
||||
|
||||
if(X.equipping == 1) return 0 // Item is already being equipped
|
||||
|
||||
var/tempX = usr.x
|
||||
var/tempY = usr.y
|
||||
usr << "\blue You start equipping the [X]."
|
||||
X.equipping = 1
|
||||
var/equip_time = round(X.equip_time/10)
|
||||
var/i
|
||||
for(i=1; i<=equip_time; i++)
|
||||
sleep (10) // Check if they've moved every 10 time units
|
||||
if ((tempX != usr.x) || (tempY != usr.y))
|
||||
src << "\red \The [X] is too fiddly to fasten whilst moving."
|
||||
X.equipping = 0
|
||||
return 0
|
||||
equip_to_slot_if_possible(X, slot)
|
||||
usr << "\blue You have finished equipping the [X]."
|
||||
X.equipping = 0
|
||||
|
||||
|
||||
//This is a SAFE proc. Use this instead of equip_to_splot()!
|
||||
//set del_on_fail to have it delete W if it fails to equip
|
||||
//set disable_warning to disable the 'you are unable to equip that' warning.
|
||||
@@ -1301,4 +1335,4 @@ mob/proc/yank_out_object()
|
||||
/mob/living/proc/handle_paralysed() // Currently only used by simple_animal.dm, treated as a special case in other mobs
|
||||
if(paralysis)
|
||||
AdjustParalysis(-1)
|
||||
return paralysis
|
||||
return paralysis
|
||||
|
||||
Reference in New Issue
Block a user