Polaris Sync

This commit is contained in:
killer653
2017-08-28 20:52:11 -04:00
116 changed files with 10231 additions and 10010 deletions

View File

@@ -162,7 +162,7 @@
if(istype(P, /obj/item/weapon/stock_parts/matter_bin))
bin_rating += P.rating
power_rating = initial(power_rating) * cap_rating / 2 //more powerful
max_power_rating = initial(max_power_rating) * cap_rating / 2 //more powerful
heatsink_temperature = initial(heatsink_temperature) / ((manip_rating + bin_rating) / 2) //more efficient
air_contents.volume = max(initial(internal_volume) - 200, 0) + 200 * bin_rating
set_power_level(power_setting)

View File

@@ -9,7 +9,7 @@ var/global/datum/shuttle_controller/shuttle_controller
/datum/shuttle_controller/proc/process()
//process ferry shuttles
for (var/datum/shuttle/ferry/shuttle in process_shuttles)
if (shuttle.process_state)
if (shuttle.process_state || shuttle.always_process)
shuttle.process()

View File

@@ -258,7 +258,7 @@
/datum/category_item/autolathe/arms/rifle_SVD
name = "10rnd rifle magazine (7.62mm)"
path =/obj/item/ammo_magazine/SVD/empty
path =/obj/item/ammo_magazine/m762svd/empty
category = "Arms and Ammunition"
hidden = 1

View File

@@ -152,7 +152,7 @@
/datum/supply_packs/eng/teg
contains = list(/obj/machinery/power/generator)
name = "Mark I Thermoelectric Generator"
cost = 50
cost = 40
containertype = /obj/structure/closet/crate/secure/large
containername = "Mk1 TEG crate"
access = access_engine
@@ -160,7 +160,7 @@
/datum/supply_packs/eng/circulator
contains = list(/obj/machinery/atmospherics/binary/circulator)
name = "Binary atmospheric circulator"
cost = 50
cost = 20
containertype = /obj/structure/closet/crate/secure/large
containername = "Atmospheric circulator crate"
access = access_engine

View File

@@ -68,6 +68,14 @@
containername = "Robolimb blueprints (Xion)"
access = access_robotics
/datum/supply_packs/robotics/robolimbs/grayson
name = "Grayson robolimb blueprints"
contains = list(/obj/item/weapon/disk/limb/grayson)
cost = 30
containertype = /obj/structure/closet/crate/secure/science
containername = "Robolimb blueprints (Grayson)"
access = access_robotics
/datum/supply_packs/robotics/robolimbs/hephaestus
name = "Hephaestus robolimb blueprints"
contains = list(/obj/item/weapon/disk/limb/hephaestus)

View File

@@ -161,4 +161,8 @@
/datum/category_item/underwear/undershirt/longstripe_blue
name = "Longsleeve Striped Shirt, Blue"
icon_state = "longstripe_blue"
icon_state = "longstripe_blue"
/datum/category_item/underwear/undershirt/tiedye
name = "Tiedye Shirt"
icon_state = "tiedye"

View File

@@ -113,5 +113,5 @@ datum/announcement/proc/Log(message as text, message_title as text)
rank = character.mind.role_alt_title
AnnounceArrivalSimple(character.real_name, rank, join_message)
/proc/AnnounceArrivalSimple(var/name, var/rank = "visitor", var/join_message = "has arrived on the station")
global_announcer.autosay("[name], [rank], [join_message].", ANNOUNCER_NAME)
/proc/AnnounceArrivalSimple(var/name, var/rank = "visitor", var/join_message = "will arrive to the station shortly by shuttle")
global_announcer.autosay("[name], [rank], [join_message].", "Arrivals Announcement Computer")

View File

@@ -80,7 +80,7 @@ var/datum/antagonist/raider/raiders
/obj/item/weapon/gun/projectile/automatic/c20r,
/obj/item/weapon/gun/projectile/automatic/wt550,
/obj/item/weapon/gun/projectile/automatic/sts35,
/obj/item/weapon/gun/projectile/automatic/carbine,
/obj/item/weapon/gun/projectile/automatic/bullpup,
/obj/item/weapon/gun/projectile/automatic/tommygun,
/obj/item/weapon/gun/projectile/silenced,
/obj/item/weapon/gun/projectile/shotgun/pump,

View File

@@ -37,7 +37,7 @@ var/datum/antagonist/renegade/renegades
/obj/item/weapon/gun/projectile/automatic/mini_uzi,
/obj/item/weapon/gun/projectile/automatic/c20r,
/obj/item/weapon/gun/projectile/automatic/sts35,
/obj/item/weapon/gun/projectile/automatic/carbine,
/obj/item/weapon/gun/projectile/automatic/bullpup,
/obj/item/weapon/gun/projectile/automatic/wt550,
/obj/item/weapon/gun/projectile/automatic/z8,
/obj/item/weapon/gun/projectile/automatic/tommygun,

View File

@@ -471,13 +471,18 @@ var/global/datum/controller/occupations/job_master
if(istype(H)) //give humans wheelchairs, if they need them.
var/obj/item/organ/external/l_foot = H.get_organ("l_foot")
var/obj/item/organ/external/r_foot = H.get_organ("r_foot")
if(!l_foot || !r_foot)
var/obj/item/weapon/storage/S = locate() in H.contents
var/obj/item/wheelchair/R = locate() in S.contents
if(!l_foot || !r_foot || R)
var/obj/structure/bed/chair/wheelchair/W = new /obj/structure/bed/chair/wheelchair(H.loc)
H.buckled = W
H.update_canmove()
W.set_dir(H.dir)
W.buckled_mob = H
W.add_fingerprint(H)
if(R)
W.color = R.color
qdel(R)
H << "<B>You are [job.total_positions == 1 ? "the" : "a"] [alt_title ? alt_title : rank].</B>"
@@ -628,12 +633,12 @@ var/global/datum/controller/occupations/job_master
if(spawnpos && istype(spawnpos) && spawnpos.turfs.len) // VOREStation Edit - Fix runtime if no landmarks exist for a spawntype
if(spawnpos.check_job_spawning(rank))
H.forceMove(pick(spawnpos.turfs))
H.forceMove(spawnpos.get_spawn_position())
. = spawnpos.msg
else
H << "Your chosen spawnpoint ([spawnpos.display_name]) is unavailable for your chosen job. Spawning you at the Arrivals shuttle instead."
H.forceMove(pick(latejoin))
. = "has arrived on the station"
. = "will arrive to the station shortly by shuttle"
else
H.forceMove(pick(latejoin))
. = "has arrived on the station"

View File

@@ -115,6 +115,13 @@
dat += "<A href='?src=\ref[src];action=create;item=tbelt;cost=300'>Utility belt</A> <FONT COLOR=blue>([round(300/build_eff)])</FONT><BR>"
dat += "<A href='?src=\ref[src];action=create;item=satchel;cost=400'>Leather Satchel</A> <FONT COLOR=blue>([round(400/build_eff)])</FONT><BR>"
dat += "<A href='?src=\ref[src];action=create;item=cashbag;cost=400'>Cash Bag</A> <FONT COLOR=blue>([round(400/build_eff)])</FONT><BR>"
dat += "<A href='?src=\ref[src];action=create;item=workboots;cost=400'>Workboots</A> <FONT COLOR=blue>([round(400/build_eff)])</FONT><BR>"
dat += "<A href='?src=\ref[src];action=create;item=leathershoes;cost=400'>Leather Shoes</A> <FONT COLOR=blue>([round(400/build_eff)])</FONT><BR>"
dat += "<A href='?src=\ref[src];action=create;item=leatherchaps;cost=400'>Leather Chaps</A> <FONT COLOR=blue>([round(400/build_eff)])</FONT><BR>"
dat += "<A href='?src=\ref[src];action=create;item=leathercoat;cost=500'>Leather Coat</A> <FONT COLOR=blue>([round(500/build_eff)])</FONT><BR>"
dat += "<A href='?src=\ref[src];action=create;item=leatherjacket;cost=500'>Leather Jacket</A> <FONT COLOR=blue>([round(500/build_eff)])</FONT><BR>"
dat += "<A href='?src=\ref[src];action=create;item=wintercoat;cost=500'>Winter Coat</A> <FONT COLOR=blue>([round(500/build_eff)])</FONT><BR>"
//dat += "Other<BR>"
//dat += "<A href='?src=\ref[src];action=create;item=monkey;cost=500'>Monkey</A> <FONT COLOR=blue>(500)</FONT><BR>"
else
@@ -214,6 +221,18 @@
new/obj/item/weapon/storage/bag/cash(loc)
if("monkey")
new/mob/living/carbon/human/monkey(loc)
if("workboots")
new/obj/item/clothing/shoes/boots/workboots(loc)
if("leathershoes")
new/obj/item/clothing/shoes/leather(loc)
if("leatherchaps")
new/obj/item/clothing/under/pants/chaps
if("leathercoat")
new/obj/item/clothing/suit/leathercoat(loc)
if("leatherjacket")
new/obj/item/clothing/suit/storage/toggle/brown_jacket(loc)
if("wintercoat")
new/obj/item/clothing/suit/storage/hooded/wintercoat(loc)
processing = 0
menustat = "complete"
update_icon()

View File

@@ -59,7 +59,7 @@
if(!istype(id_card))
return ..()
if(!scan && (access_change_ids in id_card.access) && user.unEquip(id_card))
if(!scan && (access_change_ids in id_card.access) && (user.unEquip(id_card) || (id_card.loc == user && istype(user,/mob/living/silicon/robot)))) //Grippers. Again. ~Mechoid
user.drop_item()
id_card.forceMove(src)
scan = id_card

View File

@@ -99,5 +99,14 @@
if(computer_deconstruction_screwdriver(user, I))
return
else
if(istype(I,/obj/item/weapon/gripper)) //Behold, Grippers and their horribleness. If ..() is called by any computers' attackby() now or in the future, this should let grippers work with them appropriately.
var/obj/item/weapon/gripper/B = I //B, for Borg.
if(!B.wrapped)
user << "\The [B] is not holding anything."
return
else
var/B_held = B.wrapped
user << "You use \the [B] to use \the [B_held] with \the [src]."
return
attack_hand(user)
return

