mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-20 19:44:09 +01:00
Fix conflicts.
This commit is contained in:
@@ -122,8 +122,8 @@ var/global/sent_syndicate_infiltration_team = 0
|
||||
syndimgmtmob.update_internals_hud_icon(1)
|
||||
syndimgmtmob.faction += "syndicate"
|
||||
syndimgmtmob.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal(src), slot_glasses)
|
||||
syndimgmtmob.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/syndi/elite, slot_wear_suit)
|
||||
syndimgmtmob.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/syndi/elite, slot_head)
|
||||
syndimgmtmob.equip_to_slot_or_del(new /obj/item/clothing/suit/space/hardsuit/syndi/elite, slot_wear_suit)
|
||||
syndimgmtmob.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/hardsuit/syndi/elite, slot_head)
|
||||
syndimgmtmob.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/syndicate, slot_wear_mask)
|
||||
var/datum/atom_hud/antag/opshud = huds[ANTAG_HUD_OPS]
|
||||
opshud.join_hud(syndimgmtmob.mind.current)
|
||||
|
||||
@@ -72,8 +72,8 @@
|
||||
if(pay_with_card(C))
|
||||
tokens += 1
|
||||
return
|
||||
else if(istype(O, /obj/item/weapon/spacecash))
|
||||
var/obj/item/weapon/spacecash/C = O
|
||||
else if(istype(O, /obj/item/stack/spacecash))
|
||||
var/obj/item/stack/spacecash/C = O
|
||||
if(pay_with_cash(C, user))
|
||||
tokens += 1
|
||||
return
|
||||
@@ -83,16 +83,12 @@
|
||||
/obj/machinery/arcade/update_icon()
|
||||
return
|
||||
|
||||
/obj/machinery/arcade/proc/pay_with_cash(var/obj/item/weapon/spacecash/cashmoney, var/mob/user)
|
||||
if(cashmoney.get_total() < token_price)
|
||||
/obj/machinery/arcade/proc/pay_with_cash(obj/item/stack/spacecash/cashmoney, mob/user)
|
||||
if(cashmoney.amount < token_price)
|
||||
to_chat(user, "[bicon(cashmoney)] <span class='warning'>That is not enough money.</span>")
|
||||
return 0
|
||||
visible_message("<span class='info'>[usr] inserts a credit chip into [src].</span>")
|
||||
var/left = cashmoney.get_total() - token_price
|
||||
user.unEquip(cashmoney)
|
||||
qdel(cashmoney)
|
||||
if(left)
|
||||
dispense_cash(left, src.loc, user)
|
||||
cashmoney.use(token_price)
|
||||
return 1
|
||||
|
||||
/obj/machinery/arcade/proc/pay_with_card(var/obj/item/weapon/card/id/I, var/mob/user)
|
||||
|
||||
@@ -116,12 +116,12 @@
|
||||
/obj/effect/landmark/corpse/syndicatecommando
|
||||
name = "Syndicate Commando"
|
||||
corpseuniform = /obj/item/clothing/under/syndicate
|
||||
corpsesuit = /obj/item/clothing/suit/space/rig/syndi
|
||||
corpsesuit = /obj/item/clothing/suit/space/hardsuit/syndi
|
||||
corpseshoes = /obj/item/clothing/shoes/combat
|
||||
corpsegloves = /obj/item/clothing/gloves/combat
|
||||
corpseradio = /obj/item/device/radio/headset
|
||||
corpsemask = /obj/item/clothing/mask/gas/syndicate
|
||||
corpsehelmet = /obj/item/clothing/head/helmet/space/rig/syndi
|
||||
corpsehelmet = /obj/item/clothing/head/helmet/space/hardsuit/syndi
|
||||
corpseback = /obj/item/weapon/tank/jetpack/oxygen
|
||||
corpsepocket1 = /obj/item/weapon/tank/emergency_oxygen
|
||||
corpseid = 1
|
||||
@@ -170,10 +170,10 @@
|
||||
corpseidjob = "Station Engineer"
|
||||
corpseidaccess = "Station Engineer"
|
||||
|
||||
/obj/effect/landmark/corpse/engineer/rig
|
||||
corpsesuit = /obj/item/clothing/suit/space/rig
|
||||
/obj/effect/landmark/corpse/engineer/hardsuit
|
||||
corpsesuit = /obj/item/clothing/suit/space/hardsuit
|
||||
corpsemask = /obj/item/clothing/mask/breath
|
||||
corpsehelmet = /obj/item/clothing/head/helmet/space/rig
|
||||
corpsehelmet = /obj/item/clothing/head/helmet/space/hardsuit
|
||||
|
||||
/obj/effect/landmark/corpse/clown
|
||||
|
||||
@@ -255,10 +255,10 @@
|
||||
corpseidjob = "Shaft Miner"
|
||||
corpseidaccess = "Shaft Miner"
|
||||
|
||||
/obj/effect/landmark/corpse/miner/rig
|
||||
corpsesuit = /obj/item/clothing/suit/space/rig/mining
|
||||
/obj/effect/landmark/corpse/miner/hardsuit
|
||||
corpsesuit = /obj/item/clothing/suit/space/hardsuit/mining
|
||||
corpsemask = /obj/item/clothing/mask/breath
|
||||
corpsehelmet = /obj/item/clothing/head/helmet/space/rig/mining
|
||||
corpsehelmet = /obj/item/clothing/head/helmet/space/hardsuit/mining
|
||||
|
||||
|
||||
/////////////////Officers//////////////////////
|
||||
|
||||
@@ -279,7 +279,8 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
dat += "<b>You are banned from using custom names and appearances. \
|
||||
You can continue to adjust your characters, but you will be randomised once you join the game.\
|
||||
</b><br>"
|
||||
dat += "<b>Gender:</b> <a href='?_src_=prefs;preference=gender'>[gender == MALE ? "Male" : "Female"]</a><br>"
|
||||
dat += "<b>Gender:</b> <a href='?_src_=prefs;preference=gender'>[gender == MALE ? "Male" : (gender == FEMALE ? "Female" : "Genderless")]</a>"
|
||||
dat += "<br>"
|
||||
dat += "<b>Age:</b> <a href='?_src_=prefs;preference=age;task=input'>[age]</a><br>"
|
||||
dat += "<b>Body:</b> <a href='?_src_=prefs;preference=all;task=random'>(®)</a><br>"
|
||||
dat += "<b>Species:</b> <a href='?_src_=prefs;preference=species;task=input'>[species]</a><br>"
|
||||
@@ -1031,6 +1032,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
/datum/preferences/proc/process_link(mob/user, list/href_list)
|
||||
if(!user) return
|
||||
|
||||
var/datum/species/S = all_species[species]
|
||||
if(href_list["preference"] == "job")
|
||||
switch(href_list["task"])
|
||||
if("close")
|
||||
@@ -1266,9 +1268,9 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
// var/whitelisted = 0
|
||||
|
||||
if(config.usealienwhitelist) //If we're using the whitelist, make sure to check it!
|
||||
for(var/S in whitelisted_species)
|
||||
if(is_alien_whitelisted(user,S))
|
||||
new_species += S
|
||||
for(var/Spec in whitelisted_species)
|
||||
if(is_alien_whitelisted(user,Spec))
|
||||
new_species += Spec
|
||||
// whitelisted = 1
|
||||
// if(!whitelisted)
|
||||
// alert(user, "You cannot change your species as you need to be whitelisted. If you wish to be whitelisted contact an admin in-game, on the forums, or on IRC.")
|
||||
@@ -1276,8 +1278,10 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
new_species += whitelisted_species
|
||||
|
||||
species = input("Please select a species", "Character Generation", null) in new_species
|
||||
|
||||
var/datum/species/NS = all_species[species]
|
||||
if(prev_species != species)
|
||||
if(NS.has_gender && gender == PLURAL)
|
||||
gender = pick(MALE,FEMALE)
|
||||
var/datum/robolimb/robohead
|
||||
if(species == "Machine")
|
||||
var/head_model = "[!rlimb_data["head"] ? "Morpheus Cyberkinetics" : rlimb_data["head"]]"
|
||||
@@ -1315,16 +1319,16 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
m_colours["tail"] = "#000000"
|
||||
|
||||
// Don't wear another species' underwear!
|
||||
var/datum/sprite_accessory/S = underwear_list[underwear]
|
||||
if(!S || !(species in S.species_allowed))
|
||||
var/datum/sprite_accessory/SA = underwear_list[underwear]
|
||||
if(!SA || !(species in SA.species_allowed))
|
||||
underwear = random_underwear(gender, species)
|
||||
|
||||
S = undershirt_list[undershirt]
|
||||
if(!S || !(species in S.species_allowed))
|
||||
SA = undershirt_list[undershirt]
|
||||
if(!SA || !(species in SA.species_allowed))
|
||||
undershirt = random_undershirt(gender, species)
|
||||
|
||||
S = socks_list[socks]
|
||||
if(!S || !(species in S.species_allowed))
|
||||
SA = socks_list[socks]
|
||||
if(!SA || !(species in SA.species_allowed))
|
||||
socks = random_socks(gender, species)
|
||||
|
||||
//reset skin tone and colour
|
||||
@@ -1402,7 +1406,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
if("h_style")
|
||||
var/list/valid_hairstyles = list()
|
||||
for(var/hairstyle in hair_styles_list)
|
||||
var/datum/sprite_accessory/S = hair_styles_list[hairstyle]
|
||||
var/datum/sprite_accessory/SA = hair_styles_list[hairstyle]
|
||||
|
||||
if(hairstyle == "Bald") //Just in case.
|
||||
valid_hairstyles += hairstyle
|
||||
@@ -1414,14 +1418,14 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
else
|
||||
head_model = rlimb_data["head"]
|
||||
var/datum/robolimb/robohead = all_robolimbs[head_model]
|
||||
if((species in S.species_allowed) && robohead.is_monitor && ((S.models_allowed && (robohead.company in S.models_allowed)) || !S.models_allowed)) //If this is a hair style native to the user's species, check to see if they have a head with an ipc-style screen and that the head's company is in the screen style's allowed models list.
|
||||
if((species in SA.species_allowed) && robohead.is_monitor && ((SA.models_allowed && (robohead.company in SA.models_allowed)) || !SA.models_allowed)) //If this is a hair style native to the user's species, check to see if they have a head with an ipc-style screen and that the head's company is in the screen style's allowed models list.
|
||||
valid_hairstyles += hairstyle //Give them their hairstyles if they do.
|
||||
else
|
||||
if(!robohead.is_monitor && ("Human" in S.species_allowed)) /*If the hairstyle is not native to the user's species and they're using a head with an ipc-style screen, don't let them access it.
|
||||
if(!robohead.is_monitor && ("Human" in SA.species_allowed)) /*If the hairstyle is not native to the user's species and they're using a head with an ipc-style screen, don't let them access it.
|
||||
But if the user has a robotic humanoid head and the hairstyle can fit humans, let them use it as a wig. */
|
||||
valid_hairstyles += hairstyle
|
||||
else //If the user is not a species who can have robotic heads, use the default handling.
|
||||
if(species in S.species_allowed) //If the user's head is of a species the hairstyle allows, add it to the list.
|
||||
if(species in SA.species_allowed) //If the user's head is of a species the hairstyle allows, add it to the list.
|
||||
valid_hairstyles += hairstyle
|
||||
|
||||
var/new_h_style = input(user, "Choose your character's hair style:", "Character Preference") as null|anything in valid_hairstyles
|
||||
@@ -1609,14 +1613,14 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
if("f_style")
|
||||
var/list/valid_facial_hairstyles = list()
|
||||
for(var/facialhairstyle in facial_hair_styles_list)
|
||||
var/datum/sprite_accessory/S = facial_hair_styles_list[facialhairstyle]
|
||||
var/datum/sprite_accessory/SA = facial_hair_styles_list[facialhairstyle]
|
||||
|
||||
if(facialhairstyle == "Shaved") //Just in case.
|
||||
valid_facial_hairstyles += facialhairstyle
|
||||
continue
|
||||
if(gender == MALE && S.gender == FEMALE)
|
||||
if(gender == MALE && SA.gender == FEMALE)
|
||||
continue
|
||||
if(gender == FEMALE && S.gender == MALE)
|
||||
if(gender == FEMALE && SA.gender == MALE)
|
||||
continue
|
||||
if(species == "Machine") //Species that can use prosthetic heads.
|
||||
var/head_model
|
||||
@@ -1625,14 +1629,14 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
else
|
||||
head_model = rlimb_data["head"]
|
||||
var/datum/robolimb/robohead = all_robolimbs[head_model]
|
||||
if((species in S.species_allowed) && robohead.is_monitor && ((S.models_allowed && (robohead.company in S.models_allowed)) || !S.models_allowed)) //If this is a facial hair style native to the user's species, check to see if they have a head with an ipc-style screen and that the head's company is in the screen style's allowed models list.
|
||||
if((species in SA.species_allowed) && robohead.is_monitor && ((SA.models_allowed && (robohead.company in SA.models_allowed)) || !SA.models_allowed)) //If this is a facial hair style native to the user's species, check to see if they have a head with an ipc-style screen and that the head's company is in the screen style's allowed models list.
|
||||
valid_facial_hairstyles += facialhairstyle //Give them their facial hairstyles if they do.
|
||||
else
|
||||
if(!robohead.is_monitor && ("Human" in S.species_allowed)) /*If the facial hairstyle is not native to the user's species and they're using a head with an ipc-style screen, don't let them access it.
|
||||
if(!robohead.is_monitor && ("Human" in SA.species_allowed)) /*If the facial hairstyle is not native to the user's species and they're using a head with an ipc-style screen, don't let them access it.
|
||||
But if the user has a robotic humanoid head and the facial hairstyle can fit humans, let them use it as a wig. */
|
||||
valid_facial_hairstyles += facialhairstyle
|
||||
else //If the user is not a species who can have robotic heads, use the default handling.
|
||||
if(species in S.species_allowed) //If the user's head is of a species the facial hair style allows, add it to the list.
|
||||
if(species in SA.species_allowed) //If the user's head is of a species the facial hair style allows, add it to the list.
|
||||
valid_facial_hairstyles += facialhairstyle
|
||||
|
||||
var/new_f_style = input(user, "Choose your character's facial-hair style:", "Character Preference") as null|anything in valid_facial_hairstyles
|
||||
@@ -1642,12 +1646,12 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
if("underwear")
|
||||
var/list/valid_underwear = list()
|
||||
for(var/underwear in underwear_list)
|
||||
var/datum/sprite_accessory/S = underwear_list[underwear]
|
||||
if(gender == MALE && S.gender == FEMALE)
|
||||
var/datum/sprite_accessory/SA = underwear_list[underwear]
|
||||
if(gender == MALE && SA.gender == FEMALE)
|
||||
continue
|
||||
if(gender == FEMALE && S.gender == MALE)
|
||||
if(gender == FEMALE && SA.gender == MALE)
|
||||
continue
|
||||
if(!(species in S.species_allowed))
|
||||
if(!(species in SA.species_allowed))
|
||||
continue
|
||||
valid_underwear[underwear] = underwear_list[underwear]
|
||||
var/new_underwear = input(user, "Choose your character's underwear:", "Character Preference") as null|anything in valid_underwear
|
||||
@@ -1657,12 +1661,12 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
if("undershirt")
|
||||
var/list/valid_undershirts = list()
|
||||
for(var/undershirt in undershirt_list)
|
||||
var/datum/sprite_accessory/S = undershirt_list[undershirt]
|
||||
if(gender == MALE && S.gender == FEMALE)
|
||||
var/datum/sprite_accessory/SA = undershirt_list[undershirt]
|
||||
if(gender == MALE && SA.gender == FEMALE)
|
||||
continue
|
||||
if(gender == FEMALE && S.gender == MALE)
|
||||
if(gender == FEMALE && SA.gender == MALE)
|
||||
continue
|
||||
if(!(species in S.species_allowed))
|
||||
if(!(species in SA.species_allowed))
|
||||
continue
|
||||
valid_undershirts[undershirt] = undershirt_list[undershirt]
|
||||
var/new_undershirt = input(user, "Choose your character's undershirt:", "Character Preference") as null|anything in valid_undershirts
|
||||
@@ -1673,12 +1677,12 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
if("socks")
|
||||
var/list/valid_sockstyles = list()
|
||||
for(var/sockstyle in socks_list)
|
||||
var/datum/sprite_accessory/S = socks_list[sockstyle]
|
||||
if(gender == MALE && S.gender == FEMALE)
|
||||
var/datum/sprite_accessory/SA = socks_list[sockstyle]
|
||||
if(gender == MALE && SA.gender == FEMALE)
|
||||
continue
|
||||
if(gender == FEMALE && S.gender == MALE)
|
||||
if(gender == FEMALE && SA.gender == MALE)
|
||||
continue
|
||||
if(!(species in S.species_allowed))
|
||||
if(!(species in SA.species_allowed))
|
||||
continue
|
||||
valid_sockstyles[sockstyle] = socks_list[sockstyle]
|
||||
var/new_socks = input(user, "Choose your character's socks:", "Character Preference") as null|anything in valid_sockstyles
|
||||
@@ -1909,10 +1913,20 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
toggles ^= DONATOR_PUBLIC
|
||||
|
||||
if("gender")
|
||||
if(gender == MALE)
|
||||
gender = FEMALE
|
||||
if(!S.has_gender)
|
||||
var/newgender = input(user, "Choose Gender:") as null|anything in list("Male", "Female", "Genderless")
|
||||
switch(newgender)
|
||||
if("Male")
|
||||
gender = MALE
|
||||
if("Female")
|
||||
gender = FEMALE
|
||||
if("Genderless")
|
||||
gender = PLURAL
|
||||
else
|
||||
gender = MALE
|
||||
if(gender == MALE)
|
||||
gender = FEMALE
|
||||
else
|
||||
gender = MALE
|
||||
underwear = random_underwear(gender)
|
||||
|
||||
if("hear_adminhelps")
|
||||
@@ -2153,7 +2167,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
character.backbag = backbag
|
||||
|
||||
//Debugging report to track down a bug, which randomly assigned the plural gender to people.
|
||||
if(character.gender in list(PLURAL, NEUTER))
|
||||
if(S.has_gender && (character.gender in list(PLURAL, NEUTER)))
|
||||
if(isliving(src)) //Ghosts get neuter by default
|
||||
message_admins("[key_name_admin(character)] has spawned with their gender as plural or neuter. Please notify coders.")
|
||||
character.change_gender(MALE)
|
||||
|
||||
@@ -270,6 +270,7 @@
|
||||
gear = params2list(query.item[65])
|
||||
|
||||
//Sanitize
|
||||
var/datum/species/SP = all_species[species]
|
||||
metadata = sanitize_text(metadata, initial(metadata))
|
||||
real_name = reject_bad_name(real_name, 1)
|
||||
if(isnull(species)) species = "Human"
|
||||
@@ -278,7 +279,7 @@
|
||||
if(isnull(speciesprefs)) speciesprefs = initial(speciesprefs)
|
||||
if(!real_name) real_name = random_name(gender,species)
|
||||
be_random_name = sanitize_integer(be_random_name, 0, 1, initial(be_random_name))
|
||||
gender = sanitize_gender(gender)
|
||||
gender = sanitize_gender(gender, FALSE, !SP.has_gender)
|
||||
age = sanitize_integer(age, AGE_MIN, AGE_MAX, initial(age))
|
||||
r_hair = sanitize_integer(r_hair, 0, 255, initial(r_hair))
|
||||
g_hair = sanitize_integer(g_hair, 0, 255, initial(g_hair))
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "clothing"
|
||||
burn_state = FLAMMABLE
|
||||
var/list/species_restricted = null //Only these species can wear this kit.
|
||||
var/rig_restrict_helmet = 0 // Stops the user from equipping a rig helmet without attaching it to the suit first.
|
||||
var/hardsuit_restrict_helmet = 0 // Stops the user from equipping a hardsuit helmet without attaching it to the suit first.
|
||||
var/scan_reagents = 0 //Can the wearer see reagents while it's equipped?
|
||||
|
||||
/*
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/ert
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/ert
|
||||
name = "emergency response team helmet"
|
||||
desc = "A helmet worn by members of the Nanotrasen Emergency Response Team. Armoured and space ready."
|
||||
icon_state = "rig0-ert_commander"
|
||||
icon_state = "hardsuit0-ert_commander"
|
||||
item_state = "helm-command"
|
||||
armor = list(melee = 45, bullet = 25, laser = 30, energy = 10, bomb = 25, bio = 100, rad = 50)
|
||||
rig_restrict_helmet = 0 // ERT helmets can be taken on and off at will.
|
||||
hardsuit_restrict_helmet = 0 // ERT helmets can be taken on and off at will.
|
||||
var/obj/machinery/camera/camera
|
||||
var/has_camera = TRUE
|
||||
strip_delay = 130
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/ert/attack_self(mob/user)
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/ert/attack_self(mob/user)
|
||||
if(camera || !has_camera)
|
||||
..(user)
|
||||
else
|
||||
@@ -20,11 +20,11 @@
|
||||
camera.c_tag = user.name
|
||||
to_chat(user, "<span class='notice'>User scanned as [camera.c_tag]. Camera activated.</span>")
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/ert/examine(mob/user)
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/ert/examine(mob/user)
|
||||
if(..(user, 1) && has_camera)
|
||||
to_chat(user, "This helmet has a built-in camera. It's [camera ? "" : "in"]active.")
|
||||
|
||||
/obj/item/clothing/suit/space/rig/ert
|
||||
/obj/item/clothing/suit/space/hardsuit/ert
|
||||
name = "emergency response team suit"
|
||||
desc = "A suit worn by members of the Nanotrasen Emergency Response Team. Armoured, space ready, and fire resistant."
|
||||
icon_state = "ert_commander"
|
||||
@@ -39,110 +39,110 @@
|
||||
strip_delay = 130
|
||||
|
||||
//Commander
|
||||
/obj/item/clothing/head/helmet/space/rig/ert/commander
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/ert/commander
|
||||
name = "emergency response team commander helmet"
|
||||
desc = "A helmet worn by the commander of a Nanotrasen Emergency Response Team. Has blue highlights. Armoured and space ready."
|
||||
icon_state = "rig0-ert_commander"
|
||||
icon_state = "hardsuit0-ert_commander"
|
||||
item_state = "helm-command"
|
||||
item_color = "ert_commander"
|
||||
|
||||
/obj/item/clothing/suit/space/rig/ert/commander
|
||||
/obj/item/clothing/suit/space/hardsuit/ert/commander
|
||||
name = "emergency response team commander suit"
|
||||
desc = "A suit worn by the commander of a Nanotrasen Emergency Response Team. Has blue highlights. Armoured, space ready, and fire resistant."
|
||||
icon_state = "ert_commander"
|
||||
item_state = "suit-command"
|
||||
|
||||
//Security
|
||||
/obj/item/clothing/head/helmet/space/rig/ert/security
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/ert/security
|
||||
name = "emergency response team security helmet"
|
||||
desc = "A helmet worn by security members of a Nanotrasen Emergency Response Team. Has red highlights. Armoured and space ready."
|
||||
icon_state = "rig0-ert_security"
|
||||
icon_state = "hardsuit0-ert_security"
|
||||
item_state = "syndicate-helm-black-red"
|
||||
item_color = "ert_security"
|
||||
|
||||
/obj/item/clothing/suit/space/rig/ert/security
|
||||
/obj/item/clothing/suit/space/hardsuit/ert/security
|
||||
name = "emergency response team security suit"
|
||||
desc = "A suit worn by security members of a Nanotrasen Emergency Response Team. Has red highlights. Armoured, space ready, and fire resistant."
|
||||
icon_state = "ert_security"
|
||||
item_state = "syndicate-black-red"
|
||||
|
||||
//Engineer
|
||||
/obj/item/clothing/head/helmet/space/rig/ert/engineer
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/ert/engineer
|
||||
name = "emergency response team engineer helmet"
|
||||
desc = "A helmet worn by engineers of a Nanotrasen Emergency Response Team. Has yellow highlights. Armoured and space ready."
|
||||
icon_state = "rig0-ert_engineer"
|
||||
icon_state = "hardsuit0-ert_engineer"
|
||||
item_state = "helm-orange"
|
||||
item_color = "ert_engineer"
|
||||
|
||||
/obj/item/clothing/suit/space/rig/ert/engineer
|
||||
/obj/item/clothing/suit/space/hardsuit/ert/engineer
|
||||
name = "emergency response team engineer suit"
|
||||
desc = "A suit worn by the engineers of a Nanotrasen Emergency Response Team. Has yellow highlights. Armoured, space ready, and fire resistant."
|
||||
icon_state = "ert_engineer"
|
||||
item_state = "suit-orange"
|
||||
|
||||
//Medical
|
||||
/obj/item/clothing/head/helmet/space/rig/ert/medical
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/ert/medical
|
||||
name = "emergency response team medical helmet"
|
||||
desc = "A helmet worn by medical members of a Nanotrasen Emergency Response Team. Has white highlights. Armoured and space ready."
|
||||
icon_state = "rig0-ert_medical"
|
||||
icon_state = "hardsuit0-ert_medical"
|
||||
item_color = "ert_medical"
|
||||
|
||||
/obj/item/clothing/suit/space/rig/ert/medical
|
||||
/obj/item/clothing/suit/space/hardsuit/ert/medical
|
||||
name = "emergency response team medical suit"
|
||||
desc = "A suit worn by medical members of a Nanotrasen Emergency Response Team. Has white highlights. Armoured and space ready."
|
||||
icon_state = "ert_medical"
|
||||
|
||||
//Janitor
|
||||
/obj/item/clothing/head/helmet/space/rig/ert/janitor
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/ert/janitor
|
||||
name = "emergency response team janitor helmet"
|
||||
desc = "A helmet worn by janitorial members of a Nanotrasen Emergency Response Team. Has purple highlights. Armoured and space ready."
|
||||
icon_state = "rig0-ert_janitor"
|
||||
icon_state = "hardsuit0-ert_janitor"
|
||||
item_color = "ert_janitor"
|
||||
|
||||
/obj/item/clothing/suit/space/rig/ert/janitor
|
||||
/obj/item/clothing/suit/space/hardsuit/ert/janitor
|
||||
name = "emergency response team janitor suit"
|
||||
desc = "A suit worn by the janitorial of a Nanotrasen Emergency Response Team. Has purple highlights. Armoured, space ready, and fire resistant."
|
||||
icon_state = "ert_janitor"
|
||||
|
||||
//Paranormal
|
||||
/obj/item/clothing/head/helmet/space/rig/ert/paranormal
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal
|
||||
name = "paranormal response unit helmet"
|
||||
desc = "A helmet worn by those who deal with paranormal threats for a living."
|
||||
icon_state = "rig0-ert_paranormal"
|
||||
icon_state = "hardsuit0-ert_paranormal"
|
||||
item_color = "ert_paranormal"
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
|
||||
sprite_sheets = null
|
||||
icon_override = 'icons/mob/clothing/paranormal_hardsuit.dmi'
|
||||
actions_types = list()
|
||||
has_camera = 0
|
||||
|
||||
/obj/item/clothing/suit/space/rig/ert/paranormal
|
||||
/obj/item/clothing/suit/space/hardsuit/ert/paranormal
|
||||
name = "paranormal response team suit"
|
||||
desc = "Powerful wards are built into this hardsuit, protecting the user from all manner of paranormal threats."
|
||||
icon_state = "rig-paranormal"
|
||||
icon_state = "hardsuit-paranormal"
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
|
||||
sprite_sheets = null
|
||||
icon_override = 'icons/mob/clothing/paranormal_hardsuit.dmi'
|
||||
actions_types = list()
|
||||
|
||||
/obj/item/clothing/suit/space/rig/ert/paranormal/New()
|
||||
/obj/item/clothing/suit/space/hardsuit/ert/paranormal/New()
|
||||
..()
|
||||
new /obj/item/weapon/nullrod(src)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/ert/paranormal/inquisitor
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal/inquisitor
|
||||
name = "inquisitor's helmet"
|
||||
icon_state = "rig0-inquisitor"
|
||||
icon_state = "hardsuit0-inquisitor"
|
||||
item_color = "inquisitor"
|
||||
|
||||
/obj/item/clothing/suit/space/rig/ert/paranormal/inquisitor
|
||||
name = "inquisitor's hardsuit"
|
||||
icon_state = "rig-inquisitor"
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/ert/paranormal/berserker
|
||||
/obj/item/clothing/suit/space/hardsuit/ert/paranormal/inquisitor
|
||||
name = "inquisitor's hardsuit"
|
||||
icon_state = "hardsuit-inquisitor"
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal/berserker
|
||||
name = "champion's helmet"
|
||||
desc = "Peering into the eyes of the helmet is enough to seal damnation."
|
||||
icon_state = "rig0-berserker"
|
||||
item_color = "berserker"
|
||||
|
||||
/obj/item/clothing/suit/space/rig/ert/paranormal/berserker
|
||||
icon_state = "hardsuit0-berserker"
|
||||
item_color = "berserker"
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/ert/paranormal/berserker
|
||||
name = "champion's hardsuit"
|
||||
desc = "Voices echo from the hardsuit, driving the user insane."
|
||||
icon_state = "rig-berserker"
|
||||
icon_state = "hardsuit-berserker"
|
||||
|
||||
+90
-90
@@ -1,15 +1,15 @@
|
||||
//Regular rig suits
|
||||
/obj/item/clothing/head/helmet/space/rig
|
||||
//Baseline hardsuits
|
||||
/obj/item/clothing/head/helmet/space/hardsuit
|
||||
name = "hardsuit helmet"
|
||||
desc = "A special helmet designed for work in a hazardous, low-pressure environment."
|
||||
icon_state = "rig0-engineering"
|
||||
icon_state = "hardsuit0-engineering"
|
||||
item_state = "eng_helm"
|
||||
rig_restrict_helmet = 1
|
||||
hardsuit_restrict_helmet = 1
|
||||
armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75)
|
||||
allowed = list(/obj/item/device/flashlight)
|
||||
var/brightness_on = 4 //luminosity when on
|
||||
var/on = 0
|
||||
item_color = "engineering" //Determines used sprites: rig[on]-[color] and rig[on]-[color]2 (lying down sprite)
|
||||
item_color = "engineering" //Determines used sprites: hardsuit[on]-[color] and hardsuit[on]-[color]2 (lying down sprite)
|
||||
actions_types = list(/datum/action/item_action/toggle_helmet_light)
|
||||
|
||||
//Species-specific stuff.
|
||||
@@ -30,18 +30,18 @@
|
||||
"Vulpkanin" = 'icons/obj/clothing/species/vulpkanin/hats.dmi',
|
||||
)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/equip_to_best_slot(mob/M)
|
||||
if(rig_restrict_helmet)
|
||||
to_chat(M, "<span class='warning'>You must fasten the helmet to a hardsuit first. (Target the head and use on a hardsuit)</span>") // Stop RIG helmet equipping
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/equip_to_best_slot(mob/M)
|
||||
if(hardsuit_restrict_helmet)
|
||||
to_chat(M, "<span class='warning'>You must fasten the helmet to a hardsuit first. (Target the head and use on a hardsuit)</span>") // Stop hardsuit helmet equipping
|
||||
return 0
|
||||
..()
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/attack_self(mob/user)
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/attack_self(mob/user)
|
||||
toggle_light(user)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/proc/toggle_light(mob/user)
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/proc/toggle_light(mob/user)
|
||||
on = !on
|
||||
icon_state = "rig[on]-[item_color]"
|
||||
icon_state = "hardsuit[on]-[item_color]"
|
||||
|
||||
if(on)
|
||||
set_light(brightness_on)
|
||||
@@ -56,14 +56,14 @@
|
||||
var/datum/action/A = X
|
||||
A.UpdateButtonIcon()
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/item_action_slot_check(slot)
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/item_action_slot_check(slot)
|
||||
if(slot == slot_head)
|
||||
return 1
|
||||
|
||||
/obj/item/clothing/suit/space/rig
|
||||
/obj/item/clothing/suit/space/hardsuit
|
||||
name = "hardsuit"
|
||||
desc = "A special space suit for environments that might pose hazards beyond just the vacuum of space. Provides more protection than a standard space suit."
|
||||
icon_state = "rig-engineering"
|
||||
icon_state = "hardsuit-engineering"
|
||||
item_state = "eng_hardsuit"
|
||||
armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75)
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/t_scanner, /obj/item/weapon/rcd)
|
||||
@@ -103,7 +103,7 @@
|
||||
var/list/mounted_devices = null // Holder for the above device.
|
||||
var/obj/item/active_device = null // Currently deployed device, if any.
|
||||
|
||||
/obj/item/clothing/suit/space/rig/equipped(mob/M)
|
||||
/obj/item/clothing/suit/space/hardsuit/equipped(mob/M)
|
||||
..()
|
||||
|
||||
var/mob/living/carbon/human/H = M
|
||||
@@ -133,7 +133,7 @@
|
||||
H.equip_to_slot(boots, slot_shoes)
|
||||
boots.flags |= NODROP
|
||||
|
||||
/obj/item/clothing/suit/space/rig/dropped()
|
||||
/obj/item/clothing/suit/space/hardsuit/dropped()
|
||||
..()
|
||||
|
||||
var/mob/living/carbon/human/H
|
||||
@@ -154,7 +154,7 @@
|
||||
H.unEquip(boots)
|
||||
boots.forceMove(src)
|
||||
|
||||
/obj/item/clothing/suit/space/rig/verb/toggle_helmet()
|
||||
/obj/item/clothing/suit/space/hardsuit/verb/toggle_helmet()
|
||||
set name = "Toggle Helmet"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
@@ -189,7 +189,7 @@
|
||||
to_chat(H, "<span class='notice'>You deploy your hardsuit helmet, sealing you off from the world.</span>")
|
||||
H.update_inv_head()
|
||||
|
||||
/obj/item/clothing/suit/space/rig/attackby(obj/item/W, mob/user, params)
|
||||
/obj/item/clothing/suit/space/hardsuit/attackby(obj/item/W, mob/user, params)
|
||||
if(!isliving(user))
|
||||
return
|
||||
|
||||
@@ -238,43 +238,43 @@
|
||||
return ..()
|
||||
|
||||
..()
|
||||
|
||||
/obj/item/clothing/suit/space/rig/proc/can_modify(mob/living/user)
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/proc/can_modify(mob/living/user)
|
||||
if(isliving(loc))
|
||||
to_chat(user, "<span class='info'>You can not modify the hardsuit while it is being worn.</span>")
|
||||
return 0
|
||||
|
||||
|
||||
return 1
|
||||
|
||||
//Engineering rig
|
||||
/obj/item/clothing/head/helmet/space/rig/engineering
|
||||
//Engineering hardsuit
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/engineering
|
||||
name = "engineering hardsuit helmet"
|
||||
desc = "A special helmet designed for work in a hazardous, low-pressure environment. Has radiation shielding."
|
||||
icon_state = "rig0-engineering"
|
||||
icon_state = "hardsuit0-engineering"
|
||||
item_state = "eng_helm"
|
||||
armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75)
|
||||
|
||||
/obj/item/clothing/suit/space/rig/engineering
|
||||
/obj/item/clothing/suit/space/hardsuit/engineering
|
||||
name = "engineering hardsuit"
|
||||
desc = "A special suit that protects against hazardous, low pressure environments. Has radiation shielding."
|
||||
icon_state = "rig-engineering"
|
||||
icon_state = "hardsuit-engineering"
|
||||
item_state = "eng_hardsuit"
|
||||
armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75)
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/t_scanner, /obj/item/weapon/rcd)
|
||||
|
||||
//Chief Engineer's rig
|
||||
/obj/item/clothing/head/helmet/space/rig/elite
|
||||
//Chief Engineer's hardsuit
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/elite
|
||||
name = "advanced hardsuit helmet"
|
||||
desc = "An advanced helmet designed for work in a hazardous, low pressure environment. Shines with a high polish."
|
||||
icon_state = "rig0-white"
|
||||
icon_state = "hardsuit0-white"
|
||||
item_state = "ce_helm"
|
||||
item_color = "white"
|
||||
armor = list(melee = 40, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 90)
|
||||
heat_protection = HEAD //Uncomment to enable firesuit protection
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
|
||||
|
||||
/obj/item/clothing/suit/space/rig/elite
|
||||
icon_state = "rig-white"
|
||||
/obj/item/clothing/suit/space/hardsuit/elite
|
||||
icon_state = "hardsuit-white"
|
||||
name = "advanced hardsuit"
|
||||
desc = "An advanced suit that protects against hazardous, low pressure environments. Shines with a high polish."
|
||||
item_state = "ce_hardsuit"
|
||||
@@ -282,18 +282,18 @@
|
||||
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS //Uncomment to enable firesuit protection
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
|
||||
|
||||
//Mining rig
|
||||
/obj/item/clothing/head/helmet/space/rig/mining
|
||||
//Mining hardsuit
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/mining
|
||||
name = "mining hardsuit helmet"
|
||||
desc = "A special helmet designed for work in a hazardous, low pressure environment. Has reinforced plating."
|
||||
icon_state = "rig0-mining"
|
||||
icon_state = "hardsuit0-mining"
|
||||
item_state = "mining_helm"
|
||||
item_color = "mining"
|
||||
flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE
|
||||
armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 50)
|
||||
|
||||
/obj/item/clothing/suit/space/rig/mining
|
||||
icon_state = "rig-mining"
|
||||
/obj/item/clothing/suit/space/hardsuit/mining
|
||||
icon_state = "hardsuit-mining"
|
||||
name = "mining hardsuit"
|
||||
desc = "A special suit that protects against hazardous, low pressure environments. Has reinforced plating."
|
||||
item_state = "mining_hardsuit"
|
||||
@@ -301,11 +301,11 @@
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/storage/bag/ore,/obj/item/weapon/pickaxe)
|
||||
|
||||
|
||||
//Syndicate rig
|
||||
/obj/item/clothing/head/helmet/space/rig/syndi
|
||||
//Syndicate hardsuit
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/syndi
|
||||
name = "blood-red hardsuit helmet"
|
||||
desc = "A dual-mode advanced helmet designed for work in special operations. It is in travel mode. Property of Gorlex Marauders."
|
||||
icon_state = "rig1-syndi"
|
||||
icon_state = "hardsuit1-syndi"
|
||||
item_state = "syndie_helm"
|
||||
item_color = "syndi"
|
||||
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50)
|
||||
@@ -313,10 +313,10 @@
|
||||
flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | THICKMATERIAL
|
||||
actions_types = list(/datum/action/item_action/toggle_helmet_mode)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/syndi/update_icon()
|
||||
icon_state = "rig[on]-[item_color]"
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/syndi/update_icon()
|
||||
icon_state = "hardsuit[on]-[item_color]"
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/syndi/attack_self(mob/user)
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/syndi/attack_self(mob/user)
|
||||
on = !on
|
||||
if(on)
|
||||
to_chat(user, "<span class='notice'>You switch your helmet to travel mode. It will allow you to stand in zero pressure environments, at the cost of speed and armor.</span>")
|
||||
@@ -343,10 +343,10 @@
|
||||
var/datum/action/A = X
|
||||
A.UpdateButtonIcon()
|
||||
|
||||
/obj/item/clothing/suit/space/rig/syndi
|
||||
/obj/item/clothing/suit/space/hardsuit/syndi
|
||||
name = "blood-red hardsuit"
|
||||
desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in travel mode. Property of Gorlex Marauders."
|
||||
icon_state = "rig1-syndi"
|
||||
icon_state = "hardsuit1-syndi"
|
||||
item_state = "syndie_hardsuit"
|
||||
item_color = "syndi"
|
||||
w_class = 3
|
||||
@@ -355,10 +355,10 @@
|
||||
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50)
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword/saber,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank)
|
||||
|
||||
/obj/item/clothing/suit/space/rig/syndi/update_icon()
|
||||
icon_state = "rig[on]-[item_color]"
|
||||
/obj/item/clothing/suit/space/hardsuit/syndi/update_icon()
|
||||
icon_state = "hardsuit[on]-[item_color]"
|
||||
|
||||
/obj/item/clothing/suit/space/rig/syndi/attack_self(mob/user)
|
||||
/obj/item/clothing/suit/space/hardsuit/syndi/attack_self(mob/user)
|
||||
on = !on
|
||||
if(on)
|
||||
to_chat(user, "<span class='notice'>You switch your hardsuit to travel mode. It will allow you to stand in zero pressure environments, at the cost of speed and armor.</span>")
|
||||
@@ -387,17 +387,17 @@
|
||||
A.UpdateButtonIcon()
|
||||
|
||||
//Elite Syndie suit
|
||||
/obj/item/clothing/head/helmet/space/rig/syndi/elite
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/syndi/elite
|
||||
name = "elite syndicate hardsuit helmet"
|
||||
desc = "An elite version of the syndicate helmet, with improved armour and fire shielding. It is in travel mode. Property of Gorlex Marauders."
|
||||
icon_state = "rig0-syndielite"
|
||||
icon_state = "hardsuit0-syndielite"
|
||||
item_color = "syndielite"
|
||||
armor = list(melee = 60, bullet = 60, laser = 50, energy = 25, bomb = 55, bio = 100, rad = 70)
|
||||
heat_protection = HEAD
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
|
||||
sprite_sheets = null
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/syndi/elite/attack_self(mob/user)
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/syndi/elite/attack_self(mob/user)
|
||||
..()
|
||||
if(on)
|
||||
name = "elite syndicate hardsuit helmet"
|
||||
@@ -406,17 +406,17 @@
|
||||
name = "elite syndicate hardsuit helmet (combat)"
|
||||
desc = "An elite version of the syndicate helmet, with improved armour and fire shielding. It is in combat mode. Property of Gorlex Marauders."
|
||||
|
||||
/obj/item/clothing/suit/space/rig/syndi/elite
|
||||
/obj/item/clothing/suit/space/hardsuit/syndi/elite
|
||||
name = "elite syndicate hardsuit"
|
||||
desc = "An elite version of the syndicate hardsuit, with improved armour and fire shielding. It is in travel mode."
|
||||
icon_state = "rig0-syndielite"
|
||||
icon_state = "hardsuit0-syndielite"
|
||||
item_color = "syndielite"
|
||||
armor = list(melee = 60, bullet = 60, laser = 50, energy = 25, bomb = 55, bio = 100, rad = 70)
|
||||
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
|
||||
sprite_sheets = null
|
||||
|
||||
/obj/item/clothing/suit/space/rig/syndi/elite/attack_self(mob/user)
|
||||
/obj/item/clothing/suit/space/hardsuit/syndi/elite/attack_self(mob/user)
|
||||
..()
|
||||
if(on)
|
||||
name = "elite syndicate hardsuit"
|
||||
@@ -425,11 +425,11 @@
|
||||
name = "elite syndicate hardsuit (combat)"
|
||||
desc = "An elite version of the syndicate hardsuit, with improved armour and fire shielding. It is in combat mode. Property of Gorlex Marauders."
|
||||
|
||||
//Wizard Rig
|
||||
/obj/item/clothing/head/helmet/space/rig/wizard
|
||||
//Wizard hardsuit
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/wizard
|
||||
name = "gem-encrusted hardsuit helmet"
|
||||
desc = "A bizarre gem-encrusted helmet that radiates magical energies."
|
||||
icon_state = "rig0-wiz"
|
||||
icon_state = "hardsuit0-wiz"
|
||||
item_state = "wiz_helm"
|
||||
item_color = "wiz"
|
||||
unacidable = 1 //No longer shall our kind be foiled by lone chemists with spray bottles!
|
||||
@@ -439,8 +439,8 @@
|
||||
unacidable = 1
|
||||
sprite_sheets = null
|
||||
|
||||
/obj/item/clothing/suit/space/rig/wizard
|
||||
icon_state = "rig-wiz"
|
||||
/obj/item/clothing/suit/space/hardsuit/wizard
|
||||
icon_state = "hardsuit-wiz"
|
||||
name = "gem-encrusted hardsuit"
|
||||
desc = "A bizarre gem-encrusted suit that radiates magical energies."
|
||||
item_state = "wiz_hardsuit"
|
||||
@@ -453,11 +453,11 @@
|
||||
unacidable = 1
|
||||
sprite_sheets = null
|
||||
|
||||
//Medical Rig
|
||||
/obj/item/clothing/head/helmet/space/rig/medical
|
||||
//Medical hardsuit
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/medical
|
||||
name = "medical hardsuit helmet"
|
||||
desc = "A special helmet designed for work in a hazardous, low pressure environment. Built with lightweight materials for extra comfort, but does not protect the eyes from intense light."
|
||||
icon_state = "rig0-medical"
|
||||
icon_state = "hardsuit0-medical"
|
||||
item_state = "medical_helm"
|
||||
item_color = "medical"
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
|
||||
@@ -465,8 +465,8 @@
|
||||
flash_protect = 0
|
||||
scan_reagents = 1 //Generally worn by the CMO, so they'd get utility off of seeing reagents
|
||||
|
||||
/obj/item/clothing/suit/space/rig/medical
|
||||
icon_state = "rig-medical"
|
||||
/obj/item/clothing/suit/space/hardsuit/medical
|
||||
icon_state = "hardsuit-medical"
|
||||
name = "medical hardsuit"
|
||||
desc = "A special helmet designed for work in a hazardous, low pressure environment. Built with lightweight materials for extra comfort."
|
||||
item_state = "medical_hardsuit"
|
||||
@@ -474,16 +474,16 @@
|
||||
armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 50)
|
||||
|
||||
//Security
|
||||
/obj/item/clothing/head/helmet/space/rig/security
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/security
|
||||
name = "security hardsuit helmet"
|
||||
desc = "A special helmet designed for work in a hazardous, low pressure environment. Has an additional layer of armor."
|
||||
icon_state = "rig0-sec"
|
||||
icon_state = "hardsuit0-sec"
|
||||
item_state = "sec_helm"
|
||||
item_color = "sec"
|
||||
armor = list(melee = 30, bullet = 15, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 50)
|
||||
|
||||
/obj/item/clothing/suit/space/rig/security
|
||||
icon_state = "rig-sec"
|
||||
/obj/item/clothing/suit/space/hardsuit/security
|
||||
icon_state = "hardsuit-sec"
|
||||
name = "security hardsuit"
|
||||
desc = "A special suit that protects against hazardous, low pressure environments. Has an additional layer of armor."
|
||||
item_state = "sec_hardsuit"
|
||||
@@ -491,20 +491,20 @@
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/melee/baton,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/restraints/handcuffs)
|
||||
|
||||
|
||||
//Atmospherics Rig (BS12)
|
||||
/obj/item/clothing/head/helmet/space/rig/atmos
|
||||
//Atmospherics hardsuit (BS12)
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/atmos
|
||||
desc = "A special helmet designed for work in a hazardous, low pressure environments. Has improved thermal protection and minor radiation shielding."
|
||||
name = "atmospherics hardsuit helmet"
|
||||
icon_state = "rig0-atmos"
|
||||
icon_state = "hardsuit0-atmos"
|
||||
item_state = "atmos_helm"
|
||||
item_color = "atmos"
|
||||
armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 0)
|
||||
heat_protection = HEAD //Uncomment to enable firesuit protection
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
|
||||
|
||||
/obj/item/clothing/suit/space/rig/atmos
|
||||
/obj/item/clothing/suit/space/hardsuit/atmos
|
||||
desc = "A special suit that protects against hazardous, low pressure environments. Has improved thermal protection and minor radiation shielding."
|
||||
icon_state = "rig-atmos"
|
||||
icon_state = "hardsuit-atmos"
|
||||
name = "atmos hardsuit"
|
||||
item_state = "atmos_hardsuit"
|
||||
armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 0)
|
||||
@@ -512,16 +512,16 @@
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
|
||||
|
||||
//Singuloth armor
|
||||
/obj/item/clothing/head/helmet/space/rig/singuloth
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/singuloth
|
||||
name = "singuloth knight's helmet"
|
||||
desc = "This is an adamantium helmet from the chapter of the Singuloth Knights. It shines with a holy aura."
|
||||
icon_state = "rig0-singuloth"
|
||||
icon_state = "hardsuit0-singuloth"
|
||||
item_state = "singuloth_helm"
|
||||
item_color = "singuloth"
|
||||
armor = list(melee = 40, bullet = 5, laser = 20, energy = 5, bomb = 25, bio = 100, rad = 100)
|
||||
|
||||
/obj/item/clothing/suit/space/rig/singuloth
|
||||
icon_state = "rig-singuloth"
|
||||
/obj/item/clothing/suit/space/hardsuit/singuloth
|
||||
icon_state = "hardsuit-singuloth"
|
||||
name = "singuloth knight's armor"
|
||||
desc = "This is a ceremonial armor from the chapter of the Singuloth Knights. It's made of pure forged adamantium."
|
||||
item_state = "singuloth_hardsuit"
|
||||
@@ -529,17 +529,17 @@
|
||||
armor = list(melee = 40, bullet = 5, laser = 20, energy = 5, bomb = 25, bio = 100, rad = 100)
|
||||
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/security/hos
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/security/hos
|
||||
name = "head of security's hardsuit helmet"
|
||||
desc = "a special bulky helmet designed for work in a hazardous, low pressure environment. Has an additional layer of armor."
|
||||
icon_state = "rig0-hos"
|
||||
icon_state = "hardsuit0-hos"
|
||||
item_color = "hos"
|
||||
armor = list(melee = 45, bullet = 25, laser = 30,energy = 10, bomb = 25, bio = 100, rad = 50)
|
||||
sprite_sheets = null
|
||||
|
||||
|
||||
/obj/item/clothing/suit/space/rig/security/hos
|
||||
icon_state = "rig-hos"
|
||||
/obj/item/clothing/suit/space/hardsuit/security/hos
|
||||
icon_state = "hardsuit-hos"
|
||||
name = "head of security's hardsuit"
|
||||
desc = "A special bulky suit that protects against hazardous, low pressure environments. Has an additional layer of armor."
|
||||
armor = list(melee = 45, bullet = 25, laser = 30, energy = 10, bomb = 25, bio = 100, rad = 50)
|
||||
@@ -548,10 +548,10 @@
|
||||
|
||||
/////////////SHIELDED//////////////////////////////////
|
||||
|
||||
/obj/item/clothing/suit/space/rig/shielded
|
||||
/obj/item/clothing/suit/space/hardsuit/shielded
|
||||
name = "shielded hardsuit"
|
||||
desc = "A hardsuit with built in energy shielding. Will rapidly recharge when not under fire."
|
||||
icon_state = "rig-hos"
|
||||
icon_state = "hardsuit-hos"
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank, /obj/item/weapon/gun,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs)
|
||||
armor = list(melee = 30, bullet = 15, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 50)
|
||||
var/current_charges = 3
|
||||
@@ -563,7 +563,7 @@
|
||||
var/shield_on = "shield-old"
|
||||
sprite_sheets = null
|
||||
|
||||
/obj/item/clothing/suit/space/rig/shielded/hit_reaction(mob/living/carbon/human/owner, attack_text)
|
||||
/obj/item/clothing/suit/space/hardsuit/shielded/hit_reaction(mob/living/carbon/human/owner, attack_text)
|
||||
if(current_charges > 0)
|
||||
var/datum/effect/system/spark_spread/s = new
|
||||
s.set_up(2, 1, src)
|
||||
@@ -580,11 +580,11 @@
|
||||
return 0
|
||||
|
||||
|
||||
/obj/item/clothing/suit/space/rig/shielded/Destroy()
|
||||
/obj/item/clothing/suit/space/hardsuit/shielded/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/suit/space/rig/shielded/process()
|
||||
/obj/item/clothing/suit/space/hardsuit/shielded/process()
|
||||
if(world.time > recharge_cooldown && current_charges < max_charges)
|
||||
current_charges = Clamp((current_charges + recharge_rate), 0, max_charges)
|
||||
playsound(loc, 'sound/magic/Charge.ogg', 50, 1)
|
||||
@@ -598,10 +598,10 @@
|
||||
|
||||
//////Syndicate Version
|
||||
|
||||
/obj/item/clothing/suit/space/rig/shielded/syndi
|
||||
/obj/item/clothing/suit/space/hardsuit/shielded/syndi
|
||||
name = "blood-red hardsuit"
|
||||
desc = "An advanced hardsuit with built in energy shielding."
|
||||
icon_state = "rig1-syndi"
|
||||
icon_state = "hardsuit1-syndi"
|
||||
item_state = "syndie_hardsuit"
|
||||
item_color = "syndi"
|
||||
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50)
|
||||
@@ -616,10 +616,10 @@
|
||||
"Drask" = 'icons/mob/species/drask/suit.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/shielded/syndi
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi
|
||||
name = "blood-red hardsuit helmet"
|
||||
desc = "An advanced hardsuit helmet with built in energy shielding."
|
||||
icon_state = "rig1-syndi"
|
||||
icon_state = "hardsuit1-syndi"
|
||||
item_state = "syndie_helm"
|
||||
item_color = "syndi"
|
||||
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50)
|
||||
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50)
|
||||
@@ -106,7 +106,7 @@
|
||||
icon_state = "judge"
|
||||
item_state = "judge"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
allowed = list(/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/spacecash)
|
||||
allowed = list(/obj/item/weapon/storage/fancy/cigarettes,/obj/item/stack/spacecash)
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
|
||||
|
||||
|
||||
+14
-15
@@ -63,16 +63,15 @@ log transactions
|
||||
|
||||
if(authenticated_account)
|
||||
var/turf/T = get_turf(src)
|
||||
if(istype(T) && locate(/obj/item/weapon/spacecash) in T)
|
||||
var/list/cash_found = list()
|
||||
for(var/obj/item/weapon/spacecash/S in T)
|
||||
cash_found += S
|
||||
if(cash_found.len > 0)
|
||||
if(istype(T) && locate(/obj/item/stack/spacecash) in T)
|
||||
var/cash_amount = 0
|
||||
for(var/obj/item/stack/spacecash/S in T)
|
||||
cash_amount += S.amount
|
||||
if(cash_amount)
|
||||
playsound(loc, pick('sound/items/polaroid1.ogg', 'sound/items/polaroid2.ogg'), 50, 1)
|
||||
var/amount = count_cash(cash_found)
|
||||
for(var/obj/item/weapon/spacecash/S in cash_found)
|
||||
qdel(S)
|
||||
authenticated_account.charge(-amount, null, "Credit deposit", terminal_id = machine_id, dest_name = "Terminal")
|
||||
for(var/obj/item/stack/spacecash/S in T)
|
||||
S.use(S.amount)
|
||||
authenticated_account.charge(-cash_amount, null, "Credit deposit", terminal_id = machine_id, dest_name = "Terminal")
|
||||
|
||||
/obj/machinery/atm/proc/reconnect_database()
|
||||
for(var/obj/machinery/computer/account_database/DB in machines)
|
||||
@@ -90,17 +89,17 @@ log transactions
|
||||
authenticated_account = null
|
||||
nanomanager.update_uis(src)
|
||||
else if(authenticated_account)
|
||||
if(istype(I, /obj/item/weapon/spacecash))
|
||||
if(istype(I, /obj/item/stack/spacecash))
|
||||
//consume the money
|
||||
var/obj/item/weapon/spacecash/C = I
|
||||
authenticated_account.money += C.get_total()
|
||||
var/obj/item/stack/spacecash/C = I
|
||||
authenticated_account.money += C.amount
|
||||
playsound(loc, pick('sound/items/polaroid1.ogg', 'sound/items/polaroid2.ogg'), 50, 1)
|
||||
|
||||
//create a transaction log entry
|
||||
var/datum/transaction/T = new()
|
||||
T.target_name = authenticated_account.owner_name
|
||||
T.purpose = "Credit deposit"
|
||||
T.amount = C.get_total()
|
||||
T.amount = C.amount
|
||||
T.source_terminal = machine_id
|
||||
T.date = current_date_string
|
||||
T.time = worldtime2text()
|
||||
@@ -108,7 +107,7 @@ log transactions
|
||||
|
||||
to_chat(user, "<span class='info'>You insert [C] into [src].</span>")
|
||||
nanomanager.update_uis(src)
|
||||
qdel(I)
|
||||
C.use(C.amount)
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -317,7 +316,7 @@ log transactions
|
||||
|
||||
//create the most effective combination of notes to make up the requested amount
|
||||
/obj/machinery/atm/proc/withdraw_arbitrary_sum(arbitrary_sum)
|
||||
dispense_cash(arbitrary_sum, get_step(get_turf(src), turn(dir, 180))) // Spawn on the ATM.
|
||||
new /obj/item/stack/spacecash(get_step(get_turf(src), turn(dir, 180)), arbitrary_sum)
|
||||
|
||||
//stolen wholesale and then edited a bit from newscasters, which are awesome and by Agouri
|
||||
/obj/machinery/atm/proc/scan_user(mob/living/carbon/human/H)
|
||||
|
||||
@@ -512,7 +512,7 @@ var/const/POS_HEADER = {"<html>
|
||||
acct.charge(credits_needed,linked_account,"Purchase at POS #[id].")
|
||||
credits_needed=0
|
||||
screen=POS_SCREEN_ORDER
|
||||
else if(istype(A,/obj/item/weapon/spacecash))
|
||||
else if(istype(A, /obj/item/stack/spacecash))
|
||||
if(!linked_account)
|
||||
visible_message("\red The machine buzzes, and flashes \"NO LINKED ACCOUNT\" on the screen.","You hear a buzz.")
|
||||
flick(src,"pos-error")
|
||||
@@ -521,8 +521,8 @@ var/const/POS_HEADER = {"<html>
|
||||
visible_message("\blue The machine buzzes.","\red You hear a buzz.")
|
||||
flick(src,"pos-error")
|
||||
return
|
||||
var/obj/item/weapon/spacecash/C=A
|
||||
credits_held += C.get_total()
|
||||
var/obj/item/stack/spacecash/C = A
|
||||
credits_held += C.amount
|
||||
if(credits_held >= credits_needed)
|
||||
visible_message("\blue The machine beeps, and begins printing a receipt","You hear a beep and the sound of paper being shredded.")
|
||||
PrintReceipt()
|
||||
@@ -531,9 +531,6 @@ var/const/POS_HEADER = {"<html>
|
||||
credits_needed=0
|
||||
screen=POS_SCREEN_ORDER
|
||||
if(credits_held)
|
||||
var/obj/item/weapon/storage/box/B = new(loc)
|
||||
dispense_cash(credits_held,B)
|
||||
B.name="change"
|
||||
B.desc="A box of change."
|
||||
new /obj/item/stack/spacecash(loc, credits_held)
|
||||
credits_held=0
|
||||
..()
|
||||
|
||||
@@ -146,17 +146,17 @@ var/list/event_last_fired = list()
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Nothing", /datum/event/nothing, 1230),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, 0, list(ASSIGNMENT_MEDICAL = 10), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Carp School", /datum/event/carp_migration, 200, list(ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_SECURITY = 20), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Rogue Drones", /datum/event/rogue_drone, 40, list(ASSIGNMENT_SECURITY = 20)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Rogue Drones", /datum/event/rogue_drone, 0, list(ASSIGNMENT_SECURITY = 20)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Space Vines", /datum/event/spacevine, 250, list(ASSIGNMENT_ENGINEER = 10)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Meteor Shower", /datum/event/meteor_wave, 0, list(ASSIGNMENT_ENGINEER = 20)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Meaty Ores", /datum/event/dust/meaty, 0, list(ASSIGNMENT_ENGINEER = 30)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Meteor Shower", /datum/event/meteor_wave, 0, list(ASSIGNMENT_ENGINEER = 25)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Meaty Ores", /datum/event/dust/meaty, 0, list(ASSIGNMENT_ENGINEER = 20)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Communication Blackout", /datum/event/communications_blackout, 500, list(ASSIGNMENT_AI = 150, ASSIGNMENT_SECURITY = 120)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Prison Break", /datum/event/prison_break, 0, list(ASSIGNMENT_SECURITY = 100)),
|
||||
//new /datum/event_meta(EVENT_LEVEL_MODERATE, "Virology Breach", /datum/event/prison_break/virology, 0, list(ASSIGNMENT_MEDICAL = 100)),
|
||||
//new /datum/event_meta(EVENT_LEVEL_MODERATE, "Xenobiology Breach", /datum/event/prison_break/xenobiology, 0, list(ASSIGNMENT_SCIENCE = 100)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grid Check", /datum/event/grid_check, 200, list(ASSIGNMENT_ENGINEER = 60)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Electrical Storm", /datum/event/electrical_storm, 250, list(ASSIGNMENT_ENGINEER = 20, ASSIGNMENT_JANITOR = 150)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Radiation Storm", /datum/event/radiation_storm, 0, list(ASSIGNMENT_MEDICAL = 50), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Radiation Storm", /datum/event/radiation_storm, 25, list(ASSIGNMENT_MEDICAL = 50), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Spider Infestation", /datum/event/spider_infestation, 100, list(ASSIGNMENT_SECURITY = 30), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Ion Storm", /datum/event/ion_storm, 0, list(ASSIGNMENT_AI = 50, ASSIGNMENT_CYBORG = 50, ASSIGNMENT_ENGINEER = 15, ASSIGNMENT_SCIENTIST = 5)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Borer Infestation", /datum/event/borer_infestation, 40, list(ASSIGNMENT_SECURITY = 30), 1),
|
||||
@@ -169,10 +169,10 @@ var/list/event_last_fired = list()
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Dimensional Tear", /datum/event/tear, 0, list(ASSIGNMENT_SECURITY = 35)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Vent Clog", /datum/event/vent_clog, 250),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Wormholes", /datum/event/wormholes, 150),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Pyro Anomaly", /datum/event/anomaly/anomaly_pyro, 100, list(ASSIGNMENT_ENGINEER = 60)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Vortex Anomaly", /datum/event/anomaly/anomaly_vortex, 50, list(ASSIGNMENT_ENGINEER = 25)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Bluespace Anomaly", /datum/event/anomaly/anomaly_bluespace, 50, list(ASSIGNMENT_ENGINEER = 25)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Flux Anomaly", /datum/event/anomaly/anomaly_flux, 50, list(ASSIGNMENT_ENGINEER = 50)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Pyro Anomaly", /datum/event/anomaly/anomaly_pyro, 75, list(ASSIGNMENT_ENGINEER = 60)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Vortex Anomaly", /datum/event/anomaly/anomaly_vortex, 75, list(ASSIGNMENT_ENGINEER = 25)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Bluespace Anomaly", /datum/event/anomaly/anomaly_bluespace, 75, list(ASSIGNMENT_ENGINEER = 25)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Flux Anomaly", /datum/event/anomaly/anomaly_flux, 75, list(ASSIGNMENT_ENGINEER = 50)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gravitational Anomaly", /datum/event/anomaly/anomaly_grav, 200),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Revenant", /datum/event/revenant, 150),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Swarmer Spawn", /datum/event/spawn_swarmer, 150, is_one_shot = 1),
|
||||
@@ -187,9 +187,9 @@ var/list/event_last_fired = list()
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 3), 1),
|
||||
//new /datum/event_meta(EVENT_LEVEL_MAJOR, "Containment Breach", /datum/event/prison_break/station, 0, list(ASSIGNMENT_ANY = 5)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Blob", /datum/event/blob, 0, list(ASSIGNMENT_ENGINEER = 30), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, 0, list(ASSIGNMENT_ENGINEER = 3), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, 0, list(ASSIGNMENT_ENGINEER = 5), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Abductor Visit", /datum/event/abductor, 80, is_one_shot = 1),
|
||||
new /datum/event_meta/alien(EVENT_LEVEL_MAJOR, "Alien Infestation", /datum/event/alien_infestation, 0, list(ASSIGNMENT_SECURITY = 30), 1),
|
||||
new /datum/event_meta/alien(EVENT_LEVEL_MAJOR, "Alien Infestation", /datum/event/alien_infestation, 0, list(ASSIGNMENT_SECURITY = 15), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Traders", /datum/event/traders, 0, is_one_shot = 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Terror Spiders", /datum/event/spider_terror, 0, list(ASSIGNMENT_SECURITY = 15), is_one_shot = 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Slaughter Demon", /datum/event/spawn_slaughter, 15, is_one_shot = 1)
|
||||
|
||||
@@ -147,7 +147,7 @@
|
||||
if(..())
|
||||
return
|
||||
interact(user)
|
||||
|
||||
|
||||
/obj/machinery/mineral/ore_redemption/attack_ghost(mob/user)
|
||||
interact(user)
|
||||
|
||||
@@ -349,7 +349,7 @@
|
||||
new /datum/data/mining_equipment("Lazarus Capsule", /obj/item/device/mobcapsule, 800),
|
||||
new /datum/data/mining_equipment("Lazarus Capsule belt",/obj/item/weapon/storage/belt/lazarus, 200),
|
||||
new /datum/data/mining_equipment("Jetpack", /obj/item/weapon/tank/jetpack/carbondioxide/mining, 2000),
|
||||
new /datum/data/mining_equipment("Space Cash", /obj/item/weapon/spacecash/c1000, 2000),
|
||||
new /datum/data/mining_equipment("Space Cash", /obj/item/stack/spacecash/c1000, 2000),
|
||||
new /datum/data/mining_equipment("Diamond Pickaxe", /obj/item/weapon/pickaxe/diamond, 2000),
|
||||
new /datum/data/mining_equipment("Super Resonator", /obj/item/weapon/resonator/upgraded, 2500),
|
||||
new /datum/data/mining_equipment("KA White Tracer Rounds", /obj/item/borg/upgrade/modkit/tracer, 100),
|
||||
@@ -398,7 +398,7 @@
|
||||
if(..())
|
||||
return
|
||||
interact(user)
|
||||
|
||||
|
||||
/obj/machinery/mineral/equipment_vendor/attack_ghost(mob/user)
|
||||
interact(user)
|
||||
|
||||
|
||||
@@ -40,8 +40,8 @@
|
||||
if(10)
|
||||
new /obj/item/ship_in_a_bottle(src)
|
||||
if(11)
|
||||
new /obj/item/clothing/head/helmet/space/rig/ert/paranormal/berserker(src)
|
||||
new /obj/item/clothing/suit/space/rig/ert/paranormal/berserker(src)
|
||||
new /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal/berserker(src)
|
||||
new /obj/item/clothing/suit/space/hardsuit/ert/paranormal/berserker(src)
|
||||
if(12)
|
||||
new /obj/item/weapon/sord(src)
|
||||
if(13)
|
||||
@@ -66,7 +66,7 @@
|
||||
new /obj/item/weapon/grenade/clusterbuster/inferno(src)
|
||||
if(23)
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/bottle/holywater/hell(src)
|
||||
new /obj/item/clothing/head/helmet/space/rig/ert/paranormal/inquisitor(src)
|
||||
new /obj/item/clothing/suit/space/rig/ert/paranormal/inquisitor(src)
|
||||
new /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal/inquisitor(src)
|
||||
new /obj/item/clothing/suit/space/hardsuit/ert/paranormal/inquisitor(src)
|
||||
if(24)
|
||||
new /obj/item/weapon/spellbook/oneuse/summonitem(src)
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
/mob/living/carbon/human/proc/change_gender(var/new_gender, var/update_dna = 1)
|
||||
var/obj/item/organ/external/head/H = organs_by_name["head"]
|
||||
if(gender == new_gender)
|
||||
if(gender == new_gender || (gender == PLURAL && species.has_gender))
|
||||
return
|
||||
|
||||
gender = new_gender
|
||||
@@ -488,4 +488,4 @@
|
||||
|
||||
valid_alt_heads += alternate_head
|
||||
|
||||
return valid_alt_heads
|
||||
return valid_alt_heads
|
||||
|
||||
@@ -836,11 +836,11 @@
|
||||
// playsound(loc, 'sound/effects/fart.ogg', 50, 1, -3) //Admins still vote no to fun
|
||||
if(locate(/obj/item/weapon/storage/bible) in get_turf(src))
|
||||
to_chat(viewers(src), "<span class='warning'><b>[src] farts on the Bible!</b></span>")
|
||||
to_chat(viewers(src), "<span class='notice'><b>A mysterious force smites [src]!</b></span>")
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
|
||||
s.set_up(3, 1, src)
|
||||
s.start()
|
||||
gib()
|
||||
var/image/cross = image('icons/obj/storage.dmi',"bible")
|
||||
var/adminbfmessage = "\blue [bicon(cross)] <b><font color=red>Bible Fart: </font>[key_name(src, 1)] (<A HREF='?_src_=holder;adminmoreinfo=\ref[src]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=\ref[src]'>PP</A>) (<A HREF='?_src_=vars;Vars=[UID()]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[src]'>SM</A>) ([admin_jump_link(src)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;Smite=[UID()]'>SMITE</A>):</b>"
|
||||
for(var/client/X in admins)
|
||||
if(check_rights(R_EVENT,0,X.mob))
|
||||
to_chat(X, adminbfmessage)
|
||||
else if(TOXIC_FARTS in mutations)
|
||||
message = "<b>[src]</b> unleashes a [pick("horrible","terrible","foul","disgusting","awful")] fart."
|
||||
else if(SUPER_FART in mutations)
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
var/msg = "<span class='info'>*---------*\nThis is "
|
||||
|
||||
if(skipjumpsuit && skipface) //big suits/masks/helmets make it hard to tell their gender
|
||||
if((skipjumpsuit && skipface)) //big suits/masks/helmets make it hard to tell their gender
|
||||
t_He = "They"
|
||||
t_his = "their"
|
||||
t_him = "them"
|
||||
@@ -51,6 +51,12 @@
|
||||
t_He = "She"
|
||||
t_his = "her"
|
||||
t_him = "her"
|
||||
if(PLURAL)
|
||||
t_He = "They"
|
||||
t_his = "their"
|
||||
t_him = "them"
|
||||
t_has = "have"
|
||||
t_is = "are"
|
||||
|
||||
msg += "<EM>[name]</EM>"
|
||||
|
||||
@@ -494,7 +500,7 @@
|
||||
msg += "<span class = 'deptradio'>Medical records:</span> <a href='?src=[UID()];medrecord=`'>\[View\]</a> <a href='?src=[UID()];medrecordadd=`'>\[Add comment\]</a>\n"
|
||||
|
||||
|
||||
if(print_flavor_text() && !skipface)
|
||||
if(print_flavor_text() && !skipface)
|
||||
msg += "[print_flavor_text()]\n"
|
||||
|
||||
msg += "*---------*</span>"
|
||||
|
||||
@@ -1479,6 +1479,7 @@
|
||||
|
||||
/mob/living/carbon/human/proc/set_species(var/new_species, var/default_colour, var/delay_icon_update = 0)
|
||||
var/datum/species/oldspecies = species
|
||||
var/datum/species/NS = all_species[new_species]
|
||||
if(!dna)
|
||||
if(!new_species)
|
||||
new_species = "Human"
|
||||
@@ -1498,6 +1499,8 @@
|
||||
if(species.default_language)
|
||||
remove_language(species.default_language)
|
||||
|
||||
if(gender == PLURAL && NS.has_gender)
|
||||
change_gender(pick(MALE,FEMALE))
|
||||
species.handle_pre_change(src)
|
||||
|
||||
species = all_species[new_species]
|
||||
@@ -1884,7 +1887,7 @@
|
||||
threatcount += 2
|
||||
|
||||
//Check for dresscode violations
|
||||
if(istype(head, /obj/item/clothing/head/wizard) || istype(head, /obj/item/clothing/head/helmet/space/rig/wizard))
|
||||
if(istype(head, /obj/item/clothing/head/wizard) || istype(head, /obj/item/clothing/head/helmet/space/hardsuit/wizard))
|
||||
threatcount += 2
|
||||
|
||||
|
||||
|
||||
@@ -110,6 +110,7 @@
|
||||
var/show_ssd = 1
|
||||
var/virus_immune
|
||||
var/can_revive_by_healing // Determines whether or not this species can be revived by simply healing them
|
||||
var/has_gender = TRUE
|
||||
|
||||
//Death vars.
|
||||
var/death_message = "seizes up and falls limp, their eyes dead and lifeless..."
|
||||
|
||||
@@ -899,6 +899,7 @@
|
||||
default_hair = "Blue IPC Screen"
|
||||
virus_immune = 1
|
||||
can_revive_by_healing = 1
|
||||
has_gender = FALSE
|
||||
reagent_tag = PROCESS_SYN
|
||||
male_scream_sound = 'sound/goonstation/voice/robot_scream.ogg'
|
||||
female_scream_sound = 'sound/goonstation/voice/robot_scream.ogg'
|
||||
@@ -911,7 +912,8 @@
|
||||
has_organ = list(
|
||||
"brain" = /obj/item/organ/internal/brain/mmi_holder/posibrain,
|
||||
"cell" = /obj/item/organ/internal/cell,
|
||||
"optics" = /obj/item/organ/internal/eyes/optical_sensor //Default darksight of 2.
|
||||
"optics" = /obj/item/organ/internal/eyes/optical_sensor, //Default darksight of 2.
|
||||
"charger" = /obj/item/organ/internal/cyberimp/chest/arm_mod/power_cord
|
||||
)
|
||||
|
||||
vision_organ = /obj/item/organ/internal/eyes/optical_sensor
|
||||
|
||||
@@ -847,7 +847,7 @@
|
||||
return tally
|
||||
|
||||
/mob/living/proc/can_use_guns(var/obj/item/weapon/gun/G)
|
||||
if(G.trigger_guard != TRIGGER_GUARD_ALLOW_ALL && !IsAdvancedToolUser())
|
||||
if(G.trigger_guard != TRIGGER_GUARD_ALLOW_ALL && !IsAdvancedToolUser() && !issmall(src))
|
||||
to_chat(src, "<span class='warning'>You don't have the dexterity to do this!</span>")
|
||||
return 0
|
||||
return 1
|
||||
|
||||
@@ -103,12 +103,12 @@
|
||||
/obj/effect/landmark/mobcorpse/syndicatecommando
|
||||
name = "Syndicate Commando"
|
||||
corpseuniform = /obj/item/clothing/under/syndicate
|
||||
corpsesuit = /obj/item/clothing/suit/space/rig/syndi
|
||||
corpsesuit = /obj/item/clothing/suit/space/hardsuit/syndi
|
||||
corpseshoes = /obj/item/clothing/shoes/combat
|
||||
corpsegloves = /obj/item/clothing/gloves/combat
|
||||
corpseradio = /obj/item/device/radio/headset
|
||||
corpsemask = /obj/item/clothing/mask/gas/syndicate
|
||||
corpsehelmet = /obj/item/clothing/head/helmet/space/rig/syndi
|
||||
corpsehelmet = /obj/item/clothing/head/helmet/space/hardsuit/syndi
|
||||
corpseback = /obj/item/weapon/tank/jetpack/oxygen
|
||||
corpsepocket1 = /obj/item/weapon/tank/emergency_oxygen
|
||||
corpseid = 1
|
||||
|
||||
@@ -174,7 +174,7 @@
|
||||
var/list/allowed_types = list(
|
||||
/obj/item/clothing/suit/armor/vest,
|
||||
/obj/item/clothing/suit/space/deathsquad,
|
||||
/obj/item/clothing/suit/space/rig/engineering,
|
||||
/obj/item/clothing/suit/space/hardsuit/engineering,
|
||||
/obj/item/device/radio,
|
||||
/obj/item/device/radio/off,
|
||||
/obj/item/clothing/suit/cardborg,
|
||||
@@ -356,7 +356,7 @@
|
||||
desc = "That's not red paint. That's real corgi blood."
|
||||
valid = 1
|
||||
|
||||
if(/obj/item/clothing/head/helmet/space/rig/engineering)
|
||||
if(/obj/item/clothing/head/helmet/space/hardsuit/engineering)
|
||||
name = "Space Explorer [real_name]"
|
||||
desc = "That's one small step for a corgi. One giant yap for corgikind."
|
||||
valid = 1
|
||||
|
||||
@@ -227,7 +227,7 @@
|
||||
|
||||
/obj/item/asteroid/goliath_hide/afterattack(atom/target, mob/user, proximity_flag)
|
||||
if(proximity_flag)
|
||||
if(istype(target, /obj/item/clothing/suit/space/rig/mining) || istype(target, /obj/item/clothing/head/helmet/space/rig/mining) || istype(target, /obj/item/clothing/suit/space/eva/plasmaman/miner) || istype(target, /obj/item/clothing/head/helmet/space/eva/plasmaman/miner))
|
||||
if(istype(target, /obj/item/clothing/suit/space/hardsuit/mining) || istype(target, /obj/item/clothing/head/helmet/space/hardsuit/mining) || istype(target, /obj/item/clothing/suit/space/eva/plasmaman/miner) || istype(target, /obj/item/clothing/head/helmet/space/eva/plasmaman/miner))
|
||||
var/obj/item/clothing/C = target
|
||||
var/current_armor = C.armor
|
||||
if(current_armor.["melee"] < 60)
|
||||
|
||||
@@ -171,7 +171,7 @@
|
||||
if(istype(W))
|
||||
if(istype(W, /obj/item/clothing))
|
||||
var/obj/item/clothing/C = W
|
||||
if(C.rig_restrict_helmet)
|
||||
if(C.hardsuit_restrict_helmet)
|
||||
to_chat(src, "\red You must fasten the helmet to a hardsuit first. (Target the head and use on a hardsuit)")// Stop eva helms equipping.
|
||||
|
||||
else
|
||||
|
||||
@@ -223,6 +223,7 @@
|
||||
|
||||
data["specimen"] = owner.species.name
|
||||
data["gender"] = owner.gender
|
||||
data["has_gender"] = owner.species.has_gender
|
||||
data["change_race"] = can_change(APPEARANCE_RACE)
|
||||
if(data["change_race"])
|
||||
var/species[0]
|
||||
|
||||
@@ -31,6 +31,9 @@
|
||||
var/offset_y[0] //usage by the photocopier
|
||||
var/rigged = 0
|
||||
var/spam_flag = 0
|
||||
var/contact_poison // Reagent ID to transfer on contact
|
||||
var/contact_poison_volume = 0
|
||||
var/contact_poison_poisoner = null
|
||||
|
||||
var/const/deffont = "Verdana"
|
||||
var/const/signfont = "Times New Roman"
|
||||
@@ -278,6 +281,8 @@
|
||||
info += t // Oh, he wants to edit to the end of the file, let him.
|
||||
updateinfolinks()
|
||||
|
||||
i.on_write(src,usr)
|
||||
|
||||
show_content(usr, forceshow = 1, infolinks = 1)
|
||||
|
||||
update_icon()
|
||||
@@ -653,3 +658,13 @@
|
||||
/obj/item/weapon/paper/evilfax/proc/evilpaper_selfdestruct()
|
||||
visible_message("<span class='danger'>[src] spontaneously catches fire, and burns up!</span>")
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/paper/pickup(user)
|
||||
if(contact_poison && ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
var/obj/item/clothing/gloves/G = H.gloves
|
||||
if(!istype(G) || G.transfer_prints)
|
||||
H.reagents.add_reagent(contact_poison, contact_poison_volume)
|
||||
contact_poison = null
|
||||
add_logs(user, src, "picked up [src], the paper poisoned by [contact_poison_poisoner]")
|
||||
..()
|
||||
@@ -182,3 +182,22 @@
|
||||
else
|
||||
icon_state = initial(icon_state) //looks like a normal pen when off.
|
||||
item_state = initial(item_state)
|
||||
|
||||
/obj/item/proc/on_write(obj/item/weapon/paper/P, mob/user)
|
||||
return
|
||||
|
||||
/obj/item/weapon/pen/poison
|
||||
var/uses_left = 3
|
||||
|
||||
/obj/item/weapon/pen/poison/on_write(obj/item/weapon/paper/P, mob/user)
|
||||
if(P.contact_poison_volume)
|
||||
to_chat(user, "<span class='warning'>[P] is already coated.</span>")
|
||||
else if(uses_left)
|
||||
uses_left--
|
||||
P.contact_poison = "amanitin"
|
||||
P.contact_poison_volume = 15
|
||||
P.contact_poison_poisoner = user.name
|
||||
add_logs(user, P, "used poison pen on")
|
||||
to_chat(user, "<span class='warning'>You apply the poison to [P].</span>")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>[src] clicks. It seems to be depleted.</span>")
|
||||
@@ -640,6 +640,9 @@
|
||||
(istype(W, /obj/item/device/multitool) || \
|
||||
istype(W, /obj/item/weapon/wirecutters) || istype(W, /obj/item/device/assembly/signaler)))
|
||||
return src.attack_hand(user)
|
||||
if(W.flags & NOBLUDGEON)
|
||||
return
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
user.do_attack_animation(src)
|
||||
user.visible_message("<span class='warning'>The [src.name] has been hit with the [W.name] by [user.name]!</span>", \
|
||||
"<span class='warning'>You hit the [src.name] with your [W.name]!</span>", \
|
||||
@@ -667,36 +670,6 @@
|
||||
if(!user)
|
||||
return
|
||||
src.add_fingerprint(user)
|
||||
//Synthetic human mob goes here.
|
||||
if(istype(user,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H.get_int_organ(/obj/item/organ/internal/cell) && H.a_intent == I_GRAB)
|
||||
if(emagged || stat & BROKEN)
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
|
||||
s.set_up(3, 1, src)
|
||||
s.start()
|
||||
to_chat(H, "<span class='warning'>The APC power currents surge erratically, damaging your chassis!</span>")
|
||||
H.adjustFireLoss(10,0)
|
||||
else if(src.cell && src.cell.charge > 0)
|
||||
if(H.nutrition < NUTRITION_LEVEL_WELL_FED)
|
||||
if(src.cell.charge >= 500)
|
||||
H.nutrition += 50
|
||||
src.cell.charge -= 500
|
||||
else
|
||||
H.nutrition += src.cell.charge/10
|
||||
src.cell.charge = 0
|
||||
|
||||
to_chat(user, "<span class='notice'>You slot your fingers into the APC interface and siphon off some of the stored charge for your own use.</span>")
|
||||
if(src.cell.charge < 0)
|
||||
src.cell.charge = 0
|
||||
if(H.nutrition > NUTRITION_LEVEL_WELL_FED + 50)
|
||||
H.nutrition = NUTRITION_LEVEL_WELL_FED + 50
|
||||
src.charging = 1
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You are already fully charged.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>There is no charge to draw from that APC.</span>")
|
||||
return
|
||||
|
||||
if(usr == user && opened && (!issilicon(user)))
|
||||
if(cell)
|
||||
|
||||
@@ -1,15 +1,62 @@
|
||||
// This represents a level we can carve up as we please, and hand out
|
||||
// chunks of to whatever requests it
|
||||
/datum/space_level/heap
|
||||
var/datum/space_chunk/top
|
||||
linkage = UNAFFECTED
|
||||
name = "Heap level #ERROR"
|
||||
var/datum/space_chunk/top
|
||||
linkage = UNAFFECTED
|
||||
|
||||
/datum/space_level/heap/New()
|
||||
..()
|
||||
top = new
|
||||
/datum/space_level/heap/New(z, name, transition_type, traits)
|
||||
..(z, "Heap level #[z]", UNAFFECTED, traits)
|
||||
top = new(1, 1, zpos, world.maxx, world.maxy)
|
||||
flags = traits
|
||||
|
||||
/datum/space_level/heap/proc/request(width, height)
|
||||
return 1 // All are welcome! At least until I add code for this
|
||||
return top.can_fit_space(width, height)
|
||||
|
||||
/datum/zlevel/heap/proc/allocate(width, height)
|
||||
return
|
||||
// Returns a space chunk datum for some nerd to work with - tells them what's safe to write into, and such
|
||||
/datum/space_level/heap/proc/allocate(width, height)
|
||||
if(!request(width, height))
|
||||
return null
|
||||
|
||||
var/datum/space_chunk/C = top.get_optimal_chunk(width, height)
|
||||
if(!C)
|
||||
return null
|
||||
C.children.Cut()
|
||||
|
||||
if(C.width == width && C.height == height && C.is_empty)
|
||||
C.set_occupied(TRUE)
|
||||
return C
|
||||
|
||||
// Split the chunk into 4 pieces
|
||||
var/datum/space_chunk/return_chunk = new(C.x, C.y, C.zpos, width, height)
|
||||
C.children += return_chunk
|
||||
C.children += new /datum/space_chunk(C.x+width, C.y, C.zpos, C.width-width, height)
|
||||
C.children += new /datum/space_chunk(C.x, C.y+height, C.zpos, width, C.height-height)
|
||||
C.children += new /datum/space_chunk(C.x+width, C.y+height, C.zpos, C.width-width, C.height-height)
|
||||
|
||||
for(var/datum/space_chunk/C2 in C.children)
|
||||
C2.parent = C
|
||||
return_chunk.set_occupied(TRUE)
|
||||
return return_chunk
|
||||
|
||||
/datum/space_level/heap/proc/free(datum/space_chunk/C)
|
||||
if(!istype(C))
|
||||
return
|
||||
if(C.zpos != zpos)
|
||||
return
|
||||
C.set_occupied(FALSE)
|
||||
for(var/turf/T in block(locate(C.x, C.y, C.zpos), locate(C.x+C.width-1, C.y+C.height-1, C.zpos)))
|
||||
for(var/atom/movable/M in T)
|
||||
if(istype(M, /mob/dead/observer))
|
||||
continue
|
||||
M.loc = null
|
||||
qdel(M, TRUE)
|
||||
T.ChangeTurf(/turf/space)
|
||||
var/datum/space_chunk/last_empty_parent = C
|
||||
while(last_empty_parent.parent && last_empty_parent.parent.is_empty)
|
||||
last_empty_parent = last_empty_parent.parent
|
||||
// Prevent a self-qdel from killing this proc
|
||||
src = null
|
||||
for(var/datum/space_chunk/child in last_empty_parent.children)
|
||||
qdel(child)
|
||||
last_empty_parent.children.Cut()
|
||||
|
||||
@@ -10,14 +10,81 @@
|
||||
var/width
|
||||
var/height
|
||||
var/zpos
|
||||
// Whether dedicated for use or not
|
||||
var/occupied = FALSE
|
||||
// Whether the chunk contains used children or not
|
||||
var/is_empty = TRUE
|
||||
var/list/children = list()
|
||||
var/datum/space_chunk/parent = null
|
||||
|
||||
/datum/space_chunk/New(w, h, z, new_x, new_y)
|
||||
/datum/space_chunk/New(new_x, new_y, z, w, h)
|
||||
x = new_x
|
||||
y = new_y
|
||||
zpos = z
|
||||
width = w
|
||||
height = h
|
||||
|
||||
/datum/space_chunk/Destroy()
|
||||
set_occupied(FALSE)
|
||||
if(parent)
|
||||
parent.children -= src
|
||||
for(var/datum/space_chunk/child in children)
|
||||
qdel(child)
|
||||
children.Cut()
|
||||
parent = null
|
||||
. = ..()
|
||||
|
||||
/datum/space_chunk/proc/can_fit_space(w, h)
|
||||
if(w > width || h > height)
|
||||
return FALSE
|
||||
if(occupied)
|
||||
return FALSE
|
||||
if(is_empty)
|
||||
return TRUE
|
||||
for(var/datum/space_chunk/C in children)
|
||||
if(C.can_fit_space(w, h))
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
// Recursively drops down the tree and finds the most efficient chunk to use
|
||||
/datum/space_chunk/proc/get_optimal_chunk(w, h)
|
||||
if(w > width || h > height)
|
||||
return null
|
||||
if(occupied)
|
||||
return null
|
||||
if(is_empty)
|
||||
return src
|
||||
var/datum/space_chunk/optimal_chunk
|
||||
var/optimal_chunk_optimalness = 99999
|
||||
for(var/datum/space_chunk/C in children)
|
||||
var/datum/space_chunk/C2 = C.get_optimal_chunk(w, h)
|
||||
if(!C2)
|
||||
continue
|
||||
var/optimalness = C2.width + C2.height-w-h
|
||||
if(optimalness < optimal_chunk_optimalness)
|
||||
optimal_chunk_optimalness = optimalness
|
||||
optimal_chunk = C2
|
||||
return optimal_chunk
|
||||
|
||||
/datum/space_chunk/proc/set_occupied(new_occupied)
|
||||
var/datum/space_chunk/C = parent
|
||||
if(new_occupied)
|
||||
occupied = TRUE
|
||||
while(C)
|
||||
C.is_empty = FALSE
|
||||
C = C.parent
|
||||
else
|
||||
occupied = FALSE
|
||||
while(C)
|
||||
var/is_children_empty = TRUE
|
||||
for(var/datum/space_chunk/C2 in C.children)
|
||||
if(!C2.is_empty || C2.occupied)
|
||||
is_children_empty = FALSE
|
||||
if(!is_children_empty)
|
||||
break
|
||||
C.is_empty = TRUE
|
||||
C = C.parent
|
||||
|
||||
/datum/space_chunk/proc/check_sanity()
|
||||
var/i_am_sane = 1
|
||||
i_am_sane |= (x > 0)
|
||||
|
||||
@@ -134,18 +134,36 @@ var/global/datum/zlev_manager/space_manager = new
|
||||
/datum/zlev_manager/proc/add_new_heap()
|
||||
world.maxz++
|
||||
var/our_z = world.maxz
|
||||
var/datum/space_level/yup = new /datum/space_level/heap(our_z)
|
||||
var/datum/space_level/yup = new /datum/space_level/heap(our_z, traits = list(BLOCK_TELEPORT, ADMIN_LEVEL))
|
||||
z_list["[our_z]"] = yup
|
||||
return yup
|
||||
|
||||
// This is what you can call to allocate a section of space
|
||||
// Later, I'll add an argument to let you define the flags on the region
|
||||
/datum/zlev_manager/proc/allocate_space(width, height)
|
||||
if(width > world.maxx || height > world.maxy)
|
||||
throw EXCEPTION("Too much space requested! \[[width],[height]\]")
|
||||
if(!heaps.len)
|
||||
heaps.len++
|
||||
heaps[heaps.len] = add_new_heap()
|
||||
var/datum/space_level/heap/our_heap
|
||||
var/weve_got_vacancy = 0
|
||||
for(our_heap in heaps)
|
||||
var/weve_got_vacancy = our_heap.request(width, height)
|
||||
weve_got_vacancy = our_heap.request(width, height)
|
||||
if(weve_got_vacancy)
|
||||
break // We're sticking with the present value of `our_heap` - it's got room
|
||||
// This loop will also run out if no vacancies are found
|
||||
|
||||
if(!weve_got_vacancy)
|
||||
heaps.len++
|
||||
our_heap = add_new_heap()
|
||||
heaps[heaps.len] = our_heap
|
||||
return our_heap.allocate(width, height)
|
||||
|
||||
/datum/zlev_manager/proc/free_space(datum/space_chunk/C)
|
||||
if(!istype(C))
|
||||
return
|
||||
var/datum/space_level/heap/heap = z_list["[C.zpos]"]
|
||||
if(!istype(heap))
|
||||
throw EXCEPTION("Attempted to free chunk at invalid z-level ([C.x],[C.y],[C.zpos]) [C.width]x[C.height]")
|
||||
heap.free(C)
|
||||
|
||||
@@ -8,17 +8,17 @@
|
||||
var/implant_overlay
|
||||
tough = 1 //not easyly broken by combat damage
|
||||
sterile = 1 //not very germy
|
||||
robotic = 2 // these are cybernetic after all
|
||||
|
||||
/obj/item/organ/internal/cyberimp/New(var/mob/M = null)
|
||||
if(iscarbon(M))
|
||||
src.insert(M)
|
||||
. = ..()
|
||||
if(implant_overlay)
|
||||
var/image/overlay = new /image(icon, implant_overlay)
|
||||
overlay.color = implant_color
|
||||
overlays |= overlay
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/organ/internal/cyberimp/emp_act()
|
||||
return // These shouldn't be hurt by EMPs in the standard way
|
||||
|
||||
//[[[[BRAIN]]]]
|
||||
|
||||
@@ -270,9 +270,15 @@
|
||||
var/lasthand = null
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/arm_mod/ui_action_click()
|
||||
toggle_item()
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/arm_mod/proc/toggle_item()
|
||||
if(overloaded)//ensure the implant isn't broken
|
||||
to_chat(owner, "<span class='warning'>The implant doesn't respond. It seems to be broken...</span>")
|
||||
return
|
||||
owner.changeNext_move(CLICK_CD_MELEE)
|
||||
if(owner.next_move < world.time)
|
||||
return // No spam
|
||||
if(out)//check if the owner has the item out already
|
||||
owner.unEquip(holder, 1)//if he does, take it away. then,
|
||||
holder.loc = null//stash it in nullspace
|
||||
@@ -297,6 +303,9 @@
|
||||
holder.loc = null
|
||||
out = 0
|
||||
owner.visible_message("<span class='notice'>[holder] forcibly retracts into [owner]'s arm.</span>")
|
||||
overload() // Make sure this doesn't happen again
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/arm_mod/proc/overload()
|
||||
owner.visible_message("<span class='danger'>A loud bang comes from [owner]...</span>")
|
||||
playsound(get_turf(owner), 'sound/effects/bang.ogg', 100, 1)
|
||||
to_chat(owner, "<span class='warning'>You feel an explosion erupt inside you as your chest implant breaks. Is it hot in here?</span>")
|
||||
@@ -312,7 +321,7 @@
|
||||
limb.droplimb(0, DROPLIMB_EDGE)
|
||||
owner.say("I HAVE BEEN DISARMED!!!")
|
||||
owner.adjustFireLoss(25)//severely injure him!
|
||||
overloaded = 1//then make sure this can't happen again by breaking the implant.
|
||||
overloaded = TRUE
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/arm_mod/tase//mounted, self-charging taser!
|
||||
name = "Arm-cannon taser implant"
|
||||
@@ -322,6 +331,7 @@
|
||||
actions_types = list(/datum/action/item_action/organ_action/toggle)
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/arm_mod/tase/New()//when the implant is created...
|
||||
..()
|
||||
holder = new /obj/item/weapon/gun/energy/gun/advtaser/mounted(src)//assign a brand new item to it. (in this case, a gun)
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/arm_mod/lase//mounted, self-charging laser!
|
||||
@@ -332,8 +342,88 @@
|
||||
actions_types = list(/datum/action/item_action/organ_action/toggle)
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/arm_mod/lase/New()
|
||||
..()
|
||||
holder = new /obj/item/weapon/gun/energy/laser/mounted(src)
|
||||
|
||||
// lets make IPCs even *more* vulnerable to EMPs!
|
||||
/obj/item/organ/internal/cyberimp/chest/arm_mod/power_cord
|
||||
name = "APC-compatible power adapter implant"
|
||||
desc = "An implant commonly installed inside IPCs in order to allow them to easily collect energy from their environment"
|
||||
origin_tech = "materials=3;biotech=2;powerstorage=3"
|
||||
slot = "shoulders2"
|
||||
actions_types = list(/datum/action/item_action/organ_action/toggle)
|
||||
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/arm_mod/power_cord/New()
|
||||
..()
|
||||
holder = new /obj/item/apc_powercord(src)
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/arm_mod/power_cord/overload()
|
||||
// To allow repair via nanopaste/screwdriver
|
||||
// also so IPCs don't also catch on fire and fall even more apart upon EMP
|
||||
damage = 1
|
||||
overloaded = TRUE
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/arm_mod/power_cord/surgeryize()
|
||||
if(overloaded && owner)
|
||||
to_chat(owner, "<span class='notice'>Your [src] feels functional again.</span>")
|
||||
overloaded = FALSE
|
||||
|
||||
|
||||
/obj/item/apc_powercord
|
||||
name = "power cable"
|
||||
desc = "Insert into a nearby APC to draw power from it."
|
||||
icon = 'icons/obj/power.dmi'
|
||||
icon_state = "wire1"
|
||||
flags = NODROP | NOBLUDGEON
|
||||
|
||||
/obj/item/apc_powercord/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
|
||||
if(!istype(target, /obj/machinery/power/apc) || !ishuman(user) || !proximity_flag)
|
||||
return ..()
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
var/obj/machinery/power/apc/A = target
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H.get_int_organ(/obj/item/organ/internal/cell))
|
||||
if(A.emagged || A.stat & BROKEN)
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
|
||||
s.set_up(3, 1, A)
|
||||
s.start()
|
||||
to_chat(H, "<span class='warning'>The APC power currents surge erratically, damaging your chassis!</span>")
|
||||
H.adjustFireLoss(10,0)
|
||||
else if(A.cell && A.cell.charge > 0)
|
||||
if(H.nutrition >= NUTRITION_LEVEL_WELL_FED)
|
||||
to_chat(user, "<span class='warning'>You are already fully charged!</span>")
|
||||
else
|
||||
addtimer(src, "powerdraw_loop", 0, TRUE, A, H)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>There is no charge to draw from that APC.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You lack a cell in which to store charge!</span>")
|
||||
|
||||
/obj/item/apc_powercord/proc/powerdraw_loop(obj/machinery/power/apc/A, mob/living/carbon/human/H)
|
||||
H.visible_message("<span class='notice'>[H] inserts a power connector into \the [A].</span>", "<span class='notice'>You begin to draw power from \the [A].</span>")
|
||||
while(do_after(H, 10, target = A))
|
||||
if(loc != H)
|
||||
to_chat(H, "<span class='warning'>You must keep your connector out while charging!</span>")
|
||||
break
|
||||
if(A.cell.charge == 0)
|
||||
to_chat(H, "<span class='warning'>\The [A] has no more charge.</span>")
|
||||
break
|
||||
A.charging = 1
|
||||
if(A.cell.charge >= 500)
|
||||
H.nutrition += 50
|
||||
A.cell.charge -= 500
|
||||
to_chat(H, "<span class='notice'>You siphon off some of the stored charge for your own use.</span>")
|
||||
else
|
||||
H.nutrition += A.cell.charge/10
|
||||
A.cell.charge = 0
|
||||
to_chat(H, "<span class='notice'>You siphon off the last of \the [A]'s charge.</span>")
|
||||
break
|
||||
if(H.nutrition > NUTRITION_LEVEL_WELL_FED)
|
||||
to_chat(H, "<span class='notice'>You are now fully charged.</span>")
|
||||
break
|
||||
H.visible_message("<span class='notice'>[H] unplugs from \the [A].</span>", "<span class='notice'>You unplug from \the [A].</span>")
|
||||
|
||||
//BOX O' IMPLANTS
|
||||
|
||||
/obj/item/weapon/storage/box/cyber_implants
|
||||
|
||||
@@ -11,9 +11,9 @@
|
||||
var/non_primary = 0
|
||||
|
||||
/obj/item/organ/internal/New(var/mob/living/carbon/holder)
|
||||
..()
|
||||
if(istype(holder))
|
||||
insert(holder)
|
||||
..()
|
||||
|
||||
/obj/item/organ/internal/Destroy()
|
||||
if(owner)
|
||||
@@ -412,7 +412,8 @@
|
||||
colourmatrix = null
|
||||
dark_view = 2
|
||||
..() //Make sure the organ's got the robotic status indicators before updating the client colour.
|
||||
owner.update_client_colour(0) //Since both mechassisted and mechanical eyes give dark_view of 2 and full colour vision atm, just having this here is fine as mechassist() will call it anyway.
|
||||
if(owner)
|
||||
owner.update_client_colour(0) //Since both mechassisted and mechanical eyes give dark_view of 2 and full colour vision atm, just having this here is fine as mechassist() will call it anyway.
|
||||
|
||||
/obj/item/organ/internal/mechassist()
|
||||
..() //Go back, call robotize(), adjust the robotic status indicators and the organ damage parameters.
|
||||
|
||||
@@ -398,11 +398,16 @@
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
|
||||
var/found_damaged_organ = FALSE
|
||||
for(var/obj/item/organ/internal/I in affected.internal_organs)
|
||||
if(I && I.damage > 0)
|
||||
if(I.robotic >= 2)
|
||||
user.visible_message("[user] starts mending the damage to [target]'s [I.name]'s mechanisms.", \
|
||||
"You start mending the damage to [target]'s [I.name]'s mechanisms." )
|
||||
if(I && I.damage > 0 && I.robotic >= 2)
|
||||
user.visible_message("[user] starts mending the damage to [target]'s [I.name]'s mechanisms.", \
|
||||
"You start mending the damage to [target]'s [I.name]'s mechanisms.")
|
||||
found_damaged_organ = TRUE
|
||||
|
||||
if(!found_damaged_organ)
|
||||
to_chat(user, "There are no damaged components in [affected].")
|
||||
return -1
|
||||
|
||||
target.custom_pain("The pain in your [affected.name] is living hell!",1)
|
||||
|
||||
@@ -425,6 +430,7 @@
|
||||
user.visible_message("<span class='notice'> [user] repairs [target]'s [I.name] with [tool].</span>", \
|
||||
"<span class='notice'> You repair [target]'s [I.name] with [tool].</span>" )
|
||||
I.damage = 0
|
||||
I.surgeryize()
|
||||
else if(current_type == "insert")
|
||||
var/obj/item/organ/internal/I = tool
|
||||
|
||||
|
||||
Reference in New Issue
Block a user