mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-01-10 01:13:07 +00:00
Polaris Sync
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
@@ -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")
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
|
||||
@@ -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>"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
//------------------------
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)"
|
||||
|
||||
@@ -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()
|
||||
..()
|
||||
|
||||
@@ -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")
|
||||
@@ -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)
|
||||
..()
|
||||
|
||||
134
code/modules/clothing/suits/xenos/seromi.dm
Normal file
134
code/modules/clothing/suits/xenos/seromi.dm
Normal 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"
|
||||
@@ -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"
|
||||
@@ -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
|
||||
)
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
69
code/modules/shuttles/shuttle_arrivals.dm
Normal file
69
code/modules/shuttles/shuttle_arrivals.dm
Normal 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 ..()
|
||||
*/
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user