View File

@@ -436,6 +436,10 @@
else
W.forceMove(src.loc)
for(var/obj/structure/B in items)
if(istype(B,/obj/structure/bed))
qdel(B)
//Update any existing objectives involving this mob.
for(var/datum/objective/O in all_objectives)
// We don't want revs to get objectives that aren't for heads of staff. Letting
@@ -537,6 +541,9 @@
for(var/obj/item/W in items)
W.forceMove(get_turf(src))
for(var/obj/structure/bed/S in src.contents)
S.forceMove(get_turf(src))
go_out()
add_fingerprint(usr)
@@ -579,6 +586,8 @@
if(ishuman(usr) && applies_stasis)
var/mob/living/carbon/human/H = occupant
H.Stasis(1000)
if(usr.buckled && istype(usr.buckled, /obj/structure/bed/chair/wheelchair))
usr.buckled.loc = usr.loc
icon_state = occupied_icon_state
@@ -676,6 +685,8 @@
if(ishuman(M) && applies_stasis)
var/mob/living/carbon/human/H = M
H.Stasis(1000)
if(M.buckled && istype(M.buckled, /obj/structure/bed/chair/wheelchair))
M.buckled.loc = M.loc
// Book keeping!
var/turf/location = get_turf(src)
@@ -683,4 +694,4 @@
message_admins("<span class='notice'>[key_name_admin(M)] has entered a stasis pod.</span>")
//Despawning occurs when process() is called with an occupant without a client.
add_fingerprint(M)
add_fingerprint(M)

View File

@@ -76,10 +76,21 @@
else if(istype(check, /obj/item/weapon/disk/nuclear))
user << "Central Command would kill you if you [cook_type] that."
return 0
else if(!istype(check) && !istype(check, /obj/item/weapon/holder) && !istype(check, /obj/item/organ))
user << "<span class='warning'>That's not edible.</span>"
return 0
else if(!istype(check) && !istype(check, /obj/item/weapon/holder) && !istype(check, /obj/item/organ)) //Gripper check has to go here, else it still just cuts it off. ~Mechoid
// Is it a borg using a gripper?
if(istype(check, /obj/item/weapon/gripper)) // Grippers. ~Mechoid.
var/obj/item/weapon/gripper/B = check //B, for Borg.
if(!B.wrapped)
user << "\The [B] is not holding anything."
return 0
else
var/B_held = B.wrapped
user << "You use \the [B] to put \the [B_held] into \the [src]."
return 0
else
user << "<span class='warning'>That's not edible.</span>"
return 0
if(istype(I, /obj/item/organ))
var/obj/item/organ/O = I
if(O.robotic)
@@ -91,8 +102,8 @@
for(var/mob/living/M in cooking_obj.contents)
M.apply_damage(rand(30,40), BURN, "chest")
// Not sure why a food item that passed the previous checks would fail to drop, but safety first.
if(!user.unEquip(I))
// Not sure why a food item that passed the previous checks would fail to drop, but safety first. (Hint: Borg grippers. That is why. ~Mechoid.)
if(!user.unEquip(I) && !istype(user,/mob/living/silicon/robot))
return
// We can actually start cooking now.
@@ -134,7 +145,7 @@
// Copy reagents over. trans_to_obj must be used, as trans_to fails for snacks due to is_open_container() failing.
if(cooking_obj.reagents && cooking_obj.reagents.total_volume)
cooking_obj.reagents.trans_to_obj(result, cooking_obj.reagents.total_volume)
// Set cooked data.
var/obj/item/weapon/reagent_containers/food/snacks/food_item = cooking_obj
if(istype(food_item) && islist(food_item.cooked))
@@ -183,7 +194,7 @@
/obj/machinery/cooker/attack_hand(var/mob/user)
if(cooking_obj)
if(cooking_obj && user.Adjacent(src)) //Fixes borgs being able to teleport food in these machines to themselves.
user << "<span class='notice'>You grab \the [cooking_obj] from \the [src].</span>"
user.put_in_hands(cooking_obj)
cooking = 0

View File

@@ -252,6 +252,16 @@
if(P.contents.len > 0)
user << "<span class='notice'>Some items are refused.</span>"
else if(istype(O, /obj/item/weapon/gripper)) // Grippers. ~Mechoid.
var/obj/item/weapon/gripper/B = O //B, for Borg.
if(!B.wrapped)
user << "\The [B] is not holding anything."
return
else
var/B_held = B.wrapped
user << "You use \the [B] to put \the [B_held] into \the [src]."
return
else
user << "<span class='notice'>\The [src] smartly refuses [O].</span>"
return 1

View File

@@ -21,9 +21,9 @@
newplayer_start += loc
delete_me = 1
return
if("JoinLate")
latejoin += loc
delete_me = 1
if("JoinLate") // Bit difference, since we need the spawn point to move.
latejoin += src
// delete_me = 1
return
if("JoinLateGateway")
latejoin_gateway += loc

View File

@@ -109,6 +109,7 @@
user << "You flick the switch on [src], but nothing happens."
return 0
on = !on
playsound(src.loc, 'sound/weapons/empty.ogg', 15, 1, -3)
update_icon()
user.update_action_buttons()
return 1

View File

@@ -583,6 +583,21 @@ CIGARETTE PACKETS ARE IN FANCY.DM
desc = "Made of gold and obsidian, this is truly not worth however much you spent on it."
icon_state = "cappiezippo"
/obj/item/weapon/flame/lighter/zippo/communist
name = "\improper communist Zippo lighter"
desc = "All you need to spark a revolution."
icon_state = "commiezippo"
/obj/item/weapon/flame/lighter/zippo/royal
name = "\improper royal Zippo lighter"
desc = "An incredibly fancy lighter, gilded and covered in the color of royalty."
icon_state = "royalzippo"
/obj/item/weapon/flame/lighter/zippo/gonzo
name = "\improper Gonzo Zippo lighter"
desc = "A lighter with the iconic Gonzo fist painted on it."
icon_state = "gonzozippo"
/obj/item/weapon/flame/lighter/zippo/rainbow
name = "\improper rainbow Zippo lighter"
icon_state = "rainbowzippo"

View File

