mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-26 06:22:26 +01:00
Merge branch 'master' into final_away_maps_additions
# Conflicts: # code/__defines/misc.dm # code/modules/client/preference_setup/loadout/loadout_xeno/tajara.dm # icons/mob/head.dmi # maps/exodus/code/exodus.dm
This commit is contained in:
@@ -1734,7 +1734,7 @@ Follow by example and make good judgement based on length which list to include
|
||||
icon = 'icons/mob/hair_gradients.dmi'
|
||||
species_allowed = list(/datum/species/human,/datum/species/human/offworlder,/datum/species/machine/shell,/datum/species/machine/shell/rogue,/datum/species/zombie,
|
||||
/datum/species/tajaran,/datum/species/tajaran/zhan_khazan,/datum/species/tajaran/m_sai,/datum/species/zombie/tajara,
|
||||
/datum/species/skrell, /datum/species/skrell/axiori, /datum/species/zombie/skrell, /datum/species/bug, /datum/species/bug/type_b)
|
||||
/datum/species/skrell, /datum/species/skrell/axiori, /datum/species/zombie/skrell, /datum/species/bug, /datum/species/bug/type_b, /datum/species/unathi,/datum/species/zombie/unathi)
|
||||
|
||||
none
|
||||
name = "None"
|
||||
@@ -2267,6 +2267,18 @@ Follow by example and make good judgement based on length which list to include
|
||||
length = 0
|
||||
chatname = "lump"
|
||||
|
||||
una_droopy
|
||||
name = "Unathi Droopy Dorsal Frill"
|
||||
icon_state = "unathi_droopydorsal"
|
||||
length = 0
|
||||
chatname = "droopy frill"
|
||||
|
||||
una_regal
|
||||
name = "Unathi Regal Frills"
|
||||
icon_state = "unathi_regalfrills"
|
||||
length = 6
|
||||
chatname = "massive frills"
|
||||
|
||||
|
||||
//skrell tentacles
|
||||
|
||||
@@ -3305,6 +3317,14 @@ Follow by example and make good judgement based on length which list to include
|
||||
name = "Unathi Pachy Boss"
|
||||
icon_state = "pachylump"
|
||||
|
||||
una_droopy
|
||||
name = "Unathi Droopy Dorsal Frill"
|
||||
icon_state = "unathi_droopydorsal"
|
||||
|
||||
una_regal
|
||||
name = "Unathi Regal Frills"
|
||||
icon_state = "unathi_regalfrills"
|
||||
|
||||
//ipc screens
|
||||
|
||||
ipc_screen_blank
|
||||
|
||||
@@ -294,6 +294,8 @@
|
||||
src.show_message(message)
|
||||
|
||||
/mob/proc/hear_sleep(var/message)
|
||||
if (isdeaf(src))
|
||||
return
|
||||
var/heard = ""
|
||||
if(prob(15))
|
||||
var/list/punctuation = list(",", "!", ".", ";", "?")
|
||||
|
||||
@@ -1257,6 +1257,11 @@
|
||||
custom_pain("You feel a stabbing pain in your chest!", 50)
|
||||
L.bruise()
|
||||
|
||||
/mob/living/carbon/human/proc/is_lung_rescued()
|
||||
var/species_organ = species.breathing_organ
|
||||
var/obj/item/organ/internal/lungs/L = internal_organs_by_name[species_organ]
|
||||
return L && L.rescued
|
||||
|
||||
//returns 1 if made bloody, returns 0 otherwise
|
||||
/mob/living/carbon/human/add_blood(mob/living/carbon/C as mob)
|
||||
if (!..())
|
||||
|
||||
@@ -146,6 +146,10 @@
|
||||
return
|
||||
last_x = x
|
||||
last_y = y
|
||||
if(shoes)
|
||||
var/obj/item/clothing/shoes/S = shoes
|
||||
if(S.do_special_footsteps(m_intent))
|
||||
return
|
||||
if (m_intent == M_RUN)
|
||||
playsound(src, is_noisy ? footsound : species.footsound, 70, 1, required_asfx_toggles = ASFX_FOOTSTEPS)
|
||||
else
|
||||
|
||||
@@ -287,6 +287,10 @@
|
||||
/mob/living/silicon/robot/drone/updatename()
|
||||
return
|
||||
|
||||
/mob/living/silicon/robot/drone/setup_icon_cache()
|
||||
setup_eye_cache()
|
||||
setup_panel_cache()
|
||||
|
||||
/mob/living/silicon/robot/drone/setup_eye_cache()
|
||||
cached_eye_overlays = list(
|
||||
I_HELP = image(icon, "[icon_state]-eyes_help"),
|
||||
|
||||
@@ -3,10 +3,6 @@
|
||||
|
||||
//Returns the thing in our active hand (whatever is in our active module-slot, in this case)
|
||||
/mob/living/silicon/robot/get_active_hand()
|
||||
if(istype(module_active, /obj/item/gripper))
|
||||
var/obj/item/gripper/G = module_active
|
||||
if(G.wrapped)
|
||||
return G.wrapped
|
||||
return module_active
|
||||
|
||||
/mob/living/silicon/robot/proc/return_wirecutter()
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/obj/item/gripper/proc/grip_item(var/obj/item/I, var/mob/user, var/feedback = 1)
|
||||
/obj/item/gripper/proc/grip_item(var/obj/item/I, var/mob/user, var/feedback = TRUE)
|
||||
//This function returns 1 if we successfully took the item, or 0 if it was invalid. This information is useful to the caller
|
||||
if(!wrapped)
|
||||
if((can_hold && is_type_in_list(I, can_hold)) || (cant_hold && !is_type_in_list(I, cant_hold)))
|
||||
@@ -125,14 +125,14 @@
|
||||
update_icon()
|
||||
return TRUE
|
||||
|
||||
/obj/item/gripper/attack(mob/living/carbon/M, mob/living/carbon/user)
|
||||
/obj/item/gripper/attack(mob/M, mob/user)
|
||||
if(wrapped) //The force of the wrapped obj gets set to zero during the attack() and afterattack().
|
||||
force_holder = wrapped.force
|
||||
wrapped.force = 0
|
||||
wrapped.attack(M,user)
|
||||
var/resolved = wrapped.attack(M,user)
|
||||
if(QDELETED(wrapped))
|
||||
wrapped = null
|
||||
return TRUE
|
||||
drop(get_turf(src), user, FALSE)
|
||||
return resolved
|
||||
else // mob interactions
|
||||
switch(user.a_intent)
|
||||
if(I_HELP)
|
||||
@@ -148,26 +148,23 @@
|
||||
/obj/item/gripper/attackby(obj/item/O, mob/user)
|
||||
if(wrapped)
|
||||
if(O == wrapped)
|
||||
attack_self(user) //Allows gripper to be clicked to use item.
|
||||
attack_self(user) //Allows gripper to be clicked to use item.
|
||||
return
|
||||
var/resolved = wrapped.attackby(O,user)
|
||||
if(!resolved && wrapped && O)
|
||||
O.afterattack(wrapped, user ,1)//We pass along things targeting the gripper, to objects inside the gripper. So that we can draw chemicals from held beakers for instance
|
||||
if(!resolved)
|
||||
O.afterattack(wrapped, user, TRUE)//We pass along things targeting the gripper, to objects inside the gripper. So that we can draw chemicals from held beakers for instance
|
||||
return
|
||||
|
||||
/obj/item/gripper/afterattack(var/atom/target, var/mob/living/user, proximity, params)
|
||||
if(!proximity)
|
||||
return // This will prevent them using guns at range but adminbuse can add them directly to modules, so eh.
|
||||
//There's some weirdness with items being lost inside the arm. Trying to fix all cases. ~Z
|
||||
if(!wrapped)
|
||||
for(var/obj/item/thing in src.contents)
|
||||
wrapped = thing
|
||||
break
|
||||
return
|
||||
if(wrapped) //Already have an item.
|
||||
return //This is handled in /mob/living/silicon/robot/GripperClickOn
|
||||
wrapped.afterattack(target, user, TRUE, params)
|
||||
if(QDELETED(wrapped))
|
||||
drop(get_turf(src), user, FALSE)
|
||||
else if(istype(target, /obj/item/storage) && !istype(target, /obj/item/storage/pill_bottle) && !istype(target, /obj/item/storage/secure))
|
||||
for(var/obj/item/C in target.contents)
|
||||
if(grip_item(C, user, 0))
|
||||
for(var/obj/item/C in target)
|
||||
if(grip_item(C, user, FALSE))
|
||||
to_chat(user, SPAN_NOTICE("You grab \the [C] from inside \the [target.name]."))
|
||||
return
|
||||
to_chat(user, SPAN_NOTICE("There is nothing inside the box that your gripper can collect."))
|
||||
@@ -183,6 +180,12 @@
|
||||
target.attack_ai(user)
|
||||
just_dropped = FALSE
|
||||
|
||||
/obj/item/gripper/resolve_attackby(atom/A, mob/user, var/click_parameters)
|
||||
if(wrapped)
|
||||
return wrapped.resolve_attackby(A, user, click_parameters)
|
||||
else
|
||||
. = ..()
|
||||
|
||||
/*
|
||||
//Definitions of gripper subtypes
|
||||
*/
|
||||
@@ -334,4 +337,4 @@
|
||||
/obj/item/storage,
|
||||
/obj/item/modular_computer,
|
||||
/obj/item/card/id
|
||||
)
|
||||
)
|
||||
|
||||
@@ -842,6 +842,7 @@ var/global/list/robot_modules = list(
|
||||
modules += new /obj/item/device/flash(src) // Non-lethal tool that prevents any 'borg from going lethal on Crew so long as it's an option according to laws.
|
||||
modules += new /obj/item/crowbar/robotic(src) // Base crowbar that all 'borgs should have access to.
|
||||
modules += new /obj/item/storage/part_replacer(src)
|
||||
modules += new /obj/item/device/multitool/robotic(src) // To enable them to connect machines that require multitools e.g. tech-processors
|
||||
emag = new /obj/item/hand_tele(src)
|
||||
|
||||
var/datum/matter_synth/nanite = new /datum/matter_synth/nanite(10000)
|
||||
|
||||
@@ -27,9 +27,9 @@
|
||||
var/image/blood_overlay
|
||||
|
||||
var/bleeding = FALSE
|
||||
var/blood_amount = 50 // set a limit to the amount of blood it can bleed, otherwise it will keep bleeding forever and crunk the server
|
||||
var/blood_amount = 20 // set a limit to the amount of blood it can bleed, otherwise it will keep bleeding forever and crunk the server
|
||||
var/previous_bleed_timer = 0 // they only bleed for as many seconds as force damage was applied to them
|
||||
var/blood_timer_mod = 1 // tweak to change the amount of seconds a mob will bleed
|
||||
var/blood_timer_mod = 0.25 // tweak to change the amount of seconds a mob will bleed
|
||||
|
||||
var/list/speak = list()
|
||||
var/speak_chance = 0
|
||||
|
||||
@@ -818,6 +818,9 @@
|
||||
stat("Game ID", game_id)
|
||||
stat("Map", current_map.full_name)
|
||||
stat("Current Space Sector", SSatlas.current_sector.name)
|
||||
var/current_month = text2num(time2text(world.realtime, "MM"))
|
||||
var/current_day = text2num(time2text(world.realtime, "DD"))
|
||||
stat("Current Date", "[current_day]/[current_month]/[game_year]")
|
||||
stat("Station Time", worldtime2text())
|
||||
stat("Round Duration", get_round_duration_formatted())
|
||||
stat("Last Transfer Vote", SSvote.last_transfer_vote ? time2text(SSvote.last_transfer_vote, "hh:mm") : "Never")
|
||||
@@ -953,13 +956,15 @@
|
||||
|
||||
|
||||
/mob/proc/facedir(var/ndir)
|
||||
if(!canface() || (client && client.moving) || (client && world.time < client.move_delay))
|
||||
if(!canface() || (client && client.moving))
|
||||
return 0
|
||||
if(facing_dir != ndir)
|
||||
facing_dir = null
|
||||
set_dir(ndir)
|
||||
if(buckled_to && buckled_to.buckle_movable)
|
||||
buckled_to.set_dir(ndir)
|
||||
if (client)//Fixing a ton of runtime errors that came from checking client vars on an NPC
|
||||
client.move_delay += movement_delay()
|
||||
setMoveCooldown(movement_delay())
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user