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:
alberyk
2022-04-04 19:47:58 -03:00
100 changed files with 1824 additions and 447407 deletions
+4 -3
View File
@@ -290,11 +290,12 @@
send_link(usr, selected_report.public_topic)
//Ask them if there was antag involvement
var/a = input(user, "Were your actions influenced by antagonists?", "Antagonist involvement") in list("yes","no")
var/a = input(user, "Were your actions influenced by antagonists or OOC issues/concerns ?", "Antagonist involvement / OOC Issue") in list("yes","no")
if(a == "yes")
antag_involvement = TRUE
antag_involvement_text = sanitizeSafe(input("Describe how your actions were influenced by the antagonists.", "Antag involvement") as message|null)
message_cciaa("CCIA Interview: [user] claimed their actions were influenced by antagonists.", R_CCIAA)
antag_involvement_text = sanitizeSafe(input("Describe how your actions were influenced by the antagonists or OOC issues/concerns.", "Antag involvement / OOC Issue") as message|null)
message_cciaa("CCIA Interview: [user] claimed their actions were influenced by antagonists or OOC issues.", R_CCIAA)
message_cciaa("CCIA Interview: [antag_involvement_text]")
else
antag_involvement = FALSE
+1
View File
@@ -26,6 +26,7 @@
var/adminobs = null
var/area = null
var/time_died_as_rat = 0
var/list/autofire_aiming_at[2]
var/adminhelped = NOT_ADMINHELPED
+29 -6
View File
@@ -771,6 +771,9 @@ var/list/localhost_addresses = list(
. = ..()
if(over_object)
if(autofire_aiming_at[1])
autofire_aiming_at[1] = over_object
autofire_aiming_at[2] = params
var/mob/living/M = mob
if(istype(get_turf(over_object), /atom))
var/atom/A = get_turf(over_object)
@@ -780,15 +783,35 @@ var/list/localhost_addresses = list(
if(istype(M) && !M.incapacitated())
var/obj/item/I = M.get_active_hand()
if(istype(I, /obj/item/gun))
var/obj/item/gun/gun = I
if(gun.can_autofire())
M.set_dir(get_dir(M, over_object))
gun.Fire(get_turf(over_object), M, params, (get_dist(over_object, M) <= 1), FALSE)
if(istype(I, /obj/item/rfd/mining) && isturf(over_object))
var/proximity = M.Adjacent(over_object)
var/obj/item/rfd/mining/RFDM = I
RFDM.afterattack(over_object, M, proximity, params, FALSE)
CHECK_TICK
/client/MouseDown(object, location, control, params)
var/obj/item/I = mob.get_active_hand()
var/obj/O = object
if(istype(I, /obj/item/gun))
var/obj/item/gun/G = I
if(G.can_autofire(object, location, params) && O.is_auto_clickable())
autofire_aiming_at[1] = object
autofire_aiming_at[2] = params
while(autofire_aiming_at[1])
G.Fire(autofire_aiming_at[1], mob, autofire_aiming_at[2], (get_dist(mob, location) <= 1), FALSE)
mob.set_dir(get_dir(mob, autofire_aiming_at[1]))
sleep(G.fire_delay)
CHECK_TICK
/client/MouseUp(object, location, control, params)
autofire_aiming_at[1] = null
/atom/proc/is_auto_clickable()
return TRUE
/obj/screen/is_auto_clickable()
return FALSE
/obj/screen/click_catcher/is_auto_clickable()
return TRUE
@@ -32,6 +32,7 @@
display_name = "synthetic vocal cords"
description = "Vocal cords of synthetic nature packed into an augment kit. This allows users who are mute due to structural damage of the throat to speak."
path = /obj/item/organ/internal/augment/synthetic_cords
whitelisted = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA_ZHAN, SPECIES_TAJARA_MSAI, SPECIES_SKRELL, SPECIES_SKRELL_AXIORI, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_BULWARK, SPECIES_VAURCA_BREEDER, SPECIES_UNATHI)
cost = 1
/datum/gear/augment/combitool
@@ -64,6 +65,7 @@
display_name = "cochlear implant"
description = "A synthetic replacement for the structures within the ear, allowing the user to hear without requiring external tools."
path = /obj/item/organ/internal/augment/cochlear
whitelisted = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA_ZHAN, SPECIES_TAJARA_MSAI, SPECIES_SKRELL, SPECIES_SKRELL_AXIORI, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_BULWARK, SPECIES_VAURCA_BREEDER, SPECIES_UNATHI)
cost = 3
/datum/gear/augment/health_scanner
@@ -82,6 +84,7 @@
display_name = "taste booster selection"
description = "A selection of augments that modify the user's taste sensitivity."
path = /obj/item/organ/internal/augment/taste_booster
whitelisted = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA_ZHAN, SPECIES_TAJARA_MSAI, SPECIES_SKRELL, SPECIES_SKRELL_AXIORI, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_BULWARK, SPECIES_VAURCA_BREEDER, SPECIES_UNATHI)
/datum/gear/augment/taste_boosters/New()
..()
@@ -156,21 +159,25 @@
description = "A fluff based augmentation that can be renamed/redescribed to appear as something else for RP purposes."
path = /obj/item/organ/internal/augment/head_fluff
flags = GEAR_HAS_NAME_SELECTION | GEAR_HAS_DESC_SELECTION
whitelisted = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA_ZHAN, SPECIES_TAJARA_MSAI, SPECIES_SKRELL, SPECIES_SKRELL_AXIORI, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_BULWARK, SPECIES_VAURCA_BREEDER, SPECIES_UNATHI)
/datum/gear/augment/chest_fluff
display_name = "Custom chest augmentation"
description = "A fluff based augmentation that can be renamed/redescribed to appear as something else for RP purposes."
path = /obj/item/organ/internal/augment/head_fluff/chest_fluff
flags = GEAR_HAS_NAME_SELECTION | GEAR_HAS_DESC_SELECTION
whitelisted = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA_ZHAN, SPECIES_TAJARA_MSAI, SPECIES_SKRELL, SPECIES_SKRELL_AXIORI, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_BULWARK, SPECIES_VAURCA_BREEDER, SPECIES_UNATHI)
/datum/gear/augment/rhand_fluff
display_name = "Custom right hand augmentation"
description = "A fluff based augmentation that can be renamed/redescribed to appear as something else for RP purposes."
path = /obj/item/organ/internal/augment/head_fluff/rhand_fluff
flags = GEAR_HAS_NAME_SELECTION | GEAR_HAS_DESC_SELECTION
whitelisted = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA_ZHAN, SPECIES_TAJARA_MSAI, SPECIES_SKRELL, SPECIES_SKRELL_AXIORI, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_BULWARK, SPECIES_VAURCA_BREEDER, SPECIES_UNATHI)
/datum/gear/augment/lhand_fluff
display_name = "Custom left hand augmentation"
description = "A fluff based augmentation that can be renamed/redescribed to appear as something else for RP purposes."
path = /obj/item/organ/internal/augment/head_fluff/lhand_fluff
flags = GEAR_HAS_NAME_SELECTION | GEAR_HAS_DESC_SELECTION
whitelisted = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA_ZHAN, SPECIES_TAJARA_MSAI, SPECIES_SKRELL, SPECIES_SKRELL_AXIORI, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_BULWARK, SPECIES_VAURCA_BREEDER, SPECIES_UNATHI)
@@ -54,7 +54,7 @@
coat["tajaran naval coat"] = /obj/item/clothing/suit/storage/toggle/tajaran
coat["gruff cloak"] = /obj/item/clothing/suit/storage/hooded/tajaran
coat["adhomian wool coat"] = /obj/item/clothing/suit/storage/toggle/tajaran/wool
coat["Raakti Shariim coat"] = /obj/item/clothing/suit/storage/toggle/tajaran/raakti_shariim
coat["raakti shariim coat"] = /obj/item/clothing/suit/storage/toggle/tajaran/raakti_shariim
gear_tweaks += new /datum/gear_tweak/path(coat)
/datum/gear/suit/tajara_cloak
@@ -86,7 +86,7 @@
robes["sun priest robe"] = /obj/item/clothing/suit/storage/hooded/tajaran/priest
robes["sun sister robe"] = /obj/item/clothing/suit/storage/tajaran/messa
robes["matake priest mantle"] = /obj/item/clothing/suit/storage/tajaran/matake
robes["Azubarre priest robes"] = /obj/item/clothing/suit/storage/tajaran/azubarre
robes["azubarre priest robes"] = /obj/item/clothing/suit/storage/tajaran/azubarre
gear_tweaks += new /datum/gear_tweak/path(robes)
/datum/gear/suit/tajaran_labcoat
@@ -100,7 +100,7 @@
display_name = "adhomian surgeon garb"
path = /obj/item/clothing/suit/storage/hooded/tajaran/surgery
whitelisted = list(SPECIES_TAJARA, SPECIES_TAJARA_ZHAN, SPECIES_TAJARA_MSAI)
allowed_roles = list("Chief Medical Officer", "Physician", "Surgeon", "Xenobiologist")
allowed_roles = list("Chief Medical Officer", "Physician", "Surgeon", "Xenobiologist", "Roboticist")
sort_category = "Xenowear - Tajara"
/datum/gear/uniform/tajara
@@ -115,12 +115,12 @@
var/list/uniform = list()
uniform["laborers clothes"] = /obj/item/clothing/under/tajaran
uniform["fancy uniform"] = /obj/item/clothing/under/tajaran/fancy
uniform["NanoTrasen overalls"] = /obj/item/clothing/under/tajaran/nt
uniform["nanotrasen overalls"] = /obj/item/clothing/under/tajaran/nt
uniform["matake priest garments"] = /obj/item/clothing/under/tajaran/matake
uniform["adhomian summerwear"] = /obj/item/clothing/under/tajaran/summer
uniform["adhomian summer pants"] = /obj/item/clothing/under/pants/tajaran
uniform["machinist uniform"] = /obj/item/clothing/under/tajaran/mechanic
uniform["Raakti Shariim uniform"] = /obj/item/clothing/under/tajaran/raakti_shariim
uniform["raakti shariim uniform"] = /obj/item/clothing/under/tajaran/raakti_shariim
gear_tweaks += new /datum/gear_tweak/path(uniform)
/datum/gear/uniform/tajara_dress
@@ -197,6 +197,11 @@
circlet["fur hat"] = /obj/item/clothing/head/tajaran/fur
circlet["matake priest hat"] = /obj/item/clothing/head/tajaran/matake
circlet["raakti shariim beret"] = /obj/item/clothing/head/beret/tajaran/raakti_shariim
circlet["hadiist army beret"] = /obj/item/clothing/head/beret/tajaran/pra
circlet["liberation army beret"] = /obj/item/clothing/head/beret/tajaran/dpra
circlet["liberation army beret, alternative"] = /obj/item/clothing/head/beret/tajaran/dpra/alt
circlet["new kingdom naval beret"] = /obj/item/clothing/head/beret/tajaran/nka
circlet["new kingdom naval officer beret"] = /obj/item/clothing/head/beret/tajaran/nka/officer
gear_tweaks += new /datum/gear_tweak/path(circlet)
/datum/gear/accessory/tajara_wrap
@@ -252,7 +257,7 @@
sort_category = "Xenowear - Tajara"
/datum/gear/accessory/tajaran_card
display_name = "tajaran cards, badges and pins selection"
display_name = "tajaran faction cards, badges and pins selection"
description = "A selection of Tajaran related cards, badges and pins."
path = /obj/item/clothing/accessory/badge/hadii_card
sort_category = "Xenowear - Tajara"
@@ -329,7 +334,7 @@
path = /obj/item/voidsuit_modkit/himeo/tajara
sort_category = "Xenowear - Tajara"
whitelisted = list(SPECIES_TAJARA, SPECIES_TAJARA_ZHAN, SPECIES_TAJARA_MSAI)
allowed_roles = list("Shaft Miner", "Operations Manager", "Engineer", "Atmospheric Technician", "Chief Engineer", "Engineering Apprentice")
allowed_roles = list("Cargo Technician", "Shaft Miner", "Quartermaster", "Head of Personnel", "Station Engineer", "Atmospheric Technician", "Chief Engineer", "Engineering Apprentice")
/datum/gear/tajaran_tarot
display_name = "adhomian divination cards deck"
@@ -358,3 +363,36 @@
charm["tajani charm"] = /obj/item/clothing/accessory/tajaran/charm/tajani
charm["holy sun rosette"] = /obj/item/clothing/accessory/tajaran/srendarr
gear_tweaks += new /datum/gear_tweak/path(charm)
/datum/gear/accessory/dpra_party_pin
display_name = "democratic peoples republic party pins selection"
description = "A selection of DPRA party pins."
path = /obj/item/clothing/accessory/tajaran/nawparty_pin
sort_category = "Xenowear - Tajara"
whitelisted = list(SPECIES_TAJARA, SPECIES_TAJARA_ZHAN, SPECIES_TAJARA_MSAI)
flags = GEAR_HAS_DESC_SELECTION
/datum/gear/accessory/dpra_party_pin/New()
..()
var/list/card = list()
card["national adhomai workers party pin"] = /obj/item/clothing/accessory/tajaran/nawparty_pin
card["free tajaran people party pin"] = /obj/item/clothing/accessory/tajaran/ftpparty_pin
card["followers of Nated party pin"] = /obj/item/clothing/accessory/tajaran/fonparty_pin
card["adhomian blue party pin"] = /obj/item/clothing/accessory/tajaran/abparty_pin
card["amohdan free lodge party pin"] = /obj/item/clothing/accessory/tajaran/aflparty_pin
gear_tweaks += new /datum/gear_tweak/path(card)
/datum/gear/accessory/tajaran_gen_accessorry
display_name = "tajaran accessories selection"
description = "A selection of tajaran related accessories."
path = /obj/item/clothing/accessory/tajaran/zbrojny_badge
sort_category = "Xenowear - Tajara"
whitelisted = list(SPECIES_TAJARA, SPECIES_TAJARA_ZHAN, SPECIES_TAJARA_MSAI)
flags = GEAR_HAS_DESC_SELECTION
/datum/gear/accessory/tajaran_gen_accessorry/New()
..()
var/list/card = list()
card["zbrojny badge"] = /obj/item/clothing/accessory/tajaran/zbrojny_badge
card["golden sun pin"] = /obj/item/clothing/accessory/tajaran/tanker_pin
gear_tweaks += new /datum/gear_tweak/path(card)
+2 -2
View File
@@ -31,11 +31,11 @@
return copy //for inheritance
/proc/generate_chameleon_choices(var/basetype, var/blacklist=list())
/proc/generate_chameleon_choices(var/basetype, var/blacklist=list(), var/list/whitelist=list())
. = list()
var/i = 1 //in case there is a collision with both name AND icon_state
for(var/typepath in typesof(basetype) - blacklist)
for(var/typepath in (whitelist + typesof(basetype) - blacklist))
var/obj/O = typepath
if(initial(O.icon) && initial(O.icon_state))
var/name = initial(O.name)
+14
View File
@@ -802,6 +802,8 @@
var/silent = 0
var/last_trip = 0
var/footstep_sound_override
/obj/item/clothing/shoes/proc/draw_knife()
set name = "Draw Boot Knife"
set desc = "Pull out your boot knife."
@@ -910,6 +912,18 @@
. = ..()
track_footprint = 0
/obj/item/clothing/shoes/proc/do_special_footsteps(var/running)
if(!footstep_sound_override)
return FALSE
if(ishuman(loc))
var/mob/living/carbon/human/wearer = loc
if(running)
playsound(wearer, footstep_sound_override, 70, 1, required_asfx_toggles = ASFX_FOOTSTEPS)
else
footstep++
if (footstep % 2)
playsound(wearer, footstep_sound_override, 40, 1, required_asfx_toggles = ASFX_FOOTSTEPS)
return TRUE
///////////////////////////////////////////////////////////////////////
//Suit
/obj/item/clothing/suit
+18 -8
View File
@@ -53,31 +53,41 @@
icon_state = "raskara_mask"
item_state = "raskara_mask"
/obj/item/clothing/head/beret/tajaran/pra
name = "republican army beret"
desc = "A green beret issued to republican soldiers."
/obj/item/clothing/head/beret/tajaran
icon = 'icons/obj/tajara_items.dmi'
contained_sprite = TRUE
/obj/item/clothing/head/beret/tajaran/pra
name = "hadiist army beret"
desc = "A green beret issued to hadiist soldiers."
icon_state = "praberet"
item_state = "praberet"
contained_sprite = TRUE
/obj/item/clothing/head/beret/tajaran/dpra
name = "liberation army beret"
desc = "A beret issued to liberation army soldiers."
icon = 'icons/obj/tajara_items.dmi'
icon_state = "alaberet"
item_state = "alaberet"
contained_sprite = TRUE
/obj/item/clothing/head/beret/tajaran/dpra/alt
icon_state = "alaberetalt"
item_state = "alaberetalt"
/obj/item/clothing/head/beret/tajaran/nka
name = "new kingdom naval beret"
desc = "A formal black beret with a blue band. This is worn by NKA naval servicemen and crewmen such as the Imperial Marines."
icon_state = "navalberetblue"
item_state = "navalberetblue"
/obj/item/clothing/head/beret/tajaran/nka/officer
name = "new kingdom naval officer beret"
desc = "A formal black beret with a golden band. This is worn by members of the NKA naval officer corps. These are prized in the New Kingdom thanks to the Navy's popularity."
icon_state = "navalberetofficer"
item_state = "navalberetofficer"
/obj/item/clothing/head/beret/tajaran/raakti_shariim
name = "\improper Raakti Shariim beret"
desc = "A blue beret with a pale-gold twin-suns insignia, signifying a Constable of the NKA's Raakti Shariim."
icon = 'icons/obj/tajara_items.dmi'
contained_sprite = TRUE
icon_state = "raakti_shariim_beret"
item_state = "raakti_shariim_beret"
desc_fluff = "The Raakti Shariim (Royal Peacekeepers in Ceti Basic) are the New Kingdom of Adhomai's policing and \
@@ -30,6 +30,7 @@
species_restricted = null
gender = PLURAL
icon_base = null
footstep_sound_override = 'sound/machines/rig/rigstep.ogg'
/obj/item/clothing/suit/space/rig
name = "chestpiece"
@@ -339,3 +339,104 @@
desc = "A hand carved charm of one of the mythical tajani."
desc_fluff = "Tajani, also known as 'short people' in basic, are good-willed tiny elder Tajara who serve as guardians of nature and homes. \
Hand carved charms of them is considered a symbol of luck and as such many superstitious tajara keeps one around."
/obj/item/clothing/accessory/tajaran/tanker_pin
name = "golden sun pin"
desc = "Given to all members of the Hro'rammad tank corps is this sun pin. It is considered a symbol of how the tanker corps is the wrath of the God S'rendarr. Its rays are sharp not \
just so it can be easily pinned but also to represent how the tankers are the blades of S'rendarr himself. "
icon_state = "tanker_pin"
item_state = "tanker_pin"
overlay_state = "tanker_pin"
desc_fluff = "Lead by the famously merciful Commander Kahan Hro'rammhad, the Hro'rammhad Tank Corps has the distinction of being the most powerful and accomplished armored unit in the history \
of Adhomai. These elite Armored Kazarrhaldiye Tajara are used primarily in offensive operations to break through opposing lines and encircle their positions. Their tanks have exceptionally \
wide tracks which allow them to more easily tread across snowy terrains. Veterans of the Hro'rammhad Tank Corps are known for their golden pins depicting the sun-god S'rendarr which they wear on their uniforms."
flippable = TRUE
drop_sound = 'sound/items/drop/ring.ogg'
pickup_sound = 'sound/items/pickup/ring.ogg'
/obj/item/clothing/accessory/tajaran/zbrojny_badge
name = "zbrojny badge"
desc = "A small badge given to people who enter the Intelligence Service's Zbrojny program. The siik'mas \"Z\" character has 3 studs underneath it to designate this person as having fully completed the program."
icon_state = "zbrojny_badge"
item_state = "zbrojny_badge"
overlay_state = "zbrojny_badge"
desc_fluff = "Seeking to replicate the success of the Liberation Army guerrillas, the Zbrojny is a partisan force created after the Armistice. The Zbrojny is made up of loyal Hadiist \
volunteers from the civilian population. Trained by the People's Strategic Intelligence Service in guerilla tactics, they are meant to act behind enemy lines in occupied territory. \
Unlike all branches of the Grand People's Army, the Partisans are under the direct control of the secret service."
flippable = TRUE
drop_sound = 'sound/items/drop/ring.ogg'
pickup_sound = 'sound/items/pickup/ring.ogg'
//dpra party badges
/obj/item/clothing/accessory/tajaran/abparty_pin
name = "adhomian blue party pin"
desc = "A pin of the Adhomian Blue Party. This symbol is a white hoe on a blue background representing the party's dedication to environmentalism and ruralism."
icon_state = "abparty_pin"
item_state = "abparty_pin"
overlay_state = "abparty_pin"
desc_fluff = "The Adhomian Blue party is formed by farmers and students. Instead of worrying about the Armistice or the composition of the government, their main goal is to preserve the environment of \
Adhomai. Industrialization and armed conflict are considered a major threat to the nature and beauty of the planet. Members of this organization are also vehemently opposed to the presence \
of NanoTrasen. The organization is currently divided between environmentalists and Al'mariist ruralists."
flippable = TRUE
drop_sound = 'sound/items/drop/ring.ogg'
pickup_sound = 'sound/items/pickup/ring.ogg'
/obj/item/clothing/accessory/tajaran/fonparty_pin
name = "followers of Nated party pin"
desc = "A pin of the Followers of Nated. The pin is split down the middle with the golden yellow reflecting S'rendarr and the pale blue reflecting Messa. A black Spear of Mata'ke is laid overtop."
icon_state = "fonparty_pin"
item_state = "fonparty_pin"
overlay_state = "fonparty_pin"
desc_fluff = "The Followers of Nated is an organization formed by fanatical supporters of Nated who claim he is a divine avatar of the Suns or Mata'ke. They support a dictatorship under the guidance of Halkiikijr \
Nated'Hakhan, stripping away any semblance of democracy from the Democratic People's Republic. Members of this party oppose any form of peace or negotiation with the other Tajaran factions, \
or diplomacy with alien powers. They are known for hosting the most radical elements of DPRA's political scenario."
flippable = TRUE
drop_sound = 'sound/items/drop/ring.ogg'
pickup_sound = 'sound/items/pickup/ring.ogg'
/obj/item/clothing/accessory/tajaran/ftpparty_pin
name = "free tajaran people party pin"
desc = "A pin of the Free Tajaran's People Party. The two white rifles represent the party's fervor in crushing the two ideological enemies of the Tajara: Royalism and Hadiism."
icon_state = "ftpparty_pin"
item_state = "ftpparty_pin"
overlay_state = "ftpparty_pin"
desc_fluff = "The Free Tajaran People's Party encompasses most of the military and authoritarian elements. They seek to weaken the autonomy of governors in favor of a strong central government, overseen by \
the supreme commander. Members of this organization hold the most nationalist and xenophobic views; defending the return of the war against other Adhomian nations and isolation before the \
galactic community."
flippable = TRUE
drop_sound = 'sound/items/drop/ring.ogg'
pickup_sound = 'sound/items/pickup/ring.ogg'
/obj/item/clothing/accessory/tajaran/nawparty_pin
name = "national adhomai workers party pin"
desc = "A pin of the National Adhomai Workers Party. The hammer and wrench are tools of the common Tajaran worker and the red represents the blood spilled by Tajaran during the Revolutions."
icon_state = "nawparty_pin"
item_state = "nawparty_pin"
overlay_state = "nawparty_pin"
desc_fluff = "The National Adhomai Worker's Party is composed of urban workers and intellectuals. They aim to increase the autonomy of the states, placing less importance on the decisions made by the national \
assemblies. Members of its organization hold far more moderate views; seeking to honor the Armistice of Shastar while recognizing that maintaining a healthy and independent relationship \
with other foreign powers is needed."
flippable = TRUE
drop_sound = 'sound/items/drop/ring.ogg'
pickup_sound = 'sound/items/pickup/ring.ogg'
/obj/item/clothing/accessory/tajaran/aflparty_pin
name = "amohdan free lodge party pin"
desc = "A pin of the banned Amohdan Free Lodge. The golden sword represents divine right to independence and willingness to fight for it. Carrying this pin in Amohda is a death sentence."
icon_state = "aflparty_pin"
item_state = "aflparty_pin"
overlay_state = "aflparty_pin"
desc_fluff = "The Amohdan Free Lodge was represented by Amohdan nationals. They pushed for the independence of Amohda as its own state, usually siding with other parties that may help them in reaching their \
goals. However, they were divided between two different sides; one that saw democracy as the best option for the island, while others believed that restoring the monarchy would have been \
better. This organization was the main supporter of the ceasefire with the New Kingdom of Adhomai. This Party was banned after the Amohdan uprising of 2462."
flippable = TRUE
drop_sound = 'sound/items/drop/ring.ogg'
pickup_sound = 'sound/items/pickup/ring.ogg'
+49 -130
View File
@@ -1849,42 +1849,6 @@ All custom items with worn sprites must follow the contained sprite system: http
item_state = "godard_cape"
contained_sprite = TRUE
/obj/item/organ/internal/augment/fluff/kath_legbrace // Leg Support Augment - Kathira El-Hashem - thegreywolf
name = "leg support augment"
desc = "A leg augment to aid in the mobility of an otherwise disabled leg."
icon = 'icons/obj/custom_items/kathira_legbrace.dmi'
icon_override = 'icons/obj/custom_items/kathira_legbrace.dmi'
on_mob_icon = 'icons/obj/custom_items/kathira_legbrace.dmi'
icon_state = "kathira_legbrace"
item_state = "kathira_legbrace_onmob"
parent_organ = BP_R_LEG
supports_limb = TRUE
min_broken_damage = 15
min_bruised_damage = 5
var/last_drop = 0
/obj/item/organ/internal/augment/fluff/kath_legbrace/process()
if(QDELETED(src) || !owner)
return
if(last_drop + 6 SECONDS > world.time)
return
if(owner.lying || owner.buckled_to || length(owner.grabbed_by))
return
if(is_bruised())
if(is_broken())
collapse(40, 3, 110)
else
collapse()
/obj/item/organ/internal/augment/fluff/kath_legbrace/proc/collapse(var/prob_chance = 20, var/weaken_strength = 2, var/pain_strength = 40)
if(prob(prob_chance))
var/obj/item/organ/external/E = owner.organs_by_name[parent_organ]
owner.Weaken(weaken_strength)
last_drop = world.time
owner.custom_pain("Something inside your [E.name] hurts too much to stand!", pain_strength, TRUE, E, TRUE)
owner.visible_message("<b>[owner]</b> collapses!")
/obj/item/flame/lighter/zippo/fluff/sezrak_zippo //Imperial 16th Zippo - Sezrak Han'san - captaingecko
name = "imperial 16th zippo"
desc = "A zippo lighter given by the Empire of Dominia to the men of the 16th Regiment of the Imperial Army, also known as the \"Suicide Regiments\", that would manage to survive more \
@@ -2029,15 +1993,6 @@ All custom items with worn sprites must follow the contained sprite system: http
item_state = "pax_bag"
contained_sprite = TRUE
/obj/item/journal/fluff/kathira // Blue Leather-Bound Journal - Kathira El-Hashem - TheGreyWolf
name = "blue leather-bound journal"
desc = "A blue journal emblazoned with the New Kingdom of Adhomai's flag across the cover."
closed_desc = " The pages within are a mix of clearly indexed case files, and study notes alongside less clearly indexed pages that appears to be fragmented thoughts, not unlike a diary. The very first page of the journal reads 'dedicated to Qirandri Mrorirhaldarr' and is signed 'Mrradar Sanufar' underneath."
icon = 'icons/obj/custom_items/kathira_journal.dmi'
icon_override = 'icons/obj/custom_items/kathira_journal.dmi'
icon_state = "kath_journal"
item_state = "kath_journal"
/obj/item/storage/pill_bottle/dice/fluff/suraya_dicebag //Crevan Dice Bag - Suraya Al-Zahrani - Omicega
name = "velvet dice bag"
desc = "A deep purple dice bag fashioned from Adhomian velvet, with two little drawstrings to tighten the neck closed."
@@ -2062,7 +2017,10 @@ All custom items with worn sprites must follow the contained sprite system: http
weight_roll = 22
/obj/item/stack/dice/fluff/suraya_dice/AltClick(mob/user)
if(!weight_roll)
if(user.get_active_hand() != src)
return ..()
if(weight_roll)
user.visible_message("<b>\The [user]</b> jiggles \the [src] around in their hand for a second.", SPAN_NOTICE("You jiggle the die rapidly in your hand, resetting the internal weighting."))
weight_roll = 0
else
@@ -2090,90 +2048,6 @@ All custom items with worn sprites must follow the contained sprite system: http
name = "old synthetic vocal cords"
desc = "A set of Old Age Synthetic Vocal Cords. They look barely functional."
/obj/item/clothing/accessory/poncho/tajarancloak/fluff/kathira_cloak // Handsewn Idris Cloak - Kathira El-Hashem - TheGreyWolf
name = "handsewn Idris cloak"
desc = "A carefully handsewn cloak proudly emblazoned with the symbol of Idris Banking in silver treading and the words Astronomical Figures. Unlimited Power. Embroidered beneath it.\nOn close examination, the inside of the cloak appears to be colored differently."
icon = 'icons/obj/custom_items/kathira_cloak.dmi'
icon_override = 'icons/obj/custom_items/kathira_cloak.dmi'
icon_state = "idris_cloak"
item_state = "idris_cloak"
var/style = "nka_cloak"
var/name2 = "handmade royalist cloak"
var/desc2 = "A blue cloak with the symbol of the New Kingdom of Adhomai proudly displayed on the back.\nUpon closer examination it appears to be a patchwork of older textile and newer fabrics, with the inside of the cloak appearing to be colored differently."
var/changed = FALSE
var/hoodtype = /obj/item/clothing/head/winterhood/fluff/kathira_hood
/obj/item/clothing/accessory/poncho/tajarancloak/fluff/kathira_cloak/Initialize()
. = ..()
new hoodtype(src)
/obj/item/clothing/head/winterhood/fluff/kathira_hood
name = "handsewn hood"
desc = "A hood attached to a cloak."
icon = 'icons/obj/custom_items/kathira_cloak.dmi'
icon_override = 'icons/obj/custom_items/kathira_cloak.dmi'
icon_state = "idris_cloak_hood"
contained_sprite = TRUE
flags_inv = HIDEEARS | BLOCKHAIR | HIDEEARS
/obj/item/clothing/accessory/poncho/tajarancloak/fluff/kathira_cloak/update_icon(var/hooded = FALSE)
var/obj/item/clothing/accessory/poncho/tajarancloak/fluff/kathira_cloak/K = get_accessory(/obj/item/clothing/accessory/poncho/tajarancloak/fluff/kathira_cloak)
K.icon_state = "[K.changed ? K.style : initial(K.icon_state)]"
SEND_SIGNAL(K, COMSIG_ITEM_STATE_CHECK, args)
K.item_state = "[K.icon_state][hooded ? "_up" : ""]"
K.name = "[K.changed ? K.name2 : initial(K.name)]"
K.desc = "[K.changed ? K.desc2 : initial(K.desc)]"
K.accessory_mob_overlay = null
. = ..()
SEND_SIGNAL(K, COMSIG_ITEM_ICON_UPDATE)
if(usr)
usr.update_inv_w_uniform()
usr.update_inv_wear_suit()
/obj/item/clothing/accessory/poncho/tajarancloak/fluff/kathira_cloak/verb/change_cloak()
set name = "Change Cloak"
set category = "Object"
set src in usr
if(use_check_and_message(usr))
return
var/obj/item/clothing/accessory/poncho/tajarancloak/fluff/kathira_cloak/K = get_accessory(/obj/item/clothing/accessory/poncho/tajarancloak/fluff/kathira_cloak)
if(!K)
return
usr.visible_message(SPAN_NOTICE("[usr] swiftly pulls \the [K] inside out, changing its appearance."))
K.changed = !K.changed
K.update_icon()
SEND_SIGNAL(K, COMSIG_ITEM_REMOVE, K)
/obj/item/clothing/accessory/poncho/tajarancloak/fluff/kathira_cloak/on_attached(obj/item/clothing/S, mob/user as mob)
..()
has_suit.verbs += /obj/item/clothing/accessory/poncho/tajarancloak/fluff/kathira_cloak/verb/change_cloak
has_suit.verbs += /obj/item/clothing/accessory/poncho/tajarancloak/fluff/kathira_cloak/verb/change_hood
/obj/item/clothing/accessory/poncho/tajarancloak/fluff/kathira_cloak/on_removed(mob/user as mob)
if(has_suit)
has_suit.verbs -= /obj/item/clothing/accessory/poncho/tajarancloak/fluff/kathira_cloak/verb/change_cloak
has_suit.verbs -= /obj/item/clothing/accessory/poncho/tajarancloak/fluff/kathira_cloak/verb/change_hood
..()
/obj/item/clothing/accessory/poncho/tajarancloak/fluff/kathira_cloak/verb/change_hood()
set name = "Toggle Hood"
set category = "Object"
set src in usr
if(use_check_and_message(usr))
return
var/obj/item/clothing/accessory/poncho/tajarancloak/fluff/kathira_cloak/K = get_accessory(/obj/item/clothing/accessory/poncho/tajarancloak/fluff/kathira_cloak)
if(!K)
return
SEND_SIGNAL(K, COMSIG_ITEM_UPDATE_STATE, K)
K.update_icon()
/obj/item/clothing/suit/storage/toggle/fluff/leonid_chokha //Old Rebel's Chokha - Leonid Myagmar - lucaken
name = "old rebel's chokha"
desc = "A not-so traditional Vysokan Chokha made out of beat-up gurmori leathers, worn-out to the point of seeming ancient. Though it might have been a Host-boy's garment once, it is now \
@@ -2349,3 +2223,48 @@ All custom items with worn sprites must follow the contained sprite system: http
icon_state = "iliasz_jacket"
item_state = "iliasz_jacket"
contained_sprite = TRUE
/obj/item/clothing/accessory/poncho/tajarancloak/fluff/dekel_smock // corporate smock - Dekel Mrrhazrughan - veterangary
name = "corporate smock"
desc = "A dark colored surplus winter smock repurposed for interstellar use. It still has a hood and a snow mask, shaded into corporate colors. A traditional Stellar Corporate Conglomerate star is embroidered on the back."
icon = 'icons/obj/custom_items/dekel_smock.dmi'
icon_override = 'icons/obj/custom_items/dekel_smock.dmi'
icon_state = "seccloak"
item_state = "seccloak"
var/hoodtype = /obj/item/clothing/head/winterhood/fluff/dekel_hood
/obj/item/clothing/accessory/poncho/tajarancloak/fluff/dekel_smock/Initialize()
. = ..()
new hoodtype(src)
/obj/item/clothing/head/winterhood/fluff/dekel_hood
name = "corporate hood"
desc = "A hood attached to a corporate smock."
icon = 'icons/obj/custom_items/dekel_smock.dmi'
icon_override = 'icons/obj/custom_items/dekel_smock.dmi'
icon_state = "seccloak_hood"
contained_sprite = TRUE
flags_inv = HIDEEARS | BLOCKHAIR
/obj/item/clothing/accessory/poncho/tajarancloak/fluff/dekel_smock/on_attached(obj/item/clothing/S, mob/user as mob)
..()
has_suit.verbs += /obj/item/clothing/accessory/poncho/tajarancloak/fluff/dekel_smock/verb/change_hood
/obj/item/clothing/accessory/poncho/tajarancloak/fluff/dekel_smock/on_removed(mob/user as mob)
if(has_suit)
has_suit.verbs -= /obj/item/clothing/accessory/poncho/tajarancloak/fluff/dekel_smock/verb/change_hood
..()
/obj/item/clothing/accessory/poncho/tajarancloak/fluff/dekel_smock/verb/change_hood()
set name = "Toggle Hood"
set category = "Object"
set src in usr
if(use_check_and_message(usr))
return
var/obj/item/clothing/accessory/poncho/tajarancloak/fluff/dekel_smock/D = get_accessory(/obj/item/clothing/accessory/poncho/tajarancloak/fluff/dekel_smock)
if(!D)
return
SEND_SIGNAL(D, COMSIG_ITEM_UPDATE_STATE, D)
+1 -1
View File
@@ -377,6 +377,6 @@
to_chat(user, "<span class='warning'>Access denied.</span>")
return TRUE
/obj/machinery/computer/HolodeckControl/Exodus
/obj/machinery/computer/HolodeckControl/Aurora
density = 0
linkedholodeck_area = /area/holodeck/alphadeck
-1
View File
@@ -125,7 +125,6 @@
if(95)
new /obj/item/clothing/under/mime(src)
new /obj/item/clothing/shoes/black(src)
new /obj/item/modular_computer/handheld/pda/civilian/mime(src)
new /obj/item/clothing/gloves/white(src)
new /obj/item/clothing/mask/gas/mime(src)
new /obj/item/clothing/head/beret/red(src)
@@ -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
+2
View File
@@ -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
+7 -2
View File
@@ -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
@@ -44,18 +44,6 @@
. = ..()
card_slot.stored_item = new /obj/item/pen/fountain
/obj/item/modular_computer/handheld/pda/civilian/clown
_app_preset_type = /datum/modular_computer_app_presets/civilian/clown
icon_add = "clown"
/obj/item/modular_computer/handheld/pda/civilian/clown/Initialize()
. = ..()
card_slot.stored_item = new /obj/item/pen/crayon
/obj/item/modular_computer/handheld/pda/civilian/mime
_app_preset_type = /datum/modular_computer_app_presets/civilian/mime
icon_add = "mime"
// Engineering
/obj/item/modular_computer/handheld/pda/engineering
@@ -457,18 +457,6 @@
)
return _prg_list
/datum/modular_computer_app_presets/civilian/clown
name = "clown"
display_name = "Clown"
description = "Contains programs for HONK!!!"
available = TRUE
/datum/modular_computer_app_presets/civilian/mime
name = "mime"
display_name = "Mime"
description = "Contains programs for janitorial service."
available = TRUE
/datum/modular_computer_app_presets/supply
name = "supply"
display_name = "Supply"
+8
View File
@@ -69,6 +69,14 @@
if(SMES)
var/outputset = input(usr, "Enter new output level (0-[SMES.output_level_max])", "SMES Input Power Control") as num
SMES.set_output(outputset)
if(href_list["smes_in_max"])
var/obj/machinery/power/smes/buildable/SMES = GetSMESByTag(href_list["smes_in_max"])
if(SMES)
SMES.set_input(SMES.input_level_max)
if(href_list["smes_out_max"])
var/obj/machinery/power/smes/buildable/SMES = GetSMESByTag(href_list["smes_out_max"])
if(SMES)
SMES.set_output(SMES.output_level_max)
if(href_list["toggle_breaker"])
var/obj/machinery/power/breakerbox/toggle = SSpower.rcon_breaker_units_by_tag[href_list["toggle_breaker"]]
+1 -1
View File
@@ -846,7 +846,7 @@ Note that amputating the affected organ does in fact remove the infection from t
number_wounds += W.amount
//things tend to bleed if they are CUT OPEN
if (open && !clamped && (H && !(H.species.flags & NO_BLOOD)))
if (open && !clamped && (H && !(H.species.flags & NO_BLOOD) && !(status & ORGAN_ROBOT)))
status |= ORGAN_BLEEDING
if (istype(tendon))
+2 -2
View File
@@ -37,7 +37,7 @@ If this zlevel (or any of connected ones for multiz) doesn't have this object, y
2. Put it anywhere on the ship/sector map. It will do the rest on its own during init.
If your thing is multiz, only one is needed per multiz sector/ship.
If it's player's main base (e.g Exodus), set 'base' var to 1, so it adds itself to station_levels list.
If it's player's main base (e.g Aurora), set 'base' var to 1, so it adds itself to station_levels list.
If this place cannot be reached or left with EVA, set 'in_space' var to 0
If you want exploration shuttles (look below) to be able to dock here, set up waypoints lists.
generic_waypoints is list of landmark_tags of waypoints any shttle should be able to visit.
@@ -84,4 +84,4 @@ Lets you control shuttles that can change destinations and visit other sectors/s
2. Define a /datum/shuttle/autodock/overmap for your shuttle. Same as normal shuttle, aside from 'range' var - how many squares on overmap it can travel on its own.
3. Place console anywhere on the ship/sector. Set shuttle_tag to shuttle's name.
4. Use. You can select destinations if you're in range (on same tile by defualt) on the map and sector has waypoints lists defined
*/
*/
+1 -1
View File
@@ -18,7 +18,7 @@
/obj/machinery/power/fractal_reactor/New()
..()
if(!mapped_in)
to_world("<b><span class='alert'>WARNING:</span> Map testing power source activated at: X:[src.loc.x] Y:[src.loc.y] Z:[src.loc.z]</b>")
log_and_message_admins("<b><span class='alert'>WARNING:</span> Map testing power source activated at: X:[src.loc.x] Y:[src.loc.y] Z:[src.loc.z]</b>")
/obj/machinery/power/fractal_reactor/machinery_process()
if(!powernet && !powernet_connection_failed)
+2 -24
View File
@@ -458,7 +458,6 @@
// attack with hand - remove tube/bulb
// if hands aren't protected and the light is on, burn the player
/obj/machinery/light/attack_hand(mob/user)
add_fingerprint(user)
if(status == LIGHT_EMPTY)
@@ -477,29 +476,6 @@
shatter()
return
// make it burn hands if not wearing fire-insulated gloves
if(!stat)
var/prot = 0
var/mob/living/carbon/human/H = user
if(istype(H))
if(H.species.heat_level_1 > LIGHT_BULB_TEMPERATURE)
prot = 1
else if(H.gloves)
var/obj/item/clothing/gloves/G = H.gloves
if(G.max_heat_protection_temperature && G.max_heat_protection_temperature > LIGHT_BULB_TEMPERATURE)
prot = 1
else
prot = 1
if(prot || (COLD_RESISTANCE in user.mutations))
to_chat(user, SPAN_NOTICE("You remove the light [fitting]."))
else
to_chat(user, SPAN_WARNING("You try to remove the light [fitting], but it's too hot and you don't want to burn your hand."))
return // if burned, don't remove the light
else
to_chat(user, SPAN_NOTICE("You remove the light [fitting]."))
// create a light tube/bulb item and put it in the user's hand
if(inserted_light)
var/obj/item/light/L = new inserted_light()
@@ -518,6 +494,8 @@
user.put_in_active_hand(L) //puts it in our active hand
to_chat(user, SPAN_NOTICE("You remove the light [fitting]."))
inserted_light = null
status = LIGHT_EMPTY
+1 -1
View File
@@ -945,7 +945,7 @@
return 0
//Autofire
/obj/item/gun/proc/can_autofire()
/obj/item/gun/proc/can_autofire(object, location, params)
return (can_autofire && world.time >= next_fire_time)
/obj/item/gun/proc/update_maptext()
@@ -413,10 +413,10 @@
is_wieldable = TRUE
firemodes = list(
list(mode_name="2 second burst", burst=10, burst_delay = 1, fire_delay = 20),
list(mode_name="4 second burst", burst=20, burst_delay = 1, fire_delay = 40),
list(mode_name="6 second burst", burst=30, burst_delay = 1, fire_delay = 60),
list(mode_name="point-burst auto", can_autofire = TRUE, burst = 1, fire_delay = 1, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(1.0, 1.0, 1.0, 1.0, 1.2))
list(mode_name="2 second burst", burst=10, burst_delay = 1, fire_delay = 20, fire_delay_wielded = 20),
list(mode_name="4 second burst", burst=20, burst_delay = 1, fire_delay = 40, fire_delay_wielded = 40),
list(mode_name="6 second burst", burst=30, burst_delay = 1, fire_delay = 60, fire_delay_wielded = 60),
list(mode_name="point-burst auto", can_autofire = TRUE, burst = 1, fire_delay = 1, fire_delay_wielded = 1, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(1.0, 1.0, 1.0, 1.0, 1.2))
)
needspin = FALSE
@@ -20,7 +20,7 @@
list(mode_name="semiauto", can_autofire=0, burst=1),
list(mode_name="3-round bursts", can_autofire=0, burst=3, burst_accuracy=list(1,0,0), dispersion=list(0, 10, 15)),
list(mode_name="short bursts", can_autofire=0, burst=5, burst_accuracy=list(1,0,,-1,-1), dispersion=list(5, 10, 15, 20)),
list(mode_name="full auto", can_autofire=1, burst=1, fire_delay=1, one_hand_fa_penalty=12, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(5, 10, 15, 20, 25))
list(mode_name="full auto", can_autofire=1, burst=1, fire_delay=1, fire_delay_wielded=1, one_hand_fa_penalty=12, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(5, 10, 15, 20, 25))
)
//Submachine guns and personal defence weapons, go.
@@ -121,7 +121,7 @@
list(mode_name="semiauto", burst=1, fire_delay=10),
list(mode_name="3-round bursts", burst=3, burst_accuracy=list(1,0,0), dispersion=list(0, 5, 10)),
list(mode_name="short bursts", burst=5, burst_accuracy=list(1,0,0,-1,-1), dispersion=list(5, 5, 15)),
list(mode_name="full auto", can_autofire=1, burst=1, fire_delay=1, one_hand_fa_penalty=12, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(5, 10, 15, 20, 25)),
list(mode_name="full auto", can_autofire=1, burst=1, fire_delay=1, fire_delay_wielded=1, one_hand_fa_penalty=12, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(5, 10, 15, 20, 25)),
)
//slower to regain aim, more inaccurate if not wielding
@@ -166,7 +166,7 @@
knife_y_offset = 13
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=8),
list(mode_name="full auto", can_autofire=1, burst=1, fire_delay=1, one_hand_fa_penalty=22, burst_accuracy = list(0,-1,-1,-1,-2,-2,-2,-3), dispersion = list(5, 5, 10, 15, 20)),
list(mode_name="full auto", can_autofire=1, burst=1, fire_delay=1, fire_delay_wielded=1, one_hand_fa_penalty=22, burst_accuracy = list(0,-1,-1,-1,-2,-2,-2,-3), dispersion = list(5, 5, 10, 15, 20)),
)
fire_delay = 8
@@ -194,7 +194,7 @@
knife_x_offset = 23
knife_y_offset = 13
firemodes = list(mode_name="semiauto", burst=1, fire_delay=12)
firemodes = list(mode_name="semiauto", burst=1, fire_delay=12, fire_delay_wielded=12)
/obj/item/gun/projectile/automatic/rifle/carbine/update_icon()
..()
@@ -315,7 +315,7 @@
firemodes = list(
list(mode_name="short bursts", burst=5, burst_accuracy = list(1,0,0,-1,-1), dispersion = list(3, 6, 9)),
list(mode_name="long bursts", burst=8, burst_accuracy = list(1,0,0,-1,-1,-1,-2,-2), dispersion = list(8)),
list(mode_name="full auto", can_autofire=1, burst=1, fire_delay=1, one_hand_fa_penalty=12, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(5, 10, 15, 20, 25))
list(mode_name="full auto", can_autofire=1, burst=1, fire_delay=1, fire_delay_wielded=1, one_hand_fa_penalty=12, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(5, 10, 15, 20, 25))
)
var/cover_open = 0
@@ -510,7 +510,7 @@
accuracy_wielded = 0
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay= 10),
list(mode_name="semiauto", burst=1, fire_delay= 10, fire_delay_wielded=10),
list(mode_name="3-round bursts", burst=3, burst_accuracy=list(0,-1,-1), dispersion=list(0, 10, 15))
)
@@ -127,9 +127,9 @@
origin_tech = null
firemodes = list(
list(mode_name="short bursts", can_autofire=0, burst=6, move_delay=8, burst_accuracy = list(0,-1,-1,-2,-2), dispersion = list(3, 6, 9)),
list(mode_name="short bursts", can_autofire=0, burst=6, move_delay=8, burst_accuracy = list(0,-1,-1,-2,-2), dispersion = list(3, 6, 9)),
list(mode_name="long bursts", can_autofire=0, burst=12, move_delay=9, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(8)),
list(mode_name="full auto", can_autofire=1, burst=1, fire_delay=1, one_hand_fa_penalty=12, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(5, 10, 15, 20, 25))
list(mode_name="full auto", can_autofire=1, burst=1, fire_delay=1, fire_delay_wielded=1, one_hand_fa_penalty=12, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(5, 10, 15, 20, 25))
)
@@ -180,7 +180,7 @@
sel_mode = 1
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0),
list(mode_name="semiauto", burst=1, fire_delay=0, fire_delay_wielded=0),
list(mode_name="3-round bursts", burst=3, burst_accuracy=list(1,0,0), dispersion=list(0, 10))
)
@@ -253,7 +253,7 @@
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0),
list(mode_name="semiauto", burst=1, fire_delay=0, fire_delay_wielded=0),
list(mode_name="2-round bursts", burst=2, burst_accuracy=list(0,-1,-1), dispersion=list(0, 8))
)
@@ -134,6 +134,9 @@
var/SM = (user == target) ? "your" : (target.name + "\'s")
if(!L)
return
if(isvaurca(target))
to_chat(usr, SPAN_WARNING("\The [src] won't pierce through [P] carapace!"))
return
if(L.rescued == TRUE)
to_chat(usr, SPAN_NOTICE("[H]'s ribs are already punctured!"))
return
@@ -240,4 +240,9 @@
/datum/design/circuit/machine/slime_extractor
name = "Slime Extractor"
req_tech = list(TECH_BIO = 2, TECH_ENGINEERING = 1, TECH_BLUESPACE = 1)
build_path = /obj/item/circuitboard/slime_extractor
build_path = /obj/item/circuitboard/slime_extractor
/datum/design/circuit/machine/iv_drip
name = "IV drip"
req_tech = list(TECH_DATA = 1, TECH_BIO = 2)
build_path = /obj/item/circuitboard/iv_drip
+1 -1
View File
@@ -99,7 +99,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message("<b>[user]</b> has closed the maintenance hatch on [target]'s [affected.name] with \the [tool].", \
SPAN_NOTICE("You have closed the maintenance hatch on [target]'s [affected.name] with \the [tool]."),)
affected.open = ORGAN_OPEN_INCISION
affected.open = ORGAN_CLOSED
/decl/surgery_step/robotics/screw_hatch/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)