@@ -30,6 +30,7 @@ var/list/tape_roll_applications = list()
name = "tape"
icon = 'icons/policetape.dmi'
anchored = 1
layer = 3.2
var/lifted = 0
var/crumpled = 0
var/tape_dir = 0
@@ -56,6 +57,7 @@ var/list/tape_roll_applications = list()
hazard_overlays["[EAST]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "E")
hazard_overlays["[SOUTH]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "S")
hazard_overlays["[WEST]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "W")
update_icon()
/obj/item/taperoll/police
name = "police tape"

View File

@@ -56,6 +56,7 @@
return
if(src.allowed(user))
src.locked = !src.locked
playsound(src.loc, 'sound/machines/click.ogg', 15, 1, -3)
for(var/mob/O in viewers(user, 3))
if((O.client && !( O.blinded )))
O << "<span class='notice'>The locker has been [locked ? null : "un"]locked by [user].</span>"

View File

@@ -193,3 +193,31 @@
pulling = null
usr.pulledby = null
..()
/obj/item/wheelchair
name = "wheelchair"
desc = "A folded wheelchair that can be carried around."
icon = 'icons/obj/furniture.dmi'
icon_state = "wheelchair_folded"
item_state = "wheelchair"
w_class = ITEMSIZE_HUGE // Can't be put in backpacks. Oh well.
/obj/item/wheelchair/attack_self(mob/user)
var/obj/structure/bed/chair/wheelchair/R = new /obj/structure/bed/chair/wheelchair(user.loc)
R.add_fingerprint(user)
R.name = src.name
R.color = src.color
qdel(src)
/obj/structure/bed/chair/wheelchair/MouseDrop(over_object, src_location, over_location)
..()
if((over_object == usr && (in_range(src, usr) || usr.contents.Find(src))))
if(!ishuman(usr)) return
if(buckled_mob) return 0
visible_message("[usr] collapses \the [src.name].")
var/obj/item/wheelchair/R = new/obj/item/wheelchair(get_turf(src))
R.name = src.name
R.color = src.color
spawn(0)
qdel(src)
return

View File

@@ -291,6 +291,8 @@
/obj/structure/window/proc/hit(var/damage, var/sound_effect = 1)
if(reinf) damage *= 0.5
if(damage < 5)
return
take_damage(damage)
return

View File

@@ -20,7 +20,10 @@
return result
//------------------------
/turf/space/transit/north // moving to the north
icon_state = "arrow-north"
pushdirection = SOUTH // south because the space tile is scrolling south
var/static/list/phase_shift_by_x
@@ -33,8 +36,28 @@
var/transit_state = (world.maxy - src.y + x_shift)%15 + 1
icon_state = "speedspace_ns_[transit_state]"
//------------------------
/turf/space/transit/south // moving to the south
icon_state = "arrow-south"
pushdirection = SOUTH // south because the space tile is scrolling south
var/static/list/phase_shift_by_x
/turf/space/transit/south/New()
..()
if(!phase_shift_by_x)
phase_shift_by_x = get_cross_shift_list(15)
var/x_shift = phase_shift_by_x[src.x % (phase_shift_by_x.len - 1) + 1]
var/transit_state = (world.maxy - src.y + x_shift)%15 + 1
var/icon/I = new(icon, "speedspace_ns_[transit_state]")
I.Flip(SOUTH)
icon = I
//------------------------
/turf/space/transit/east // moving to the east
icon_state = "arrow-east"
pushdirection = WEST
var/static/list/phase_shift_by_y
@@ -47,3 +70,23 @@
var/transit_state = (world.maxx - src.x + y_shift)%15 + 1
icon_state = "speedspace_ew_[transit_state]"
//------------------------
/turf/space/transit/west // moving to the west
icon_state = "arrow-west"
pushdirection = WEST
var/static/list/phase_shift_by_y
/turf/space/transit/west/New()
..()
if(!phase_shift_by_y)
phase_shift_by_y = get_cross_shift_list(15)
var/y_shift = phase_shift_by_y[src.y % (phase_shift_by_y.len - 1) + 1]
var/transit_state = (world.maxx - src.x + y_shift)%15 + 1
var/icon/I = new(icon, "speedspace_ew_[transit_state]")
I.Flip(WEST)
icon = I
//------------------------

View File

@@ -91,8 +91,8 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
//Options bar: mob, details ( admin = 2, dev = 3, mentor = 4, character name (0 = just ckey, 1 = ckey and character name), link? (0 no don't make it a link, 1 do so),
// highlight special roles (0 = everyone has same looking name, 1 = antags / special roles get a golden name)
var/mentor_msg = "<b><font color=red>Request for Help: </font><font color='blue'>[get_options_bar(mob, 4, 1, 1, 0)][ai_cl]:</b> [msg]</font>"
msg = "<b><font color=red>Request for Help:: </font><font color='blue'>[get_options_bar(mob, 2, 1, 1)][ai_cl]:</b> [msg]</font>"
var/mentor_msg = "<b><font color=red>Request for Help: </font></b><font color='blue'><b>[get_options_bar(mob, 4, 1, 1, 0)][ai_cl]:</b> [msg]</font>"
msg = "<b><font color=red>Request for Help: </font></b><font color='blue'><b>[get_options_bar(mob, 2, 1, 1)][ai_cl]</b> [msg]</font>"
var/admin_number_afk = 0

View File

@@ -90,4 +90,13 @@
/datum/gear/utility/pen
display_name = "Fountain Pen"
path = /obj/item/weapon/pen/fountain
path = /obj/item/weapon/pen/fountain
/datum/gear/utility/wheelchair/color
display_name = "wheelchair"
path = /obj/item/wheelchair
cost = 4
/datum/gear/utility/wheelchair/color/New()
..()
gear_tweaks = list(gear_tweak_free_color_choice)

View File

@@ -83,31 +83,47 @@
..()
gear_tweaks = list(gear_tweak_free_color_choice)
/datum/gear/uniform/teshari
display_name = "smock, grey (Teshari)"
path = /obj/item/clothing/under/seromi
/datum/gear/uniform/smock
display_name = "smock selection (Teshari)"
path = /obj/item/clothing/under/seromi/smock
whitelisted = "Teshari"
sort_category = "Xenowear"
/datum/gear/uniform/teshari/jumpsuit
display_name = "smock, yellow (Teshari)"
path = /obj/item/clothing/under/seromi/yellow
/datum/gear/uniform/smock/New()
..()
var/list/smocks = list()
for(var/smock in typesof(/obj/item/clothing/under/seromi/smock))
var/obj/item/clothing/under/seromi/smock/smock_type = smock
smocks[initial(smock_type.name)] = smock_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(smocks))
/datum/gear/uniform/teshari/jumpsuit/red
display_name = "smock, red (Teshari)"
path = /obj/item/clothing/under/seromi/red
/datum/gear/uniform/undercoat
display_name = "undercoat selection (Teshari)"
path = /obj/item/clothing/under/seromi/undercoat
whitelisted = "Teshari"
sort_category = "Xenowear"
/datum/gear/uniform/teshari/jumpsuit/white
display_name = "smock, white (Teshari)"
path = /obj/item/clothing/under/seromi/white
/datum/gear/uniform/undercoat/New()
..()
var/list/undercoats = list()
for(var/undercoat in typesof(/obj/item/clothing/under/seromi/undercoat))
var/obj/item/clothing/under/seromi/undercoat/undercoat_type = undercoat
undercoats[initial(undercoat_type.name)] = undercoat_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(undercoats))
/datum/gear/uniform/teshari/jumpsuit/medical
display_name = "smock, Medical (Teshari)"
path = /obj/item/clothing/under/seromi/medical
/datum/gear/suit/cloak
display_name = "cloak selection (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/cloak
whitelisted = "Teshari"
sort_category = "Xenowear"
/datum/gear/uniform/teshari/jumpsuit/rainbow
display_name = "smock, rainbow (Teshari)"
path = /obj/item/clothing/under/seromi/rainbow
/datum/gear/suit/cloak/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(/obj/item/clothing/suit/storage/seromi/cloak))
var/obj/item/clothing/suit/storage/seromi/cloak/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/mask/ipc_monitor
display_name = "display monitor (Full Body Prosthetic)"

View File

@@ -22,9 +22,12 @@ var/list/spawntypes = list()
return 1
/datum/spawnpoint/proc/get_spawn_position()
return get_turf(pick(turfs))
/datum/spawnpoint/arrivals
display_name = "Arrivals Shuttle"
msg = "has arrived on the station"
msg = "will arrive to the station shortly by shuttle"
/datum/spawnpoint/arrivals/New()
..()

View File

@@ -51,7 +51,7 @@ BLIND // can't see anything
user.update_action_buttons()
/obj/item/clothing/glasses/meson
name = "Optical Meson Scanner"
name = "optical meson scanner"
desc = "Used for seeing walls, floors, and stuff through anything."
icon_state = "meson"
item_state_slots = list(slot_r_hand_str = "meson", slot_l_hand_str = "meson")
@@ -70,7 +70,7 @@ BLIND // can't see anything
prescription = 1
/obj/item/clothing/glasses/meson/aviator
name = "Engineering Aviators"
name = "engineering aviators"
icon_state = "aviator_eng"
off_state = "aviator"
item_state_slots = list(slot_r_hand_str = "sunglasses", slot_l_hand_str = "sunglasses")
@@ -78,7 +78,7 @@ BLIND // can't see anything
activation_sound = 'sound/effects/pop.ogg'
/obj/item/clothing/glasses/meson/aviator/prescription
name = "Prescription Engineering Aviators"
name = "prescription engineering aviators"
desc = "Engineering Aviators with prescription lenses."
prescription = 1
@@ -96,7 +96,7 @@ BLIND // can't see anything
overlay = global_hud.science
/obj/item/clothing/glasses/goggles
name = "Goggles"
name = "goggles"
desc = "Just some plain old goggles."
icon_state = "plaingoggles"
item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses")
@@ -104,7 +104,7 @@ BLIND // can't see anything
body_parts_covered = EYES
/obj/item/clothing/glasses/night
name = "Night Vision Goggles"
name = "night vision goggles"
desc = "You can totally see in the dark now!"
icon_state = "night"
item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses")
@@ -154,7 +154,7 @@ BLIND // can't see anything
body_parts_covered = 0
/obj/item/clothing/glasses/material
name = "Optical Material Scanner"
name = "optical material scanner"
desc = "Very confusing glasses."
icon_state = "material"
item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses")
@@ -164,11 +164,11 @@ BLIND // can't see anything
vision_flags = SEE_OBJS
/obj/item/clothing/glasses/material/prescription
name = "Prescription Optical Material Scanner"
name = "prescription optical material scanner"
prescription = 1
/obj/item/clothing/glasses/regular
name = "Prescription Glasses"
name = "prescription glasses"
desc = "Made by Nerd. Co."
icon_state = "glasses"
item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses")
@@ -176,12 +176,12 @@ BLIND // can't see anything
body_parts_covered = 0
/obj/item/clothing/glasses/regular/scanners
name = "Scanning Goggles"
name = "scanning goggles"
desc = "A very oddly shaped pair of goggles with bits of wire poking out the sides. A soft humming sound emanates from it."
icon_state = "uzenwa_sissra_1"
/obj/item/clothing/glasses/regular/hipster
name = "Prescription Glasses"
name = "prescription glasses"
desc = "Made by Uncool. Co."
icon_state = "hipster_glasses"
@@ -193,15 +193,15 @@ BLIND // can't see anything
body_parts_covered = 0
/obj/item/clothing/glasses/gglasses
name = "Green Glasses"
name = "green glasses"
desc = "Forest green glasses, like the kind you'd wear when hatching a nasty scheme."
icon_state = "gglasses"
item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses")
body_parts_covered = 0
/obj/item/clothing/glasses/sunglasses
desc = "Strangely ancient technology used to help provide rudimentary eye cover. Enhanced shielding blocks many flashes."
name = "sunglasses"
desc = "Strangely ancient technology used to help provide rudimentary eye cover. Enhanced shielding blocks many flashes."
icon_state = "sun"
item_state_slots = list(slot_r_hand_str = "sunglasses", slot_l_hand_str = "sunglasses")
darkness_view = -1
@@ -280,7 +280,7 @@ BLIND // can't see anything
icon_state = "aviator"
/obj/item/clothing/glasses/sunglasses/sechud
name = "HUDSunglasses"
name = "\improper HUD sunglasses"
desc = "Sunglasses with a HUD."
icon_state = "sunSecHud"
var/obj/item/clothing/glasses/hud/security/hud = null
@@ -296,7 +296,7 @@ BLIND // can't see anything
icon_state = "swatgoggles"
/obj/item/clothing/glasses/sunglasses/sechud/aviator
name = "Security HUD aviators"
name = "security HUD aviators"
desc = "Modified aviator glasses that can be switch between HUD and flash protection modes."
icon_state = "aviator_sec"
off_state = "aviator"
@@ -338,12 +338,12 @@ BLIND // can't see anything
icon_state = off_state
/obj/item/clothing/glasses/sunglasses/sechud/aviator/prescription
name = "Prescription Security HUD aviators"
name = "prescription security HUD aviators"
desc = "Modified aviator glasses that can be switch between HUD and flash protection modes. Comes with bonus prescription lenses."
prescription = 6
/obj/item/clothing/glasses/sunglasses/medhud
name = "HUDSunglasses"
name = "\improper HUD sunglasses"
desc = "Sunglasses with a HUD."
icon_state = "sunMedHud"
var/obj/item/clothing/glasses/hud/health/hud = null
@@ -354,7 +354,7 @@ BLIND // can't see anything
return
/obj/item/clothing/glasses/sunglasses/medhud/aviator
name = "Medical HUD aviators"
name = "medical HUD aviators"
desc = "Modified aviator glasses with a toggled health HUD."
icon_state = "aviator_med"
off_state = "aviator"
@@ -396,12 +396,12 @@ BLIND // can't see anything
icon_state = off_state
/obj/item/clothing/glasses/sunglasses/medhud/aviator/prescription
name = "Prescription Medical HUD aviators"
name = "prescription medical HUD aviators"
desc = "Modified aviator glasses with a toggled health HUD. Comes with bonus prescription lenses."
prescription = 6
/obj/item/clothing/glasses/thermal
name = "Optical Thermal Scanner"
name = "optical thermal scanner"
desc = "Thermals in the shape of glasses."
icon_state = "thermal"
item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses")
@@ -431,7 +431,7 @@ BLIND // can't see anything
overlay = global_hud.thermal
/obj/item/clothing/glasses/thermal/syndi //These are now a traitor item, concealed as mesons. -Pete
name = "Optical Meson Scanner"
name = "optical meson scanner"
desc = "Used for seeing walls, floors, and stuff through anything."
icon_state = "meson"
item_state_slots = list(slot_r_hand_str = "meson", slot_l_hand_str = "meson")
@@ -443,7 +443,7 @@ BLIND // can't see anything
action_button_name = null
/obj/item/clothing/glasses/thermal/plain/monocle
name = "Thermoncle"
name = "thermonocle"
desc = "A monocle thermal."
icon_state = "thermoncle"
item_state_slots = list(slot_r_hand_str = "sunglasses", slot_l_hand_str = "sunglasses")
@@ -454,7 +454,7 @@ BLIND // can't see anything
body_parts_covered = 0
/obj/item/clothing/glasses/thermal/plain/eyepatch
name = "Optical Thermal Eyepatch"
name = "optical thermal eyepatch"
desc = "An eyepatch with built-in thermal optics"
icon_state = "eyepatch"
item_state_slots = list(slot_r_hand_str = "blindfold", slot_l_hand_str = "blindfold")
@@ -463,7 +463,7 @@ BLIND // can't see anything
action_button_name = "Toggle Eyepatch"
/obj/item/clothing/glasses/thermal/plain/jensen
name = "Optical Thermal Implants"
name = "optical thermal implants"
desc = "A set of implantable lenses designed to augment your vision"
icon_state = "thermalimplants"
item_state_slots = list(slot_r_hand_str = "sunglasses", slot_l_hand_str = "sunglasses")

