Merge branch 'master' of https://github.com/PolarisSS13/Polaris into hairnets

This commit is contained in:
Cerebulon
2022-03-22 01:39:59 +00:00
74 changed files with 1356 additions and 464 deletions

View File

@@ -37,7 +37,7 @@
#define MAT_COPPER "copper"
#define MAT_QUARTZ "quartz"
#define MAT_TIN "tin"
#define MAT_VOPAL "void opal"
#define MAT_MAGMELLITE "magmellite"
#define MAT_ALUMINIUM "aluminium"
#define MAT_BRONZE "bronze"
#define MAT_PAINITE "painite"

View File

@@ -2,7 +2,7 @@
var/list/area/grand_list_of_areas = list()
// Assemble areas that all exists (See DM reference if you are confused about loop labels)
looping_station_areas:
for(var/parentpath in global.the_station_areas)
for(var/parentpath in using_map.the_station_areas)
// Check its not excluded
for(var/excluded_path in excluded_areas)
if(ispath(parentpath, excluded_path))

View File

@@ -2538,71 +2538,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
dynamic_lighting = 0
requires_power = 0
/////////////////////////////////////////////////////////////////////
/*
Lists of areas to be used with is_type_in_list.
Used in gamemodes code at the moment. --rastaf0
*/
// CENTCOM
var/list/centcom_areas = list (
/area/centcom,
/area/shuttle/escape/centcom,
/area/shuttle/escape_pod1/centcom,
/area/shuttle/escape_pod2/centcom,
/area/shuttle/escape_pod3/centcom,
/area/shuttle/escape_pod5/centcom,
/area/shuttle/transport1/centcom,
/area/shuttle/administration/centcom,
/area/shuttle/specops/centcom,
)
//SPACE STATION 13
var/list/the_station_areas = list (
/area/shuttle/arrival,
/area/shuttle/escape/station,
/area/shuttle/escape_pod1/station,
/area/shuttle/escape_pod2/station,
/area/shuttle/escape_pod3/station,
/area/shuttle/escape_pod5/station,
/area/shuttle/mining/station,
/area/shuttle/transport1/station,
// /area/shuttle/transport2/station,
/area/shuttle/prison/station,
/area/shuttle/administration/station,
/area/shuttle/specops/station,
/area/maintenance,
/area/hallway,
/area/bridge,
/area/crew_quarters,
/area/holodeck,
/area/mint,
/area/library,
/area/chapel,
/area/lawoffice,
/area/engineering,
/area/solar,
/area/assembly,
/area/teleporter,
/area/medical,
/area/security,
/area/quartermaster,
/area/janitor,
/area/hydroponics,
/area/rnd,
/area/storage,
/area/construction,
/area/ai_monitored/storage/eva,
/area/ai_monitored/storage/secure,
/area/ai_monitored/storage/emergency,
/area/ai_upload,
/area/ai_upload_foyer,
/area/ai
)
/area/beach
name = "Keelin's private beach"
icon_state = "yellow"

View File

@@ -39,7 +39,7 @@ var/list/nuke_disks = list()
var/disk_rescued = 1
for(var/obj/item/weapon/disk/nuclear/D in nuke_disks)
var/disk_area = get_area(D)
if(!is_type_in_list(disk_area, centcom_areas))
if(!is_type_in_list(disk_area, using_map.centcom_areas))
disk_rescued = 0
break
var/crew_evacuated = (emergency_shuttle.returned())

View File

@@ -835,7 +835,7 @@ var/global/list/all_objectives = list()
for(var/datum/mind/cult_mind in cult.current_antagonists)
if (cult_mind.current && cult_mind.current.stat!=2)
var/area/A = get_area(cult_mind.current )
if ( is_type_in_list(A, centcom_areas))
if ( is_type_in_list(A, using_map.centcom_areas))
acolytes_survived++
if(acolytes_survived >= target_amount)
return 0

View File

@@ -99,7 +99,9 @@
economic_modifier = 5
access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station)
minimal_access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station)
banned_job_species = list("digital", SPECIES_PROMETHEAN)
banned_job_species = list("digital")
min_age_by_species = list(SPECIES_PROMETHEAN = 5)
ideal_character_age = 40

View File

@@ -62,7 +62,9 @@
access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory, access_maint_tunnels, access_morgue, access_external_airlocks)
minimal_access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory, access_maint_tunnels, access_external_airlocks)
minimal_player_age = 5
banned_job_species = list(SPECIES_ZADDAT, SPECIES_PROMETHEAN, SPECIES_TESHARI, SPECIES_DIONA)
banned_job_species = list(SPECIES_ZADDAT, SPECIES_TESHARI, SPECIES_DIONA)
min_age_by_species = list(SPECIES_PROMETHEAN = 8)
outfit_type = /decl/hierarchy/outfit/job/security/warden
job_description = "The Warden watches over the physical Security Department, making sure the Brig and Armoury are secure and in order at all times. They oversee \
@@ -87,7 +89,9 @@
minimal_access = list(access_security, access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels, access_eva, access_external_airlocks)
economic_modifier = 5
minimal_player_age = 3
banned_job_species = list(SPECIES_ZADDAT, SPECIES_PROMETHEAN, SPECIES_DIONA)
banned_job_species = list(SPECIES_ZADDAT, SPECIES_DIONA)
min_age_by_species = list(SPECIES_PROMETHEAN = 5)
outfit_type = /decl/hierarchy/outfit/job/security/detective
job_description = "A Detective works to help Security find criminals who have not properly been identified, through interviews and forensic work. \

View File

@@ -737,7 +737,7 @@ About the new airlock wires panel:
// shock user with probability prb (if all connections & power are working)
// returns 1 if shocked, 0 otherwise
// The preceding comment was borrowed from the grille's shock script
/obj/machinery/door/airlock/shock(mob/user, prb)
/obj/machinery/door/airlock/shock(mob/living/user, prb)
if(!arePowerSystemsOn())
return 0
if(hasShocked)
@@ -1159,7 +1159,7 @@ About the new airlock wires panel:
for (var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O.show_message("[src.name]'s control panel bursts open, sparks spewing out!")
playsound(src.loc, 'sound/machines/airlock_break.ogg', 100, 1)
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
s.set_up(5, 1, src)
s.start()
@@ -1383,7 +1383,7 @@ About the new airlock wires panel:
src.closeOther = A
break
name = "\improper [name]"
. = ..()
//if assembly is given, create the new door from the assembly

View File

@@ -271,11 +271,13 @@ Class Procs:
state(text, "blue")
playsound(src, 'sound/machines/ping.ogg', 50, 0)
/obj/machinery/proc/shock(mob/user, prb)
/obj/machinery/proc/shock(mob/living/user, prb)
if(inoperable())
return FALSE
if(!prob(prb))
return FALSE
if (!istype(user))
return
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
s.set_up(5, 1, src)
s.start()

View File

@@ -10,7 +10,7 @@
/obj/item/weapon/tape_roll/proc/can_place(var/mob/living/carbon/human/H, var/mob/user)
if(istype(user, /mob/living/silicon/robot) || user == H)
return TRUE
for (var/obj/item/weapon/grab/G in H.grabbed_by)
if (G.loc == user && G.state >= GRAB_AGGRESSIVE)
return TRUE
@@ -33,7 +33,7 @@
to_chat(user, "<span class='warning'>\The [H] doesn't have any eyes.</span>")
return
if(H.glasses)
to_chat(user, "<span class='warning'>\The [H] is already wearing somethign on their eyes.</span>")
to_chat(user, "<span class='warning'>\The [H] is already wearing something on their eyes.</span>")
return
if(H.head && (H.head.body_parts_covered & FACE))
to_chat(user, "<span class='warning'>Remove their [H.head] first.</span>")

View File

@@ -646,8 +646,8 @@
/obj/item/weapon/ore/verdantium
),
prob(2);list(
/obj/item/weapon/ore/void_opal,
/obj/item/weapon/ore/void_opal
/obj/item/weapon/ore/magmellite,
/obj/item/weapon/ore/magmellite
),
)

