mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-24 17:11:40 +00:00
Merge branch 'master' of https://github.com/PolarisSS13/Polaris into 11/26/2017_ufo_poi
# Conflicts resolved: # maps/submaps/cave_submaps/cave_areas.dm
This commit is contained in:
@@ -67,6 +67,15 @@
|
||||
icon_state = "swat"
|
||||
siemens_coefficient = 0.7
|
||||
|
||||
/obj/item/clothing/mask/gas/explorer
|
||||
name = "explorer gas mask"
|
||||
desc = "A military-grade gas mask that can be connected to an air supply."
|
||||
icon_state = "explorer"
|
||||
item_state_slots = list(slot_r_hand_str = "gas", slot_l_hand_str = "gas")
|
||||
armor = list(melee = 10, bullet = 5, laser = 5,energy = 5, bomb = 0, bio = 50, rad = 0)
|
||||
body_parts_covered = HEAD|FACE|EYES
|
||||
siemens_coefficient = 0.9
|
||||
|
||||
/obj/item/clothing/mask/gas/clown_hat
|
||||
name = "clown wig and mask"
|
||||
desc = "A true prankster's facial attire. A clown is incomplete without their wig and mask."
|
||||
|
||||
@@ -96,6 +96,12 @@
|
||||
desc = "A pair of winter boots. These ones are lined with brown fur, and their trim is ambrosia green"
|
||||
icon_state = "winterboots_hydro"
|
||||
|
||||
/obj/item/clothing/shoes/boots/winter/explorer
|
||||
name = "explorer winter boots"
|
||||
desc = "Steel-toed winter boots for mining or exploration in hazardous environments. Very good at keeping toes warm and uncrushed."
|
||||
icon_state = "explorer"
|
||||
armor = list(melee = 30, bullet = 10, laser = 10, energy = 15, bomb = 20, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/shoes/boots/tactical
|
||||
name = "tactical boots"
|
||||
desc = "Tan boots with extra padding and armor."
|
||||
|
||||
@@ -770,6 +770,42 @@ obj/item/clothing/suit/storage/toggle/peacoat
|
||||
name = "mining winter hood"
|
||||
armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/suit/storage/hooded/explorer
|
||||
name = "explorer suit"
|
||||
desc = "An armoured suit for exploring harsh environments."
|
||||
icon_state = "explorer"
|
||||
item_state = "explorer"
|
||||
flags = THICKMATERIAL
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
|
||||
cold_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
hooded = TRUE
|
||||
hoodtype = /obj/item/clothing/head/explorer
|
||||
siemens_coefficient = 0.9
|
||||
armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 50, bio = 100, rad = 50) // Inferior to sec vests in bullet/laser but better for environmental protection.
|
||||
allowed = list(
|
||||
/obj/item/device/flashlight,
|
||||
/obj/item/weapon/gun,
|
||||
/obj/item/ammo_magazine,
|
||||
/obj/item/weapon/melee,
|
||||
/obj/item/weapon/material/knife,
|
||||
/obj/item/weapon/tank,
|
||||
/obj/item/device/radio,
|
||||
/obj/item/weapon/pickaxe
|
||||
)
|
||||
|
||||
/obj/item/clothing/head/explorer
|
||||
name = "explorer hood"
|
||||
desc = "An armoured hood for exploring harsh environments."
|
||||
icon_state = "explorer"
|
||||
body_parts_covered = HEAD
|
||||
cold_protection = HEAD
|
||||
flags = THICKMATERIAL
|
||||
flags_inv = HIDEEARS | BLOCKHAIR
|
||||
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
|
||||
siemens_coefficient = 0.9
|
||||
armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 50, bio = 100, rad = 50)
|
||||
|
||||
/obj/item/clothing/suit/varsity
|
||||
name = "black varsity jacket"
|
||||
desc = "A favorite of jocks everywhere from Sol to Nyx."
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
/obj/item/clothing/suit/storage/hooded/proc/RemoveHood()
|
||||
icon_state = "[initial(icon_state)]"
|
||||
suittoggled = 0
|
||||
hood.canremove = TRUE // This shouldn't matter anyways but just incase.
|
||||
if(ishuman(hood.loc))
|
||||
var/mob/living/carbon/H = hood.loc
|
||||
H.unEquip(hood, 1)
|
||||
@@ -53,6 +54,7 @@
|
||||
else
|
||||
H.equip_to_slot_if_possible(hood,slot_head,0,0,1)
|
||||
suittoggled = 1
|
||||
hood.canremove = FALSE
|
||||
icon_state = "[initial(icon_state)]_t"
|
||||
H.update_inv_wear_suit()
|
||||
else
|
||||
|
||||
@@ -812,3 +812,8 @@
|
||||
desc = "A fluffy robe to keep you from showing off to the world."
|
||||
icon_state = "bathrobe"
|
||||
worn_state = "bathrobe"
|
||||
|
||||
/obj/item/clothing/under/explorer
|
||||
desc = "A green uniform for operating in hazardous environments."
|
||||
name = "explorer's jumpsuit"
|
||||
icon_state = "explorer"
|
||||
@@ -197,3 +197,30 @@ var/list/wrapped_species_by_ref = list()
|
||||
E.sync_colour_to_human(src)
|
||||
|
||||
regenerate_icons()
|
||||
|
||||
/mob/living/carbon/human/proc/shapeshifter_select_hair_colors()
|
||||
|
||||
set name = "Select Hair Colors"
|
||||
set category = "Abilities"
|
||||
|
||||
if(stat || world.time < last_special)
|
||||
return
|
||||
|
||||
last_special = world.time + 50
|
||||
|
||||
var/new_hair = input("Please select a new hair color.", "Hair Colour") as color
|
||||
if(!new_hair)
|
||||
return
|
||||
shapeshifter_set_hair_color(new_hair)
|
||||
var/new_fhair = input("Please select a new facial hair color.", "Facial Hair Color") as color
|
||||
if(!new_fhair)
|
||||
return
|
||||
shapeshifter_set_facial_color(new_fhair)
|
||||
|
||||
/mob/living/carbon/human/proc/shapeshifter_set_hair_color(var/new_hair)
|
||||
|
||||
change_hair_color(hex2num(copytext(new_hair, 2, 4)), hex2num(copytext(new_hair, 4, 6)), hex2num(copytext(new_hair, 6, 8)))
|
||||
|
||||
/mob/living/carbon/human/proc/shapeshifter_set_facial_color(var/new_fhair)
|
||||
|
||||
change_facial_hair_color(hex2num(copytext(new_fhair, 2, 4)), hex2num(copytext(new_fhair, 4, 6)), hex2num(copytext(new_fhair, 6, 8)))
|
||||
@@ -81,12 +81,12 @@ var/datum/species/shapeshifter/promethean/prometheans
|
||||
/mob/living/carbon/human/proc/shapeshifter_select_shape,
|
||||
/mob/living/carbon/human/proc/shapeshifter_select_colour,
|
||||
/mob/living/carbon/human/proc/shapeshifter_select_hair,
|
||||
/mob/living/carbon/human/proc/shapeshifter_select_hair_colors,
|
||||
/mob/living/carbon/human/proc/shapeshifter_select_gender,
|
||||
/mob/living/carbon/human/proc/regenerate
|
||||
)
|
||||
|
||||
valid_transform_species = list("Human", "Vatborn", "Unathi", "Tajara", "Skrell", "Diona", "Teshari", "Monkey")
|
||||
monochromatic = 1
|
||||
|
||||
var/heal_rate = 0.5 // Temp. Regen per tick.
|
||||
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
iterations = 5
|
||||
descriptor = "moon caves"
|
||||
var/list/ore_turfs = list()
|
||||
var/make_cracked_turfs = TRUE
|
||||
|
||||
/datum/random_map/automata/cave_system/no_cracks
|
||||
make_cracked_turfs = FALSE
|
||||
|
||||
/datum/random_map/automata/cave_system/get_appropriate_path(var/value)
|
||||
return
|
||||
@@ -47,7 +51,7 @@
|
||||
if(map[current_cell] == FLOOR_CHAR)
|
||||
if(prob(90))
|
||||
T.make_floor()
|
||||
else
|
||||
else if(make_cracked_turfs)
|
||||
T.ChangeTurf(/turf/space/cracked_asteroid)
|
||||
else
|
||||
T.make_wall()
|
||||
|
||||
@@ -54,62 +54,72 @@
|
||||
if(!..(user, 2))
|
||||
return
|
||||
if(reagents && reagents.reagent_list.len)
|
||||
user << "<span class='notice'>It contains [reagents.total_volume] units of liquid.</span>"
|
||||
to_chat(user, "<span class='notice'>It contains [reagents.total_volume] units of liquid.</span>")
|
||||
else
|
||||
user << "<span class='notice'>It is empty.</span>"
|
||||
to_chat(user, "<span class='notice'>It is empty.</span>")
|
||||
if(!is_open_container())
|
||||
user << "<span class='notice'>Airtight lid seals it completely.</span>"
|
||||
to_chat(user, "<span class='notice'>Airtight lid seals it completely.</span>")
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/attack_self()
|
||||
..()
|
||||
if(is_open_container())
|
||||
usr << "<span class = 'notice'>You put the lid on \the [src].</span>"
|
||||
to_chat(usr, "<span class = 'notice'>You put the lid on \the [src].</span>")
|
||||
flags ^= OPENCONTAINER
|
||||
else
|
||||
usr << "<span class = 'notice'>You take the lid off \the [src].</span>"
|
||||
to_chat(usr, "<span class = 'notice'>You take the lid off \the [src].</span>")
|
||||
flags |= OPENCONTAINER
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/do_surgery(mob/living/carbon/M, mob/living/user)
|
||||
if(user.a_intent != I_HELP) //in case it is ever used as a surgery tool
|
||||
return ..()
|
||||
afterattack(M, user, 1)
|
||||
return 1
|
||||
/obj/item/weapon/reagent_containers/glass/attack(mob/M as mob, mob/user as mob, def_zone)
|
||||
if(force && !(flags & NOBLUDGEON) && user.a_intent == I_HURT)
|
||||
return ..()
|
||||
|
||||
if(standard_feed_mob(user, M))
|
||||
return
|
||||
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/standard_feed_mob(var/mob/user, var/mob/target)
|
||||
if(!is_open_container())
|
||||
to_chat(user, "<span class='notice'>You need to open \the [src] first.</span>")
|
||||
return 1
|
||||
if(user.a_intent == I_HURT)
|
||||
return 1
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/self_feed_message(var/mob/user)
|
||||
to_chat(user, "<span class='notice'>You swallow a gulp from \the [src].</span>")
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/afterattack(var/obj/target, var/mob/user, var/proximity)
|
||||
|
||||
if(!is_open_container() || !proximity) //Is the container open & are they next to whatever they're clicking?
|
||||
return //If not, do nothing.
|
||||
|
||||
return 1 //If not, do nothing.
|
||||
for(var/type in can_be_placed_into) //Is it something it can be placed into?
|
||||
if(istype(target, type))
|
||||
return
|
||||
|
||||
return 1
|
||||
if(standard_dispenser_refill(user, target)) //Are they clicking a water tank/some dispenser?
|
||||
return
|
||||
|
||||
return 1
|
||||
if(standard_pour_into(user, target)) //Pouring into another beaker?
|
||||
return
|
||||
|
||||
if(user.a_intent == I_HURT) //Harm intent?
|
||||
if(standard_splash_mob(user, target)) //If harm intent and can splash a mob, go ahead.
|
||||
return
|
||||
if(reagents && reagents.total_volume) //Otherwise? Splash the floor.
|
||||
user << "<span class='notice'>You splash the solution onto [target].</span>"
|
||||
if(user.a_intent == I_HURT)
|
||||
if(standard_splash_mob(user,target))
|
||||
return 1
|
||||
if(reagents && reagents.total_volume)
|
||||
to_chat(user, "<span class='notice'>You splash the solution onto [target].</span>") //They are on harm intent, aka wanting to spill it.
|
||||
reagents.splash(target, reagents.total_volume)
|
||||
return
|
||||
return 1
|
||||
..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/pen) || istype(W, /obj/item/device/flashlight/pen))
|
||||
var/tmp_label = sanitizeSafe(input(user, "Enter a label for [name]", "Label", label_text), MAX_NAME_LEN)
|
||||
if(length(tmp_label) > 50)
|
||||
user << "<span class='notice'>The label can be at most 50 characters long.</span>"
|
||||
to_chat(user, "<span class='notice'>The label can be at most 50 characters long.</span>")
|
||||
else if(length(tmp_label) > 10)
|
||||
user << "<span class='notice'>You set the label.</span>"
|
||||
to_chat(user, "<span class='notice'>You set the label.</span>")
|
||||
label_text = tmp_label
|
||||
update_name_label()
|
||||
else
|
||||
user << "<span class='notice'>You set the label to \"[tmp_label]\".</span>"
|
||||
to_chat(user, "<span class='notice'>You set the label to \"[tmp_label]\".</span>")
|
||||
label_text = tmp_label
|
||||
update_name_label()
|
||||
if(istype(W,/obj/item/weapon/storage/bag))
|
||||
@@ -255,10 +265,10 @@
|
||||
return
|
||||
else if(istype(D, /obj/item/weapon/mop))
|
||||
if(reagents.total_volume < 1)
|
||||
user << "<span class='warning'>\The [src] is empty!</span>"
|
||||
to_chat(user, "<span class='warning'>\The [src] is empty!</span>")
|
||||
else
|
||||
reagents.trans_to_obj(D, 5)
|
||||
user << "<span class='notice'>You wet \the [D] in \the [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You wet \the [D] in \the [src].</span>")
|
||||
playsound(loc, 'sound/effects/slosh.ogg', 25, 1)
|
||||
return
|
||||
else
|
||||
@@ -296,10 +306,10 @@ obj/item/weapon/reagent_containers/glass/bucket/wood
|
||||
return
|
||||
else if(istype(D, /obj/item/weapon/mop))
|
||||
if(reagents.total_volume < 1)
|
||||
user << "<span class='warning'>\The [src] is empty!</span>"
|
||||
to_chat(user, "<span class='warning'>\The [src] is empty!</span>")
|
||||
else
|
||||
reagents.trans_to_obj(D, 5)
|
||||
user << "<span class='notice'>You wet \the [D] in \the [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You wet \the [D] in \the [src].</span>")
|
||||
playsound(loc, 'sound/effects/slosh.ogg', 25, 1)
|
||||
return
|
||||
else
|
||||
|
||||
@@ -1,17 +1,3 @@
|
||||
/obj/item/device/gps
|
||||
name = "relay positioning device"
|
||||
desc = "Triangulates the approximate co-ordinates using a nearby satellite network."
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "locator"
|
||||
item_state = "locator"
|
||||
origin_tech = list(TECH_MATERIAL = 2, TECH_DATA = 2, TECH_BLUESPACE = 2)
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 500)
|
||||
w_class = ITEMSIZE_SMALL
|
||||
|
||||
/obj/item/device/gps/attack_self(var/mob/user as mob)
|
||||
var/turf/T = get_turf(src)
|
||||
user << "<span class='notice'>\icon[src] \The [src] flashes <i>[T.x]:[T.y]:[T.z]</i>.</span>"
|
||||
|
||||
/obj/item/device/measuring_tape
|
||||
name = "measuring tape"
|
||||
desc = "A coiled metallic tape used to check dimensions and lengths."
|
||||
|
||||
Reference in New Issue
Block a user