View File

@@ -62,10 +62,6 @@
var/list/supporting_limbs //If not-null, automatically splints breaks. Checked when removing the suit.
/obj/item/clothing/suit/space/New()
..()
desc += " \"[using_map.station_short]\" is written in large block letters on the back."
/obj/item/clothing/suit/space/equipped(mob/M)
check_limb_support(M)
..()

View File

@@ -0,0 +1,134 @@
/obj/item/clothing/suit/storage/seromi/cloak
name = "black and orange cloak "
desc = "It drapes over a Teshari's shoulders and closes at the neck with pockets convienently placed inside."
icon = 'icons/mob/species/seromi/teshari_cloak.dmi'
icon_override = 'icons/mob/species/seromi/teshari_cloak.dmi'
icon_state = "tesh_cloak_bo"
item_state = "tesh_cloak_bo"
species_restricted = list("Teshari")
body_parts_covered = UPPER_TORSO|ARMS
/obj/item/clothing/suit/storage/seromi/cloak/black_orange
name = "black and orange cloak"
icon_state = "tesh_cloak_bo"
item_state = "tesh_cloak_bo"
/obj/item/clothing/suit/storage/seromi/cloak/black_grey
name = "black and grey cloak"
icon_state = "tesh_cloak_bg"
item_state = "tesh_cloak_bg"
/obj/item/clothing/suit/storage/seromi/cloak/black_midgrey
name = "black and medium grey cloak"
icon_state = "tesh_cloak_bmg"
item_state = "tesh_cloak_bmg"
/obj/item/clothing/suit/storage/seromi/cloak/black_lightgrey
name = "black and light grey cloak"
icon_state = "tesh_cloak_blg"
item_state = "tesh_cloak_blg"
/obj/item/clothing/suit/storage/seromi/cloak/black_white
name = "black and white cloak"
icon_state = "tesh_cloak_bw"
item_state = "tesh_cloak_bw"
/obj/item/clothing/suit/storage/seromi/cloak/black_red
name = "black and red cloak"
icon_state = "tesh_cloak_br"
item_state = "tesh_cloak_br"
/obj/item/clothing/suit/storage/seromi/cloak/black
name = "black cloak"
icon_state = "tesh_cloak_bn"
item_state = "tesh_cloak_bn"
/obj/item/clothing/suit/storage/seromi/cloak/black_yellow
name = "black and yellow cloak"
icon_state = "tesh_cloak_by"
item_state = "tesh_cloak_by"
/obj/item/clothing/suit/storage/seromi/cloak/black_green
name = "black and Green cloak"
icon_state = "tesh_cloak_bgr"
item_state = "tesh_cloak_bgr"
/obj/item/clothing/suit/storage/seromi/cloak/black_blue
name = "black and blue cloak"
icon_state = "tesh_cloak_bbl"
item_state = "tesh_cloak_bbl"
/obj/item/clothing/suit/storage/seromi/cloak/black_purple
name = "black and purple cloak"
icon_state = "tesh_cloak_bp"
item_state = "tesh_cloak_bp"
/obj/item/clothing/suit/storage/seromi/cloak/black_pink
name = "black and pink cloak"
icon_state = "tesh_cloak_bpi"
item_state = "tesh_cloak_bpi"
/obj/item/clothing/suit/storage/seromi/cloak/black_brown
name = "black and brown cloak"
icon_state = "tesh_cloak_bbr"
item_state = "tesh_cloak_bbr"
/obj/item/clothing/suit/storage/seromi/cloak/orange_grey
name = "orange and grey cloak"
icon_state = "tesh_cloak_og"
item_state = "tesh_cloak_og"
/obj/item/clothing/suit/storage/seromi/cloak/rainbow
name = "rainbow cloak"
icon_state = "tesh_cloak_rainbow"
item_state = "tesh_cloak_rainbow"
/obj/item/clothing/suit/storage/seromi/cloak/lightgrey_grey
name = "light grey and grey cloak"
icon_state = "tesh_cloak_lgg"
item_state = "tesh_cloak_lgg"
/obj/item/clothing/suit/storage/seromi/cloak/white_grey
name = "white and grey cloak"
icon_state = "tesh_cloak_wg"
item_state = "tesh_cloak_wg"
/obj/item/clothing/suit/storage/seromi/cloak/red_grey
name = "red and grey cloak"
icon_state = "tesh_cloak_rg"
item_state = "tesh_cloak_rg"
/obj/item/clothing/suit/storage/seromi/cloak/orange
name = "orange cloak"
icon_state = "tesh_cloak_on"
item_state = "tesh_cloak_on"
/obj/item/clothing/suit/storage/seromi/cloak/yellow_grey
name = "yellow and grey cloak"
icon_state = "tesh_cloak_yg"
item_state = "tesh_cloak_yg"
/obj/item/clothing/suit/storage/seromi/cloak/green_grey
name = "green and grey cloak"
icon_state = "tesh_cloak_gg"
item_state = "tesh_cloak_gg"
/obj/item/clothing/suit/storage/seromi/cloak/blue_grey
name = "blue and grey cloak"
icon_state = "tesh_cloak_blg"
item_state = "tesh_cloak_blg"
/obj/item/clothing/suit/storage/seromi/cloak/purple_grey
name = "purple and grey cloak"
icon_state = "tesh_cloak_pg"
item_state = "tesh_cloak_pg"
/obj/item/clothing/suit/storage/seromi/cloak/pink_grey
name = "black and orange cloak"
icon_state = "tesh_cloak_pig"
item_state = "tesh_cloak_pig"
/obj/item/clothing/suit/storage/seromi/cloak/brown_grey
name = "purple and grey cloak"
icon_state = "tesh_cloak_brg"
item_state = "tesh_cloak_brg"

View File