View File

@@ -932,3 +932,39 @@
prob(3);/obj/item/clothing/accessory/poncho/thermal/purple,
prob(3);/obj/item/clothing/accessory/poncho/thermal/blue)
/obj/random/mug
name = "Random Mug"
desc = "This is a random coffee mug."
icon = 'icons/obj/drinks_mugs.dmi'
icon_state = "coffeecup_spawner"
/obj/random/mug/item_to_spawn()
return pick(/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/sol,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/fleet,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/fivearrows,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/psc,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/alma,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/almp,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/nt,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/metal/wulf,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/gilthari,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/zeng,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/wt,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/aether,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/bishop,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/oculum,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/one,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/puni,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/heart,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/pawn,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/diona,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/britcup,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/tourist,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/flame,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/blue,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/black,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/green,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/green/dark,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/rainbow,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/metal)

View File

@@ -116,7 +116,10 @@
/obj/item/weapon/extinguisher/mini,
/obj/item/weapon/storage/box/freezer,
/obj/item/clothing/accessory/storage/white_vest,
/obj/item/taperoll/medical)
/obj/item/taperoll/medical,
/obj/item/device/gps/medical,
/obj/item/device/geiger
)
/obj/structure/closet/secure_closet/CMO
name = "chief medical officer's locker"
@@ -142,7 +145,8 @@
/obj/item/taperoll/medical,
/obj/item/clothing/suit/bio_suit/cmo,
/obj/item/clothing/head/bio_hood/cmo,
/obj/item/clothing/shoes/white)
/obj/item/clothing/shoes/white,
/obj/item/device/gps/medical/cmo)
/obj/structure/closet/secure_closet/CMO/Initialize()
if(prob(50))

View File

@@ -418,7 +418,7 @@
/obj/structure/sign/levels/security
name = "\improper Security Department"
desc = "A level sign, stating the level to find the Security Department on."
icon_state = "direction_sec"
icon_state = "level_sec"
/obj/structure/sign/directions/security/armory
name = "\improper Armory"
@@ -428,7 +428,7 @@
/obj/structure/sign/levels/security/armory
name = "\improper Armory"
desc = "A level sign, stating the level to find the Armory on."
icon_state = "direction_armory"
icon_state = "level_armory"
/obj/structure/sign/directions/security/brig
name = "\improper Brig"
@@ -510,12 +510,12 @@
/obj/structure/sign/directions/science/toxins
name = "\improper Toxins Lab"
desc = "A direction sign, pointing out the way to the Toxins Lab."
icon_state = "direction_sci"
icon_state = "direction_toxins"
/obj/structure/sign/levels/science/toxins
name = "\improper Toxins Lab"
desc = "A level sign, stating the level to find the Toxins Lab on."
icon_state = "level_sci"
icon_state = "level_toxins"
/obj/structure/sign/directions/science/robotics
name = "\improper Robotics Workshop"
@@ -581,12 +581,12 @@
/obj/structure/sign/directions/medical/chemlab
name = "\improper Chemistry Lab"
desc = "A direction sign, pointing out the way to the Chemistry Lab."
icon_state = "direction_med"
icon_state = "direction_chemlab"
/obj/structure/sign/levels/medical/chemlab
name = "\improper Chemistry Lab"
desc = "A level sign, stating the level to find the Chemistry Lab on."
icon_state = "level_med"
icon_state = "level_chemlab"
/obj/structure/sign/directions/medical/surgery
name = "\improper Surgery"
@@ -1007,7 +1007,7 @@
icon_state = "level-b-large"
/obj/structure/sign/level/ground
name = "\improper Basement Level"
name = "\improper Ground Level"
icon_state = "level-g"
/obj/structure/sign/level/ground/large

View File

@@ -295,3 +295,15 @@
/datum/gear/accessory/virginkiller/New()
..()
gear_tweaks += gear_tweak_free_color_choice
/datum/gear/accessory/pride
display_name = "pride pin selection"
path = /obj/item/clothing/accessory/pride
/datum/gear/accessory/pride/New()
..()
var/list/pridepins = list()
for(var/pridepin in typesof(/obj/item/clothing/accessory/pride))
var/obj/item/clothing/accessory/pridepin_type = pridepin
pridepins[initial(pridepin_type.name)] = pridepin_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(pridepins))

View File

