mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-24 04:27:35 +01:00
Merge branch 'master' of https://github.com/QuinnAggeler/Paradise into Paradise-drask
# Conflicts: # icons/mob/human_face.dmi
This commit is contained in:
@@ -28,10 +28,9 @@
|
||||
W.forceMove(src) //TODO: move to equipped?
|
||||
l_hand = W
|
||||
W.layer = 20 //TODO: move to equipped?
|
||||
// l_hand.screen_loc = ui_lhand
|
||||
W.equipped(src,slot_l_hand)
|
||||
if(client) client.screen |= W
|
||||
if(pulling == W) stop_pulling()
|
||||
if(pulling == W)
|
||||
stop_pulling()
|
||||
update_inv_l_hand()
|
||||
return 1
|
||||
return 0
|
||||
@@ -44,10 +43,9 @@
|
||||
W.forceMove(src)
|
||||
r_hand = W
|
||||
W.layer = 20
|
||||
// r_hand.screen_loc = ui_rhand
|
||||
W.equipped(src,slot_r_hand)
|
||||
if(client) client.screen |= W
|
||||
if(pulling == W) stop_pulling()
|
||||
if(pulling == W)
|
||||
stop_pulling()
|
||||
update_inv_r_hand()
|
||||
return 1
|
||||
return 0
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
large = 1
|
||||
|
||||
/mob/living/carbon/alien/humanoid/sentinel/large/update_icons()
|
||||
update_hud() //TODO: remove the need for this to be here
|
||||
overlays.Cut()
|
||||
if(stat == DEAD)
|
||||
icon_state = "prat_dead"
|
||||
|
||||
@@ -17,8 +17,6 @@
|
||||
pixel_x = -32
|
||||
|
||||
/mob/living/carbon/alien/humanoid/empress/large/update_icons()
|
||||
|
||||
update_hud() //TODO: remove the need for this to be here
|
||||
overlays.Cut()
|
||||
|
||||
if(stat == DEAD)
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
/mob/living/carbon/alien/humanoid/Login()
|
||||
..()
|
||||
update_hud()
|
||||
if(!isturf(loc))
|
||||
client.eye = loc
|
||||
client.perspective = EYE_PERSPECTIVE
|
||||
|
||||
@@ -31,29 +31,26 @@
|
||||
..()
|
||||
|
||||
|
||||
/mob/living/carbon/alien/humanoid/queen
|
||||
/mob/living/carbon/alien/humanoid/queen/handle_regular_hud_updates()
|
||||
..() //-Yvarov
|
||||
|
||||
handle_regular_hud_updates()
|
||||
|
||||
..() //-Yvarov
|
||||
|
||||
if (src.healths)
|
||||
if (src.stat != 2)
|
||||
switch(health)
|
||||
if(250 to INFINITY)
|
||||
src.healths.icon_state = "health0"
|
||||
if(175 to 250)
|
||||
src.healths.icon_state = "health1"
|
||||
if(100 to 175)
|
||||
src.healths.icon_state = "health2"
|
||||
if(50 to 100)
|
||||
src.healths.icon_state = "health3"
|
||||
if(0 to 50)
|
||||
src.healths.icon_state = "health4"
|
||||
else
|
||||
src.healths.icon_state = "health5"
|
||||
else
|
||||
src.healths.icon_state = "health6"
|
||||
if (healths)
|
||||
if (stat != DEAD)
|
||||
switch(health)
|
||||
if(250 to INFINITY)
|
||||
healths.icon_state = "health0"
|
||||
if(175 to 250)
|
||||
healths.icon_state = "health1"
|
||||
if(100 to 175)
|
||||
healths.icon_state = "health2"
|
||||
if(50 to 100)
|
||||
healths.icon_state = "health3"
|
||||
if(0 to 50)
|
||||
healths.icon_state = "health4"
|
||||
else
|
||||
healths.icon_state = "health5"
|
||||
else
|
||||
healths.icon_state = "health6"
|
||||
|
||||
|
||||
//Queen verbs
|
||||
@@ -81,7 +78,6 @@
|
||||
large = 1
|
||||
|
||||
/mob/living/carbon/alien/humanoid/queen/large/update_icons()
|
||||
update_hud() //TODO: remove the need for this to be here
|
||||
overlays.Cut()
|
||||
|
||||
if(stat == DEAD)
|
||||
|
||||
@@ -12,12 +12,10 @@
|
||||
var/list/overlays_standing[X_TOTAL_LAYERS]
|
||||
|
||||
/mob/living/carbon/alien/humanoid/update_icons()
|
||||
update_hud() //TODO: remove the need for this to be here
|
||||
overlays.Cut()
|
||||
for(var/image/I in overlays_standing)
|
||||
overlays += I
|
||||
|
||||
|
||||
if(stat == DEAD)
|
||||
//If we mostly took damage from fire
|
||||
if(fireloss > 125)
|
||||
@@ -65,7 +63,6 @@
|
||||
update_inv_r_hand(0)
|
||||
update_inv_l_hand(0)
|
||||
update_inv_pockets(0)
|
||||
update_hud()
|
||||
update_icons()
|
||||
update_fire()
|
||||
update_transform()
|
||||
@@ -76,14 +73,6 @@
|
||||
..()
|
||||
update_icons()
|
||||
|
||||
|
||||
/mob/living/carbon/alien/humanoid/update_hud()
|
||||
//TODO
|
||||
if (client)
|
||||
// if(other) client.screen |= hud_used.other //Not used
|
||||
// else client.screen -= hud_used.other //Not used
|
||||
client.screen |= contents
|
||||
|
||||
/mob/living/carbon/alien/humanoid/update_fire()
|
||||
overlays -= overlays_standing[X_FIRE_LAYER]
|
||||
if(on_fire)
|
||||
@@ -94,7 +83,16 @@
|
||||
overlays_standing[X_FIRE_LAYER] = null
|
||||
|
||||
/mob/living/carbon/alien/humanoid/update_inv_wear_suit(var/update_icons=1)
|
||||
if(client && hud_used)
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[slot_wear_suit]
|
||||
inv.update_icon()
|
||||
|
||||
if(wear_suit)
|
||||
if(client && hud_used && hud_used.hud_shown)
|
||||
if(hud_used.inventory_shown) //if the inventory is open ...
|
||||
wear_suit.screen_loc = ui_oclothing //TODO //...draw the item in the inventory screen
|
||||
client.screen += wear_suit //Either way, add the item to the HUD
|
||||
|
||||
var/t_state = wear_suit.item_state
|
||||
if(!t_state) t_state = wear_suit.icon_state
|
||||
var/image/standing = image("icon" = 'icons/mob/mob.dmi', "icon_state" = "[t_state]")
|
||||
@@ -105,8 +103,6 @@
|
||||
t_suit = "armor"
|
||||
standing.overlays += image("icon" = 'icons/effects/blood.dmi', "icon_state" = "[t_suit]blood")
|
||||
|
||||
//TODO
|
||||
wear_suit.screen_loc = ui_alien_oclothing
|
||||
if (istype(wear_suit, /obj/item/clothing/suit/straight_jacket))
|
||||
unEquip(handcuffed)
|
||||
drop_r_hand()
|
||||
@@ -139,6 +135,7 @@
|
||||
|
||||
|
||||
/mob/living/carbon/alien/humanoid/update_inv_r_hand(var/update_icons=1)
|
||||
..(1)
|
||||
if(r_hand)
|
||||
var/t_state = r_hand.item_state
|
||||
if(!t_state) t_state = r_hand.icon_state
|
||||
@@ -149,6 +146,7 @@
|
||||
if(update_icons) update_icons()
|
||||
|
||||
/mob/living/carbon/alien/humanoid/update_inv_l_hand(var/update_icons=1)
|
||||
..(1)
|
||||
if(l_hand)
|
||||
var/t_state = l_hand.item_state
|
||||
if(!t_state) t_state = l_hand.icon_state
|
||||
@@ -158,15 +156,6 @@
|
||||
overlays_standing[X_L_HAND_LAYER] = null
|
||||
if(update_icons) update_icons()
|
||||
|
||||
//Call when target overlay should be added/removed
|
||||
/mob/living/carbon/alien/humanoid/update_targeted(var/update_icons=1)
|
||||
if (targeted_by && target_locked)
|
||||
overlays_standing[TARGETED_LAYER] = target_locked
|
||||
else if (!targeted_by && target_locked)
|
||||
qdel(target_locked)
|
||||
if (!targeted_by)
|
||||
overlays_standing[TARGETED_LAYER] = null
|
||||
if(update_icons) update_icons()
|
||||
|
||||
//Xeno Overlays Indexes//////////
|
||||
#undef X_HEAD_LAYER
|
||||
|
||||
@@ -59,8 +59,8 @@
|
||||
to_chat(user, "This one seems particularly lifeless. Perhaps it will regain some of its luster later..")
|
||||
|
||||
/obj/item/organ/internal/brain/remove(var/mob/living/user,special = 0)
|
||||
|
||||
name = "[dna.real_name]'s [initial(name)]"
|
||||
if(dna)
|
||||
name = "[dna.real_name]'s [initial(name)]"
|
||||
|
||||
if(!owner) return ..() // Probably a redundant removal; just bail
|
||||
|
||||
|
||||
@@ -2,11 +2,6 @@
|
||||
var/canEnterVentWith = "/obj/item/weapon/implant=0&/obj/item/clothing/mask/facehugger=0&/obj/item/device/radio/borg=0&/obj/machinery/camera=0"
|
||||
var/datum/middleClickOverride/middleClickOverride = null
|
||||
|
||||
/mob/living/carbon/Login()
|
||||
..()
|
||||
update_hud()
|
||||
return
|
||||
|
||||
/mob/living/carbon/prepare_huds()
|
||||
..()
|
||||
prepare_data_huds()
|
||||
@@ -188,7 +183,7 @@
|
||||
|
||||
|
||||
|
||||
/mob/living/carbon/proc/swap_hand()
|
||||
/mob/living/carbon/swap_hand()
|
||||
var/obj/item/item_in_hand = src.get_active_hand()
|
||||
if(item_in_hand) //this segment checks if the item in your hand is twohanded.
|
||||
if(istype(item_in_hand,/obj/item/weapon/twohanded))
|
||||
@@ -196,20 +191,15 @@
|
||||
to_chat(usr, "<span class='warning'>Your other hand is too busy holding the [item_in_hand.name]</span>")
|
||||
return
|
||||
src.hand = !( src.hand )
|
||||
if(hud_used.l_hand_hud_object && hud_used.r_hand_hud_object)
|
||||
if(hand) //This being 1 means the left hand is in use
|
||||
hud_used.l_hand_hud_object.icon_state = "hand_active"
|
||||
hud_used.r_hand_hud_object.icon_state = "hand_inactive"
|
||||
else
|
||||
hud_used.l_hand_hud_object.icon_state = "hand_inactive"
|
||||
hud_used.r_hand_hud_object.icon_state = "hand_active"
|
||||
/*if (!( src.hand ))
|
||||
src.hands.dir = NORTH
|
||||
else
|
||||
src.hands.dir = SOUTH*/
|
||||
return
|
||||
if(hud_used && hud_used.inv_slots[slot_l_hand] && hud_used.inv_slots[slot_r_hand])
|
||||
var/obj/screen/inventory/hand/H
|
||||
H = hud_used.inv_slots[slot_l_hand]
|
||||
H.update_icon()
|
||||
H = hud_used.inv_slots[slot_r_hand]
|
||||
H.update_icon()
|
||||
|
||||
/mob/living/carbon/proc/activate_hand(var/selhand) //0 or "r" or "right" for right hand; 1 or "l" or "left" for left hand.
|
||||
|
||||
/mob/living/carbon/activate_hand(var/selhand) //0 or "r" or "right" for right hand; 1 or "l" or "left" for left hand.
|
||||
|
||||
if(istext(selhand))
|
||||
selhand = lowertext(selhand)
|
||||
@@ -761,7 +751,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
|
||||
buckled.user_unbuckle_mob(src,src)
|
||||
else
|
||||
if(src && buckled)
|
||||
src << "<span class='warning'>You fail to unbuckle yourself!</span>"
|
||||
to_chat(src, "<span class='warning'>You fail to unbuckle yourself!</span>")
|
||||
else
|
||||
buckled.user_unbuckle_mob(src,src)
|
||||
|
||||
@@ -856,6 +846,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
|
||||
clear_alert("handcuffed")
|
||||
update_action_buttons() //some of our action buttons might be unusable when we're handcuffed.
|
||||
update_inv_handcuffed()
|
||||
update_hud_handcuffed()
|
||||
|
||||
/mob/living/carbon/get_standard_pixel_y_offset(lying = 0)
|
||||
if(lying)
|
||||
|
||||
@@ -179,16 +179,17 @@
|
||||
continue
|
||||
if(species.flags & ALL_RPARTS) //If the user is a species who can have a robotic head...
|
||||
var/obj/item/organ/external/head/H = organs_by_name["head"]
|
||||
var/datum/robolimb/robohead = all_robolimbs[H.model]
|
||||
if(!H)
|
||||
return
|
||||
if(species.name in S.species_allowed) //If this is a hairstyle native to the user's species...
|
||||
if(H.model == "Morpheus Cyberkinetics") //Check to see if they have the default head.
|
||||
if(robohead.is_monitor && (robohead.company in S.models_allowed)) //Check to see if they have a head with an ipc-style screen and that the head's company is in the screen style's allowed models list.
|
||||
valid_hairstyles += hairstyle //Give them their hairstyles if they do.
|
||||
continue
|
||||
else //If they don't have the default head, they shouldn't be getting any hairstyles they wouldn't normally.
|
||||
continue
|
||||
else
|
||||
if(H.model == "Morpheus Cyberkinetics") //If the hairstyle is not native to the user's species, and they're using the default head, don't let them access it.
|
||||
if(robohead.is_monitor) //If the hair style is not native to the user's species and they're using a head with an ipc-style screen, don't let them access it.
|
||||
continue
|
||||
else
|
||||
if("Human" in S.species_allowed) //If the user has a robotic head and the hairstyle can fit humans, let them use it as a wig for their humanoid robot head.
|
||||
@@ -212,17 +213,18 @@
|
||||
continue
|
||||
if(species.flags & ALL_RPARTS) //If the user is a species who can have a robotic head...
|
||||
var/obj/item/organ/external/head/H = organs_by_name["head"]
|
||||
var/datum/robolimb/robohead = all_robolimbs[H.model]
|
||||
if(!H)
|
||||
continue // No head, no hair
|
||||
if(species.name in S.species_allowed) //If this is a facial hair style native to the user's species...
|
||||
if(H.model == "Morpheus Cyberkinetics") //Check to see if they have the default head.
|
||||
if(robohead.is_monitor && (robohead.company in S.models_allowed)) //Check to see if they have a head with an ipc-style screen and that the head's company is in the screen style's allowed models list.
|
||||
valid_facial_hairstyles += facialhairstyle //Give them their facial hair styles if they do.
|
||||
continue
|
||||
else //If they don't have the default head, they shouldn't be getting any facial hair styles they wouldn't normally.
|
||||
continue
|
||||
else
|
||||
|
||||
if(H.model == "Morpheus Cyberkinetics") //If the facial hair style is not native to the user's species, and they're using the default head, don't let them access it.
|
||||
if(robohead.is_monitor) //If the facial hair style is not native to the user's species and they're using a head with an ipc-style screen, don't let them access it.
|
||||
continue
|
||||
else
|
||||
if("Human" in S.species_allowed) //If the user has a robotic head and the facial hair style can fit humans, let them use it as a postiche for their humanoid robot head.
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
var/msg = "<span class='info'>*---------*\nThis is "
|
||||
|
||||
if( skipjumpsuit && skipface ) //big suits/masks/helmets make it hard to tell their gender
|
||||
if(skipjumpsuit && skipface) //big suits/masks/helmets make it hard to tell their gender
|
||||
t_He = "They"
|
||||
t_his = "their"
|
||||
t_him = "them"
|
||||
@@ -52,7 +52,18 @@
|
||||
t_his = "her"
|
||||
t_him = "her"
|
||||
|
||||
msg += "<EM>[src.name]</EM>!\n"
|
||||
msg += "<EM>[name]</EM>"
|
||||
|
||||
var/list/nospecies = list("Abductor", "Shadowling", "Neara", "Monkey", "Stok", "Farwa", "Wolpin") //species that won't show their race no matter what
|
||||
|
||||
if (skipjumpsuit && skipface || (species.name in nospecies)) //either obscured or on the nospecies list
|
||||
msg += "!\n" //omit the species when examining
|
||||
else if (species.name == "Slime People") //snowflakey because Slime People are defined as a plural
|
||||
msg += ", a slime person!\n"
|
||||
else if (species.name == "Unathi") //DAMN YOU, VOWELS
|
||||
msg += ", a unathi!\n"
|
||||
else
|
||||
msg += ", \a [lowertext(species.name)]!\n"
|
||||
|
||||
//uniform
|
||||
if(w_uniform && !skipjumpsuit)
|
||||
|
||||
@@ -37,6 +37,8 @@
|
||||
prev_gender = gender // Debug for plural genders
|
||||
make_blood()
|
||||
|
||||
martial_art = default_martial_art
|
||||
|
||||
var/mob/M = src
|
||||
faction |= "\ref[M]" //what
|
||||
|
||||
@@ -1593,24 +1595,37 @@
|
||||
to_chat(src, "<span class='warning'>You cannot change your monitor or optical display in your current state.</span>")
|
||||
return
|
||||
|
||||
var/obj/item/organ/external/head/head_organ = get_organ("head")
|
||||
if(!head_organ || head_organ.is_stump() || (head_organ.status & ORGAN_DESTROYED)) //If the rock'em-sock'em robot's head came off during a fight, they shouldn't be able to change their screen/optics.
|
||||
to_chat(src, "<span class='warning'>Where's your head at? Can't change your monitor/display without one.</span>")
|
||||
return
|
||||
|
||||
if(species.flags & ALL_RPARTS) //If they can have a fully cybernetic body...
|
||||
if(client.prefs.rlimb_data["head"]) //If head is present here, that means it's not the default Morpheus. Thus, no screen to adjust. Instead, let them change the colour of their optics!
|
||||
var/obj/item/organ/external/head/H = organs_by_name["head"]
|
||||
var/datum/robolimb/robohead = all_robolimbs[H.model]
|
||||
if(!H)
|
||||
return
|
||||
if(!robohead.is_monitor) //If they've got a prosthetic head and it isn't a monitor, they've no screen to adjust. Instead, let them change the colour of their optics!
|
||||
var/optic_colour = input(src, "Select optic colour", rgb(r_markings, g_markings, b_markings)) as color|null
|
||||
if(incapacitated())
|
||||
to_chat(src, "<span class='warning'>You were interrupted while changing the colour of your optics.</span>")
|
||||
return
|
||||
if(optic_colour)
|
||||
r_markings = hex2num(copytext(optic_colour, 2, 4))
|
||||
g_markings = hex2num(copytext(optic_colour, 4, 6))
|
||||
b_markings = hex2num(copytext(optic_colour, 6, 8))
|
||||
|
||||
update_markings()
|
||||
else if(!client.prefs.rlimb_data["head"])//Means that the character has the default Morpheus head, which has a screen. Time to customize.
|
||||
else if(robohead.is_monitor) //Means that the character's head is a monitor (has a screen). Time to customize.
|
||||
var/list/hair = list()
|
||||
for(var/i in hair_styles_list)
|
||||
var/datum/sprite_accessory/hair/tmp_hair = hair_styles_list[i]
|
||||
if(species.name in tmp_hair.species_allowed)
|
||||
if((species.name in tmp_hair.species_allowed) && (robohead.company in tmp_hair.models_allowed)) //Populate the list of available monitor styles only with styles that the monitor-head is allowed to use.
|
||||
hair += i
|
||||
|
||||
var/new_style = input(src, "Select a monitor display", "Monitor Display", h_style) as null|anything in hair
|
||||
if(incapacitated())
|
||||
to_chat(src, "<span class='warning'>You were interrupted while changing your monitor display.</span>")
|
||||
return
|
||||
if(new_style)
|
||||
h_style = new_style
|
||||
|
||||
@@ -55,6 +55,8 @@
|
||||
|
||||
switch(M.a_intent)
|
||||
if(I_HELP)
|
||||
if(attacker_style && attacker_style.help_act(H, src))//adminfu only...
|
||||
return 1
|
||||
if(can_operate(src))
|
||||
if(health >= config.health_threshold_crit)
|
||||
if(src.surgeries.len)
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
if(species.can_revive_by_healing)
|
||||
var/obj/item/organ/internal/brain/B = get_int_organ(/obj/item/organ/internal/brain)
|
||||
if(B)
|
||||
if((health >= (config.health_threshold_dead + config.health_threshold_crit) * 0.5) && stat == DEAD)
|
||||
if((health >= (config.health_threshold_dead + config.health_threshold_crit) * 0.5) && stat == DEAD && getBrainLoss()<120)
|
||||
update_revive()
|
||||
if(stat == CONSCIOUS && (src in dead_mob_list)) //Defib fix
|
||||
update_revive()
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
var/global/default_martial_art = new/datum/martial_art
|
||||
/mob/living/carbon/human
|
||||
|
||||
hud_possible = list(HEALTH_HUD,STATUS_HUD,ID_HUD,WANTED_HUD,IMPLOYAL_HUD,IMPCHEM_HUD,IMPTRACK_HUD,SPECIALROLE_HUD,NATIONS_HUD)
|
||||
|
||||
@@ -396,16 +396,15 @@
|
||||
faction -= "neutral"
|
||||
faction += "hostile"
|
||||
|
||||
/mob/living/carbon/human/interactive/create_mob_hud()
|
||||
if(!hud_used)
|
||||
hud_used = new /datum/hud/human(src)
|
||||
|
||||
/mob/living/carbon/human/interactive/New()
|
||||
..()
|
||||
snpc_list += src
|
||||
|
||||
// setup screen HUD because the game expects user mobs to have zone_sel etc
|
||||
if(hud_used)
|
||||
qdel(hud_used) //remove the hud objects
|
||||
hud_used = null
|
||||
hud_used = new /datum/hud(src)
|
||||
hud_used.human_hud()
|
||||
create_mob_hud()
|
||||
|
||||
sync_mind()
|
||||
random()
|
||||
|
||||
@@ -448,9 +448,12 @@
|
||||
if(status_flags & GODMODE) return 1 //godmode
|
||||
|
||||
if(adjusted_pressure >= species.hazard_high_pressure)
|
||||
var/pressure_damage = min( ( (adjusted_pressure / species.hazard_high_pressure) -1 )*PRESSURE_DAMAGE_COEFFICIENT , MAX_HIGH_PRESSURE_DAMAGE)
|
||||
take_overall_damage(brute=pressure_damage, used_weapon = "High Pressure")
|
||||
throw_alert("pressure", /obj/screen/alert/highpressure, 2)
|
||||
if(!(RESIST_HEAT in mutations))
|
||||
var/pressure_damage = min( ( (adjusted_pressure / species.hazard_high_pressure) -1 )*PRESSURE_DAMAGE_COEFFICIENT , MAX_HIGH_PRESSURE_DAMAGE)
|
||||
take_overall_damage(brute=pressure_damage, used_weapon = "High Pressure")
|
||||
throw_alert("pressure", /obj/screen/alert/highpressure, 2)
|
||||
else
|
||||
clear_alert("pressure")
|
||||
else if(adjusted_pressure >= species.warning_high_pressure)
|
||||
throw_alert("pressure", /obj/screen/alert/highpressure, 1)
|
||||
else if(adjusted_pressure >= species.warning_low_pressure)
|
||||
@@ -469,6 +472,8 @@
|
||||
/mob/living/carbon/human/handle_fire()
|
||||
if(..())
|
||||
return
|
||||
if(RESIST_HEAT in mutations)
|
||||
return
|
||||
var/thermal_protection = 0 //Simple check to estimate how protected we are against multiple temperatures
|
||||
if(wear_suit)
|
||||
if(wear_suit.max_heat_protection_temperature >= FIRE_SUIT_MAX_TEMP_PROTECT)
|
||||
@@ -547,11 +552,13 @@
|
||||
return thermal_protection_flags
|
||||
|
||||
/mob/living/carbon/human/proc/get_heat_protection(temperature) //Temperature is the temperature you're being exposed to.
|
||||
|
||||
if(RESIST_HEAT in mutations)
|
||||
return 1
|
||||
|
||||
var/thermal_protection_flags = get_heat_protection_flags(temperature)
|
||||
|
||||
var/thermal_protection = 0.0
|
||||
if(RESIST_HEAT in mutations)
|
||||
return 1
|
||||
if(thermal_protection_flags)
|
||||
if(thermal_protection_flags & HEAD)
|
||||
thermal_protection += THERMAL_PROTECTION_HEAD
|
||||
|
||||
@@ -4,5 +4,4 @@
|
||||
if(species && species.ventcrawler)
|
||||
to_chat(src, "<span class='notice'>You can ventcrawl! Use alt+click on vents to quickly travel about the station.</span>")
|
||||
update_pipe_vision()
|
||||
update_hud()
|
||||
return
|
||||
|
||||
@@ -186,7 +186,7 @@
|
||||
H.emote(pick("giggle", "laugh"))
|
||||
SA.moles = 0
|
||||
|
||||
if( (abs(310.15 - breath.temperature) > 50) && !(RESIST_HEAT in H.mutations)) // Hot air hurts :(
|
||||
if(abs(310.15 - breath.temperature) > 50) // Hot air hurts :(
|
||||
if(H.status_flags & GODMODE)
|
||||
return 1 //godmode
|
||||
if(breath.temperature < cold_level_1)
|
||||
|
||||
@@ -333,7 +333,7 @@
|
||||
return 1
|
||||
|
||||
/datum/species/proc/handle_temperature(datum/gas_mixture/breath, var/mob/living/carbon/human/H) // called by human/life, handles temperatures
|
||||
if( (abs(310.15 - breath.temperature) > 50) && !(RESIST_HEAT in H.mutations)) // Hot air hurts :(
|
||||
if(abs(310.15 - breath.temperature) > 50) // Hot air hurts :(
|
||||
if(H.status_flags & GODMODE) return 1 //godmode
|
||||
if(breath.temperature < cold_level_1)
|
||||
if(prob(20))
|
||||
@@ -646,11 +646,11 @@
|
||||
H.healthdoll.overlays += image('icons/mob/screen_gen.dmi',"[O.limb_name][icon_num]")
|
||||
|
||||
switch(H.nutrition)
|
||||
if(450 to INFINITY)
|
||||
if(NUTRITION_LEVEL_FULL to INFINITY)
|
||||
H.throw_alert("nutrition", /obj/screen/alert/fat)
|
||||
if(350 to 450)
|
||||
if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FULL)
|
||||
H.clear_alert("nutrition")
|
||||
if(250 to 350)
|
||||
if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY)
|
||||
H.throw_alert("nutrition", /obj/screen/alert/hungry)
|
||||
else
|
||||
H.throw_alert("nutrition", /obj/screen/alert/starving)
|
||||
|
||||
@@ -72,7 +72,6 @@ There are several things that need to be remembered:
|
||||
update_body() //Handles updating your mob's icon to reflect their gender/race/complexion etc
|
||||
update_hair() //Handles updating your hair overlay (used to be update_face, but mouth and
|
||||
...eyes were merged into update_body)
|
||||
update_targeted() // Updates the target overlay when someone points a gun at you
|
||||
|
||||
> All of these procs update our overlays_lying and overlays_standing, and then call update_icons() by default.
|
||||
If you wish to update several overlays at once, you can set the argument to 0 to disable the update and call
|
||||
@@ -124,9 +123,6 @@ Please contact me on #coderbus IRC. ~Carn x
|
||||
//this proc is messy as I was forced to include some old laggy cloaking code to it so that I don't break cloakers
|
||||
//I'll work on removing that stuff by rewriting some of the cloaking stuff at a later date.
|
||||
/mob/living/carbon/human/update_icons()
|
||||
|
||||
update_hud() //TODO: remove the need for this
|
||||
|
||||
var/stealth = 0
|
||||
var/obj/item/clothing/suit/armor/abductor/vest/V // Begin the most snowflakey bullshit code I've ever written. I'm so sorry, but there was no other way.
|
||||
for(V in list(wear_suit))
|
||||
@@ -365,6 +361,9 @@ var/global/list/damage_icon_parts = list()
|
||||
if(m_style && m_style != "None")
|
||||
var/datum/sprite_accessory/marking_style = marking_styles_list[m_style]
|
||||
if(marking_style)
|
||||
var/obj/item/organ/external/head/head_organ = get_organ("head")
|
||||
if((!head_organ || head_organ.is_stump() || (head_organ.status & ORGAN_DESTROYED)) && marking_style.marking_location == "head")
|
||||
return //If the head is destroyed and it is the organ the marking is located on, get us out of here. This prevents floating optical markings on decapitated IPCs, for example.
|
||||
var/icon/markings_s = new/icon("icon" = marking_style.icon, "icon_state" = "[marking_style.icon_state]_s")
|
||||
if(marking_style.do_colouration)
|
||||
markings_s.Blend(rgb(r_markings, g_markings, b_markings), ICON_ADD)
|
||||
@@ -401,7 +400,8 @@ var/global/list/damage_icon_parts = list()
|
||||
var/icon/head_accessory_s = new/icon("icon" = head_accessory_style.icon, "icon_state" = "[head_accessory_style.icon_state]_s")
|
||||
if(head_accessory_style.do_colouration)
|
||||
head_accessory_s.Blend(rgb(r_headacc, g_headacc, b_headacc), ICON_ADD)
|
||||
head_accessory_standing.Blend(head_accessory_s, ICON_OVERLAY)
|
||||
head_accessory_standing = head_accessory_s //head_accessory_standing.Blend(head_accessory_s, ICON_OVERLAY)
|
||||
//Having it this way preserves animations. Useful for animated antennae.
|
||||
else
|
||||
//warning("Invalid ha_style for [species.name]: [ha_style]")
|
||||
|
||||
@@ -441,7 +441,8 @@ var/global/list/damage_icon_parts = list()
|
||||
else if(hair_style.do_colouration)
|
||||
hair_s.Blend(rgb(r_hair, g_hair, b_hair), ICON_ADD)
|
||||
|
||||
hair_standing.Blend(hair_s, ICON_OVERLAY)
|
||||
hair_standing = hair_s //hair_standing.Blend(hair_s, ICON_OVERLAY)
|
||||
//Having it this way preserves animations. Useful for IPC screens.
|
||||
else
|
||||
//warning("Invalid h_style for [species.name]: [h_style]")
|
||||
//hair_standing.Blend(debrained_s, ICON_OVERLAY)//how does i overlay for fish?
|
||||
@@ -506,23 +507,6 @@ var/global/list/damage_icon_parts = list()
|
||||
add_image = 1
|
||||
for(var/mut in mutations)
|
||||
switch(mut)
|
||||
/*
|
||||
if(HULK)
|
||||
if(fat)
|
||||
standing.underlays += "hulk_[fat]_s"
|
||||
else
|
||||
standing.underlays += "hulk_[g]_s"
|
||||
add_image = 1
|
||||
if(RESIST_COLD)
|
||||
standing.underlays += "fire[fat]_s"
|
||||
add_image = 1
|
||||
if(RESIST_HEAT)
|
||||
standing.underlays += "cold[fat]_s"
|
||||
add_image = 1
|
||||
if(TK)
|
||||
standing.underlays += "telekinesishead[fat]_s"
|
||||
add_image = 1
|
||||
*/
|
||||
if(LASER)
|
||||
standing.overlays += "lasereyes_s"
|
||||
add_image = 1
|
||||
@@ -549,15 +533,6 @@ var/global/list/damage_icon_parts = list()
|
||||
update_fhair(0)
|
||||
if(update_icons) update_icons()
|
||||
|
||||
//Call when target overlay should be added/removed
|
||||
/mob/living/carbon/human/update_targeted(var/update_icons=1)
|
||||
if (targeted_by && target_locked)
|
||||
overlays_standing[TARGETED_LAYER] = target_locked
|
||||
else if (!targeted_by && target_locked)
|
||||
qdel(target_locked)
|
||||
if (!targeted_by)
|
||||
overlays_standing[TARGETED_LAYER] = null
|
||||
if(update_icons) update_icons()
|
||||
|
||||
/mob/living/carbon/human/update_fire()
|
||||
remove_overlay(FIRE_LAYER)
|
||||
@@ -598,15 +573,23 @@ var/global/list/damage_icon_parts = list()
|
||||
update_inv_wear_pda(0)
|
||||
UpdateDamageIcon()
|
||||
update_icons()
|
||||
//Hud Stuff
|
||||
update_hud()
|
||||
update_fire()
|
||||
/* --------------------------------------- */
|
||||
//vvvvvv UPDATE_INV PROCS vvvvvv
|
||||
|
||||
/mob/living/carbon/human/update_inv_w_uniform(var/update_icons=1)
|
||||
if(w_uniform && istype(w_uniform, /obj/item/clothing/under) )
|
||||
w_uniform.screen_loc = ui_iclothing
|
||||
|
||||
if(client && hud_used)
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[slot_w_uniform]
|
||||
if(inv)
|
||||
inv.update_icon()
|
||||
|
||||
if(w_uniform && istype(w_uniform, /obj/item/clothing/under))
|
||||
if(client && hud_used && hud_used.hud_shown)
|
||||
if(hud_used.inventory_shown) //if the inventory is open ...
|
||||
w_uniform.screen_loc = ui_iclothing //...draw the item in the inventory screen
|
||||
client.screen += w_uniform //Either way, add the item to the HUD
|
||||
|
||||
var/t_color = w_uniform.item_color
|
||||
if(!t_color) t_color = icon_state
|
||||
var/image/standing = image("icon_state" = "[t_color]_s")
|
||||
@@ -654,8 +637,17 @@ var/global/list/damage_icon_parts = list()
|
||||
if(update_icons) update_icons()
|
||||
|
||||
/mob/living/carbon/human/update_inv_wear_id(var/update_icons=1)
|
||||
|
||||
if(client && hud_used)
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[slot_wear_id]
|
||||
if(inv)
|
||||
inv.update_icon()
|
||||
|
||||
if(wear_id)
|
||||
wear_id.screen_loc = ui_id //TODO
|
||||
if(client && hud_used && hud_used.hud_shown)
|
||||
wear_id.screen_loc = ui_id
|
||||
client.screen += wear_id
|
||||
|
||||
if(w_uniform && w_uniform:displays_id)
|
||||
overlays_standing[ID_LAYER] = image("icon" = 'icons/mob/mob.dmi', "icon_state" = "id")
|
||||
else
|
||||
@@ -666,7 +658,18 @@ var/global/list/damage_icon_parts = list()
|
||||
if(update_icons) update_icons()
|
||||
|
||||
/mob/living/carbon/human/update_inv_gloves(var/update_icons=1)
|
||||
|
||||
if(client && hud_used)
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[slot_gloves]
|
||||
if(inv)
|
||||
inv.update_icon()
|
||||
|
||||
if(gloves)
|
||||
if(client && hud_used && hud_used.hud_shown)
|
||||
if(hud_used.inventory_shown) //if the inventory is open ...
|
||||
gloves.screen_loc = ui_gloves //...draw the item in the inventory screen
|
||||
client.screen += gloves //Either way, add the item to the HUD
|
||||
|
||||
var/t_state = gloves.item_state
|
||||
if(!t_state) t_state = gloves.icon_state
|
||||
|
||||
@@ -695,7 +698,17 @@ var/global/list/damage_icon_parts = list()
|
||||
|
||||
|
||||
/mob/living/carbon/human/update_inv_glasses(var/update_icons=1)
|
||||
|
||||
if(client && hud_used)
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[slot_glasses]
|
||||
if(inv)
|
||||
inv.update_icon()
|
||||
|
||||
if(glasses)
|
||||
if(client && hud_used && hud_used.hud_shown)
|
||||
if(hud_used.inventory_shown) //if the inventory is open ...
|
||||
glasses.screen_loc = ui_glasses //...draw the item in the inventory screen
|
||||
client.screen += glasses //Either way, add the item to the HUD
|
||||
|
||||
if(glasses.icon_override)
|
||||
overlays_standing[GLASSES_LAYER] = image("icon" = glasses.icon_override, "icon_state" = "[glasses.icon_state]")
|
||||
@@ -709,8 +722,23 @@ var/global/list/damage_icon_parts = list()
|
||||
if(update_icons) update_icons()
|
||||
|
||||
/mob/living/carbon/human/update_inv_ears(var/update_icons=1)
|
||||
|
||||
if(client && hud_used)
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[slot_l_ear]
|
||||
if(inv)
|
||||
inv.update_icon()
|
||||
|
||||
if(client && hud_used)
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[slot_r_ear]
|
||||
if(inv)
|
||||
inv.update_icon()
|
||||
|
||||
if(l_ear || r_ear)
|
||||
if(l_ear)
|
||||
if(client && hud_used && hud_used.hud_shown)
|
||||
if(hud_used.inventory_shown) //if the inventory is open ...
|
||||
l_ear.screen_loc = ui_l_ear //...draw the item in the inventory screen
|
||||
client.screen += l_ear //Either way, add the item to the HUD
|
||||
|
||||
var/t_type = l_ear.icon_state
|
||||
if(l_ear.icon_override)
|
||||
@@ -723,6 +751,10 @@ var/global/list/damage_icon_parts = list()
|
||||
overlays_standing[EARS_LAYER] = image("icon" = 'icons/mob/ears.dmi', "icon_state" = "[t_type]")
|
||||
|
||||
if(r_ear)
|
||||
if(client && hud_used && hud_used.hud_shown)
|
||||
if(hud_used.inventory_shown) //if the inventory is open ...
|
||||
r_ear.screen_loc = ui_r_ear //...draw the item in the inventory screen
|
||||
client.screen += r_ear //Either way, add the item to the HUD
|
||||
|
||||
var/t_type = r_ear.icon_state
|
||||
if(r_ear.icon_override)
|
||||
@@ -739,7 +771,17 @@ var/global/list/damage_icon_parts = list()
|
||||
if(update_icons) update_icons()
|
||||
|
||||
/mob/living/carbon/human/update_inv_shoes(var/update_icons=1)
|
||||
|
||||
if(client && hud_used)
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[slot_shoes]
|
||||
if(inv)
|
||||
inv.update_icon()
|
||||
|
||||
if(shoes)
|
||||
if(client && hud_used && hud_used.hud_shown)
|
||||
if(hud_used.inventory_shown) //if the inventory is open ...
|
||||
shoes.screen_loc = ui_shoes //...draw the item in the inventory screen
|
||||
client.screen += shoes //Either way, add the item to the HUD
|
||||
|
||||
var/image/standing
|
||||
if(shoes.icon_override)
|
||||
@@ -765,7 +807,17 @@ var/global/list/damage_icon_parts = list()
|
||||
if(update_icons) update_icons()
|
||||
|
||||
/mob/living/carbon/human/update_inv_s_store(var/update_icons=1)
|
||||
|
||||
if(client && hud_used)
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[slot_s_store]
|
||||
if(inv)
|
||||
inv.update_icon()
|
||||
|
||||
if(s_store)
|
||||
if(client && hud_used && hud_used.hud_shown)
|
||||
s_store.screen_loc = ui_sstore1
|
||||
client.screen += s_store
|
||||
|
||||
var/t_state = s_store.item_state
|
||||
if(!t_state)
|
||||
t_state = s_store.icon_state
|
||||
@@ -778,8 +830,13 @@ var/global/list/damage_icon_parts = list()
|
||||
|
||||
|
||||
/mob/living/carbon/human/update_inv_head(var/update_icons=1)
|
||||
..()
|
||||
if(client && hud_used)
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[slot_head]
|
||||
if(inv)
|
||||
inv.update_icon()
|
||||
|
||||
if(head)
|
||||
head.screen_loc = ui_head //TODO
|
||||
var/image/standing
|
||||
if(head.icon_override)
|
||||
standing = image("icon" = head.icon_override, "icon_state" = "[head.icon_state]")
|
||||
@@ -800,8 +857,17 @@ var/global/list/damage_icon_parts = list()
|
||||
if(update_icons) update_icons()
|
||||
|
||||
/mob/living/carbon/human/update_inv_belt(var/update_icons=1)
|
||||
|
||||
if(client && hud_used)
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[slot_belt]
|
||||
if(inv)
|
||||
inv.update_icon()
|
||||
|
||||
if(hud_used.hud_shown && belt)
|
||||
client.screen += belt
|
||||
belt.screen_loc = ui_belt
|
||||
|
||||
if(belt)
|
||||
belt.screen_loc = ui_belt //TODO
|
||||
var/t_state = belt.item_state
|
||||
if(!t_state) t_state = belt.icon_state
|
||||
|
||||
@@ -818,8 +884,17 @@ var/global/list/damage_icon_parts = list()
|
||||
|
||||
|
||||
/mob/living/carbon/human/update_inv_wear_suit(var/update_icons=1)
|
||||
if( wear_suit && istype(wear_suit, /obj/item/clothing/suit) ) //TODO check this
|
||||
wear_suit.screen_loc = ui_oclothing //TODO
|
||||
|
||||
if(client && hud_used)
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[slot_wear_suit]
|
||||
if(inv)
|
||||
inv.update_icon()
|
||||
|
||||
if(wear_suit && istype(wear_suit, /obj/item/clothing/suit))
|
||||
if(client && hud_used && hud_used.hud_shown)
|
||||
if(hud_used.inventory_shown) //if the inventory is open ...
|
||||
wear_suit.screen_loc = ui_oclothing //TODO //...draw the item in the inventory screen
|
||||
client.screen += wear_suit //Either way, add the item to the HUD
|
||||
|
||||
var/image/standing
|
||||
if(wear_suit.icon_override)
|
||||
@@ -863,19 +938,44 @@ var/global/list/damage_icon_parts = list()
|
||||
|
||||
if(update_icons) update_icons()
|
||||
|
||||
/mob/living/carbon/human/update_inv_pockets(var/update_icons=1)
|
||||
if(l_store) l_store.screen_loc = ui_storage1 //TODO
|
||||
if(r_store) r_store.screen_loc = ui_storage2 //TODO
|
||||
if(update_icons) update_icons()
|
||||
/mob/living/carbon/human/update_inv_pockets()
|
||||
if(client && hud_used)
|
||||
var/obj/screen/inventory/inv
|
||||
|
||||
/mob/living/carbon/human/update_inv_wear_pda(var/update_icons=1)
|
||||
if(wear_pda) wear_pda.screen_loc = ui_pda
|
||||
if(update_icons) update_icons()
|
||||
inv = hud_used.inv_slots[slot_l_store]
|
||||
if(inv)
|
||||
inv.update_icon()
|
||||
|
||||
/mob/living/carbon/human/update_inv_wear_mask(var/update_icons=1)
|
||||
if( wear_mask && ( istype(wear_mask, /obj/item/clothing/mask) || istype(wear_mask, /obj/item/clothing/accessory) ) )
|
||||
wear_mask.screen_loc = ui_mask //TODO
|
||||
inv = hud_used.inv_slots[slot_r_store]
|
||||
if(inv)
|
||||
inv.update_icon()
|
||||
|
||||
if(hud_used.hud_shown)
|
||||
if(l_store)
|
||||
client.screen += l_store
|
||||
l_store.screen_loc = ui_storage1
|
||||
|
||||
if(r_store)
|
||||
client.screen += r_store
|
||||
r_store.screen_loc = ui_storage2
|
||||
|
||||
/mob/living/carbon/human/update_inv_wear_pda()
|
||||
if(client && hud_used)
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[slot_wear_pda]
|
||||
if(inv)
|
||||
inv.update_icon()
|
||||
|
||||
if(wear_pda)
|
||||
client.screen += wear_pda
|
||||
wear_pda.screen_loc = ui_pda
|
||||
|
||||
/mob/living/carbon/human/update_inv_wear_mask(var/update_icons = 1)
|
||||
..()
|
||||
if(client && hud_used)
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[slot_wear_mask]
|
||||
if(inv)
|
||||
inv.update_icon()
|
||||
if(wear_mask && (istype(wear_mask, /obj/item/clothing/mask) || istype(wear_mask, /obj/item/clothing/accessory)))
|
||||
var/image/standing
|
||||
if(wear_mask.icon_override)
|
||||
standing = image("icon" = wear_mask.icon_override, "icon_state" = "[wear_mask.icon_state]")
|
||||
@@ -884,10 +984,10 @@ var/global/list/damage_icon_parts = list()
|
||||
else
|
||||
standing = image("icon" = 'icons/mob/mask.dmi', "icon_state" = "[wear_mask.icon_state]")
|
||||
|
||||
if( !istype(wear_mask, /obj/item/clothing/mask/cigarette) && wear_mask.blood_DNA )
|
||||
if(!istype(wear_mask, /obj/item/clothing/mask/cigarette) && wear_mask.blood_DNA)
|
||||
var/image/bloodsies = image("icon" = species.blood_mask, "icon_state" = "maskblood")
|
||||
bloodsies.color = wear_mask.blood_color
|
||||
standing.overlays += bloodsies
|
||||
standing.overlays += bloodsies
|
||||
overlays_standing[FACEMASK_LAYER] = standing
|
||||
else
|
||||
overlays_standing[FACEMASK_LAYER] = null
|
||||
@@ -895,9 +995,8 @@ var/global/list/damage_icon_parts = list()
|
||||
|
||||
|
||||
/mob/living/carbon/human/update_inv_back(var/update_icons=1)
|
||||
..()
|
||||
if(back)
|
||||
back.screen_loc = ui_back //TODO
|
||||
|
||||
//determine the icon to use
|
||||
var/icon/standing
|
||||
if(back.icon_override)
|
||||
@@ -911,15 +1010,6 @@ var/global/list/damage_icon_parts = list()
|
||||
else
|
||||
standing = image("icon" = 'icons/mob/back.dmi', "icon_state" = "[back.icon_state]")
|
||||
|
||||
/*
|
||||
//determine state to use
|
||||
var/overlay_state
|
||||
if(back.item_state)
|
||||
overlay_state = back.item_state
|
||||
else
|
||||
overlay_state = back.icon_state
|
||||
*/
|
||||
|
||||
//create the image
|
||||
overlays_standing[BACK_LAYER] = standing
|
||||
else
|
||||
@@ -927,37 +1017,14 @@ var/global/list/damage_icon_parts = list()
|
||||
|
||||
if(update_icons) update_icons()
|
||||
|
||||
|
||||
/mob/living/carbon/human/update_hud() //TODO: do away with this if possible
|
||||
if(client)
|
||||
for(var/obj/item/I in get_all_slots())
|
||||
client.screen |= I // Items only please, no arms allowed
|
||||
if(hud_used)
|
||||
hud_used.hidden_inventory_update() //Updates the screenloc of the items on the 'other' inventory bar
|
||||
update_inv_handcuffed(0) // update handcuff overlay
|
||||
|
||||
|
||||
/mob/living/carbon/human/update_inv_handcuffed(var/update_icons=1)
|
||||
overlays_standing[HANDCUFF_LAYER] = null
|
||||
if(handcuffed)
|
||||
drop_r_hand()
|
||||
drop_l_hand()
|
||||
stop_pulling() //TODO: should be handled elsewhere
|
||||
if(hud_used) //hud handcuff icons
|
||||
var/obj/screen/inventory/R = hud_used.r_hand_hud_object
|
||||
var/obj/screen/inventory/L = hud_used.l_hand_hud_object
|
||||
R.overlays += image("icon"='icons/mob/screen_gen.dmi', "icon_state"="markus")
|
||||
L.overlays += image("icon"='icons/mob/screen_gen.dmi', "icon_state"="gabrielle")
|
||||
if(istype(handcuffed, /obj/item/weapon/restraints/handcuffs/pinkcuffs))
|
||||
overlays_standing[HANDCUFF_LAYER] = image("icon" = 'icons/mob/mob.dmi', "icon_state" = "pinkcuff1")
|
||||
else
|
||||
overlays_standing[HANDCUFF_LAYER] = image("icon" = 'icons/mob/mob.dmi', "icon_state" = "handcuff1")
|
||||
else
|
||||
overlays_standing[HANDCUFF_LAYER] = null
|
||||
if(hud_used)
|
||||
var/obj/screen/inventory/R = hud_used.r_hand_hud_object
|
||||
var/obj/screen/inventory/L = hud_used.l_hand_hud_object
|
||||
R.overlays.Cut()
|
||||
L.overlays.Cut()
|
||||
|
||||
if(update_icons)
|
||||
update_icons()
|
||||
|
||||
@@ -978,36 +1045,57 @@ var/global/list/damage_icon_parts = list()
|
||||
|
||||
|
||||
/mob/living/carbon/human/update_inv_r_hand(var/update_icons=1)
|
||||
..()
|
||||
if(r_hand)
|
||||
r_hand.screen_loc = ui_rhand //TODO
|
||||
var/t_state = r_hand.item_state
|
||||
if(!t_state) t_state = r_hand.icon_state
|
||||
if(!t_state)
|
||||
t_state = r_hand.icon_state
|
||||
|
||||
var/image/I = image("icon" = r_hand.righthand_file, "icon_state"="[t_state]")
|
||||
var/image/I = image("icon" = r_hand.righthand_file, "icon_state" = "[t_state]")
|
||||
I = center_image(I, r_hand.inhand_x_dimension, r_hand.inhand_y_dimension)
|
||||
overlays_standing[R_HAND_LAYER] = I
|
||||
|
||||
if (handcuffed) drop_r_hand()
|
||||
else
|
||||
overlays_standing[R_HAND_LAYER] = null
|
||||
if(update_icons) update_icons()
|
||||
if(update_icons)
|
||||
update_icons()
|
||||
|
||||
|
||||
/mob/living/carbon/human/update_inv_l_hand(var/update_icons=1)
|
||||
..()
|
||||
if(l_hand)
|
||||
l_hand.screen_loc = ui_lhand //TODO
|
||||
var/t_state = l_hand.item_state
|
||||
if(!t_state) t_state = l_hand.icon_state
|
||||
if(!t_state)
|
||||
t_state = l_hand.icon_state
|
||||
|
||||
var/image/I = image("icon" = l_hand.lefthand_file, "icon_state"="[t_state]")
|
||||
var/image/I = image("icon" = l_hand.lefthand_file, "icon_state" = "[t_state]")
|
||||
I = center_image(I, l_hand.inhand_x_dimension, l_hand.inhand_y_dimension)
|
||||
overlays_standing[L_HAND_LAYER] = I
|
||||
|
||||
if (handcuffed) drop_l_hand()
|
||||
else
|
||||
overlays_standing[L_HAND_LAYER] = null
|
||||
if(update_icons) update_icons()
|
||||
if(update_icons)
|
||||
update_icons()
|
||||
|
||||
//human HUD updates for items in our inventory
|
||||
|
||||
//update whether our head item appears on our hud.
|
||||
/mob/living/carbon/human/update_hud_head(obj/item/I)
|
||||
if(client && hud_used && hud_used.hud_shown)
|
||||
if(hud_used.inventory_shown)
|
||||
I.screen_loc = ui_head
|
||||
client.screen += I
|
||||
|
||||
//update whether our mask item appears on our hud.
|
||||
/mob/living/carbon/human/update_hud_wear_mask(obj/item/I)
|
||||
if(client && hud_used && hud_used.hud_shown)
|
||||
if(hud_used.inventory_shown)
|
||||
I.screen_loc = ui_mask
|
||||
client.screen += I
|
||||
|
||||
//update whether our back item appears on our hud.
|
||||
/mob/living/carbon/human/update_hud_back(obj/item/I)
|
||||
if(client && hud_used && hud_used.hud_shown)
|
||||
I.screen_loc = ui_back
|
||||
client.screen += I
|
||||
|
||||
|
||||
/mob/living/carbon/human/proc/update_tail_layer(var/update_icons=1)
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
/mob/living/carbon/slime/Login()
|
||||
..()
|
||||
update_hud()
|
||||
return
|
||||
@@ -107,8 +107,8 @@
|
||||
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/color/brown(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/corgisuit(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/head/corgi(H), slot_head)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/corgisuit/super_hero(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/head/corgi/super_hero(H), slot_head)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/yellow(H), slot_gloves)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/bedsheet/orange(H), slot_back)
|
||||
|
||||
@@ -126,8 +126,8 @@
|
||||
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black/greytide(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/corgisuit/en(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/head/corgi/en(H), slot_head)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/corgisuit/super_hero/en(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/head/corgi/super_hero/en(H), slot_head)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/bedsheet/cult(H), slot_back)
|
||||
|
||||
|
||||
|
||||
@@ -32,4 +32,59 @@
|
||||
floating = 0 // If we were without gravity, the bouncing animation got stopped, so we make sure we restart it in next life().
|
||||
|
||||
/mob/living/carbon/proc/handle_transform_change()
|
||||
return
|
||||
|
||||
//update whether handcuffs appears on our hud.
|
||||
/mob/living/carbon/proc/update_hud_handcuffed()
|
||||
if(hud_used)
|
||||
var/obj/screen/inventory/R = hud_used.inv_slots[slot_r_hand]
|
||||
var/obj/screen/inventory/L = hud_used.inv_slots[slot_l_hand]
|
||||
if(R && L)
|
||||
R.update_icon()
|
||||
L.update_icon()
|
||||
|
||||
/mob/living/carbon/update_inv_r_hand(ignore_cuffs)
|
||||
if(handcuffed && !ignore_cuffs)
|
||||
drop_r_hand()
|
||||
return
|
||||
if(r_hand)
|
||||
if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD)
|
||||
r_hand.screen_loc = ui_rhand
|
||||
client.screen += r_hand
|
||||
|
||||
/mob/living/carbon/update_inv_l_hand(ignore_cuffs)
|
||||
if(handcuffed && !ignore_cuffs)
|
||||
drop_l_hand()
|
||||
return
|
||||
if(l_hand)
|
||||
if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD)
|
||||
l_hand.screen_loc = ui_lhand
|
||||
client.screen += l_hand
|
||||
|
||||
/mob/living/carbon/update_inv_wear_mask()
|
||||
if(istype(wear_mask, /obj/item/clothing/mask))
|
||||
update_hud_wear_mask(wear_mask)
|
||||
|
||||
/mob/living/carbon/update_inv_back()
|
||||
if(client && hud_used && hud_used.inv_slots[slot_back])
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[slot_back]
|
||||
inv.update_icon()
|
||||
|
||||
if(back)
|
||||
update_hud_back(back)
|
||||
|
||||
/mob/living/carbon/update_inv_head()
|
||||
if(head)
|
||||
update_hud_head(head)
|
||||
|
||||
//update whether our head item appears on our hud.
|
||||
/mob/living/carbon/proc/update_hud_head(obj/item/I)
|
||||
return
|
||||
|
||||
//update whether our mask item appears on our hud.
|
||||
/mob/living/carbon/proc/update_hud_wear_mask(obj/item/I)
|
||||
return
|
||||
|
||||
//update whether our back item appears on our hud.
|
||||
/mob/living/carbon/proc/update_hud_back(obj/item/I)
|
||||
return
|
||||
@@ -15,7 +15,6 @@
|
||||
if(BRUTE)
|
||||
adjustBruteLoss(damage * blocked)
|
||||
if(BURN)
|
||||
if(RESIST_HEAT in mutations) damage = 0
|
||||
adjustFireLoss(damage * blocked)
|
||||
if(TOX)
|
||||
adjustToxLoss(damage * blocked)
|
||||
|
||||
@@ -265,7 +265,7 @@
|
||||
if(!hud_used) return
|
||||
if(!client) return
|
||||
|
||||
if(hud_used.hud_shown != 1) //Hud toggled to minimal
|
||||
if(!hud_used.hud_shown)
|
||||
return
|
||||
|
||||
client.screen -= hud_used.hide_actions_toggle
|
||||
|
||||
@@ -92,9 +92,6 @@
|
||||
//sort of a legacy burn method for /electrocute, /shock, and the e_chair
|
||||
/mob/living/proc/burn_skin(burn_amount)
|
||||
if(istype(src, /mob/living/carbon/human))
|
||||
// to_chat(world, "DEBUG: burn_skin(), mutations=[mutations]")
|
||||
if (RESIST_HEAT in src.mutations) //fireproof
|
||||
return 0
|
||||
var/mob/living/carbon/human/H = src //make this damage method divide the damage to be done among all the body parts, then burn each body part for that much damage. will have better effect then just randomly picking a body part
|
||||
var/divided_damage = (burn_amount)/(H.organs.len)
|
||||
var/extradam = 0 //added to when organ is at max dam
|
||||
@@ -688,38 +685,71 @@
|
||||
gib()
|
||||
return
|
||||
|
||||
/atom/movable/proc/do_attack_animation(atom/A)
|
||||
/atom/movable/proc/do_attack_animation(atom/A, end_pixel_y)
|
||||
var/pixel_x_diff = 0
|
||||
var/pixel_y_diff = 0
|
||||
var/final_pixel_y = initial(pixel_y)
|
||||
if(end_pixel_y)
|
||||
final_pixel_y = end_pixel_y
|
||||
|
||||
var/direction = get_dir(src, A)
|
||||
switch(direction)
|
||||
if(NORTH)
|
||||
pixel_y_diff = 8
|
||||
if(SOUTH)
|
||||
pixel_y_diff = -8
|
||||
if(EAST)
|
||||
pixel_x_diff = 8
|
||||
if(WEST)
|
||||
pixel_x_diff = -8
|
||||
if(NORTHEAST)
|
||||
pixel_x_diff = 8
|
||||
pixel_y_diff = 8
|
||||
if(NORTHWEST)
|
||||
pixel_x_diff = -8
|
||||
pixel_y_diff = 8
|
||||
if(SOUTHEAST)
|
||||
pixel_x_diff = 8
|
||||
pixel_y_diff = -8
|
||||
if(SOUTHWEST)
|
||||
pixel_x_diff = -8
|
||||
pixel_y_diff = -8
|
||||
if(direction & NORTH)
|
||||
pixel_y_diff = 8
|
||||
else if(direction & SOUTH)
|
||||
pixel_y_diff = -8
|
||||
|
||||
if(direction & EAST)
|
||||
pixel_x_diff = 8
|
||||
else if(direction & WEST)
|
||||
pixel_x_diff = -8
|
||||
|
||||
animate(src, pixel_x = pixel_x + pixel_x_diff, pixel_y = pixel_y + pixel_y_diff, time = 2)
|
||||
animate(pixel_x = initial(pixel_x), pixel_y = initial(pixel_y), time = 2)
|
||||
animate(pixel_x = initial(pixel_x), pixel_y = final_pixel_y, time = 2)
|
||||
|
||||
|
||||
/mob/living/do_attack_animation(atom/A)
|
||||
..()
|
||||
var/final_pixel_y = get_standard_pixel_y_offset(lying)
|
||||
..(A, final_pixel_y)
|
||||
floating = 0 // If we were without gravity, the bouncing animation got stopped, so we make sure we restart the bouncing after the next movement.
|
||||
|
||||
// What icon do we use for the attack?
|
||||
var/image/I
|
||||
if(hand && l_hand) // Attacked with item in left hand.
|
||||
I = image(l_hand.icon, A, l_hand.icon_state, A.layer + 1)
|
||||
else if(!hand && r_hand) // Attacked with item in right hand.
|
||||
I = image(r_hand.icon, A, r_hand.icon_state, A.layer + 1)
|
||||
else // Attacked with a fist?
|
||||
return
|
||||
|
||||
// Who can see the attack?
|
||||
var/list/viewing = list()
|
||||
for(var/mob/M in viewers(A))
|
||||
if(M.client && M.client.prefs.show_ghostitem_attack)
|
||||
viewing |= M.client
|
||||
flick_overlay(I, viewing, 5) // 5 ticks/half a second
|
||||
|
||||
// Scale the icon.
|
||||
I.transform *= 0.75
|
||||
// The icon should not rotate.
|
||||
I.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA
|
||||
|
||||
// Set the direction of the icon animation.
|
||||
var/direction = get_dir(src, A)
|
||||
if(direction & NORTH)
|
||||
I.pixel_y = -16
|
||||
else if(direction & SOUTH)
|
||||
I.pixel_y = 16
|
||||
|
||||
if(direction & EAST)
|
||||
I.pixel_x = -16
|
||||
else if(direction & WEST)
|
||||
I.pixel_x = 16
|
||||
|
||||
if(!direction) // Attacked self?!
|
||||
I.pixel_z = 16
|
||||
|
||||
// And animate the attack!
|
||||
animate(I, alpha = 175, pixel_x = 0, pixel_y = 0, pixel_z = 0, time = 3)
|
||||
|
||||
/atom/movable/proc/receive_damage(atom/A)
|
||||
var/pixel_x_diff = rand(-3,3)
|
||||
|
||||
@@ -5,9 +5,6 @@
|
||||
param = copytext(act, t1 + 1, length(act) + 1)
|
||||
act = copytext(act, 1, t1)
|
||||
|
||||
if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_'
|
||||
act = copytext(act,1,length(act))
|
||||
|
||||
//Emote Cooldown System (it's so simple!)
|
||||
// proc/handle_emote_CD() located in [code\modules\mob\emote.dm]
|
||||
var/on_CD = 0
|
||||
@@ -15,7 +12,8 @@
|
||||
//Cooldown-inducing emotes
|
||||
if("scream", "screams")
|
||||
on_CD = handle_emote_CD(50) //longer cooldown
|
||||
if("ping","buzz","beep","yes","no") //halt is exempt because it's used to stop criminal scum //WHOEVER THOUGHT THAT WAS A GOOD IDEA IS GOING TO GET SHOT.
|
||||
if("ping","pings","buzz","buzzs","buzzes","beep","beeps","yes","no")
|
||||
//halt is exempt because it's used to stop criminal scum //WHOEVER THOUGHT THAT WAS A GOOD IDEA IS GOING TO GET SHOT.
|
||||
on_CD = handle_emote_CD() //proc located in code\modules\mob\emote.dm
|
||||
//Everything else, including typos of the above emotes
|
||||
else
|
||||
@@ -26,7 +24,7 @@
|
||||
//--FalseIncarnate
|
||||
|
||||
switch(act)
|
||||
if("ping")
|
||||
if("ping","pings")
|
||||
var/M = null
|
||||
if(param)
|
||||
for (var/mob/A in view(null, null))
|
||||
@@ -43,7 +41,7 @@
|
||||
playsound(src.loc, 'sound/machines/ping.ogg', 50, 0)
|
||||
m_type = 2
|
||||
|
||||
if("buzz")
|
||||
if("buzz","buzzs","buzzes")
|
||||
var/M = null
|
||||
if(param)
|
||||
for (var/mob/A in view(null, null))
|
||||
@@ -60,7 +58,7 @@
|
||||
playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, 0)
|
||||
m_type = 2
|
||||
|
||||
if("beep")
|
||||
if("beep","beeps")
|
||||
var/M = null
|
||||
if(param)
|
||||
for (var/mob/A in view(null, null))
|
||||
@@ -116,4 +114,7 @@
|
||||
playsound(src.loc, 'sound/goonstation/voice/robot_scream.ogg', 80, 0)
|
||||
m_type = 2
|
||||
|
||||
if("help")
|
||||
to_chat(src, "yes, no, beep, ping, buzz")
|
||||
|
||||
..(act, m_type, message)
|
||||
@@ -1,6 +1,2 @@
|
||||
/mob/living/silicon/pai/emote(var/act, var/m_type=1, var/message = null)
|
||||
switch(act)
|
||||
if ("help")
|
||||
to_chat(src, "ping, beep, buzz.")
|
||||
|
||||
..(act, m_type, message)
|
||||
..(act, m_type, message)
|
||||
|
||||
@@ -354,7 +354,7 @@ var/datum/paiController/paiController // Global handler for pAI candidates
|
||||
to_chat(O, "\blue <b>A pAI card is looking for personalities. (<a href='?src=\ref[O];jump=\ref[P]'>Teleport</a> | <a href='?src=\ref[src];signup=\ref[O]'>Sign Up</a>)</b>")
|
||||
//question(O.client)
|
||||
proc/check_recruit(var/mob/dead/observer/O)
|
||||
if(jobban_isbanned(O, "pAI") || jobban_isbanned(O,"nonhumandept"))
|
||||
if(jobban_isbanned(O, ROLE_PAI) || jobban_isbanned(O,"nonhumandept"))
|
||||
return 0
|
||||
if(!player_old_enough_antag(O.client,ROLE_PAI))
|
||||
return 0
|
||||
|
||||
@@ -38,10 +38,9 @@
|
||||
set desc = "Activate a low power omnidirectional LED. Toggled on or off."
|
||||
set category = "Drone"
|
||||
|
||||
if(luminosity)
|
||||
set_light(0)
|
||||
return
|
||||
set_light(2)
|
||||
if(lamp_intensity)
|
||||
lamp_intensity = lamp_max // setting this to lamp_max will make control_headlamp shutoff the lamp
|
||||
control_headlamp()
|
||||
|
||||
//Actual picking-up event.
|
||||
/mob/living/silicon/robot/drone/attack_hand(mob/living/carbon/human/M as mob)
|
||||
|
||||
@@ -5,15 +5,12 @@
|
||||
param = copytext(act, t1 + 1, length(act) + 1)
|
||||
act = copytext(act, 1, t1)
|
||||
|
||||
if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_'
|
||||
act = copytext(act,1,length(act))
|
||||
|
||||
//Emote Cooldown System (it's so simple!)
|
||||
// proc/handle_emote_CD() located in [code\modules\mob\emote.dm]
|
||||
var/on_CD = 0
|
||||
switch(act)
|
||||
//Cooldown-inducing emotes
|
||||
if("law","flip","halt") //halt is exempt because it's used to stop criminal scum //WHOEVER THOUGHT THAT WAS A GOOD IDEA IS GOING TO GET SHOT.
|
||||
if("law","flip","flips","halt") //halt is exempt because it's used to stop criminal scum //WHOEVER THOUGHT THAT WAS A GOOD IDEA IS GOING TO GET SHOT.
|
||||
on_CD = handle_emote_CD() //proc located in code\modules\mob\emote.dm
|
||||
//Everything else, including typos of the above emotes
|
||||
else
|
||||
@@ -25,7 +22,7 @@
|
||||
|
||||
switch(act)
|
||||
|
||||
if ("salute")
|
||||
if ("salute","salutes")
|
||||
if (!src.buckled)
|
||||
var/M = null
|
||||
if (param)
|
||||
@@ -41,7 +38,7 @@
|
||||
else
|
||||
message = "<B>[src]</b> salutes."
|
||||
m_type = 1
|
||||
if ("bow")
|
||||
if ("bow","bows")
|
||||
if (!src.buckled)
|
||||
var/M = null
|
||||
if (param)
|
||||
@@ -58,16 +55,16 @@
|
||||
message = "<B>[src]</B> bows."
|
||||
m_type = 1
|
||||
|
||||
if ("clap")
|
||||
if ("clap","claps")
|
||||
if (!src.restrained())
|
||||
message = "<B>[src]</B> claps."
|
||||
m_type = 2
|
||||
if ("flap")
|
||||
if ("flap","flaps")
|
||||
if (!src.restrained())
|
||||
message = "<B>[src]</B> flaps its wings."
|
||||
m_type = 2
|
||||
|
||||
if ("aflap")
|
||||
if ("aflap","aflaps")
|
||||
if (!src.restrained())
|
||||
message = "<B>[src]</B> flaps its wings ANGRILY!"
|
||||
m_type = 2
|
||||
@@ -76,11 +73,11 @@
|
||||
message = "<B>[src]</B> twitches violently."
|
||||
m_type = 1
|
||||
|
||||
if ("twitch_s")
|
||||
if ("twitch_s","twitches")
|
||||
message = "<B>[src]</B> twitches."
|
||||
m_type = 1
|
||||
|
||||
if ("nod")
|
||||
if ("nod","nods")
|
||||
message = "<B>[src]</B> nods."
|
||||
m_type = 1
|
||||
|
||||
@@ -88,7 +85,7 @@
|
||||
message = "<B>[src]</B> shudders violently for a moment, then becomes motionless, its eyes slowly darkening."
|
||||
m_type = 1
|
||||
|
||||
if ("glare")
|
||||
if ("glare","glares")
|
||||
var/M = null
|
||||
if (param)
|
||||
for (var/mob/A in view(null, null))
|
||||
@@ -103,7 +100,7 @@
|
||||
else
|
||||
message = "<B>[src]</B> glares."
|
||||
|
||||
if ("stare")
|
||||
if ("stare","stares")
|
||||
var/M = null
|
||||
if (param)
|
||||
for (var/mob/A in view(null, null))
|
||||
@@ -118,7 +115,7 @@
|
||||
else
|
||||
message = "<B>[src]</B> stares."
|
||||
|
||||
if ("look")
|
||||
if ("look","looks")
|
||||
var/M = null
|
||||
if (param)
|
||||
for (var/mob/A in view(null, null))
|
||||
@@ -154,12 +151,12 @@
|
||||
else
|
||||
to_chat(src, "You are not security.")
|
||||
|
||||
if ("flip")
|
||||
if ("flip","flips")
|
||||
m_type = 1
|
||||
message = "<B>[src]</B> does a flip!"
|
||||
src.SpinAnimation(5,1)
|
||||
|
||||
if ("help")
|
||||
to_chat(src, "salute, bow-(none)/mob, clap, flap, aflap, twitch, twitch_s, nod, deathgasp, glare-(none)/mob, stare-(none)/mob, look, beep, ping, \nbuzz, law, halt")
|
||||
to_chat(src, "salute, bow-(none)/mob, clap, flap, aflap, twitch, twitches, nod, deathgasp, glare-(none)/mob, stare-(none)/mob, look,\n law, halt")
|
||||
|
||||
..(act, m_type, message)
|
||||
@@ -1023,14 +1023,6 @@ var/list/robot_verbs_default = list(
|
||||
overlays += "minerjetpack-[icon_state]"
|
||||
update_fire()
|
||||
|
||||
//Call when target overlay should be added/removed
|
||||
/mob/living/silicon/robot/update_targeted()
|
||||
if(!targeted_by && target_locked)
|
||||
qdel(target_locked)
|
||||
update_icons()
|
||||
if (targeted_by && target_locked)
|
||||
overlays += target_locked
|
||||
|
||||
/mob/living/silicon/robot/proc/installed_modules()
|
||||
if(weapon_lock)
|
||||
to_chat(src, "\red Weapon lock active, unable to use modules! Count:[weaponlock_time]")
|
||||
|
||||
@@ -306,6 +306,9 @@
|
||||
if(!locked && !open)
|
||||
var/obj/item/device/paicard/card = W
|
||||
if(card.pai && card.pai.mind)
|
||||
if(!card.pai.ckey || jobban_isbanned(card.pai, ROLE_SENTIENT))
|
||||
to_chat(user, "<span class='warning'>[W] is unable to establish a connection to [src].</span>")
|
||||
return
|
||||
if(!user.drop_item())
|
||||
return
|
||||
W.forceMove(src)
|
||||
@@ -322,7 +325,7 @@
|
||||
else
|
||||
to_chat(user, "<span class='warning'>The personality slot is locked.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>[src] is not compatible with [W]</span>")
|
||||
to_chat(user, "<span class='warning'>[src] is not compatible with [W].</span>")
|
||||
else if(istype(W, /obj/item/weapon/hemostat) && paicard)
|
||||
if(open)
|
||||
to_chat(user, "<span class='warning'>Close the access panel before manipulating the personality slot!</span>")
|
||||
|
||||
@@ -144,7 +144,7 @@
|
||||
if(beegent && isliving(target))
|
||||
var/mob/living/L = target
|
||||
if(!isnull(target.reagents))
|
||||
beegent.reaction_mob(L, TOUCH)
|
||||
beegent.reaction_mob(L, INGEST)
|
||||
L.reagents.add_reagent(beegent.id, rand(1,5))
|
||||
target.attack_animal(src)
|
||||
|
||||
|
||||
@@ -33,6 +33,8 @@
|
||||
|
||||
/mob/living/simple_animal/hostile/Life()
|
||||
. = ..()
|
||||
if(ranged)
|
||||
ranged_cooldown--
|
||||
if(!.)
|
||||
walk(src, 0)
|
||||
return 0
|
||||
@@ -46,8 +48,6 @@
|
||||
/mob/living/simple_animal/hostile/handle_automated_action()
|
||||
if(AIStatus == AI_OFF)
|
||||
return 0
|
||||
if(ranged)
|
||||
ranged_cooldown--
|
||||
var/list/possible_targets = ListTargets() //we look around for potential targets and make it a list for later use.
|
||||
if(environment_smash)
|
||||
EscapeConfinement()
|
||||
|
||||
@@ -31,12 +31,13 @@
|
||||
|
||||
client.images = null //remove the images such as AIs being unable to see runes
|
||||
client.screen = list() //remove hud items just in case
|
||||
if(hud_used)
|
||||
qdel(hud_used) //remove the hud objects
|
||||
hud_used = null
|
||||
if(client.click_intercept)
|
||||
client.click_intercept.quit() // Let's not keep any old click_intercepts
|
||||
hud_used = new /datum/hud(src)
|
||||
|
||||
if(!hud_used)
|
||||
create_mob_hud()
|
||||
if(hud_used)
|
||||
hud_used.show_hud(hud_used.hud_version)
|
||||
|
||||
next_move = 1
|
||||
sight |= SEE_SELF
|
||||
@@ -70,6 +71,8 @@
|
||||
//readd this mob's HUDs (antag, med, etc)
|
||||
reload_huds()
|
||||
|
||||
add_click_catcher()
|
||||
|
||||
if(viewing_alternate_appearances && viewing_alternate_appearances.len)
|
||||
for(var/aakey in viewing_alternate_appearances)
|
||||
var/datum/alternate_appearance/AA = viewing_alternate_appearances[aakey]
|
||||
|
||||
@@ -1097,6 +1097,11 @@ var/list/slot_equipment_priority = list( \
|
||||
/mob/proc/IsAdvancedToolUser()//This might need a rename but it should replace the can this mob use things check
|
||||
return 0
|
||||
|
||||
/mob/proc/swap_hand()
|
||||
return
|
||||
|
||||
/mob/proc/activate_hand(selhand)
|
||||
return
|
||||
|
||||
/mob/proc/Jitter(amount)
|
||||
jitteriness = max(jitteriness, amount, 0)
|
||||
@@ -1269,8 +1274,8 @@ mob/proc/yank_out_object()
|
||||
set name = "Respawn as NPC"
|
||||
set category = "Ghost"
|
||||
|
||||
if(jobban_isbanned(usr, "NPC"))
|
||||
to_chat(usr, "<span class='warning'>You are banned from playing as NPC's.</span>")
|
||||
if(jobban_isbanned(usr, ROLE_SENTIENT))
|
||||
to_chat(usr, "<span class='warning'>You are banned from playing as sentient animals.</span>")
|
||||
return
|
||||
|
||||
if(!ticker || ticker.current_state < 3)
|
||||
|
||||
@@ -18,10 +18,6 @@
|
||||
var/obj/screen/m_select = null
|
||||
var/obj/screen/healths = null
|
||||
var/obj/screen/throw_icon = null
|
||||
var/obj/screen/gun/item/item_use_icon = null
|
||||
var/obj/screen/gun/move/gun_move_icon = null
|
||||
var/obj/screen/gun/run/gun_run_icon = null
|
||||
var/obj/screen/gun/mode/gun_setting_icon = null
|
||||
|
||||
/*A bunch of this stuff really needs to go under their own defines instead of being globally attached to mob.
|
||||
A variable should only be globally attached to turfs/objects/whatever, when it is in fact needed as such.
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
|
||||
layer = 21
|
||||
item_state = "nothing"
|
||||
icon = 'icons/mob/screen_gen.dmi'
|
||||
w_class = 5.0
|
||||
|
||||
|
||||
|
||||
@@ -451,7 +451,7 @@ var/list/intents = list(I_HELP,I_DISARM,I_GRAB,I_HARM)
|
||||
if("left")
|
||||
a_intent = intent_numeric((intent_numeric(a_intent)+3) % 4)
|
||||
if(hud_used && hud_used.action_intent)
|
||||
hud_used.action_intent.icon_state = "intent_[a_intent]"
|
||||
hud_used.action_intent.icon_state = "[a_intent]"
|
||||
|
||||
else if(isrobot(src) || islarva(src))
|
||||
switch(input)
|
||||
|
||||
@@ -149,11 +149,8 @@
|
||||
winset(src, "mapwindow.map", "icon-size=[src.reset_stretch]")
|
||||
viewingCanvas = 0
|
||||
mob.reset_view()
|
||||
mob.button_pressed_F12()
|
||||
if(!mob.hud_used.hud_shown)
|
||||
mob.button_pressed_F12()
|
||||
mob.update_hud()
|
||||
mob.update_action_buttons()
|
||||
if(mob.hud_used)
|
||||
mob.hud_used.show_hud(HUD_STYLE_STANDARD)
|
||||
|
||||
if(mob.control_object) Move_object(direct)
|
||||
|
||||
@@ -240,7 +237,6 @@
|
||||
move_delay = world.time//set move delay
|
||||
move_delay += T.slowdown
|
||||
mob.last_movement = world.time
|
||||
mob.last_move_intent = world.time + 10
|
||||
switch(mob.m_intent)
|
||||
if("run")
|
||||
if(mob.drowsyness > 0)
|
||||
|
||||
@@ -43,6 +43,8 @@
|
||||
|
||||
// Restrict some styles to specific species
|
||||
var/list/species_allowed = list("Human", "Slime People")
|
||||
var/models_allowed = list() //Specifies which, if any, hairstyles can be accessed by which prosthetics. Should equal the manufacturing company name in robolimbs.dm.
|
||||
var/marking_location //Specifies which bodypart a body marking is located on.
|
||||
|
||||
// Whether or not the accessory can be affected by colouration
|
||||
var/do_colouration = 1
|
||||
@@ -57,7 +59,6 @@
|
||||
*/
|
||||
|
||||
/datum/sprite_accessory/hair
|
||||
|
||||
icon = 'icons/mob/human_face.dmi' // default icon for all hairs
|
||||
|
||||
bald
|
||||
@@ -379,105 +380,169 @@
|
||||
//////END VG HAIRSTYLES///////
|
||||
//////////////////////////////
|
||||
|
||||
|
||||
ipc_screen_pink
|
||||
name = "pink IPC screen"
|
||||
name = "Pink IPC Screen"
|
||||
icon_state = "ipc_pink"
|
||||
species_allowed = list("Machine")
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
ipc_screen_red
|
||||
name = "red IPC screen"
|
||||
name = "Red IPC Screen"
|
||||
icon_state = "ipc_red"
|
||||
species_allowed = list("Machine")
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
ipc_screen_green
|
||||
name = "green IPC screen"
|
||||
name = "Green IPC Screen"
|
||||
icon_state = "ipc_green"
|
||||
species_allowed = list("Machine")
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
ipc_screen_blue
|
||||
name = "blue IPC screen"
|
||||
name = "Blue IPC Screen"
|
||||
icon_state = "ipc_blue"
|
||||
species_allowed = list("Machine")
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
ipc_screen_breakout
|
||||
name = "breakout IPC screen"
|
||||
name = "Breakout IPC Screen"
|
||||
icon_state = "ipc_breakout"
|
||||
species_allowed = list("Machine")
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
ipc_screen_eight
|
||||
name = "eight IPC screen"
|
||||
name = "Eight IPC Screen"
|
||||
icon_state = "ipc_eight"
|
||||
species_allowed = list("Machine")
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
ipc_screen_rainbow
|
||||
name = "rainbow IPC screen"
|
||||
name = "Rainbow IPC Screen"
|
||||
icon_state = "ipc_rainbow"
|
||||
species_allowed = list("Machine")
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
ipc_screen_goggles
|
||||
name = "goggles IPC screen"
|
||||
name = "Goggles IPC Screen"
|
||||
icon_state = "ipc_goggles"
|
||||
species_allowed = list("Machine")
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
ipc_screen_heart
|
||||
name = "heart IPC screen"
|
||||
name = "Heart IPC Screen"
|
||||
icon_state = "ipc_heart"
|
||||
species_allowed = list("Machine")
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
ipc_screen_monoeye
|
||||
name = "monoeye IPC screen"
|
||||
name = "Monoeye IPC Screen"
|
||||
icon_state = "ipc_monoeye"
|
||||
species_allowed = list("Machine")
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
ipc_screen_nature
|
||||
name = "nature IPC screen"
|
||||
name = "Nature IPC Screen"
|
||||
icon_state = "ipc_nature"
|
||||
species_allowed = list("Machine")
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
ipc_screen_orange
|
||||
name = "orange IPC screen"
|
||||
name = "Orange IPC Screen"
|
||||
icon_state = "ipc_orange"
|
||||
species_allowed = list("Machine")
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
ipc_screen_purple
|
||||
name = "purple IPC screen"
|
||||
name = "Purple IPC Screen"
|
||||
icon_state = "ipc_purple"
|
||||
species_allowed = list("Machine")
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
ipc_screen_shower
|
||||
name = "shower IPC screen"
|
||||
name = "Shower IPC Screen"
|
||||
icon_state = "ipc_shower"
|
||||
species_allowed = list("Machine")
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
ipc_screen_static
|
||||
name = "static IPC screen"
|
||||
name = "Static IPC Screen"
|
||||
icon_state = "ipc_static"
|
||||
species_allowed = list("Machine")
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
ipc_screen_yellow
|
||||
name = "yellow IPC screen"
|
||||
name = "Yellow IPC Screen"
|
||||
icon_state = "ipc_yellow"
|
||||
species_allowed = list("Machine")
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
ipc_screen_scrolling
|
||||
name = "scanline IPC screen"
|
||||
name = "Scanline IPC Screen"
|
||||
icon_state = "ipc_scroll"
|
||||
species_allowed = list("Machine")
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
ipc_screen_console
|
||||
name = "console IPC screen"
|
||||
name = "Console IPC Screen"
|
||||
icon_state = "ipc_console"
|
||||
species_allowed = list("Machine")
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
ipc_screen_rgb
|
||||
name = "rgb IPC screen"
|
||||
name = "RGB IPC Screen"
|
||||
icon_state = "ipc_rgb"
|
||||
species_allowed = list("Machine")
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
ipc_screen_glider
|
||||
name = "glider IPC screen"
|
||||
name = "Glider IPC Screen"
|
||||
icon_state = "ipc_gol_glider"
|
||||
species_allowed = list("Machine")
|
||||
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
|
||||
|
||||
hesphiastos_alt_off
|
||||
name = "Dark Hesphiastos Screen"
|
||||
icon_state = "hesphiastos_alt_off"
|
||||
species_allowed = list("Machine")
|
||||
models_allowed = list("Hesphiastos Industries alt.")
|
||||
|
||||
hesphiastos_alt_pink
|
||||
name = "Pink Hesphiastos Screen"
|
||||
icon_state = "hesphiastos_alt_pink"
|
||||
species_allowed = list("Machine")
|
||||
models_allowed = list("Hesphiastos Industries alt.")
|
||||
|
||||
hesphiastos_alt_orange
|
||||
name = "Orange Hesphiastos Screen"
|
||||
icon_state = "hesphiastos_alt_orange"
|
||||
species_allowed = list("Machine")
|
||||
models_allowed = list("Hesphiastos Industries alt.")
|
||||
|
||||
hesphiastos_alt_goggle
|
||||
name = "Goggles Hesphiastos Screen"
|
||||
icon_state = "hesphiastos_alt_goggles"
|
||||
species_allowed = list("Machine")
|
||||
models_allowed = list("Hesphiastos Industries alt.")
|
||||
|
||||
hesphiastos_alt_scroll
|
||||
name = "Scrolling Hesphiastos Screen"
|
||||
icon_state = "hesphiastos_alt_scroll"
|
||||
species_allowed = list("Machine")
|
||||
models_allowed = list("Hesphiastos Industries alt.")
|
||||
|
||||
hesphiastos_alt_rgb
|
||||
name = "RGB Hesphiastos Screen"
|
||||
icon_state = "hesphiastos_alt_rgb"
|
||||
species_allowed = list("Machine")
|
||||
models_allowed = list("Hesphiastos Industries alt.")
|
||||
|
||||
hesphiastos_alt_rainbow
|
||||
name = "Rainbow Hesphiastos Screen"
|
||||
icon_state = "hesphiastos_alt_rainbow"
|
||||
species_allowed = list("Machine")
|
||||
models_allowed = list("Hesphiastos Industries alt.")
|
||||
|
||||
|
||||
/*
|
||||
///////////////////////////////////
|
||||
@@ -496,8 +561,7 @@
|
||||
name = "Shaved"
|
||||
icon_state = "bald"
|
||||
gender = NEUTER
|
||||
species_allowed = list("Human", "Unathi", "Tajaran", "Skrell", "Vox", "Diona", "Kidan", "Greys", "Machine", "Vulpkanin", "Slime People")
|
||||
|
||||
species_allowed = list("Human", "Unathi", "Tajaran", "Skrell", "Vox", "Diona", "Kidan", "Greys", "Vulpkanin", "Slime People")
|
||||
|
||||
watson
|
||||
name = "Watson Mustache"
|
||||
@@ -1785,6 +1849,21 @@
|
||||
icon_state = "antennae"
|
||||
species_allowed = list("Machine")
|
||||
|
||||
/datum/sprite_accessory/head_accessory/ipc_tv_antennae
|
||||
name = "T.V. Antennae"
|
||||
icon_state = "tvantennae"
|
||||
species_allowed = list("Machine")
|
||||
|
||||
/datum/sprite_accessory/head_accessory/ipc_tesla_antennae
|
||||
name = "Tesla Antennae"
|
||||
icon_state = "tesla"
|
||||
species_allowed = list("Machine")
|
||||
|
||||
/datum/sprite_accessory/head_accessory/ipc_light
|
||||
name = "Head Light"
|
||||
icon_state = "light"
|
||||
species_allowed = list("Machine")
|
||||
|
||||
|
||||
/* BODY MARKINGS */
|
||||
|
||||
@@ -1832,6 +1911,32 @@
|
||||
name = "Humanoid Optics"
|
||||
species_allowed = list("Machine")
|
||||
icon_state = "optics"
|
||||
models_allowed = list("Bishop Cybernetics", "Hesphiastos Industries", "Ward-Takahashi", "Xion Manufacturing Group", "Zeng-Hu Pharmaceuticals") //Should be the same as the manufacturing company of the limb in robolimbs.dm
|
||||
marking_location = "head"
|
||||
|
||||
/datum/sprite_accessory/body_markings/optics/bishop_alt
|
||||
name = "Bishop Alt. Optics"
|
||||
species_allowed = list("Machine")
|
||||
icon_state = "bishop_alt_optics"
|
||||
models_allowed = list("Bishop Cybernetics alt.")
|
||||
|
||||
/datum/sprite_accessory/body_markings/optics/morpheus_alt
|
||||
name = "Morpheus Alt. Optics"
|
||||
species_allowed = list("Machine")
|
||||
icon_state = "morpheus_alt_optics"
|
||||
models_allowed = list("Morpheus Cyberkinetics alt.")
|
||||
|
||||
/datum/sprite_accessory/body_markings/optics/wardtakahashi_alt
|
||||
name = "Ward-Takahashi Alt. Optics"
|
||||
species_allowed = list("Machine")
|
||||
icon_state = "wardtakahashi_alt_optics"
|
||||
models_allowed = list("Ward-Takahashi alt.")
|
||||
|
||||
/datum/sprite_accessory/body_markings/optics/xion_alt
|
||||
name = "Xion Alt. Optics"
|
||||
species_allowed = list("Machine")
|
||||
icon_state = "xion_alt_optics"
|
||||
models_allowed = list("Xion Manufacturing Group alt.")
|
||||
|
||||
/datum/sprite_accessory/body_markings/tattoo // Tattoos applied post-round startup with tattoo guns in item_defines.dm
|
||||
name = "base tattoo"
|
||||
|
||||
@@ -346,10 +346,10 @@
|
||||
if(ispath(MP, /mob/living/simple_animal/butterfly))
|
||||
return 1
|
||||
|
||||
if(ispath(MP, /mob/living/simple_animal/borer) && !jobban_isbanned(src, "alien") && !jobban_isbanned(src, "Syndicate"))
|
||||
if(ispath(MP, /mob/living/simple_animal/borer) && !jobban_isbanned(src, ROLE_BORER) && !jobban_isbanned(src, "Syndicate"))
|
||||
return 1
|
||||
|
||||
if(ispath(MP, /mob/living/simple_animal/diona) && !jobban_isbanned(src, "Dionaea"))
|
||||
if(ispath(MP, /mob/living/simple_animal/diona) && !jobban_isbanned(src, ROLE_NYMPH))
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
@@ -7,9 +7,6 @@
|
||||
/mob/proc/update_icons()
|
||||
return
|
||||
|
||||
/mob/proc/update_hud()
|
||||
return
|
||||
|
||||
/mob/proc/update_inv_handcuffed()
|
||||
return
|
||||
|
||||
@@ -61,14 +58,11 @@
|
||||
/mob/proc/update_inv_pockets()
|
||||
return
|
||||
|
||||
mob/proc/update_inv_wear_pda()
|
||||
/mob/proc/update_inv_wear_pda()
|
||||
return
|
||||
|
||||
/mob/proc/update_inv_ears()
|
||||
return
|
||||
|
||||
/mob/proc/update_targeted()
|
||||
return
|
||||
|
||||
/mob/proc/update_transform()
|
||||
return
|
||||
Reference in New Issue
Block a user