@@ -1,27 +1,167 @@
/obj/item/clothing/under/seromi
name = "small grey smock"
desc = "It looks fitted to nonhuman proportions."
icon = 'icons/obj/clothing/species/seromi/uniform.dmi'
icon_state = "seromi_grey"
species_restricted = list("Teshari")
/obj/item/clothing/under/seromi/smock
name = "small grey smock"
desc = "It looks fitted to nonhuman proportions."
icon_state = "seromi_grey"
body_parts_covered = 0 // It's a thin piece of cloth with a neck hole.
/obj/item/clothing/under/seromi/white
/obj/item/clothing/under/seromi/smock/white
name = "small white smock"
icon_state = "seromi_white"
/obj/item/clothing/under/seromi/red
/obj/item/clothing/under/seromi/smock/red
name = "small Security smock"
icon_state = "seromi_red"
/obj/item/clothing/under/seromi/yellow
/obj/item/clothing/under/seromi/smock/yellow
name = "small Engineering smock"
icon_state = "seromi_yellow"
/obj/item/clothing/under/seromi/medical
/obj/item/clothing/under/seromi/smock/medical
name = "small Medical uniform"
icon_state = "seromi_medical"
/obj/item/clothing/under/seromi/rainbow
/obj/item/clothing/under/seromi/smock/science
name = "small Research uniform"
icon_state = "teshari_science"
/obj/item/clothing/under/seromi/smock/rainbow
name = "small rainbow smock"
icon_state = "seromi_rainbow"
icon_state = "seromi_rainbow"
/obj/item/clothing/under/seromi/undercoat
desc = "A Teshari traditional garb, with a modern twist! Made of micro and nanofibres to make it light and billowy, perfect for going fast and stylishly!"
icon = 'icons/mob/species/seromi/teshari_uniform.dmi'
icon_override = 'icons/mob/species/seromi/teshari_uniform.dmi'
icon_state = "tesh_uniform_bo"
item_state = "tesh_uniform_bo"
body_parts_covered = UPPER_TORSO|LOWER_TORSO
/obj/item/clothing/under/seromi/undercoat/black_orange
name = "black and orange undercoat"
icon_state = "tesh_uniform_bo"
item_state = "tesh_uniform_bo"
/obj/item/clothing/under/seromi/undercoat/black_grey
name = "black and grey undercoat"
icon_state = "tesh_uniform_bg"
item_state = "tesh_uniform_bg"
/obj/item/clothing/under/seromi/undercoat/black_midgrey
name = "black and medium grey undercoat"
icon_state = "tesh_uniform_bmg"
item_state = "tesh_uniform_bmg"
/obj/item/clothing/under/seromi/undercoat/black_lightgrey
name = "black and light grey undercoat"
icon_state = "tesh_uniform_blg"
item_state = "tesh_uniform_blg"
/obj/item/clothing/under/seromi/undercoat/black_white
name = "black and white undercoat"
icon_state = "tesh_uniform_bw"
item_state = "tesh_uniform_bw"
/obj/item/clothing/under/seromi/undercoat/black_red
name = "black and red undercoat"
icon_state = "tesh_uniform_br"
item_state = "tesh_uniform_br"
/obj/item/clothing/under/seromi/undercoat/black
name = "black undercoat"
icon_state = "tesh_uniform_bn"
item_state = "tesh_uniform_bn"
/obj/item/clothing/under/seromi/undercoat/black_yellow
name = "black and yellow undercoat"
icon_state = "tesh_uniform_by"
item_state = "tesh_uniform_by"
/obj/item/clothing/under/seromi/undercoat/black_green
name = "black and Green undercoat"
icon_state = "tesh_uniform_bgr"
item_state = "tesh_uniform_bgr"
/obj/item/clothing/under/seromi/undercoat/black_blue
name = "black and blue undercoat"
icon_state = "tesh_uniform_bbl"
item_state = "tesh_uniform_bbl"
/obj/item/clothing/under/seromi/undercoat/black_purple
name = "black and purple undercoat"
icon_state = "tesh_uniform_bp"
item_state = "tesh_uniform_bp"
/obj/item/clothing/under/seromi/undercoat/black_pink
name = "black and pink undercoat"
icon_state = "tesh_uniform_bpi"
item_state = "tesh_uniform_bpi"
/obj/item/clothing/under/seromi/undercoat/black_brown
name = "black and brown undercoat"
icon_state = "tesh_uniform_bbr"
item_state = "tesh_uniform_bbr"
/obj/item/clothing/under/seromi/undercoat/orange_grey
name = "orange and grey undercoat"
icon_state = "tesh_uniform_og"
item_state = "tesh_uniform_og"
/obj/item/clothing/under/seromi/undercoat/rainbow
name = "rainbow undercoat"
icon_state = "tesh_uniform_rainbow"
item_state = "tesh_uniform_rainbow"
/obj/item/clothing/under/seromi/undercoat/lightgrey_grey
name = "light grey and grey undercoat"
icon_state = "tesh_uniform_lgg"
item_state = "tesh_uniform_lgg"
/obj/item/clothing/under/seromi/undercoat/white_grey
name = "white and grey undercoat"
icon_state = "tesh_uniform_wg"
item_state = "tesh_uniform_wg"
/obj/item/clothing/under/seromi/undercoat/red_grey
name = "red and grey undercoat"
icon_state = "tesh_uniform_rg"
item_state = "tesh_uniform_rg"
/obj/item/clothing/under/seromi/undercoat/orange
name = "orange undercoat"
icon_state = "tesh_uniform_on"
item_state = "tesh_uniform_on"
/obj/item/clothing/under/seromi/undercoat/yellow_grey
name = "yellow and grey undercoat"
icon_state = "tesh_uniform_yg"
item_state = "tesh_uniform_yg"
/obj/item/clothing/under/seromi/undercoat/green_grey
name = "green and grey undercoat"
icon_state = "tesh_uniform_gg"
item_state = "tesh_uniform_gg"
/obj/item/clothing/under/seromi/undercoat/blue_grey
name = "blue and grey undercoat"
icon_state = "tesh_uniform_blg"
item_state = "tesh_uniform_blg"
/obj/item/clothing/under/seromi/undercoat/purple_grey
name = "purple and grey undercoat"
icon_state = "tesh_uniform_pg"
item_state = "tesh_uniform_pg"
/obj/item/clothing/under/seromi/undercoat/pink_grey
name = "black and orange undercoat"
icon_state = "tesh_uniform_pig"
item_state = "tesh_uniform_pig"
/obj/item/clothing/under/seromi/undercoat/brown_grey
name = "purple and grey undercoat"
icon_state = "tesh_uniform_brg"
item_state = "tesh_uniform_brg"

View File

@@ -50,10 +50,10 @@
/var/list/economic_species_modifier = list(
/datum/species/human = 10,
/datum/species/skrell = 12,
/datum/species/teshari = 9, // Skrell sponsored,
/datum/species/tajaran = 7,
/datum/species/unathi = 7,
/datum/species/diona = 7,
/datum/species/tajaran = 7,
/datum/species/teshari = 6,
/datum/species/diona = 4,
/datum/species/shapeshifter/promethean = 3
)

View File

@@ -6,7 +6,6 @@
var/new_data = input("Please select a color.","[src] color writing") as null|color
if(holder.check_interactivity(user) )
to_chat(user, "<span class='notice'>You input a <font color='[new_data]'>new color</font> into the pin.</span>")
world << "new_data equals [new_data]."
write_data_to_pin(new_data)
/datum/integrated_io/color/write_data_to_pin(var/new_data)
@@ -15,24 +14,18 @@
if(istext(new_data))
new_data = uppertext(new_data)
if(length(new_data) != 7) // We can hex if we want to, we can leave your strings behind
world << "Wrong length."
return // Cause your strings don't hex and if they don't hex
var/friends = copytext(new_data, 2, 8) // Well they're are no strings of mine
world << "friends equal [friends]."
// I say, we can go where we want to, a place where they will never find
var/safety_dance = 1
while(safety_dance >= 7) // And we can act like we come from out of this world.log
var/hex = copytext(friends, safety_dance, safety_dance+1)
world << "Checking [hex]."
if(!(hex in list("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F")))
world << "Hex [hex] failed"
return // Leave the fake one far behind,
safety_dance++
data = new_data // And we can hex
holder.on_data_written()
world << "Done."
world << "Rip."
// This randomizes the color.
/datum/integrated_io/color/scramble()

View File

@@ -133,7 +133,6 @@
clear_list(usr)
if(href_list["remove"])
world << "Removing [href_list["pos"]]"
if(href_list["pos"])
remove_from_list_by_position(usr, text2num(href_list["pos"]))
else

View File

@@ -101,6 +101,6 @@
return
var/area/A = get_area(src)
if(A)
if(A.powered(EQUIP))
if(A.powered(EQUIP) && assembly.give_power(power_amount))
A.use_power(power_amount, EQUIP)
assembly.give_power(power_amount) // give_power() handles CELLRATE on its own.
// give_power() handles CELLRATE on its own.

View File

@@ -533,11 +533,11 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
var/obj/machinery/atmospherics/unary/vent_pump/vent_found
var/list/found_vents = list()
for(var/obj/machinery/atmospherics/unary/vent_pump/v in machines)
if(!v.welded && v.z == T.z)
if(!v.welded && v.z == T.z && v.network && v.network.normal_members.len > 20)
found_vents.Add(v)
if(found_vents.len)
vent_found = pick(found_vents)
host = new /mob/living/simple_animal/mouse(vent_found.loc)
host = new /mob/living/simple_animal/mouse(vent_found)
else
src << "<span class='warning'>Unable to find any unwelded vents to spawn mice at.</span>"
@@ -546,6 +546,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
host.universal_understand = 0
announce_ghost_joinleave(src, 0, "They are now a mouse.")
host.ckey = src.ckey
host.add_ventcrawl(vent_found)
host << "<span class='info'>You are now a mouse. Try to avoid interaction with players, and do not give hints away that you are more than a simple rodent.</span>"
/mob/observer/dead/verb/view_manfiest()

View File

@@ -68,7 +68,8 @@
var/turf/T = get_turf_or_move(src.loc)
for (var/mob/M in viewers(T))
M.show_message("<font color='blue'>The positronic brain chimes quietly.</font>")
M.show_message("<font color='blue'>The positronic brain beeps as it loads a personality.</font>")
playsound(src, 'sound/misc/boobeebeep.ogg', 50, 1)
icon_state = "posibrain-occupied"
/obj/item/device/mmi/digital/posibrain/proc/reset_search() //We give the players sixty seconds to decide, then reset the timer.
@@ -81,7 +82,8 @@
var/turf/T = get_turf_or_move(src.loc)
for (var/mob/M in viewers(T))
M.show_message("<font color='blue'>The positronic brain buzzes quietly, and the golden lights fade away. Perhaps you could try again?</font>")
M.show_message("<font color='blue'>The positronic brain buzzes and beeps, and the golden lights fade away. Perhaps you could try again?</font>")
playsound(src, 'sound/misc/buzzbeep.ogg', 50, 1)
/obj/item/device/mmi/digital/posibrain/examine(mob/user)
if(!..(user))

View File

@@ -41,7 +41,7 @@
var/obj/item/organ/external/E = get_organ(organ_name)
if(!E || E.is_stump())
tally += 4
if(E.splinted)
else if(E.splinted)
tally += 0.5
else if(E.status & ORGAN_BROKEN)
tally += 1.5

View File

@@ -22,7 +22,9 @@ var/datum/species/shapeshifter/promethean/prometheans
push_flags = MONKEY|SLIME|SIMPLE_ANIMAL
flags = NO_SCAN | NO_SLIP | NO_MINOR_CUT
appearance_flags = HAS_SKIN_COLOR | HAS_EYE_COLOR | HAS_HAIR_COLOR | RADIATION_GLOWS
spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED //VOREStation Edit
spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED
health_hud_intensity = 2
breath_type = null