@@ -120,6 +120,52 @@
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(lunchboxes))
gear_tweaks += new/datum/gear_tweak/contents(lunchables_lunches(), lunchables_snacks(), lunchables_drinks())
/datum/gear/coffeemug
display_name = "coffee mugs"
description = "A coffee mug in various designs."
cost = 1
path = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug
/datum/gear/coffeemug/New()
..()
var/list/coffeemugs = list()
coffeemugs["plain coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug
coffeemugs["SCG coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/sol
coffeemugs["Fleet coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/fleet
coffeemugs["Five Arrows coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/fivearrows
coffeemugs["Pearlshield coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/psc
coffeemugs["Almach Association coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/alma
coffeemugs["Almach Protectorate coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/almp
coffeemugs["NT coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/nt
coffeemugs["Wulf Aeronautics mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/metal/wulf
coffeemugs["Gilthari Exports coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/gilthari
coffeemugs["Zeng-Hu coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/zeng
coffeemugs["Ward-Takahashi coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/wt
coffeemugs["Aether Atmospherics coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/aether
coffeemugs["Bishop Cybernetics coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/bishop
coffeemugs["Oculum Broadcast coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/oculum
coffeemugs["#1 coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/one
coffeemugs["#1 monkey coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/puni
coffeemugs["heart coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/heart
coffeemugs["pawn coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/pawn
coffeemugs["diona coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/diona
coffeemugs["british coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/britcup
coffeemugs["NCS Northern Star coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/tourist
coffeemugs["flame coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/flame
coffeemugs["blue coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/blue
coffeemugs["black coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/black
coffeemugs["green coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/green
coffeemugs["dark green coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/green/dark
coffeemugs["rainbow coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/rainbow
coffeemugs["metal coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/metal
coffeemugs["glass coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/glass
coffeemugs["tall coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/tall
coffeemugs["tall black coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/tall/black
coffeemugs["tall metal coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/tall/metal
coffeemugs["tall rainbow coffee mug"] = /obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/tall/rainbow
gear_tweaks += new /datum/gear_tweak/path(coffeemugs)
gear_tweaks += new /datum/gear_tweak/reagents(lunchables_drink_reagents())
/datum/gear/towel
display_name = "towel"
path = /obj/item/weapon/towel

View File

@@ -86,11 +86,6 @@
icon_state = "evening_gloves"
addblends = "evening_gloves_a"
cold_protection = HANDS
min_cold_protection_temperature = GLOVES_MIN_COLD_PROTECTION_TEMPERATURE
heat_protection = HANDS
max_heat_protection_temperature = GLOVES_MAX_HEAT_PROTECTION_TEMPERATURE
/obj/item/clothing/gloves/fingerless
desc = "A pair of gloves that don't actually cover the fingers."
name = "fingerless gloves"

View File

@@ -38,7 +38,7 @@
to_chat(M, "This Shroud has already been customized!")
return 0
suit_style = input(M, "Which suit style would you like?") in list("Engineer", "Spacer", "Knight", "Fashion", "Bishop", "Hegemony", "Rugged", "Soft")
suit_style = input(M, "Which suit style would you like?") in list("Engineer", "Spacer", "Knight", "Fashion", "Bishop", "Hegemony", "Rugged", "Soft", "Ancient", "Healer", "Clockwork", "Retro")
switch(suit_style)
if("Engineer")
name = "\improper Engineer's Guild Shroud"
@@ -107,16 +107,60 @@
helmet.icon_state = "zaddat_rugged"
helmet.item_state = "zaddat_rugged"
if("Soft")
name = "\improper soft Shroud"
base_name = "\improper soft Shroud"
name = "soft Shroud"
base_name = "soft Shroud"
desc = "Material and design is chosen for practical reasons, making it take as little space as possible when stowed whilst also providing reasonable comfort when worn for long periods."
icon_state = "zaddat_soft"
item_state = "zaddat_soft"
if(helmet)
helmet.name = "\improper soft Shroud hood"
helmet.name = "soft Shroud hood"
helmet.desc = "Not as solid as a proper helmet, but works nonetheless."
helmet.icon_state = "zaddat_soft"
helmet.item_state = "zaddat_soft"
if("Ancient")
name = "ancient Shroud"
base_name = "ancient Shroud"
desc = "Often seen among the guildless or dishonored, this is an extremely old design of Shroud and has clearly seen its years."
icon_state = "zaddat_ancient"
item_state = "zaddat_ancient"
if(helmet)
helmet.name = "ancient Shroud helmet"
helmet.desc = "A crack in the visor allows some light through, though it maintains its seal."
helmet.icon_state = "zaddat_ancient"
helmet.item_state = "zaddat_ancient"
if("Healer")
name = "healer Shroud"
base_name = "healer Shroud"
desc = "A shroud designed for those working within medicine, a common pursuit for Zaddat. it is clearly marked with the standard cross and colors."
icon_state = "zaddat_healer"
item_state = "zaddat_healer"
if(helmet)
helmet.name = "healer Shroud helmet"
helmet.desc = "A helmet designed to signal the wearer as a healer."
helmet.icon_state = "zaddat_healer"
helmet.item_state = "zaddat_healer"
if("Clockwork")
name = "clockword Shroud"
base_name = "clockword Shroud"
desc = "Inspired by clockwork designs seen in some ancient human technologies and subcultures, this suit was popularized through osmosis with those subcultures."
icon_state = "zaddat_clockwork"
item_state = "zaddat_clockwork"
if(helmet)
helmet.name = "clockword Shroud helmet"
helmet.desc = "Plated in brass."
helmet.icon_state = "zaddat_clockwork"
helmet.item_state = "zaddat_clockwork"
if("Retro")
name = "retro Shroud"
base_name = "retro Shroud"
desc = "This suit is derivative of some seen in ancient human media, long before voidsuits were commonplace. Such media has found a resurgence in popularity among some Zaddat."
icon_state = "zaddat_retro"
item_state = "zaddat_retro"
if(helmet)
helmet.name = "retro Shroud helmet"
helmet.desc = "A classic design for the modern age."
helmet.icon_state = "zaddat_retro"
helmet.item_state = "zaddat_retro"
to_chat(M, "You finish customizing your Shroud. Looking good!")
has_been_customized = TRUE

View File

@@ -165,7 +165,7 @@
/obj/item/clothing/accessory/stethoscope/do_surgery(mob/living/carbon/human/M, mob/living/user)
return attack(M, user) //default surgery behaviour is just to scan as usual
/obj/item/clothing/accessory/stethoscope/attack(mob/living/carbon/human/M, mob/living/user)
if(ishuman(M) && isliving(user))
@@ -433,3 +433,36 @@
icon_state = "sash"
slot = ACCESSORY_SLOT_OVER
/obj/item/clothing/accessory/pride
name = "pride pin"
desc = "A pin displaying pride in one's identity."
icon_state = "pride"
slot = ACCESSORY_SLOT_MEDAL
/obj/item/clothing/accessory/pride/bi
name = "bisexual pride pin"
icon_state = "pride_bi"
/obj/item/clothing/accessory/pride/trans
name = "transgender pride pin"
icon_state = "pride_trans"
/obj/item/clothing/accessory/pride/ace
name = "asexual pride pin"
icon_state = "pride_ace"
/obj/item/clothing/accessory/pride/enby
name = "nonbinary pride pin"
icon_state = "pride_enby"
/obj/item/clothing/accessory/pride/pan
name = "pansexual pride pin"
icon_state = "pride_pan"
/obj/item/clothing/accessory/pride/lesbian
name = "lesbian pride pin"
icon_state = "pride_lesbian"
/obj/item/clothing/accessory/pride/intersex
name = "intersex pride pin"
icon_state = "pride_intersex"

View File

@@ -80,4 +80,4 @@
/obj/item/weapon/storage/box/glasses/coffeemug
name = "box of coffee mugs"
starts_with = list(/obj/item/weapon/reagent_containers/food/drinks/britcup = 7)
starts_with = list(/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug = 7)

View File

@@ -0,0 +1,224 @@
/obj/item/weapon/reagent_containers/food/drinks/britcup
name = "cup"
desc = "A cup with the British flag emblazoned on it."
icon_state = "britcup"
volume = 30
center_of_mass = list("x"=15, "y"=13)
/obj/item/weapon/reagent_containers/food/drinks/britcup/on_reagent_change()
..()
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug
name = "coffee mug"
base_name = "mug"
desc = "A plain white coffee mug."
icon = 'icons/obj/drinks_mugs.dmi'
base_icon = "coffeecup"
volume = 30
var/fillsource = "coffeecup"
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/update_icon()
cut_overlays()
if(reagents.total_volume)
var/image/filling = image('icons/obj/drinks_mugs.dmi', src, null)
var/percent = round((reagents.total_volume / volume) * 100)
switch(percent)
if(0 to 39)
filling.icon_state = null
return
if(40 to 79) filling.icon_state = "[fillsource]40"
if(80 to 99) filling.icon_state = "[fillsource]80"
if(100 to INFINITY) filling.icon_state = "[fillsource]100"
filling.color = reagents.get_color()
add_overlay(filling)
// Government
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/sol
name = "\improper SCG coffee mug"
desc = "A blue coffee mug emblazoned with the crest of the Solar Confederate Government."
base_icon = "coffeecup_sol"
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/fleet
name = "\improper SCG Fleet coffee cup"
desc = "A coffee mug imprinted with the emblem of the Solar Confederate Fleet."
base_icon = "coffeecup_fleet"
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/fivearrows
name = "\improper Five Arrows coffee mug"
desc = "A coffee mug with the flag of the Five Arrows proudly displayed on it."
base_icon = "coffeecup_fivearrows"
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/alma
name = "\improper Almach Association coffee cup"
desc = "A grey coffee cup emblazoned with the star of the Almach Association."
icon_state = "coffeecup_alma"
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/almp
name = "\improper Almach Protectorate coffee cup"
desc = "A purple coffee cup emblazoned with the star of the Almach Protectorate."
icon_state = "coffeecup_almp"
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/psc
name = "\improper Pearlshield coffee mug"
desc = "A coffee mug bearing the symbol of the Pearlshield Coalition."
base_icon = "coffeecup_psc"
// Corporations
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/nt
name = "\improper NT coffee mug"
desc = "A blue NanoTrasen coffee mug."
base_icon = "coffeecup_NT"
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/metal/wulf
name = "\improper Wulf Aeronautics coffee mug"
desc = "A metal coffee mug bearing the livery of Wulf Aeronautics."
base_icon = "coffeecup_wulf"
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/gilthari
name = "\improper Gilthari Exports coffee mug"
desc = "A coffee mug bearing golden G of Gilthari Exports."
base_icon = "coffeecup_gilth"
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/wt
name = "\improper Ward-Takahashi coffee mug"
desc = "A coffee mug in a geometric Ward-Takahashi design."
base_icon = "coffeecup_wt"
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/aether
name = "\improper Aether Atmospherics coffee mug"
desc = "A coffee mug in Aether Atmospherics colours."
base_icon = "coffeecup_aether"
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/zeng
name = "\improper Zeng-Hu coffee cup"
desc = "A coffee cup bearing the Zeng-Hu logo."
icon_state = "coffeecup_zeng"
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/bishop
name = "\improper Bishop coffee mug"
desc = "A black coffee mug adorned with Bishop's logo."
base_icon = "coffeecup_bishop"
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/oculum
name = "pawn coffee mug"
desc = "A black and blue coffee mug decorated with the logo of Oculum Broadcast."
base_icon = "coffeecup_oculum"
// Symbols, markings
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/one
name = "#1 coffee mug"
desc = "A white coffee mug, prominently featuring a #1."
base_icon = "coffeecup_one"
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/puni
name = "#1 monkey coffee mug"
desc = "A white coffee mug, prominently featuring a \"#1 monkey\" decal."
base_icon = "coffeecup_puni"
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/heart
name = "heart coffee mug"
desc = "A white coffee mug, it prominently features a red heart."
base_icon = "coffeecup_heart"
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/pawn
name = "pawn coffee mug"
desc = "A black coffee mug adorned with the image of a red chess pawn."
base_icon = "coffeecup_pawn"
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/diona
name = "diona nymph coffee mug"
desc = "A green coffee mug featuring the image of a diona nymph."
base_icon = "coffeecup_diona"
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/britcup
name = "british coffee mug"
desc = "A coffee mug with the British flag emblazoned on it."
base_icon = "coffeecup_brit"
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/flame
name = "flame coffee cup"
desc = "A coffee cup with the a flame emblazoned on it."
icon_state = "coffeecup_flame"
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/tourist
name = "\improper Northern Star coffee mug"
desc = "A novelty coffee mug depicting the NCS Northern Star."
base_icon = "coffeecup_northstar"
// Pure colors & other
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/black
name = "black coffee mug"
desc = "A sleek black coffee mug."
base_icon = "coffeecup_black"
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/green
name = "green coffee mug"
desc = "A pale green and pink coffee mug."
base_icon = "coffeecup_green"
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/green/dark
desc = "A dark green coffee mug."
base_icon = "coffeecup_corp"
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/blue
name = "blue coffee mug"
desc = "A blue coffee mug."
base_icon = "coffeecup_blue"
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/rainbow
name = "rainbow coffee mug"
desc = "A rainbow coffee mug. The colors are almost as blinding as a welder."
base_icon = "coffeecup_rainbow"
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/metal
name = "metal coffee mug"
desc = "A metal coffee mug. You're not sure which metal."
base_icon = "coffeecup_metal"
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/glass
name = "glass coffee mug"
desc = "A glass coffee mug, using space age technology to keep it cool for use."
base_icon = "glasscoffeecup"
fillsource = "glasscoffeecup"
// Tall coffee mugs
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/tall
name = "tall coffee mug"
desc = "An unreasonably tall coffee mug, for when you really need to wake up in the morning."
icon = 'icons/obj/drinks_mugs_tall.dmi'
base_icon = "coffeecup_tall"
fillsource = "coffeecup_tall"
volume = 60
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/tall/update_icon()
cut_overlays()
if(reagents.total_volume)
var/image/filling = image('icons/obj/drinks_mugs_tall.dmi', src, null)
var/percent = round((reagents.total_volume / volume) * 100)
switch(percent)
if(0 to 69)
filling.icon_state = null
return
if(70 to 89) filling.icon_state = "[fillsource]70"
if(90 to 99) filling.icon_state = "[fillsource]90"
if(100 to INFINITY) filling.icon_state = "[fillsource]100"
filling.color = reagents.get_color()
add_overlay(filling)
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/tall/black
name = "tall black coffee mug"
desc = "An unreasonably tall coffee mug, for when you really need to wake up in the morning. This one is black."
base_icon = "coffeecup_tall_black"
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/tall/metal
name = "tall metal coffee mug"
desc = "An unreasonably tall coffee mug, for when you really need to wake up in the morning. This one is made of metal."
base_icon = "coffeecup_tall_metal"
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/tall/rainbow
name = "tall rainbow coffee mug"
desc = "An unreasonably tall coffee mug, for when you really need to wake up in the morning. This one is rainbow colored."
base_icon = "coffeecup_tall_rainbow"

View File

@@ -418,15 +418,4 @@
desc = "Keeping your drinks at the perfect temperature since 1892."
icon_state = "vacuumflask"
volume = 60
center_of_mass = list("x"=15, "y"=4)
/obj/item/weapon/reagent_containers/food/drinks/britcup
name = "cup"
desc = "A cup with the British flag emblazoned on it."
icon_state = "britcup"
volume = 30
center_of_mass = list("x"=15, "y"=13)
/obj/item/weapon/reagent_containers/food/drinks/britcup/on_reagent_change()
..()
center_of_mass = list("x"=15, "y"=4)

View File

@@ -3580,7 +3580,7 @@
bitesize = 2
center_of_mass = list("x"=16, "y"=12)
nutriment_amt = 4
nutriment_desc = "bun"
nutriment_desc = list("bun" = 4)
/obj/item/weapon/reagent_containers/food/snacks/bun/attackby(obj/item/weapon/W as obj, mob/user as mob)
// Bun + meatball = burger

View File

@@ -95,7 +95,7 @@ This allows for events that have their announcement happen after the end itself.
/datum/event2/event/proc/find_random_areas(list/specific_areas = list(), ignore_occupancy = FALSE)
if(!LAZYLEN(specific_areas))
specific_areas = global.the_station_areas.Copy()
specific_areas = using_map.the_station_areas.Copy()
var/list/area/grand_list_of_areas = get_all_existing_areas_of_types(specific_areas)
. = list()

View File

@@ -104,6 +104,8 @@
abort()
/datum/event2/event/blob/start()
if(!open_turfs.len)
set_up()
for(var/i = 1 to number_of_blobs)
var/turf/T = pick(open_turfs)
var/obj/structure/blob/core/new_blob = new spawn_blob_type(T)

View File

@@ -314,6 +314,9 @@
for(var/obj/effect/decal/cleanable/blood/B in linkedholodeck)
qdel(B)
for(var/obj/effect/landmark/L in linkedholodeck)
qdel(L)
holographic_objs = A.copy_contents_to(linkedholodeck , 1)
for(var/obj/holo_obj in holographic_objs)
holo_obj.alpha *= 0.8 //give holodeck objs a slight transparency

View File

@@ -4,7 +4,7 @@
/proc/spacevine_infestation(var/potency_min=70, var/potency_max=100, var/maturation_min=5, var/maturation_max=15)
spawn() //to stop the secrets panel hanging
var/list/turf/simulated/floor/turfs = list() //list of all the empty floor turfs in the hallway areas
for(var/areapath in typesof(/area/hallway))
for(var/areapath in typesof(using_map.hallway_areas))
var/area/A = locate(areapath)
for(var/turf/simulated/floor/F in A.contents)
if(!F.check_density())

View File

@@ -69,12 +69,12 @@
sheet_plural_name = "gems"
supply_conversion_value = 4
/datum/material/void_opal
name = "void opal"
display_name = "void opal"
use_name = "void opal"
/datum/material/magmellite
name = "magmellite"
display_name = "magmellite"
use_name = "magmellite"
icon_colour = "#0f0f0f"
stack_type = /obj/item/stack/material/void_opal
stack_type = /obj/item/stack/material/magmellite
flags = MATERIAL_UNMELTABLE
cut_delay = 60
reflectivity = 0
@@ -82,7 +82,7 @@
shard_type = SHARD_SHARD
tableslam_noise = 'sound/effects/Glasshit.ogg'
hardness = 100
stack_origin_tech = list(TECH_ARCANE = 1, TECH_MATERIAL = 6)
stack_origin_tech = list(TECH_BLUESPACE = 5, TECH_MATERIAL = 7)
sheet_singular_name = "gem"
sheet_plural_name = "gems"
supply_conversion_value = 30 // These are hilariously rare.

View File

@@ -21,11 +21,11 @@
apply_colour = 1
no_variants = FALSE
/obj/item/stack/material/void_opal
name = "void opal"
/obj/item/stack/material/magmellite
name = "magmellite"
icon_state = "sheet-void_opal"
singular_name = "void opal"
default_type = "void opal"
singular_name = "magmellite"
default_type = "magmellite"
apply_colour = 1
no_variants = FALSE

View File

@@ -51,7 +51,7 @@
// Found with an ultra laser. exotic_drilling >= 2
var/list/ore_types_rare = list(
"void opal" = /obj/item/weapon/ore/void_opal,
"magmellite" = /obj/item/weapon/ore/magmellite,
MAT_VERDANTIUM = /obj/item/weapon/ore/verdantium
)

View File

@@ -47,7 +47,7 @@
if("diamond", "painite") ore_type = "precious gems"
if("uranium") ore_type = "nuclear fuel"
if("phoron", "osmium", "hydrogen") ore_type = "exotic matter"
if("verdantium", "void opal") ore_type = "anomalous matter"
if("verdantium", "magmellite") ore_type = "anomalous matter"
if(ore_type) metals[ore_type] += T.resources[metal]

View File

@@ -175,7 +175,7 @@
"carbon" = 1,
"raw copper" = 1,
"raw tin" = 1,
"void opal" = 3,
"magmellite" = 3,
"painite" = 3,
"quartz" = 3,
"raw bauxite" = 5,

View File

@@ -6,7 +6,7 @@ var/list/mining_overlay_cache = list()
icon = 'icons/turf/walls.dmi'
icon_state = "rock-dark"
density = 1
/turf/simulated/mineral //wall piece
name = "rock"
icon = 'icons/turf/walls.dmi'
@@ -58,7 +58,7 @@ var/list/mining_overlay_cache = list()
"copper" = /obj/item/weapon/ore/copper,
// "tin" = /obj/item/weapon/ore/tin,
"bauxite" = /obj/item/weapon/ore/bauxite,
// "void opal" = /obj/item/weapon/ore/void_opal,
"magmellite" = /obj/item/weapon/ore/magmellite,
// "painite" = /obj/item/weapon/ore/painite,
// "quartz" = /obj/item/weapon/ore/quartz,
"rutile" = /obj/item/weapon/ore/rutile
@@ -278,14 +278,15 @@ var/list/mining_overlay_cache = list()
mined_ore = 2 //some of the stuff gets blown up
GetDrilled()
if(severity <= 2) // Now to expose the ore lying under the sand.
if(severity <= 2 && length(resources)) // Now to expose the ore lying under the sand.
spawn(1) // Otherwise most of the ore is lost to the explosion, which makes this rather moot.
for(var/ore in resources)
var/amount_to_give = rand(CEILING(resources[ore]/2, 1), resources[ore]) // Should result in at least one piece of ore.
for(var/i=1, i <= amount_to_give, i++)
var/amount_to_give = rand(CEILING(resources[ore] / 2, 1), resources[ore]) // Should result in at least one piece of ore.
for(var/i = 1 to amount_to_give)
var/oretype = ore_types[ore]
new oretype(src)
resources[ore] = 0
resources = null
/turf/simulated/mineral/bullet_act(var/obj/item/projectile/Proj) // only emitters for now
if(Proj.excavation_amount)
@@ -679,10 +680,10 @@ var/list/mining_overlay_cache = list()
var/mineral_name
if(rare_ore)
mineral_name = pickweight(list("marble" = 5,/* "quartz" = 15,*/ "copper" = 10, /*"tin" = 5,*/ "bauxite" = 5, "uranium" = 15, "platinum" = 20, "hematite" = 15, "rutile" = 20, "carbon" = 15, "diamond" = 3, "gold" = 15, "silver" = 15, "phoron" = 25, "lead" = 5,/* "void opal" = 1,*/ "verdantium" = 2/*, "painite" = 1*/))
mineral_name = pickweight(list("marble" = 5,/* "quartz" = 15,*/ "copper" = 10, /*"tin" = 5,*/ "bauxite" = 5, "uranium" = 15, "platinum" = 20, "hematite" = 15, "rutile" = 20, "carbon" = 15, "diamond" = 3, "gold" = 15, "silver" = 15, "phoron" = 25, "lead" = 5, "magmellite" = 1, "verdantium" = 2/*, "painite" = 1*/))
else
mineral_name = pickweight(list("marble" = 3,/* "quartz" = 10,*/ "copper" = 20, /*"tin" = 15,*/ "bauxite" = 15, "uranium" = 10, "platinum" = 10, "hematite" = 70, "rutile" = 15, "carbon" = 70, "diamond" = 2, "gold" = 10, "silver" = 10, "phoron" = 20, "lead" = 3,/* "void opal" = 1,*/ "verdantium" = 1/*, "painite" = 1*/))
mineral_name = pickweight(list("marble" = 3,/* "quartz" = 10,*/ "copper" = 20, /*"tin" = 15,*/ "bauxite" = 15, "uranium" = 10, "platinum" = 10, "hematite" = 70, "rutile" = 15, "carbon" = 70, "diamond" = 2, "gold" = 10, "silver" = 10, "phoron" = 20, "lead" = 3, "magmellite" = 1, "verdantium" = 1/*, "painite" = 1*/))
if(mineral_name && (mineral_name in GLOB.ore_data))
mineral = GLOB.ore_data[mineral_name]

View File

@@ -127,10 +127,10 @@
icon_state = "ore_rutile"
material = "rutile"
/obj/item/weapon/ore/void_opal
name = "raw void opal"
/obj/item/weapon/ore/magmellite
name = "impure magmellite"
icon_state = "ore_void_opal"
material = "void opal"
material = "magmellite"
/obj/item/weapon/ore/painite
name = "raw painite"

View File

@@ -235,11 +235,11 @@
ore = /obj/item/weapon/ore/painite
scan_icon = "mineral_rare"
/ore/void_opal
name = "void opal"
display_name = "rough void opal"
compresses_to = "void opal"
/ore/magmellite
name = "magmellite"
display_name = "impure magmellite"
compresses_to = "magmellite"
result_amount = 5
spread_chance = 1
ore = /obj/item/weapon/ore/void_opal
ore = /obj/item/weapon/ore/magmellite
scan_icon = "mineral_rare"

View File

@@ -45,7 +45,7 @@ var/datum/species/shapeshifter/promethean/prometheans
female_cough_sounds = list('sound/effects/slime_squish.ogg')
min_age = 1
max_age = 16
max_age = 24
economic_modifier = 3
@@ -201,12 +201,13 @@ var/datum/species/shapeshifter/promethean/prometheans
H.adjust_nutrition(rand(10, 20))
if(H.clean_blood(1))
H.adjust_nutrition(rand(5, 15))
if(H.r_hand)
if(H.r_hand.clean_blood())
H.adjust_nutrition(rand(5, 15))
if(H.l_hand)
if(H.l_hand.clean_blood())
H.adjust_nutrition(rand(5, 15))
if(!(H.gloves || (H.wear_suit && (H.wear_suit.body_parts_covered & HANDS))))
if(H.r_hand)
if(H.r_hand.clean_blood())
H.adjust_nutrition(rand(5, 15))
if(H.l_hand)
if(H.l_hand.clean_blood())
H.adjust_nutrition(rand(5, 15))
if(H.head)
if(H.head.clean_blood())
H.update_inv_head(0)

View File

@@ -135,7 +135,7 @@
O_LUNGS = /obj/item/organ/internal/lungs/unathi,
O_LIVER = /obj/item/organ/internal/liver/unathi,
O_BRAIN = /obj/item/organ/internal/brain/unathi,
O_EYES = /obj/item/organ/internal/eyes,
O_EYES = /obj/item/organ/internal/eyes/unathi,
O_STOMACH = /obj/item/organ/internal/stomach/unathi,
O_INTESTINE = /obj/item/organ/internal/intestine/unathi
)
@@ -250,13 +250,13 @@
has_organ = list( //No appendix.
O_HEART = /obj/item/organ/internal/heart/tajaran,
O_LUNGS = /obj/item/organ/internal/lungs,
O_LUNGS = /obj/item/organ/internal/lungs/tajaran,
O_VOICE = /obj/item/organ/internal/voicebox,
O_LIVER = /obj/item/organ/internal/liver,
O_LIVER = /obj/item/organ/internal/liver/tajaran,
O_KIDNEYS = /obj/item/organ/internal/kidneys,
O_BRAIN = /obj/item/organ/internal/brain,
O_EYES = /obj/item/organ/internal/eyes/tajaran,
O_STOMACH = /obj/item/organ/internal/stomach,
O_STOMACH = /obj/item/organ/internal/stomach/tajaran,
O_INTESTINE = /obj/item/organ/internal/intestine
)
@@ -349,6 +349,20 @@
BP_R_FOOT = list("path" = /obj/item/organ/external/foot/right)
)
has_organ = list(
O_HEART = /obj/item/organ/internal/heart/skrell,
O_LUNGS = /obj/item/organ/internal/lungs/skrell,
O_VOICE = /obj/item/organ/internal/voicebox/skrell,
O_LIVER = /obj/item/organ/internal/liver/skrell,
O_KIDNEYS = /obj/item/organ/internal/kidneys/skrell,
O_BRAIN = /obj/item/organ/internal/brain/skrell,
O_APPENDIX = /obj/item/organ/internal/appendix/skrell,
O_SPLEEN = /obj/item/organ/internal/spleen/skrell,
O_EYES = /obj/item/organ/internal/eyes/skrell,
O_STOMACH = /obj/item/organ/internal/stomach/skrell,
O_INTESTINE = /obj/item/organ/internal/intestine/skrell
)
/datum/species/skrell/can_breathe_water()
return TRUE
@@ -433,6 +447,11 @@
/datum/mob_descriptor/height = 0,
/datum/mob_descriptor/build = -1
)
default_emotes = list(
/decl/emote/audible/chirp
)
/datum/species/zaddat/equip_survival_gear(var/mob/living/carbon/human/H)
..()
if(H.wear_suit) //get rid of job labcoats so they don't stop us from equipping the Shroud

View File

@@ -9,33 +9,41 @@
icon_dead = "alien_dead"
icon_gib = "syndicate_gib"
icon_rest = "alienh_sleep"
faction = "xeno"
mob_class = MOB_CLASS_ABERRATION
response_help = "pokes"
response_disarm = "shoves"
response_harm = "hits"
organ_names = /decl/mob_organ_names/skathari
maxHealth = 120
health = 120
see_in_dark = 7
turn_sound = "skathari_chitter"
harm_intent_damage = 5
melee_damage_lower = 25
melee_damage_upper = 25
attack_armor_pen = 15
attack_sharp = TRUE
attack_edge = TRUE
attacktext = list("slashed")
attack_sound = 'sound/weapons/bladeslice.ogg'
// meat_type = /obj/item/weapon/reagent_containers/food/snacks/xenomeat //Make this something special in full implementation
/mob/living/simple_mob/animal/space/alien/death()
var/turf/center = get_turf(src)
if (isturf(center))
playsound(center, 'sound/effects/mob_effects/skathari_teleport.ogg', 75, TRUE)
for (var/mob/living/carbon/victim in oviewers(5, center))
victim.flash_eyes(3)
visible_message(
SPAN_WARNING("\The [src] disappears with a screech and a flash of light!"),
SPAN_WARNING("You hear a thin, high screech, ended by a sudden echoing snap!")
)
new /obj/effect/decal/cleanable/blood/skathari (center)
new /obj/effect/temp_visual/bluespace_tear (center)
qdel(src)
..()
/mob/living/simple_mob/animal/space/alien/drone
name = "skathari worker"
@@ -48,68 +56,6 @@
melee_damage_upper = 15
projectiletype = /obj/item/projectile/energy/skathari
/*
To be replaced with equivalents later
/mob/living/simple_mob/animal/space/alien/sentinel
name = "alien sentinel"
icon_state = "aliens_running"
icon_living = "aliens_running"
icon_dead = "aliens_l"
icon_rest = "aliens_sleep"
health = 120
melee_damage_lower = 15
melee_damage_upper = 15
/mob/living/simple_mob/animal/space/alien/sentinel/praetorian
name = "alien praetorian"
icon = 'icons/mob/64x64.dmi'
icon_state = "prat_s"
icon_living = "prat_s"
icon_dead = "prat_dead"
icon_rest = "prat_sleep"
maxHealth = 200
health = 200
pixel_x = -16
old_x = -16
icon_expected_width = 64
icon_expected_height = 64
meat_amount = 5
/mob/living/simple_mob/animal/space/alien/queen
name = "alien queen"
icon_state = "alienq_running"
icon_living = "alienq_running"
icon_dead = "alienq_l"
icon_rest = "alienq_sleep"
health = 250
maxHealth = 250
melee_damage_lower = 15
melee_damage_upper = 15
projectiletype = /obj/item/projectile/energy/neurotoxin/toxic
projectilesound = 'sound/weapons/pierce.ogg'
movement_cooldown = 8
/mob/living/simple_mob/animal/space/alien/queen/empress
name = "alien empress"
icon = 'icons/mob/64x64.dmi'
icon_state = "queen_s"
icon_living = "queen_s"
icon_dead = "queen_dead"
icon_rest = "queen_sleep"
maxHealth = 400
health = 400
meat_amount = 5
pixel_x = -16
old_x = -16
icon_expected_width = 64
icon_expected_height = 64
*/
/mob/living/simple_mob/animal/space/alien/queen/empress/mother
name = "skathari tyrant"
@@ -125,21 +71,12 @@ To be replaced with equivalents later
melee_damage_lower = 15
melee_damage_upper = 25
movement_cooldown = 8
projectiletype = /obj/item/projectile/energy/skathari
pixel_x = -32
old_x = -32
icon_expected_width = 96
icon_expected_height = 96
/mob/living/simple_mob/animal/space/alien/death()
..()
visible_message("[src] lets out a waning guttural screech, green ichor bubbling from its maw...")
playsound(src, 'sound/voice/hiss6.ogg', 100, 1)
new /obj/effect/decal/cleanable/blood/skathari(src.loc)
new /obj/effect/temp_visual/bluespace_tear(src.loc)
/decl/mob_organ_names/skathari
hit_zones = list("carapace", "abdomen", "left forelegs", "right forelegs", "left hind legs", "right hind legs", "head")
hit_zones = list("carapace", "abdomen", "left forelegs", "right forelegs", "left hind legs", "right hind legs", "head")

View File

@@ -2617,6 +2617,18 @@ shaved
species_allowed = list(SPECIES_DIONA)
do_colouration = 0
//Skrell stuff.
/datum/sprite_accessory/marking/skrell
name = "Countershading (Skrell)"
icon_state = "skr_shade"
body_parts = list(BP_TORSO, BP_GROIN, BP_HEAD)
species_allowed = list(SPECIES_SKRELL)
/datum/sprite_accessory/marking/skrell/stripes
name = "Poison Dart Stripes (Skrell)"
icon_state = "skr_stripes"
body_parts = list(BP_L_LEG, BP_R_LEG, BP_L_ARM, BP_R_ARM, BP_TORSO)
//Cybernetic Augments, some species-limited due to sprite misalignment. /aug/ types are excluded from dna.

View File

@@ -50,6 +50,6 @@
/obj/item/organ/internal/appendix/removed()
if(inflamed)
icon_state = "appendixinflamed"
icon_state = "[initial(icon_state)]inflamed"
name = "inflamed appendix"
..()

View File

@@ -66,16 +66,6 @@
owner.adjustToxLoss(15 * spleen_efficiency)
Target.wounds += W
/obj/item/organ/internal/spleen/skrell
name = "lymphatic hub"
icon_state = "spleen"
parent_organ = BP_HEAD
spleen_efficiency = 0.5
/obj/item/organ/internal/spleen/skrell/Initialize()
. = ..()
adjust_scale(0.8,0.7)
/obj/item/organ/internal/spleen/minor
name = "vestigial spleen"
parent_organ = BP_GROIN

View File

@@ -0,0 +1,41 @@
/obj/item/organ/internal/eyes/skrell
icon_state = "skrell_eyes"
/obj/item/organ/internal/heart/skrell
icon_state = "skrell_heart-on"
dead_icon = "skrell_heart-off"
/obj/item/organ/internal/lungs/skrell
icon_state = "skrell_lungs"
/obj/item/organ/internal/liver/skrell
icon_state = "skrell_liver"
/obj/item/organ/internal/brain/skrell
icon_state = "brain_skrell"
/obj/item/organ/internal/stomach/skrell
icon_state = "skrell_stomach"
/obj/item/organ/internal/kidneys/skrell
icon_state = "skrell_kidney"
/obj/item/organ/internal/intestine/skrell
icon_state = "skrell_intestine"
/obj/item/organ/internal/voicebox/skrell
icon_state = "skrell_larynx"
will_assist_languages = list(LANGUAGE_SKRELLIAN, LANGUAGE_SKRELLIANFAR)
/obj/item/organ/internal/appendix/skrell
icon_state = "skrell_appendix"
/obj/item/organ/internal/spleen/skrell
name = "lymphatic hub"
icon_state = "skrell_spleen"
parent_organ = BP_HEAD
spleen_efficiency = 0.5
/obj/item/organ/internal/spleen/skrell/Initialize()
. = ..()
adjust_scale(0.8,0.7)

View File

@@ -5,3 +5,11 @@
icon_state = "tajaran_heart-on"
dead_icon = "tajaran_heart-off"
/obj/item/organ/internal/lungs/tajaran
icon_state = "tajaran_lungs"
/obj/item/organ/internal/liver/tajaran
icon_state = "tajaran_liver"
/obj/item/organ/internal/stomach/tajaran
icon_state = "tajaran_stomach"

View File

@@ -15,10 +15,12 @@
force = 5
throwforce = 10
/obj/item/organ/internal/eyes/unathi
icon_state = "unathi_eyes"
/obj/item/organ/internal/heart/unathi
icon_state = "unathi_heart-on"
dead_icon = "unath_heart-off"
dead_icon = "unathi_heart-off"
/obj/item/organ/internal/lungs/unathi
color = "#b3cbc3"

View File

@@ -157,7 +157,7 @@
. += "<span class='notice'>You have to go closer if you want to read it.</span>"
/obj/item/weapon/paper/proc/show_content(var/mob/user, var/forceshow=0)
if(!(istype(user, /mob/living/carbon/human) || istype(user, /mob/observer/dead) || istype(user, /mob/living/silicon)) && !forceshow)
if(!(istype(user, /mob/living/carbon/human) || istype(user, /mob/observer/dead) || istype(user, /mob/living/silicon) || user.universal_understand) && !forceshow)
user << browse("<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[stars(info)][stamps]</BODY></HTML>", "window=[name]")
onclose(user, "[name]")
else

View File

@@ -49,15 +49,17 @@
/obj/machinery/power/supermatter
name = "Supermatter"
desc = "A strangely translucent and iridescent crystal. <font color='red'>You get headaches just from looking at it.</font>"
icon = 'icons/obj/engine.dmi'
icon_state = "darkmatter"
icon = 'icons/obj/supermatter.dmi'
icon_state = "supermatter"
density = 1
anchored = 0
light_range = 4
plane = MOB_PLANE
layer = ABOVE_MOB_LAYER
var/gasefficency = 0.25
var/base_icon_state = "darkmatter"
var/base_icon_state = "supermatter"
var/damage = 0
var/damage_archived = 0
@@ -101,8 +103,8 @@
var/config_hallucination_power = 0.1
var/debug = 0
/// Cooldown tracker for accent sounds,
/// Cooldown tracker for accent sounds,
var/last_accent_sound = 0
var/datum/looping_sound/supermatter/soundloop
@@ -295,7 +297,7 @@
shift_light(4,initial(light_color))
if(grav_pulling)
supermatter_pull(src)
// Vary volume by power produced.
if(power)
// Volume will be 1 at no power, ~12.5 at ENERGY_NITROGEN, and 20+ at ENERGY_PHORON.
@@ -308,7 +310,7 @@
soundloop.mid_sounds = list('sound/machines/sm/loops/delamming.ogg' = 1)
else
soundloop.mid_sounds = list('sound/machines/sm/loops/calm.ogg' = 1)
// Play Delam/Neutral sounds at rate determined by power and damage.
if(last_accent_sound < world.time && prob(20))
var/aggression = min(((damage / 800) * (power / 2500)), 1.0) * 100
@@ -518,8 +520,8 @@
/obj/machinery/power/supermatter/shard //Small subtype, less efficient and more sensitive, but less boom.
name = "Supermatter Shard"
desc = "A strangely translucent and iridescent crystal that looks like it used to be part of a larger structure. <font color='red'>You get headaches just from looking at it.</font>"
icon_state = "darkmatter_shard"
base_icon_state = "darkmatter_shard"
icon_state = "supermatter_shard"
base_icon_state = "supermatter_shard"
warning_point = 50
emergency_point = 400

View File

@@ -68,7 +68,7 @@
T.resources["tin"] = rand(RESOURCE_LOW_MIN, RESOURCE_MID_MAX)
T.resources["bauxite"] = rand(RESOURCE_LOW_MIN, RESOURCE_LOW_MAX)
T.resources["rutile"] = 0
T.resources["void opal"] = 0
T.resources["magmellite"] = 0
T.resources["quartz"] = 0
T.resources["painite"] = 0
else if(current_cell < deep_val) // Rare metals.
@@ -87,7 +87,7 @@
T.resources["tin"] = rand(RESOURCE_MID_MIN, RESOURCE_MID_MAX)
T.resources["bauxite"] = 0
T.resources["rutile"] = rand(RESOURCE_LOW_MIN, RESOURCE_MID_MAX)
T.resources["void opal"] = 0
T.resources["magmellite"] = 0
T.resources["quartz"] = 0
T.resources["painite"] = 0
else // Deep metals.
@@ -106,7 +106,7 @@
T.resources["tin"] = 0
T.resources["bauxite"] = 0
T.resources["rutile"] = rand(RESOURCE_MID_MIN, RESOURCE_HIGH_MAX)
T.resources["void opal"] = 0
T.resources["magmellite"] = 0
T.resources["quartz"] = 0
T.resources["painite"] = 0
return

View File

@@ -63,6 +63,8 @@
Generally coatings are intended for deep frying foods
*/
/datum/reagent/nutriment/coating
name = "coating"
id = "coating"
nutriment_factor = 6 //Less dense than the food itself, but coatings still add extra calories
var/messaged = 0
var/icon_raw

View File

@@ -28,13 +28,13 @@
/// Used to check for a specific tool quality on an item.
/// Returns the value of `tool_quality` if it is found, else 0.
/obj/item/get_tool_quality(quality)
return LAZYFIND(tool_qualities, quality)
return LAZYACCESS(tool_qualities, quality)
/obj/item/proc/set_tool_quality(tool, quality)
tool_qualities[tool] = quality
/obj/item/proc/get_tool_speed(quality)
return LAZYFIND(tool_qualities, quality)
return LAZYACCESS(tool_qualities, quality)
/obj/item/proc/get_use_time(quality, base_time)
return LAZYFIND(tool_qualities, quality) ? base_time / tool_qualities[quality] : -1
return LAZYACCESS(tool_qualities, quality) ? base_time / tool_qualities[quality] : -1