View File

@@ -13,6 +13,12 @@
max_age = 45
health_hud_intensity = 3
male_cough_sounds = list('sound/effects/mob_effects/tesharicougha.ogg','sound/effects/mob_effects/tesharicoughb.ogg')
female_cough_sounds = list('sound/effects/mob_effects/tesharicougha.ogg','sound/effects/mob_effects/tesharicoughb.ogg')
male_sneeze_sound = 'sound/effects/mob_effects/tesharisneeze.ogg'
female_sneeze_sound = 'sound/effects/mob_effects/tesharisneeze.ogg'
blood_color = "#D514F7"
flesh_color = "#5F7BB0"
base_color = "#001144"
@@ -95,5 +101,4 @@
/datum/species/teshari/equip_survival_gear(var/mob/living/carbon/human/H)
..()
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(H),slot_shoes)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(H),slot_shoes)

View File

@@ -313,21 +313,20 @@
var/finalized = "No"
while(finalized == "No" && src.client)
choice = input(usr,"What would you like to use for your mobile chassis icon? This decision can only be made once.") as null|anything in possible_chassis
choice = input(usr,"What would you like to use for your mobile chassis icon?") as null|anything in possible_chassis
if(!choice) return
icon_state = possible_chassis[choice]
finalized = alert("Look at your sprite. Is this what you wish to use?",,"No","Yes")
chassis = possible_chassis[choice]
verbs -= /mob/living/silicon/pai/proc/choose_chassis
verbs += /mob/living/proc/hide
verbs |= /mob/living/proc/hide
/mob/living/silicon/pai/proc/choose_verbs()
set category = "pAI Commands"
set name = "Choose Speech Verbs"
var/choice = input(usr,"What theme would you like to use for your speech verbs? This decision can only be made once.") as null|anything in possible_say_verbs
var/choice = input(usr,"What theme would you like to use for your speech verbs?") as null|anything in possible_say_verbs
if(!choice) return
var/list/sayverbs = possible_say_verbs[choice]
@@ -335,8 +334,6 @@
speak_exclamation = sayverbs[(sayverbs.len>1 ? 2 : sayverbs.len)]
speak_query = sayverbs[(sayverbs.len>2 ? 3 : sayverbs.len)]
verbs -= /mob/living/silicon/pai/proc/choose_verbs
/mob/living/silicon/pai/lay_down()
set name = "Rest"
set category = "IC"

View File

@@ -245,14 +245,14 @@
if((stat == CONSCIOUS) && (!icon_rest || !resting))
icon_state = icon_living
//Resting or KO'd
else if(((stat == UNCONSCIOUS) || resting) && icon_rest)
icon_state = icon_rest
//Dead
else if(stat >= DEAD)
icon_state = icon_dead
//Resting or KO'd
else if(((stat == UNCONSCIOUS) || resting) && icon_rest)
icon_state = icon_rest
//Backup
else
icon_state = initial(icon_state)

View File

@@ -21,7 +21,9 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
scroll=ipc_scroll;\
console=ipc_console;\
glider=ipc_gol_glider;\
rainbow=ipc_rainbow"
rainnbow=ipc_rainbow;\
smiley=ipc_smiley;\
database=ipc_database"
/proc/populate_robolimb_list()
basic_robolimb = new()
@@ -79,6 +81,35 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
parts = list(BP_HEAD)
monitor_styles = standard_monitor_styles
/datum/robolimb/grayson
company = "Grayson"
desc = "This limb has a sturdy and heavy build to it."
icon = 'icons/mob/human_races/cyberlimbs/grayson/grayson_main.dmi'
unavailable_to_build = 1
monitor_styles = "blank=grayson_off;\
green=grayson_green;\
rgb=grayson_rgb"
/datum/robolimb/grayson_alt1
company = "Grayson - Reinforced"
desc = "This limb has a sturdy and heavy build to it."
icon = 'icons/mob/human_races/cyberlimbs/grayson/grayson_alt1.dmi'
unavailable_to_build = 1
parts = list(BP_HEAD)
monitor_styles = "blank=grayson_alt_off;\
green=grayson_alt_green;\
scroll=grayson_alt_scroll;\
rgb=grayson_alt_rgb;\
rainbow=grayson_alt_rainbow"
/datum/robolimb/grayson_monitor
company = "Grayson Monitor"
desc = "This limb has a sturdy and heavy build to it, and uses plastics in the place of glass for the monitor."
icon = 'icons/mob/human_races/cyberlimbs/grayson/grayson_monitor.dmi'
unavailable_to_build = 1
parts = list(BP_HEAD)
monitor_styles = standard_monitor_styles
/datum/robolimb/hephaestus
company = "Hephaestus"
desc = "This limb has a militaristic black and green casing with gold stripes."
@@ -199,6 +230,9 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
/obj/item/weapon/disk/limb/bishop
company = "Bishop"
/obj/item/weapon/disk/limb/grayson
company = "Grayson"
/obj/item/weapon/disk/limb/hephaestus
company = "Hephaestus"

View File

@@ -79,7 +79,6 @@
/obj/item/weapon/pen/reagent
flags = OPENCONTAINER
slot_flags = SLOT_BELT
origin_tech = list(TECH_MATERIAL = 2, TECH_ILLEGAL = 5)
/obj/item/weapon/pen/reagent/New()

View File

@@ -302,7 +302,7 @@ var/list/solars_list = list()
M.unset_control()
if(connected_tracker)
connected_tracker.unset_control()
..()
return ..()
/obj/machinery/power/solar_control/disconnect_from_network()
..()
@@ -408,25 +408,23 @@ var/list/solars_list = list()
if(do_after(user, 20))
if (src.stat & BROKEN)
user << "<font color='blue'>The broken glass falls out.</font>"
var/obj/structure/frame/A = new /obj/structure/frame( src.loc )
var/obj/structure/frame/A = new /obj/structure/frame/computer( src.loc )
new /obj/item/weapon/material/shard( src.loc )
var/obj/item/weapon/circuitboard/solar_control/M = new /obj/item/weapon/circuitboard/solar_control( A )
for (var/obj/C in src)
C.loc = src.loc
A.circuit = M
A.frame_type = "computer"
A.state = 3
A.icon_state = "computer_3"
A.anchored = 1
qdel(src)
else
user << "<font color='blue'>You disconnect the monitor.</font>"
var/obj/structure/frame/A = new /obj/structure/frame( src.loc )
var/obj/structure/frame/A = new /obj/structure/frame/computer( src.loc )
var/obj/item/weapon/circuitboard/solar_control/M = new /obj/item/weapon/circuitboard/solar_control( A )
for (var/obj/C in src)
C.loc = src.loc
A.circuit = M
A.frame_type = "computer"
A.state = 4
A.icon_state = "computer_4"
A.anchored = 1

View File

@@ -460,6 +460,23 @@
name = "rifle clip (7.62mm practice)"
ammo_type = /obj/item/ammo_casing/a762p
/obj/item/ammo_magazine/m762svd
name = "\improper SVD magazine (7.62mm)"
icon_state = "SVD"
mag_type = MAGAZINE
caliber = "7.62mm"
matter = list(DEFAULT_WALL_MATERIAL = 2000)
ammo_type = /obj/item/ammo_casing/a762
max_ammo = 10
multiple_sprites = 1
/obj/item/ammo_magazine/m762svd/ap
name = "\improper SVD magazine (7.62mm armor-piercing)"
ammo_type = /obj/item/ammo_casing/a762/ap
/obj/item/ammo_magazine/m762svd/empty
initial_ammo = 0
///////// 12g /////////
/obj/item/ammo_magazine/m12gdrum
@@ -487,10 +504,34 @@
/obj/item/ammo_magazine/m12gdrum/empty
initial_ammo = 0
/obj/item/ammo_magazine/clip/c12g
name = "ammo clip (12g slug)"
icon_state = "12gclipslug" //largely a codersprite, looks good enough. feel free to make a better one.
desc = "A color-coded metal clip for holding and quickly loading shotgun shells. This one is loaded with slugs."
caliber = "12g"
ammo_type = /obj/item/ammo_casing/a12g
matter = list(DEFAULT_WALL_MATERIAL = 1790) // slugs shells x4 + 350 metal for the clip itself.
max_ammo = 4
multiple_sprites = 1
/obj/item/ammo_magazine/clip/c12g/pellet
name = "ammo clip (12g buckshot)"
icon_state = "12gclipshell"
desc = "A color-coded metal clip for holding and quickly loading shotgun shells. This one is loaded with buckshot."
ammo_type = /obj/item/ammo_casing/a12g/pellet
matter = list(DEFAULT_WALL_MATERIAL = 1790) // buckshot and slugs cost the same
/obj/item/ammo_magazine/clip/c12g/beanbag
name = "ammo clip (12g beanbag)"
icon_state = "12gclipbeanbag"
desc = "A color-coded metal clip for holding and quickly loading shotgun shells. This one is loaded with beanbags."
ammo_type = /obj/item/ammo_casing/a12g/beanbag
matter = list(DEFAULT_WALL_MATERIAL = 1070) //beanbags x4 + 350 metal
///////// .75 Gyrojet /////////
/obj/item/ammo_magazine/m75
name = "ammo magazine (.75 Gyrojet)"
name = "magazine (.75 Gyrojet)"
icon_state = "75"
mag_type = MAGAZINE
caliber = ".75"
@@ -511,32 +552,4 @@
ammo_type = /obj/item/ammo_casing/cap
matter = list(DEFAULT_WALL_MATERIAL = 600)
max_ammo = 7
multiple_sprites = 1
/obj/item/ammo_magazine/clip/c12g
name = "ammo clip (12g slug)"
icon_state = "12gclip_s" //largely a codersprite, looks good enough. feel free to make a better one.
desc = "A color-coded metal clip for holding and quickly loading shotgun shells. This one is loaded with slugs."
caliber = "12g"
ammo_type = /obj/item/ammo_casing/a12g
matter = list(DEFAULT_WALL_MATERIAL = 1790) // slugs shells x4 + 350 metal for the clip itself.
max_ammo = 4
/obj/item/ammo_magazine/clip/c12g/pellet
name = "ammo clip (12g buckshot)"
icon_state = "12gclip_p"
desc = "A color-coded metal clip for holding and quickly loading shotgun shells. This one is loaded with buckshot."
ammo_type = /obj/item/ammo_casing/a12g/pellet
matter = list(DEFAULT_WALL_MATERIAL = 1790) // buckshot and slugs cost the same
/obj/item/ammo_magazine/clip/c12g/beanbag
name = "ammo clip (12g beanbag)"
icon_state = "12gclip_bean"
desc = "A color-coded metal clip for holding and quickly loading shotgun shells. This one is loaded with beanbags."
ammo_type = /obj/item/ammo_casing/a12g/beanbag
matter = list(DEFAULT_WALL_MATERIAL = 1070) //beanbags x4 + 350 metal
multiple_sprites = 1

View File

@@ -111,7 +111,8 @@ obj/item/weapon/gun/energy/retro
desc = "The HI DMR 9E is an older design of Hesphaistos Industries. A designated marksman rifle capable of shooting powerful \
ionized beams, this is a weapon to kill from a distance."
icon_state = "sniper"
item_state_slots = list(slot_r_hand_str = "laser", slot_l_hand_str = "laser") //placeholder
item_state = "sniper"
item_state_slots = list(slot_r_hand_str = "z8carbine", slot_l_hand_str = "z8carbine") //placeholder
fire_sound = 'sound/weapons/gauss_shoot.ogg'
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 5, TECH_POWER = 4)
projectile_type = /obj/item/projectile/beam/sniper

View File

@@ -23,7 +23,7 @@
/obj/item/weapon/gun/projectile/automatic/c20r
name = "submachine gun"
desc = "The C-20r is a lightweight and rapid firing SMG, for when you REALLY need someone dead. Uses 10mm rounds. Has a 'Scarborough Arms - Per falcis, per pravitas' buttstamp."
desc = "The C-20r is a lightweight and rapid firing SMG, for when you REALLY need someone dead. It has 'Scarborough Arms - Per falcis, per pravitas' inscribed on the stock. Uses 10mm rounds."
icon_state = "c20r"
item_state = "c20r"
w_class = ITEMSIZE_NORMAL
@@ -51,7 +51,7 @@
/obj/item/weapon/gun/projectile/automatic/sts35
name = "assault rifle"
desc = "The rugged STS-35 is a durable automatic weapon of a make popular on the frontier worlds. Uses 5.45mm rounds. This one is unmarked."
desc = "The rugged STS-35 is a durable automatic weapon of a make popular on the frontier worlds. Uses 5.45mm rounds."
icon_state = "arifle"
item_state = null
w_class = ITEMSIZE_LARGE
@@ -173,7 +173,7 @@
/obj/item/weapon/gun/projectile/automatic/l6_saw
name = "light machine gun"
desc = "A rather traditionally made L6 SAW with a pleasantly lacquered wooden pistol grip. Has 'Aussec Armoury- 2531' engraved on the reciever"
desc = "A rather traditionally made L6 SAW with a pleasantly lacquered wooden pistol grip. 'Aussec Armoury-2531' is engraved on the reciever. Uses 5.45mm rounds. It's also compatible with magazines from STS-35 assault rifles."
icon_state = "l6closed100"
item_state = "l6closed"
w_class = ITEMSIZE_LARGE
@@ -245,7 +245,7 @@
/obj/item/weapon/gun/projectile/automatic/as24
name = "automatic shotgun"
desc = "The AS-24 is a durable, rugged looking automatic weapon of a make popular on the frontier worlds. Uses 12 gauge shells. It is unmarked."
desc = "The AS-24 is a rugged looking automatic shotgun produced for the military by Gurov Projectile Weapons LLC. For very obvious reasons, it's illegal to own in many juristictions. Uses 12g rounds."
icon_state = "ashot"
item_state = null
w_class = ITEMSIZE_LARGE
@@ -276,7 +276,7 @@
/obj/item/weapon/gun/projectile/automatic/mini_uzi
name = "\improper Uzi"
desc = "A lightweight, compact, fast firing gun, for when you want someone really dead. Uses .45 rounds."
desc = "The iconic Uzi is a lightweight, compact, fast firing machine pistol. Cybersun Industries famously still produces these designs, which have changed little since the 20th century. Uses .45 rounds."
icon_state = "mini-uzi"
w_class = ITEMSIZE_NORMAL
load_method = MAGAZINE
@@ -341,10 +341,10 @@
icon_state = (ammo_magazine)? "tommygun" : "tommygun-empty"
// update_held_icon()
/obj/item/weapon/gun/projectile/automatic/carbine // Admin abuse assault rifle. ToDo: Make this less shit. Maybe remove its autofire, and make it spawn with only 10 rounds at start.
name = "assault carbine"
desc = "The bullpup configured GP3000 is a lightweight, compact, military-grade assault rifle produced by Gurov Projectile Weapons LLC. It is sold almost exclusively to standing armies. The serial number on this one has been scratched off. Uses 5.45mm rounds."
icon_state = "bullpup"
/obj/item/weapon/gun/projectile/automatic/bullpup // Admin abuse assault rifle. ToDo: Make this less shit. Maybe remove its autofire, and make it spawn with only 10 rounds at start.
name = "bullpup rifle"
desc = "The bullpup configured GP3000 is a battle rifle produced by Gurov Projectile Weapons LLC. It is sold almost exclusively to standing armies. Uses 7.62mm rounds."
icon_state = "bullpup-small"
item_state = "bullpup"
w_class = ITEMSIZE_LARGE
force = 10
@@ -352,21 +352,22 @@
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4)
slot_flags = SLOT_BACK
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/m762m
magazine_type = /obj/item/ammo_magazine/m762
allowed_magazines = list(/obj/item/ammo_magazine/m762, /obj/item/ammo_magazine/m762m)
one_handed_penalty = 4
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null),
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=6, burst_accuracy=list(0,-1,-2), dispersion=list(0.0, 0.6, 0.6))
list(mode_name="2-round bursts", burst=2, fire_delay=null, move_delay=6, burst_accuracy=list(0,-1), dispersion=list(0.0, 0.6))
)
/obj/item/weapon/gun/projectile/automatic/carbine/update_icon(var/ignore_inhands)
/obj/item/weapon/gun/projectile/automatic/bullpup/update_icon(var/ignore_inhands)
..()
if(istype(ammo_magazine,/obj/item/ammo_magazine/m762))
icon_state = "bullpup-small" // If using the smaller magazines, use the small mag sprite.
icon_state = "bullpup-small"
else if(istype(ammo_magazine,/obj/item/ammo_magazine/m762m))
icon_state = "bullpup"
else
icon_state = "bullpup-empty"
item_state = (ammo_magazine)? "bullpup" : "bullpup-empty"
item_state = "bullpup-empty"
if(!ignore_inhands) update_held_icon()

View File

@@ -68,8 +68,8 @@
// Blade Runner pistol.
/obj/item/weapon/gun/projectile/revolver/deckard
name = "Deckard .38"
desc = "A custom-built revolver, based off the semi-popular Detective Special model."
name = "\improper Deckard .38"
desc = "A custom-built revolver, based off the semi-popular Detective Special model. Uses .38-Special rounds."
icon_state = "deckard-empty"
caliber = ".38"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
@@ -105,7 +105,7 @@
/obj/item/weapon/gun/projectile/revolver/judge
name = "\"The Judge\""
desc = "A revolving hand-shotgun by Cybersun Industries that packs the power of a 12 guage in the palm of your hand (if you don't break your wrist). Uses 12 shotgun rounds."
desc = "A revolving hand-shotgun by Cybersun Industries that packs the power of a 12 guage in the palm of your hand (if you don't break your wrist). Uses 12g rounds."
icon_state = "judge"
caliber = "12g"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 4)
@@ -118,7 +118,7 @@
/obj/item/weapon/gun/projectile/revolver/lemat
name = "LeMat Revolver"
desc = "The LeMat Revolver is a 9 shot revolver with a secondary firing barrel loading shotgun shells. For when you really need something dead."
desc = "The LeMat Revolver is a 9 shot revolver with a secondary firing barrel loading shotgun shells. For when you really need something dead. Uses .38-Special and 12g rounds depending on the barrel."
icon_state = "lemat"
item_state = "revolver"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)

View File

@@ -1,6 +1,6 @@
/obj/item/weapon/gun/projectile/shotgun/pump
name = "shotgun"
desc = "The mass-produced W-T Remmington 29x shotgun is a favourite of police and security forces on many worlds. Useful for sweeping alleys."
desc = "The mass-produced W-T Remmington 29x shotgun is a favourite of police and security forces on many worlds. Uses 12g rounds."
icon_state = "shotgun"
item_state = "shotgun"
max_shells = 4
@@ -43,7 +43,7 @@
/obj/item/weapon/gun/projectile/shotgun/pump/combat
name = "combat shotgun"
desc = "Built for close quarters combat, the Hesphaistos Industries KS-40 is widely regarded as a weapon of choice for repelling boarders."
desc = "Built for close quarters combat, the Hesphaistos Industries KS-40 is widely regarded as a weapon of choice for repelling boarders. Uses 12g rounds."
icon_state = "cshotgun"
item_state = "cshotgun"
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2)
@@ -53,7 +53,7 @@
/obj/item/weapon/gun/projectile/shotgun/doublebarrel
name = "double-barreled shotgun"
desc = "A true classic."
desc = "A truely classic weapon. No need to change what works. Uses 12g rounds."
icon_state = "dshotgun"
item_state = "dshotgun"
//SPEEDLOADER because rapid unloading.
@@ -80,7 +80,7 @@
/obj/item/weapon/gun/projectile/shotgun/doublebarrel/flare
name = "signal shotgun"
desc = "A double-barreled shotgun meant to fire signal flash shells."
desc = "A double-barreled shotgun meant to fire signal flash shells. Uses 12g rounds."
ammo_type = /obj/item/ammo_casing/a12g/flash
/obj/item/weapon/gun/projectile/shotgun/doublebarrel/unload_ammo(user, allow_dump)
@@ -112,7 +112,7 @@
/obj/item/weapon/gun/projectile/shotgun/doublebarrel/sawn
name = "sawn-off shotgun"
desc = "Omar's coming!"
desc = "Omar's coming!" // I'm not gonna add "Uses 12g rounds." to this one. I'll just let this reference go undisturbed.
icon_state = "sawnshotgun"
item_state = "sawnshotgun"
slot_flags = SLOT_BELT|SLOT_HOLSTER

View File

@@ -4,8 +4,7 @@
name = "anti-materiel rifle"
desc = "A portable anti-armour rifle fitted with a scope, the HI PTR-7 Rifle was originally designed to used against armoured exosuits. It is capable of punching through windows and non-reinforced walls with ease. Fires armor piercing 14.5mm shells."
icon_state = "heavysniper"
item_state = "l6closed-empty" // placeholder
item_state_slots = list(slot_r_hand_str = "heavysniper", slot_l_hand_str = "heavysniper")
item_state_slots = list(slot_r_hand_str = "l6closed-empty", slot_l_hand_str = "l6closed-empty") // placeholder
w_class = ITEMSIZE_HUGE // So it can't fit in a backpack.
force = 10
slot_flags = SLOT_BACK
@@ -69,17 +68,15 @@
////////////// Dragunov Sniper Rifle //////////////
/* // Commented out until it's not worthless. Also might be nice to have a new icon that looks more sci-fi Dragunov-ish.
/obj/item/weapon/gun/projectile/SVD
name = "\improper Dragunov"
desc = "The SVD, also known as the Dragunov, was mass produced with an Optical Sniper Sight so simple that even Ivan can figure out how it works. Too bad for you that it's written in Russian. Uses 7.62mm rounds."
desc = "The SVD, also known as the Dragunov, is mass produced with an Optical Sniper Sight so simple that even Ivan can use it. Too bad for you that the inscriptions are written in Russian. Uses 7.62mm rounds."
icon_state = "SVD"
item_state = "SVD"
w_class = ITEMSIZE_HUGE // So it can't fit in a backpack.
force = 10
slot_flags = SLOT_BACK // Needs a sprite.
origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 2, TECH_ILLEGAL = 8)
recoil = 2 //extra kickback
caliber = "7.62mm"
load_method = MAGAZINE
accuracy = -3 //shooting at the hip
@@ -87,13 +84,11 @@
// requires_two_hands = 1
one_handed_penalty = 4 // The weapon itself is heavy, and the long barrel makes it hard to hold steady with just one hand.
fire_sound = 'sound/weapons/SVD_shot.ogg'
magazine_type = /obj/item/ammo_magazine/SVD
allowed_magazines = list(/obj/item/ammo_magazine/SVD, /obj/item/ammo_magazine/m762)
magazine_type = /obj/item/ammo_magazine/m762svd
allowed_magazines = list(/obj/item/ammo_magazine/m762svd)
/obj/item/weapon/gun/projectile/SVD/update_icon()
..()
// if(istype(ammo_magazine,/obj/item/ammo_magazine/m762)
// icon_state = "SVD-bigmag" //No icon for this exists yet.
if(ammo_magazine)
icon_state = "SVD"
else
@@ -104,4 +99,4 @@
set name = "Use Scope"
set popup_menu = 1
toggle_scope(2.0)*/
toggle_scope(2.0)

View File

@@ -82,7 +82,7 @@ var/global/list/datum/supply_drop_loot/supply_drop
/obj/item/weapon/storage/belt/security/tactical/bandolier,
/obj/item/clothing/accessory/storage/black_drop_pouches,
/obj/item/weapon/storage/backpack/dufflebag/sec,
/obj/item/weapon/gun/projectile/automatic/carbine,
/obj/item/weapon/gun/projectile/automatic/bullpup,
/obj/item/ammo_magazine/m762/ap,
/obj/item/ammo_magazine/m762,
/obj/item/weapon/shield/energy,

View File

@@ -362,6 +362,17 @@
src.updateUsrDialog()
return 0
if(istype(O,/obj/item/weapon/gripper))
var/obj/item/weapon/gripper/B = O //B, for Borg.
if(!B.wrapped)
user << "\The [B] is not holding anything."
return 0
else
var/B_held = B.wrapped
user << "You use \the [B] to load \the [src] with \the [B_held]."
return 0
if(!sheet_reagents[O.type] && (!O.reagents || !O.reagents.total_volume))
user << "\The [O] is not suitable for blending."
return 1

View File

@@ -1604,7 +1604,7 @@ CIRCUITS BELOW
build_path = /obj/item/device/integrated_circuit_printer
sort_string = "VCAAG"
/datum/design/item/custom_circuit_printer
/datum/design/item/custom_circuit_printer_upgrade
name = "Integrated circuit printer upgrade - advanced designs"
desc = "Allows the integrated circuit printer to create advanced circuits"
id = "ic_printer_upgrade_adv"

View File

@@ -302,7 +302,7 @@
build_path = /obj/item/borg/upgrade/jetpack
/datum/design/item/prosfab/robot_upgrade/syndicate
name = "Illegal upgrade"
name = "Scrambled equipment module"
desc = "Allows for the construction of lethal upgrades for cyborgs."
id = "borg_syndicate_module"
req_tech = list(TECH_COMBAT = 4, TECH_ILLEGAL = 3)

View File

@@ -42,16 +42,30 @@
if(!istype(docking_controller))
world << "<span class='danger'>warning: shuttle with docking tag [docking_controller_tag] could not find it's controller!</span>"
// Return false to abort a jump, before the 'warmup' phase.
/datum/shuttle/proc/pre_warmup_checks()
return TRUE
// Ditto, but for afterwards.
/datum/shuttle/proc/post_warmup_checks()
return TRUE
/datum/shuttle/proc/short_jump(var/area/origin,var/area/destination)
if(moving_status != SHUTTLE_IDLE)
return
if(!pre_warmup_checks())
return
moving_status = SHUTTLE_WARMUP
spawn(warmup_time*10)
make_sounds(origin, HYPERSPACE_WARMUP)
sleep(5 SECONDS) // so the sound finishes.
if(!post_warmup_checks())
moving_status = SHUTTLE_IDLE
if (moving_status == SHUTTLE_IDLE)
make_sounds(origin, HYPERSPACE_END)
return //someone cancelled the launch
@@ -66,6 +80,9 @@
if(moving_status != SHUTTLE_IDLE)
return
if(!pre_warmup_checks())
return
//it would be cool to play a sound here
moving_status = SHUTTLE_WARMUP
spawn(warmup_time*10)
@@ -73,6 +90,9 @@
make_sounds(departing, HYPERSPACE_WARMUP)
sleep(5 SECONDS) // so the sound finishes.
if(!post_warmup_checks())
moving_status = SHUTTLE_IDLE
if (moving_status == SHUTTLE_IDLE)
make_sounds(departing, HYPERSPACE_END)
return //someone cancelled the launch

View File

@@ -0,0 +1,69 @@
// The new arrivals shuttle.
/datum/shuttle/ferry/arrivals
name = "Arrivals"
location = 1
warmup_time = 25 // Warmup takes 5 seconds, so 30 total.
always_process = TRUE
var/launch_delay = 3
area_offsite = /area/shuttle/arrival/pre_game // not really 'pre game' but this area is already defined and unused
area_station = /area/shuttle/arrival/station
docking_controller_tag = "arrivals_shuttle"
dock_target_station = "arrivals_dock"
// For debugging.
/obj/machinery/computer/shuttle_control/arrivals
name = "shuttle control console"
req_access = list(access_cent_general)
shuttle_tag = "Arrivals"
// Unlike most shuttles, the arrivals shuttle is completely automated, so we need to put some additional code here.
// This proc checks if anyone is on the shuttle.
/datum/shuttle/ferry/arrivals/proc/check_for_passengers(area/A)
for(var/mob/living/L in A)
return TRUE
return FALSE
// This is to stop the shuttle if someone tries to stow away when its leaving.
/datum/shuttle/ferry/arrivals/post_warmup_checks()
if(!location) // If we're at station.
if(check_for_passengers(area_station))
return FALSE
return TRUE
/datum/shuttle/ferry/arrivals/process()
if(process_state == IDLE_STATE)
if(location) // If we're off-station (space).
if(check_for_passengers(area_offsite)) // No point arriving with an empty shuttle.
warmup_time = initial(warmup_time)
launch()
message_passengers(area_offsite, "Arriving at [using_map.station_name] in thirty seconds...")
spawn(10 SECONDS)
message_passengers(area_offsite, "Arriving at [using_map.station_name] in twenty seconds.")
spawn(10 SECONDS)
message_passengers(area_offsite, "Arriving at [using_map.station_name] in ten seconds. Please buckle up.")
else // We are at the station.
if(!check_for_passengers(area_station)) // Don't leave with anyone.
if(launch_delay) // Give some time to get on the docks so people don't get trapped inbetween the dock airlocks.
launch_delay--
else
launch_delay = initial(launch_delay)
warmup_time = 0 // Gotta go fast.
launch()
..() // Do everything else
/datum/shuttle/ferry/arrivals/proc/message_passengers(area/A, var/message)
for(var/mob/M in A)
to_chat(M, message)
/*
/datum/shuttle/ferry/arrivals/current_dock_target()
if(location) // If we're off station.
return null // Nothing to dock to in space.
return ..()
*/

View File

@@ -4,6 +4,7 @@
var/location = 0 //0 = at area_station, 1 = at area_offsite
var/direction = 0 //0 = going to station, 1 = going to offsite.
var/process_state = IDLE_STATE
var/always_process = FALSE
var/in_use = null //tells the controller whether this shuttle needs processing