Merge branch 'master' of https://github.com/VOREStation/VOREStation into Fluff_Items_worshop

This commit is contained in:
JoanRisu
2016-10-19 14:07:51 -07:00
605 changed files with 8270 additions and 6106 deletions
+25
View File
@@ -0,0 +1,25 @@
// The below should be used to define an item's w_class variable.
// Example: w_class = ITENSIZE_LARGE
// This allows the addition of future w_classes without needing to change every file.
#define ITEMSIZE_TINY 1
#define ITEMSIZE_SMALL 2
#define ITEMSIZE_NORMAL 3
#define ITEMSIZE_LARGE 4
#define ITEMSIZE_HUGE 5
#define ITEMSIZE_NO_CONTAINER 100 // Use this to forbid item from being placed in a container.
// Tweak these to determine how much space an item takes in a container.
// Look in storage.dm for get_storage_cost(), which uses these. Containers also use these as a reference for size.
// ITEMSIZE_COST_NORMAL is equivalent to one slot using the old inventory system. As such, it is a nice reference to use for
// defining how much space there is in a container.
#define ITEMSIZE_COST_TINY 1
#define ITEMSIZE_COST_SMALL 2
#define ITEMSIZE_COST_NORMAL 4
#define ITEMSIZE_COST_LARGE 8
#define ITEMSIZE_COST_HUGE 16
#define ITEMSIZE_COST_NO_CONTAINER 1000
// Container sizes. Note that different containers can hold a maximum ITEMSIZE.
#define INVENTORY_STANDARD_SPACE ITEMSIZE_COST_NORMAL * 7 // 28
#define INVENTORY_DUFFLEBAG_SPACE ITEMSIZE_COST_NORMAL * 9 // 36
#define INVENTORY_BOX_SPACE ITEMSIZE_COST_SMALL * 4 // 8
+12
View File
@@ -167,3 +167,15 @@
#define ANTAG_HIDDEN "Hidden"
#define ANTAG_SHARED "Shared"
#define ANTAG_KNOWN "Known"
// Job groups
#define ROLE_COMMAND "command"
#define ROLE_SECURITY "security"
#define ROLE_ENGINEERING "engineering"
#define ROLE_MEDICAL "medical"
#define ROLE_RESEARCH "research"
#define ROLE_CARGO "cargo"
#define ROLE_CIVILIAN "civilian"
#define ROLE_SYNTHETIC "synthetic"
#define ROLE_UNKNOWN "unknown"
#define ROLE_EVERYONE "everyone"
+4
View File
@@ -42,6 +42,10 @@
#define isxeno(A) istype(A, /mob/living/simple_animal/xeno)
#define isweakref(A) istype(A, /weakref)
#define RANDOM_BLOOD_TYPE pick(4;"O-", 36;"O+", 3;"A-", 28;"A+", 1;"B-", 20;"B+", 1;"AB-", 5;"AB+")
#define to_chat(target, message) target << message
#define CanInteract(user, state) (CanUseTopic(user, state) == STATUS_INTERACTIVE)
+1 -1
View File
@@ -67,7 +67,7 @@ var/const/tk_maxrange = 15
icon_state = "2"
flags = NOBLUDGEON
//item_state = null
w_class = 10.0
w_class = ITEMSIZE_NO_CONTAINER
layer = 20
var/last_throw = 0
@@ -0,0 +1,6 @@
/datum/controller/process/game_master/setup()
name = "\improper GM controller"
schedule_interval = 600 // every 60 seconds
/datum/controller/process/game_master/doWork()
game_master.process()
+1 -1
View File
@@ -361,7 +361,7 @@
clothes_s = new /icon('icons/mob/uniform.dmi', "virologywhite_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_vir_open"), ICON_OVERLAY)
if("Station Administrator")
if("Colony Director")
clothes_s = new /icon('icons/mob/uniform.dmi', "captain_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
if("Head of Security")
+1 -2
View File
@@ -24,8 +24,7 @@
name = "Special Ops supplies"
contains = list(
/obj/item/weapon/storage/box/emps,
/obj/item/weapon/grenade/smokebomb = 3,
/obj/item/weapon/pen/reagent/paralysis,
/obj/item/weapon/grenade/smokebomb = 4,
/obj/item/weapon/grenade/chem_grenade/incendiary
)
cost = 25
+1 -1
View File
@@ -34,7 +34,7 @@ var/list/all_supply_groups = list("Atmospherics",
var/access = null
var/hidden = 0
var/contraband = 0
var/group = "Operations"
var/group = "Miscellaneous"
/datum/supply_packs/New()
manifest += "<ul>"
+13 -19
View File
@@ -43,17 +43,7 @@
/datum/uplink_item/item/ammo/a556/ap
name = "10rnd Rifle Magazine (5.56mm AP)"
path = /obj/item/ammo_magazine/a556/ap
/*
/datum/uplink_item/item/ammo/a556m
name = "20rnd Rifle Magazine (5.56mm)"
path = /obj/item/ammo_magazine/a556m
item_cost = 4
/datum/uplink_item/item/ammo/a556m/ap
name = "20rnd Rifle Magazine (5.56mm AP)"
path = /obj/item/ammo_magazine/a556m/ap
item_cost = 4
*/
/datum/uplink_item/item/ammo/c762
name = "20rnd Rifle Magazine (7.62mm)"
path = /obj/item/ammo_magazine/c762
@@ -84,24 +74,28 @@
path = /obj/item/ammo_magazine/a762/ap
/datum/uplink_item/item/ammo/g12
name = "12g Auto-Shotgun Magazine (Slug)"
path = /obj/item/ammo_magazine/g12
name = "12g Shotgun Ammo Box (Slug)"
path = /obj/item/weapon/storage/box/shotgunammo
/datum/uplink_item/item/ammo/g12/beanbag
name = "12g Auto-Shotgun Magazine (Beanbag)"
path = /obj/item/ammo_magazine/g12/beanbag
name = "12g Shotgun Ammo Box (Beanbag)"
path = /obj/item/weapon/storage/box/beanbags
item_cost = 10 // Discount due to it being LTL.
/datum/uplink_item/item/ammo/g12/pellet
name = "12g Auto-Shotgun Magazine (Pellet)"
path = /obj/item/ammo_magazine/g12/pellet
name = "12g Shotgun Ammo Box (Pellet)"
path = /obj/item/weapon/storage/box/shotgunshells
/datum/uplink_item/item/ammo/g12/stun
name = "12g Auto-Shotgun Magazine (Stun)"
name = "12g Shotgun Ammo Box (Stun)"
path = /obj/item/weapon/storage/box/stunshells
item_cost = 10 // Discount due to it being LTL.
/datum/uplink_item/item/ammo/g12/flash
name = "12g Auto-Shotgun Magazine (Flash)"
name = "12g Shotgun Ammo Box (Flash)"
path = /obj/item/weapon/storage/box/flashshells
item_cost = 10 // Discount due to it being LTL.
item_cost = 10 // Discount due to it being LTL.
/datum/uplink_item/item/ammo/cell
name = "weapon cell"
path = /obj/item/weapon/cell/device
+31
View File
@@ -0,0 +1,31 @@
/datum
var/weakref/weakref
/datum/Destroy()
weakref = null // Clear this reference to ensure it's kept for as brief duration as possible.
. = ..()
//obtain a weak reference to a datum
/proc/weakref(datum/D)
if(D.gcDestroyed)
return
if(!D.weakref)
D.weakref = new/weakref(D)
return D.weakref
/weakref
var/ref
/weakref/New(datum/D)
ref = "\ref[D]"
/weakref/Destroy()
// A weakref datum should not be manually destroyed as it is a shared resource,
// rather it should be automatically collected by the BYOND GC when all references are gone.
return 0
/weakref/proc/resolve()
var/datum/D = locate(ref)
if(D && D.weakref == src)
return D
return null
+66
View File
@@ -0,0 +1,66 @@
/datum/wires/grid_checker
holder_type = /obj/machinery/power/grid_checker
wire_count = 8
var/const/GRID_CHECKER_WIRE_REBOOT = 1 // This wire causes the grid-check to end, if pulsed.
var/const/GRID_CHECKER_WIRE_LOCKOUT = 2 // If cut or pulsed, locks the user out for half a minute.
var/const/GRID_CHECKER_WIRE_ALLOW_MANUAL_1 = 4 // Needs to be cut for REBOOT to be possible.
var/const/GRID_CHECKER_WIRE_ALLOW_MANUAL_2 = 8 // Needs to be cut for REBOOT to be possible.
var/const/GRID_CHECKER_WIRE_ALLOW_MANUAL_3 = 16 // Needs to be cut for REBOOT to be possible.
var/const/GRID_CHECKER_WIRE_SHOCK = 32 // Shocks the user if not wearing gloves.
var/const/GRID_CHECKER_WIRE_NOTHING_1 = 64 // Does nothing, but makes it a bit harder.
var/const/GRID_CHECKER_WIRE_NOTHING_2 = 128 // Does nothing, but makes it a bit harder.
/datum/wires/grid_checker/CanUse(var/mob/living/L)
var/obj/machinery/power/grid_checker/G = holder
if(G.opened)
return TRUE
return FALSE
/datum/wires/grid_checker/GetInteractWindow()
var/obj/machinery/power/grid_checker/G = holder
. += ..()
. += "The green light is [G.power_failing ? "off" : "on"].<br>"
. += "The red light is [G.wire_locked_out ? "on" : "off"].<br>"
. += "The blue light is [G.wire_allow_manual_1 && G.wire_allow_manual_2 && G.wire_allow_manual_3 ? "on" : "off"]."
/datum/wires/grid_checker/UpdateCut(var/index, var/mended)
var/obj/machinery/power/grid_checker/G = holder
switch(index)
if(GRID_CHECKER_WIRE_LOCKOUT)
G.wire_locked_out = !mended
if(GRID_CHECKER_WIRE_ALLOW_MANUAL_1)
G.wire_allow_manual_1 = !mended
if(GRID_CHECKER_WIRE_ALLOW_MANUAL_2)
G.wire_allow_manual_2 = !mended
if(GRID_CHECKER_WIRE_ALLOW_MANUAL_3)
G.wire_allow_manual_3 = !mended
if(GRID_CHECKER_WIRE_SHOCK)
if(G.wire_locked_out)
return
G.shock(usr, 70)
/datum/wires/grid_checker/UpdatePulsed(var/index)
var/obj/machinery/power/grid_checker/G = holder
switch(index)
if(GRID_CHECKER_WIRE_REBOOT)
if(G.wire_locked_out)
return
if(G.power_failing && G.wire_allow_manual_1 && G.wire_allow_manual_2 && G.wire_allow_manual_3)
G.end_power_failure(TRUE)
if(GRID_CHECKER_WIRE_LOCKOUT)
if(G.wire_locked_out)
return
G.wire_locked_out = TRUE
spawn(30 SECONDS)
G.wire_locked_out = FALSE
if(GRID_CHECKER_WIRE_SHOCK)
if(G.wire_locked_out)
return
G.shock(usr, 70)
@@ -1,6 +1,6 @@
/datum/wires/jukebox
random = 1
holder_type = /obj/machinery/media/jukebox/vore
holder_type = /obj/machinery/media/jukebox
wire_count = 7
var/const/WIRE_POWER = 1
@@ -19,7 +19,7 @@ var/const/WIRE_NOTHING2 = 64
// Show the status of lights as a hint to the current state
/datum/wires/jukebox/GetInteractWindow()
var/obj/machinery/media/jukebox/vore/A = holder
var/obj/machinery/media/jukebox/A = holder
. += ..()
. += "<BR>The power light is [(A.stat & (BROKEN|NOPOWER)) ? "off" : "on"].<BR>"
. += "The parental guidance light is [A.hacked ? "off" : "on"].<BR>"
@@ -27,7 +27,7 @@ var/const/WIRE_NOTHING2 = 64
// Give a hint as to what each wire does
/datum/wires/jukebox/UpdatePulsed(var/index)
var/obj/machinery/media/jukebox/vore/A = holder
var/obj/machinery/media/jukebox/A = holder
switch(index)
if(WIRE_POWER)
holder.visible_message("<span class='notice'>\icon[holder] The power light flickers.</span>")
@@ -44,7 +44,7 @@ var/const/WIRE_NOTHING2 = 64
A.shock(usr, 10) // The nothing wires give a chance to shock just for fun
/datum/wires/jukebox/UpdateCut(var/index, var/mended)
var/obj/machinery/media/jukebox/vore/A = holder
var/obj/machinery/media/jukebox/A = holder
switch(index)
if(WIRE_POWER)
+2 -2
View File
@@ -87,7 +87,7 @@ var/global/list/PDA_Manifest = list()
heads[++heads.len] = list("name" = name, "rank" = rank, "active" = isactive)
department = 1
depthead = 1
if(rank=="Station Administrator" && heads.len != 1)
if(rank=="Colony Director" && heads.len != 1)
heads.Swap(1,heads.len)
if(real_rank in security_positions)
@@ -194,7 +194,7 @@ var/global/list/PDA_Manifest = list()
name = "beach ball"
density = 0
anchored = 0
w_class = 4
w_class = ITEMSIZE_LARGE
force = 0.0
throwforce = 0.0
throw_speed = 1
+26 -21
View File
@@ -8,7 +8,7 @@
throwforce = 2.0
throw_speed = 1
throw_range = 4
w_class = 2
w_class = ITEMSIZE_SMALL
attack_verb = list("called", "rang")
hitsound = 'sound/weapons/ring.ogg'
@@ -22,7 +22,7 @@
anchored = 0.0
var/stored_matter = 0
var/mode = 1
w_class = 3.0
w_class = ITEMSIZE_NORMAL
/obj/item/weapon/soap
name = "soap"
@@ -30,7 +30,7 @@
gender = PLURAL
icon = 'icons/obj/items.dmi'
icon_state = "soap"
w_class = 2.0
w_class = ITEMSIZE_SMALL
throwforce = 0
throw_speed = 4
throw_range = 20
@@ -57,7 +57,7 @@
icon_state = "bike_horn"
item_state = "bike_horn"
throwforce = 3
w_class = 2
w_class = ITEMSIZE_SMALL
throw_speed = 3
throw_range = 15
attack_verb = list("HONKED")
@@ -70,7 +70,7 @@
icon = 'icons/obj/items.dmi'
icon_state = "c_tube"
throwforce = 1
w_class = 2.0
w_class = ITEMSIZE_SMALL
throw_speed = 4
throw_range = 5
@@ -86,7 +86,7 @@
flags = CONDUCT
force = 5.0
throwforce = 7.0
w_class = 2.0
w_class = ITEMSIZE_SMALL
matter = list(DEFAULT_WALL_MATERIAL = 50)
attack_verb = list("bludgeoned", "whacked", "disciplined", "thrashed")
@@ -148,7 +148,7 @@
desc = "Better keep this safe."
icon_state = "nucleardisk"
item_state = "card-id"
w_class = 2.0
w_class = ITEMSIZE_SMALL
/*
/obj/item/weapon/game_kit
@@ -160,7 +160,7 @@
var/data = ""
var/base_url = "http://svn.slurm.us/public/spacestation13/misc/game_kit"
item_state = "sheet-metal"
w_class = 5.0
w_class = ITEMSIZE_HUGE
*/
/obj/item/weapon/gift
@@ -171,7 +171,7 @@
var/size = 3.0
var/obj/item/gift = null
item_state = "gift"
w_class = 4.0
w_class = ITEMSIZE_LARGE
/obj/item/weapon/legcuffs
name = "legcuffs"
@@ -181,7 +181,7 @@
icon_state = "handcuff"
flags = CONDUCT
throwforce = 0
w_class = 3.0
w_class = ITEMSIZE_NORMAL
origin_tech = list(TECH_MATERIAL = 1)
var/breakouttime = 300 //Deciseconds = 30s = 0.5 minute
sprite_sheets = list("Teshari" = 'icons/mob/species/seromi/handcuffs.dmi')
@@ -195,7 +195,7 @@
throwforce = 3.0
throw_speed = 1
throw_range = 5
w_class = 2.0
w_class = ITEMSIZE_SMALL
attack_verb = list("warned", "cautioned", "smashed")
/obj/item/weapon/caution/cone
@@ -203,6 +203,11 @@
name = "warning cone"
icon_state = "cone"
/obj/item/weapon/caution/cone/candy
desc = "This cone is trying to warn you of something! It has been painted to look like candy corn."
name = "candy cone"
icon_state = "candycone"
/*/obj/item/weapon/syndicate_uplink
name = "station bounced radio"
desc = "Remain silent about this..."
@@ -215,7 +220,7 @@
var/mob/currentUser = null
var/obj/item/device/radio/origradio = null
flags = CONDUCT | ONBELT
w_class = 2.0
w_class = ITEMSIZE_SMALL
item_state = "radio"
throw_speed = 4
throw_range = 20
@@ -236,7 +241,7 @@
slot_flags = SLOT_BELT
item_state = "radio"
throwforce = 5
w_class = 2.0
w_class = ITEMSIZE_SMALL
throw_speed = 4
throw_range = 20
matter = list(DEFAULT_WALL_MATERIAL = 100)
@@ -255,7 +260,7 @@
throwforce = 5.0
throw_speed = 1
throw_range = 5
w_class = 2.0
w_class = ITEMSIZE_SMALL
attack_verb = list("bludgeoned", "whacked", "disciplined")
/obj/item/weapon/staff/broom
@@ -280,12 +285,12 @@
throwforce = 5.0
throw_speed = 1
throw_range = 5
w_class = 2.0
w_class = ITEMSIZE_SMALL
/obj/item/weapon/module
icon = 'icons/obj/module.dmi'
icon_state = "std_module"
w_class = 2.0
w_class = ITEMSIZE_SMALL
item_state = "electronic"
flags = CONDUCT
var/mtype = 1 // 1=electronic 2=hardware
@@ -328,7 +333,7 @@
name = "camera bug"
icon = 'icons/obj/device.dmi'
icon_state = "flash"
w_class = 1.0
w_class = ITEMSIZE_TINY
item_state = "electronic"
throw_speed = 4
throw_range = 20
@@ -365,7 +370,7 @@
icon = 'icons/obj/cigarettes.dmi'
icon_state = "cigarpacket"
item_state = "cigarpacket"
w_class = 1
w_class = ITEMSIZE_TINY
throwforce = 2
var/cigarcount = 6
flags = ONBELT
@@ -385,7 +390,7 @@
name = "rapid part exchange device"
desc = "Special mechanical module made to store, sort, and apply standard machine parts."
icon_state = "RPED"
w_class = 5
w_class = ITEMSIZE_HUGE
can_hold = list(/obj/item/weapon/stock_parts)
storage_slots = 50
use_to_pickup = 1
@@ -393,7 +398,7 @@
allow_quick_empty = 1
collection_mode = 1
display_contents_with_number = 1
max_w_class = 3
max_w_class = ITEMSIZE_NORMAL
max_storage_space = 100
/obj/item/weapon/stock_parts
@@ -401,7 +406,7 @@
desc = "What?"
gender = PLURAL
icon = 'icons/obj/stock_parts.dmi'
w_class = 2.0
w_class = ITEMSIZE_SMALL
var/rating = 1
/obj/item/weapon/stock_parts/New()
+3 -3
View File
@@ -6,7 +6,7 @@ var/datum/antagonist/mutineer/mutineers
role_text_plural = "Mutineers"
id = MODE_MUTINEER
antag_indicator = "mutineer"
restricted_jobs = list("Station Administrator")
restricted_jobs = list("Colony Director")
/datum/antagonist/mutineer/New(var/no_reference)
..()
@@ -39,7 +39,7 @@ var/datum/antagonist/mutineer/mutineers
proc/get_head_loyalist_candidates()
var/list/candidates[0]
for(var/mob/loyalist in player_list)
if(loyalist.mind && loyalist.mind.assigned_role == "Station Administrator")
if(loyalist.mind && loyalist.mind.assigned_role == "Colony Director")
candidates.Add(loyalist.mind)
return candidates
@@ -47,7 +47,7 @@ var/datum/antagonist/mutineer/mutineers
var/list/candidates[0]
for(var/mob/mutineer in player_list)
if(mutineer.client.prefs.be_special & BE_MUTINEER)
for(var/job in command_positions - "Station Administrator")
for(var/job in command_positions - "Colony Director")
if(mutineer.mind && mutineer.mind.assigned_role == job)
candidates.Add(mutineer.mind)
return candidates
+1 -1
View File
@@ -13,7 +13,7 @@ var/datum/antagonist/ert/ert
and before taking extreme actions, please try to also contact the administration! \
Think through your actions and make the roleplay immersive! <b>Please remember all \
rules aside from those without explicit exceptions apply to the ERT.</b>"
leader_welcome_text = "As leader of the Emergency Response Team, you answer only to the Company, and have authority to override the Station Administrator where it is necessary to achieve your mission goals. It is recommended that you attempt to cooperate with the Station Administrator where possible, however."
leader_welcome_text = "As leader of the Emergency Response Team, you answer only to the Company, and have authority to override the Colony Director where it is necessary to achieve your mission goals. It is recommended that you attempt to cooperate with the Colony Director where possible, however."
landmark_id = "Response Team"
id_type = /obj/item/weapon/card/id/centcom/ERT
+1 -1
View File
@@ -55,7 +55,7 @@ var/datum/antagonist/raider/raiders
/obj/item/clothing/suit/pirate,
/obj/item/clothing/suit/hgpirate,
/obj/item/clothing/suit/storage/toggle/bomber,
/obj/item/clothing/suit/storage/leather_jacket,
/obj/item/clothing/suit/storage/toggle/leather_jacket,
/obj/item/clothing/suit/storage/toggle/brown_jacket,
/obj/item/clothing/suit/storage/toggle/hoodie,
/obj/item/clothing/suit/storage/toggle/hoodie/black,
+1 -1
View File
@@ -6,7 +6,7 @@
bantype = "changeling"
feedback_tag = "changeling_objective"
restricted_jobs = list("AI", "Cyborg")
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Station Administrator")
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Colony Director")
welcome_text = "Use say \"#g message\" to communicate with your fellow changelings. Remember: you get all of their absorbed DNA if you absorb them."
flags = ANTAG_SUSPICIOUS | ANTAG_RANDSPAWN | ANTAG_VOTABLE
antaghud_indicator = "hudchangeling"
+8 -8
View File
@@ -11,7 +11,7 @@ var/datum/antagonist/cultist/cult
role_text = "Cultist"
role_text_plural = "Cultists"
bantype = "cultist"
restricted_jobs = list("Chaplain","AI", "Cyborg", "Internal Affairs Agent", "Head of Security", "Station Administrator")
restricted_jobs = list("Chaplain","AI", "Cyborg", "Internal Affairs Agent", "Head of Security", "Colony Director")
protected_jobs = list("Security Officer", "Warden", "Detective")
role_type = BE_CULTIST
feedback_tag = "cult_objective"
@@ -110,13 +110,13 @@ var/datum/antagonist/cultist/cult
. = ..()
if(.)
player << "You catch a glimpse of the Realm of Nar-Sie, the Geometer of Blood. You now see how flimsy the world is, you see that it should be open to the knowledge of That Which Waits. Assist your new compatriots in their dark dealings. Their goals are yours, and yours are theirs. You serve the Dark One above all else. Bring It back."
if(player.current && !istype(player.current, /mob/living/simple_animal/construct))
player.current.add_language(LANGUAGE_CULT)
/datum/antagonist/cultist/remove_antagonist(var/datum/mind/player, var/show_message, var/implanted)
. = ..()
if(. && player.current && !istype(player.current, /mob/living/simple_animal/construct))
player.current.remove_language(LANGUAGE_CULT)
if(player.current && !istype(player.current, /mob/living/simple_animal/construct))
player.current.add_language(LANGUAGE_CULT)
/datum/antagonist/cultist/remove_antagonist(var/datum/mind/player, var/show_message, var/implanted)
. = ..()
if(. && player.current && !istype(player.current, /mob/living/simple_animal/construct))
player.current.remove_language(LANGUAGE_CULT)
/datum/antagonist/cultist/can_become_antag(var/datum/mind/player)
if(!..())
@@ -29,7 +29,7 @@ var/datum/antagonist/revolutionary/revs
faction_indicator = "rev"
faction_invisible = 1
restricted_jobs = list("Internal Affairs Agent", "AI", "Cyborg", "Station Administrator", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer")
restricted_jobs = list("Internal Affairs Agent", "AI", "Cyborg", "Colony Director", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer")
protected_jobs = list("Security Officer", "Warden", "Detective")
/datum/antagonist/revolutionary/New()
+2 -2
View File
@@ -3,9 +3,9 @@ var/datum/antagonist/traitor/traitors
// Inherits most of its vars from the base datum.
/datum/antagonist/traitor
id = MODE_TRAITOR
protected_jobs = list("Security Officer", "Warden", "Detective", "Internal Affairs Agent", "Head of Security", "Station Administrator")
protected_jobs = list("Security Officer", "Warden", "Detective", "Internal Affairs Agent", "Head of Security", "Colony Director")
flags = ANTAG_SUSPICIOUS | ANTAG_RANDSPAWN | ANTAG_VOTABLE
/datum/antagonist/traitor/auto
id = MODE_AUTOTRAITOR
allow_latejoin = 1
+2 -2
View File
@@ -1140,7 +1140,7 @@ area/space/atmosalert()
sound_env = MEDIUM_SOFTFLOOR
/area/crew_quarters/captain
name = "\improper Command - Station Administrator's Office"
name = "\improper Command - Colony Director's Office"
icon_state = "captain"
sound_env = MEDIUM_SOFTFLOOR
@@ -2845,4 +2845,4 @@ var/list/the_station_areas = list (
H << S
spawn(60) .()
*/
*/
+1
View File
@@ -1,5 +1,6 @@
/atom/movable
layer = 3
appearance_flags = TILE_BOUND
var/last_move = null
var/anchored = 0
// var/elevation = 2 - not used anywhere
@@ -27,7 +27,7 @@
desc = "A grotesque blade made out of bone and flesh that cleaves through people as a hot knife through butter."
icon = 'icons/obj/weapons.dmi'
icon_state = "arm_blade"
w_class = 5.0
w_class = ITEMSIZE_HUGE
force = 40
sharp = 1
edge = 1
+2 -2
View File
@@ -2,7 +2,7 @@
name = "cult blade"
desc = "An arcane weapon wielded by the followers of Nar-Sie."
icon_state = "cultblade"
w_class = 4
w_class = ITEMSIZE_LARGE
force = 30
throwforce = 10
hitsound = 'sound/weapons/bladeslice.ogg'
@@ -105,7 +105,7 @@
name = "cult armour"
icon_state = "cult_armour"
desc = "A bulky suit of armour, bristling with spikes. It looks space-worthy."
w_class = 3
w_class = ITEMSIZE_NORMAL
allowed = list(/obj/item/weapon/book/tome,/obj/item/weapon/melee/cultblade,/obj/item/weapon/tank/emergency_oxygen,/obj/item/device/suit_cooling_unit)
slowdown = 1
armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 30, bio = 30, rad = 30)
+2 -2
View File
@@ -183,7 +183,7 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa","
icon_state ="tome"
throw_speed = 1
throw_range = 5
w_class = 2.0
w_class = ITEMSIZE_SMALL
unique = 1
var/tomedat = ""
var/list/words = list("ire" = "ire", "ego" = "ego", "nahlizet" = "nahlizet", "certum" = "certum", "veri" = "veri", "jatkaa" = "jatkaa", "balaq" = "balaq", "mgar" = "mgar", "karazet" = "karazet", "geeri" = "geeri")
@@ -434,7 +434,7 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa","
return
/obj/item/weapon/book/tome/imbued //admin tome, spawns working runes without waiting
w_class = 2.0
w_class = ITEMSIZE_SMALL
var/cultistsonly = 1
attack_self(mob/user as mob)
if(src.cultistsonly && !iscultist(usr))
+2 -2
View File
@@ -301,9 +301,9 @@ Would like to add a law like "Law x is _______" where x = a number, and _____ is
M.add_ion_law("HUMANS NEED TO EAT [what2pref] [what2] TO SURVIVE")
if(5)
M << "<br>"
M << "<span class='danger'>THE STATION ADMINISTRATOR, HOP AND HOS ARE [who2]...LAWS UPDATED</span>"
M << "<span class='danger'>THE COLONY DIRECTOR, HOP AND HOS ARE [who2]...LAWS UPDATED</span>"
M << "<br>"
M.add_ion_law("THE STATION ADMINISTRATOR, HOP AND HOS ARE [who2]")
M.add_ion_law("THE COLONY DIRECTOR, HOP AND HOS ARE [who2]")
if(6)
M << "<br>"
M << "<span class='danger'>THE STATION IS BUILT FOR [who2]...LAWS UPDATED</span>"
+4 -4
View File
@@ -274,8 +274,8 @@ var/global/datum/controller/gameticker/ticker
else if(!player.mind.assigned_role)
continue
else
player.create_character()
qdel(player)
if (player.create_character()) // VOREStation Edit
qdel(player)
proc/collect_minds()
@@ -288,7 +288,7 @@ var/global/datum/controller/gameticker/ticker
var/captainless=1
for(var/mob/living/carbon/human/player in player_list)
if(player && player.mind && player.mind.assigned_role)
if(player.mind.assigned_role == "Station Administrator")
if(player.mind.assigned_role == "Colony Director")
captainless=0
if(!player_is_antag(player.mind, only_offstation_roles = 1))
job_master.EquipRank(player, player.mind.assigned_role, 0)
@@ -297,7 +297,7 @@ var/global/datum/controller/gameticker/ticker
if(captainless)
for(var/mob/M in player_list)
if(!istype(M,/mob/new_player))
M << "Station Administratorship not forced on anyone."
M << "Colony Directorship not forced on anyone."
proc/process()
@@ -10,3 +10,4 @@
auto_recall_shuttle = 0
antag_tags = list(MODE_MALFUNCTION)
disabled_jobs = list("AI")
votable = 0
+2 -2
View File
@@ -1,5 +1,5 @@
/datum/game_mode/conflux
name = "Technomancer & Cult"
name = "Technomancers & Cult"
round_description = "A space wizard and a cult have invaded the station!"
extended_round_description = "Cultists and wizards spawn during this round."
config_tag = "conflux"
@@ -9,4 +9,4 @@
end_on_antag_death = 1
antag_tags = list(MODE_TECHNOMANCER, MODE_CULTIST)
require_all_templates = 1
votable = 0
votable = 1
+2 -2
View File
@@ -1,5 +1,5 @@
/datum/game_mode/lizard
name = "Technomancer & Changelings"
name = "Technomancers & Changelings"
round_description = "A space wizard and changelings have invaded the station!"
extended_round_description = "Changelings and a wizard spawn during this round."
config_tag = "lizard"
@@ -9,4 +9,4 @@
end_on_antag_death = 0
antag_tags = list(MODE_TECHNOMANCER, MODE_CHANGELING)
require_all_templates = 1
votable = 0
votable = 1
+2 -2
View File
@@ -1,5 +1,5 @@
/datum/game_mode/visitors
name = "Technomancer & Ninja"
name = "Technomancers & Ninja"
round_description = "A space wizard and a ninja have invaded the station!"
extended_round_description = "A ninja and wizard spawn during this round."
config_tag = "visitors"
@@ -9,4 +9,4 @@
end_on_antag_death = 0
antag_tags = list(MODE_TECHNOMANCER, MODE_NINJA)
require_all_templates = 1
votable = 0
votable = 1
+1 -1
View File
@@ -564,7 +564,7 @@ datum
captainslaser
steal_target = /obj/item/weapon/gun/energy/captain
explanation_text = "Steal the captain's antique laser gun."
explanation_text = "Steal the Colony Director's antique laser gun."
weight = 20
get_points(var/job)
+2 -1
View File
@@ -13,4 +13,5 @@
required_players_secret = 5
required_enemies = 1
end_on_antag_death = 0
antag_tags = list(MODE_NINJA)
antag_tags = list(MODE_NINJA)
votable = 0
+1 -1
View File
@@ -4,7 +4,7 @@
icon_state = "pinoff"
flags = CONDUCT
slot_flags = SLOT_BELT
w_class = 2.0
w_class = ITEMSIZE_SMALL
item_state = "electronic"
throw_speed = 4
throw_range = 20
+3 -3
View File
@@ -423,11 +423,11 @@ datum/objective/steal
var/target_name
var/global/possible_items[] = list(
"the captain's antique laser gun" = /obj/item/weapon/gun/energy/captain,
"the Colony Director's antique laser gun" = /obj/item/weapon/gun/energy/captain,
"a hand teleporter" = /obj/item/weapon/hand_tele,
"an RCD" = /obj/item/weapon/rcd,
"a jetpack" = /obj/item/weapon/tank/jetpack,
"a captain's jumpsuit" = /obj/item/clothing/under/rank/captain,
"a colony director's jumpsuit" = /obj/item/clothing/under/rank/captain,
"a functional AI" = /obj/item/device/aicard,
"a pair of magboots" = /obj/item/clothing/shoes/magboots,
"the station blueprints" = /obj/item/blueprints,
@@ -441,7 +441,7 @@ datum/objective/steal
"a head of security's jumpsuit" = /obj/item/clothing/under/rank/head_of_security,
"a head of personnel's jumpsuit" = /obj/item/clothing/under/rank/head_of_personnel,
"the hypospray" = /obj/item/weapon/reagent_containers/hypospray,
"the captain's pinpointer" = /obj/item/weapon/pinpointer,
"the colony director's pinpointer" = /obj/item/weapon/pinpointer,
"an ablative armor vest" = /obj/item/clothing/suit/armor/laserproof,
)
@@ -11,7 +11,7 @@
obj_path = /obj/item/weapon/antag_spawner/technomancer_apprentice
/obj/item/weapon/antag_spawner
w_class = 1
w_class = ITEMSIZE_TINY
var/used = 0
/obj/item/weapon/antag_spawner/proc/spawn_antag(client/C, turf/T)
+1 -1
View File
@@ -27,7 +27,7 @@ var/list/all_technomancer_assistance = typesof(/datum/technomancer/assistance) -
requisition various things from.. where ever they came from."
icon = 'icons/obj/storage.dmi'
icon_state ="scientology" //placeholder
w_class = 2
w_class = ITEMSIZE_SMALL
var/budget = 1000
var/max_budget = 1000
var/mob/living/carbon/human/owner = null
+12 -2
View File
@@ -5,7 +5,7 @@
icon = 'icons/obj/technomancer.dmi'
icon_state = "technomancer_core"
item_state = "technomancer_core"
w_class = 5
w_class = ITEMSIZE_HUGE
slot_flags = SLOT_BACK
unacidable = 1
origin_tech = list(
@@ -86,6 +86,8 @@
if(wearer && wearer.mind)
if(!(technomancers.is_antagonist(wearer.mind))) // In case someone tries to wear a stolen core.
wearer.adjust_instability(20)
if(!wearer || wearer.stat == DEAD) // Unlock if we're dead or not worn.
canremove = TRUE
/obj/item/weapon/technomancer_core/proc/regenerate()
energy = min(max(energy + regen_rate, 0), max_energy)
@@ -287,4 +289,12 @@
/obj/item/weapon/technomancer_core/summoner/pay_dues()
if(summoned_mobs.len)
pay_energy( round(summoned_mobs.len) )
pay_energy( round(summoned_mobs.len) )
/obj/item/weapon/technomancer_core/verb/toggle_lock()
set name = "Toggle Core Lock"
set category = "Object"
set desc = "Toggles the locking mechanism on your manipulation core."
canremove = !canremove
to_chat(usr, "<span class='notice'>You [canremove ? "de" : ""]activate the locking mechanism on \the [src].</span>")
@@ -11,7 +11,7 @@
icon = 'icons/obj/device.dmi'
icon_state = "hand_tele" //temporary
var/uses = 3.0
w_class = 1
w_class = ITEMSIZE_TINY
item_state = "paper"
origin_tech = list(TECH_BLUESPACE = 4, TECH_POWER = 3)
@@ -83,9 +83,9 @@
name = "Belt of Holding"
desc = "Can hold more than you'd expect."
icon_state = "ems"
max_w_class = 3 // Can hold normal sized items.
max_w_class = ITEMSIZE_NORMAL // Can hold normal sized items.
storage_slots = 14 // Twice the capacity of a typical belt.
max_storage_space = 42
max_storage_space = ITEMSIZE_COST_NORMAL * 14
/datum/technomancer/equipment/thermals
name = "Thermoncle"
@@ -139,6 +139,7 @@
icon = 'icons/obj/technomancer.dmi'
icon_state = "scepter"
force = 15
slot_flags = SLOT_BELT
/obj/item/weapon/scepter/attack_self(mob/living/carbon/human/user)
var/obj/item/item_to_test = user.get_other_hand(src)
+89 -16
View File
@@ -5,15 +5,15 @@
// Proc: adjust_instability()
// Parameters: 0
// Description: Does nothing, because inheritence.
/mob/living/proc/adjust_instability()
return
/mob/living/proc/adjust_instability(var/amount)
instability = min(max(instability + amount, 0), 200)
// Proc: adjust_instability()
// Parameters: 1 (amount - how much instability to give)
// Description: Adds or subtracks instability to the mob, then updates the hud.
/mob/living/carbon/human/adjust_instability(var/amount)
instability = min(max(instability + amount, 0), 200)
instability_update_hud()
..()
// Proc: instability_update_hud()
// Parameters: 0
@@ -35,7 +35,7 @@
// Proc: Life()
// Parameters: 0
// Description: Makes instability tick along with Life().
/mob/living/carbon/human/Life()
/mob/living/Life()
. = ..()
handle_instability()
@@ -43,9 +43,8 @@
// Parameters: 0
// Description: Makes instability decay. instability_effects() handles the bad effects for having instability. It will also hold back
// from causing bad effects more than one every ten seconds, to prevent sudden death from angry RNG.
/mob/living/carbon/human/proc/handle_instability()
/mob/living/proc/handle_instability()
instability = round(Clamp(instability, 0, 200))
instability_update_hud()
//This should cushon against really bad luck.
if(instability && last_instability_event < (world.time - 10 SECONDS) && prob(20))
instability_effects()
@@ -65,6 +64,10 @@
if(101 to 200)
adjust_instability(-40)
/mob/living/carbon/human/handle_instability()
..()
instability_update_hud()
/*
[16:18:08] <PsiOmegaDelta> Sparks
[16:18:10] <PsiOmegaDelta> Wormholes
@@ -78,17 +81,85 @@
// Parameters: 0
// Description: Does a variety of bad effects to the entity holding onto the instability, with more severe effects occuring if they have
// a lot of instability.
/mob/living/carbon/human/proc/instability_effects()
/mob/living/proc/instability_effects()
last_instability_event = world.time
spawn(1)
var/image/instability_flash = image('icons/obj/spells.dmi',"instability")
overlays |= instability_flash
sleep(4)
overlays.Remove(instability_flash)
qdel(instability_flash)
radiate_instability()
/mob/living/silicon/instability_effects()
if(instability)
var/rng = 0
last_instability_event = world.time
spawn(1)
var/image/instability_flash = image('icons/obj/spells.dmi',"instability")
overlays |= instability_flash
sleep(4)
overlays.Remove(instability_flash)
qdel(instability_flash)
radiate_instability()
..()
switch(instability)
if(1 to 10) //Harmless
return
if(11 to 30) //Minor
rng = rand(0,1)
switch(rng)
if(0)
var/datum/effect/effect/system/spark_spread/sparks = PoolOrNew(/datum/effect/effect/system/spark_spread)
sparks.set_up(5, 0, src)
sparks.attach(loc)
sparks.start()
visible_message("<span class='warning'>Electrical sparks manifest from nowhere around \the [src]!</span>")
qdel(sparks)
if(1)
return
if(31 to 50) //Moderate
rng = rand(0,4)
switch(rng)
if(0)
electrocute_act(instability * 0.3, "unstable energies")
if(1)
adjustFireLoss(instability * 0.15) //7.5 burn @ 50 instability
src << "<span class='danger'>Your chassis alerts you to overheating from an unknown external force!</span>"
if(2)
adjustBruteLoss(instability * 0.15) //7.5 brute @ 50 instability
src << "<span class='danger'>Your chassis makes the sound of metal groaning!</span>"
if(3)
safe_blink(src, range = 6)
src << "<span class='warning'>You're teleported against your will!</span>"
if(4)
emp_act(2)
if(51 to 100) //Severe
rng = rand(0,3)
switch(rng)
if(0)
electrocute_act(instability * 0.5, "extremely unstable energies")
if(1)
emp_act(2)
if(2)
adjustFireLoss(instability * 0.3) //30 burn @ 100 instability
src << "<span class='danger'>Your chassis alerts you to extreme overheating from an unknown external force!</span>"
if(3)
adjustBruteLoss(instability * 0.3) //30 brute @ 100 instability
src << "<span class='danger'>Your chassis makes the sound of metal groaning and tearing!</span>"
if(101 to 200) //Lethal
rng = rand(0,4)
switch(rng)
if(0)
electrocute_act(instability, "extremely unstable energies")
if(1)
emp_act(1)
if(2)
adjustFireLoss(instability * 0.4) //40 burn @ 100 instability
src << "<span class='danger'>Your chassis alerts you to extreme overheating from an unknown external force!</span>"
if(3)
adjustBruteLoss(instability * 0.4) //40 brute @ 100 instability
src << "<span class='danger'>Your chassis makes the sound of metal groaning and tearing!</span>"
/mob/living/carbon/human/instability_effects()
if(instability)
var/rng = 0
..()
switch(instability)
if(1 to 10) //Harmless
return
@@ -194,7 +265,7 @@
if(7)
adjustToxLoss(instability * 0.40) //25 tox @ 100 instability
/mob/living/carbon/human/proc/radiate_instability()
/mob/living/proc/radiate_instability()
var/distance = round(sqrt(instability / 2))
if(instability <= 30)
distance = 0
@@ -210,6 +281,8 @@
var/armor = getarmor(null, "energy")
var/armor_factor = abs( (armor - 100) / 100)
outgoing_instability = outgoing_instability * armor_factor
if(outgoing_instability)
to_chat(H, "<span class='warning'>The purple glow makes you feel strange...</span>")
H.adjust_instability(outgoing_instability)
set_light(distance, distance * 2, l_color = "#C26DDE")
@@ -73,7 +73,7 @@
var/turf/location = get_turf(H)
location.hotspot_expose(1000, 50, 1)
owner.adjust_instability(1)
adjust_instability(1)
/obj/item/weapon/spell/aura/frost
name = "chilling aura"
@@ -95,7 +95,7 @@
var/turf/location = get_turf(H)
location.hotspot_expose(1, 50, 1)
owner.adjust_instability(1)
adjust_instability(1)
@@ -128,7 +128,7 @@
for(var/mob/living/L in mobs_to_heal)
L.adjustBruteLoss(-5)
L.adjustFireLoss(-5)
owner.adjust_instability(2)
adjust_instability(2)
/obj/item/weapon/spell/aura/biomed/on_use_cast(mob/living/user)
heal_allies_only = !heal_allies_only
@@ -60,6 +60,7 @@
"Nymph Chirping" = 'sound/misc/nymphchirp.ogg',
"Sad Trombone" = 'sound/misc/sadtrombone.ogg',
"Honk" = 'sound/items/bikehorn.ogg',
"Bone Fracture" = "fracture",
)
var/selected_sound = null
@@ -75,10 +76,10 @@
var/turf/T = get_turf(hit_atom)
if(selected_sound && pay_energy(200))
playsound(T, selected_sound, 80, 1, -1)
owner.adjust_instability(1)
adjust_instability(1)
// Air Horn time.
if(selected_sound == 'sound/items/AirHorn.ogg' && pay_energy(3800))
owner.adjust_instability(49) // Pay for your sins.
adjust_instability(49) // Pay for your sins.
for(var/mob/living/carbon/M in ohearers(6, T))
if(M.get_ear_protection() >= 2)
continue
@@ -12,7 +12,7 @@
icon_state = "generic"
cast_methods = null
aspect = ASPECT_BIOMED
glow_color = "#0000FF"
glow_color = "#33CC33"
var/regen_tick = 0
var/heal_allies_only = 1
@@ -23,16 +23,16 @@
if(regen_tick % 5 == 0)
var/list/nearby_mobs = range(4,owner)
var/list/mobs_to_heal = list()
if(heal_allies_only)
for(var/mob/living/L in nearby_mobs)
for(var/mob/living/L in nearby_mobs)
if(heal_allies_only)
if(is_ally(L))
mobs_to_heal |= L
else
mobs_to_heal = nearby_mobs //Heal everyone!
else
mobs_to_heal |= L // Heal everyone!
for(var/mob/living/L in mobs_to_heal)
L.adjustBruteLoss(-2)
L.adjustFireLoss(-2)
owner.adjust_instability(2)
adjust_instability(2)
/obj/item/weapon/spell/aura/biomed/on_use_cast(mob/living/user)
heal_allies_only = !heal_allies_only
@@ -47,4 +47,4 @@
T.hotspot_expose(1000, 50, 1)
T.create_fire(fire_power)
owner.adjust_instability(1)
adjust_instability(1)
@@ -36,4 +36,4 @@
var/cold_factor = abs(protection - 1)
H.bodytemperature = max( (H.bodytemperature - temp_change) * cold_factor, temp_cap)
owner.adjust_instability(1)
adjust_instability(1)
@@ -39,4 +39,4 @@
L.electrocute_act(power, src, 1.0, BP_TORSO)
owner.adjust_instability(3)
adjust_instability(3)
@@ -40,4 +40,4 @@
L << "<span class='danger'>You feel almost like you're melting from the inside!</span>"
owner.adjust_instability(2)
adjust_instability(2)
@@ -150,7 +150,7 @@
attack \the [L].</span>"
//This is to stop someone from controlling beepsky and getting him to stun someone 5 times a second.
user.setClickCooldown(8)
owner.adjust_instability(controlled_mobs.len)
adjust_instability(controlled_mobs.len)
else if(isturf(hit_atom))
var/turf/T = hit_atom
@@ -159,7 +159,7 @@
return 0
if(pay_energy(50 * controlled_mobs.len))
move_all(T)
owner.adjust_instability(controlled_mobs.len)
adjust_instability(controlled_mobs.len)
user << "<span class='notice'>You command your [controlled_mobs.len > 1 ? "entities" : "[controlled_mobs[1]]"] to move \
towards \the [T].</span>"
@@ -46,7 +46,7 @@
visible_message("<span class='danger'>\The [user] reaches out towards \the [L] with the flaming hand, and they ignite!</span>")
L << "<span class='danger'>You ignite!</span>"
L.fire_act()
owner.adjust_instability(12)
adjust_instability(12)
else
//This is needed in order for the welder to work, and works similarly to grippers.
welder.loc = user
@@ -54,7 +54,7 @@
if(!resolved && welder && hit_atom)
if(pay_energy(500))
welder.attack(hit_atom, user, def_zone)
owner.adjust_instability(4)
adjust_instability(4)
if(welder && user && (welder.loc == user))
welder.loc = src
else
@@ -1,7 +1,6 @@
/datum/technomancer/spell/mend_burns
name = "Mend Burns"
desc = "Heals minor burns, such as from exposure to flame, electric shock, or lasers. \
Instability is split between the target and technomancer, if seperate."
desc = "Heals minor burns, such as from exposure to flame, electric shock, or lasers."
cost = 50
obj_path = /obj/item/weapon/spell/insert/mend_burns
ability_icon_state = "tech_mendburns"
@@ -20,10 +19,10 @@
spawn(1)
if(ishuman(host))
var/mob/living/carbon/human/H = host
var/heal_power = host == origin ? 10 : 30
origin.adjust_instability(10)
for(var/i = 0, i<5,i++)
if(H)
H.adjustFireLoss(-5)
H.adjust_instability(2.5)
origin.adjust_instability(2.5)
sleep(10)
on_expire()
H.adjustFireLoss(-heal_power / 5)
sleep(1 SECOND)
on_expire()
@@ -1,6 +1,6 @@
/datum/technomancer/spell/mend_metal
name = "Mend Metal"
desc = "Restores integrity to external robotic components. Instability is split between the target and technomancer, if seperate."
desc = "Restores integrity to external robotic components."
cost = 50
obj_path = /obj/item/weapon/spell/insert/mend_metal
ability_icon_state = "tech_mendwounds"
@@ -19,14 +19,13 @@
spawn(1)
if(ishuman(host))
var/mob/living/carbon/human/H = host
var/heal_power = host == origin ? 10 : 30
origin.adjust_instability(10)
for(var/i = 0, i<5,i++)
if(H)
for(var/obj/item/organ/external/O in H.organs)
if(O.robotic < ORGAN_ROBOT) // Robot parts only.
continue
O.heal_damage(5, 0, internal = 1, robo_repair = 1)
H.adjust_instability(2.5)
origin.adjust_instability(2.5)
O.heal_damage(heal_power / 5, 0, internal = 1, robo_repair = 1)
sleep(1 SECOND)
on_expire()
on_expire()
@@ -1,15 +1,15 @@
/datum/technomancer/spell/mend_organs
name = "Mend Organs"
desc = "Heals the target's internal organs, both organic and robotic. Instability is split between the target \
and technomancer, if seperate."
cost = 50
name = "Great Mend Wounds"
desc = "Greatly heals the target's wounds, both external and internal. Restores internal organs to functioning states, even if \
robotic, reforms bones, patches internal bleeding, and restores missing blood."
cost = 100
obj_path = /obj/item/weapon/spell/insert/mend_organs
ability_icon_state = "tech_mendwounds"
category = SUPPORT_SPELLS
/obj/item/weapon/spell/insert/mend_organs
name = "mend organs"
desc = "Now nobody will ever need surgery."
name = "great mend wounds"
desc = "A walking medbay is now you!"
icon_state = "mend_wounds"
cast_methods = CAST_MELEE
aspect = ASPECT_BIOMED
@@ -20,13 +20,33 @@
spawn(1)
if(ishuman(host))
var/mob/living/carbon/human/H = host
var/heal_power = host == origin ? 2 : 5
origin.adjust_instability(15)
for(var/i = 0, i<5,i++)
if(H)
for(var/obj/item/organ/O in H.internal_organs)
if(O.damage > 0)
O.damage = max(O.damage - 1, 0)
if(O.damage > 0) // Fix internal damage
O.damage = max(O.damage - (heal_power / 5), 0)
if(O.damage <= 5 && O.organ_tag == O_EYES) // Fix eyes
H.sdisabilities &= ~BLIND
for(var/obj/item/organ/external/O in H.organs) // Fix limbs
if(!O.robotic < ORGAN_ROBOT) // No robot parts for this.
continue
O.heal_damage(0, heal_power / 5, internal = 1, robo_repair = 0)
for(var/obj/item/organ/E in H.bad_external_organs) // Fix bones
var/obj/item/organ/external/affected = E
if((affected.damage < affected.min_broken_damage * config.organ_health_multiplier) && (affected.status & ORGAN_BROKEN))
affected.status &= ~ORGAN_BROKEN
for(var/datum/wound/W in affected.wounds) // Fix IB
if(istype(W, /datum/wound/internal_bleeding))
affected.wounds -= W
affected.update_damages()
H.restore_blood() // Fix bloodloss
H.adjust_instability(2.5)
origin.adjust_instability(2.5)
sleep(1 SECOND)
on_expire()
on_expire()
@@ -1,7 +1,6 @@
/datum/technomancer/spell/mend_wires
name = "Mend Wires"
desc = "Binds the internal wiring of robotic limbs and components over time. \
Instability is split between the target and technomancer, if seperate."
desc = "Binds the internal wiring of robotic limbs and components over time."
cost = 50
obj_path = /obj/item/weapon/spell/insert/mend_wires
ability_icon_state = "tech_mendwounds"
@@ -20,14 +19,13 @@
spawn(1)
if(ishuman(host))
var/mob/living/carbon/human/H = host
var/heal_power = host == origin ? 10 : 30
origin.adjust_instability(10)
for(var/i = 0, i<5,i++)
if(H)
for(var/obj/item/organ/external/O in H.organs)
if(O.robotic < ORGAN_ROBOT) // Robot parts only.
continue
O.heal_damage(0, 5, internal = 1, robo_repair = 1)
H.adjust_instability(2.5)
origin.adjust_instability(2.5)
sleep(10)
on_expire()
O.heal_damage(0, heal_power / 5, internal = 1, robo_repair = 1)
sleep(1 SECOND)
on_expire()
@@ -20,10 +20,10 @@
spawn(1)
if(ishuman(host))
var/mob/living/carbon/human/H = host
var/heal_power = host == origin ? 10 : 30
origin.adjust_instability(10)
for(var/i = 0, i<5,i++)
if(H)
H.adjustBruteLoss(-5)
H.adjust_instability(2.5)
origin.adjust_instability(2.5)
H.adjustBruteLoss(-heal_power / 5)
sleep(1 SECOND)
on_expire()
@@ -1,7 +1,6 @@
/datum/technomancer/spell/purify
name = "Purify"
desc = "Clenses the body of harmful impurities, such as toxins, radiation, viruses, genetic damage, and such. \
Instability is split between the target and technomancer, if seperate."
desc = "Clenses the body of harmful impurities, such as toxins, radiation, viruses, genetic damage, and such."
cost = 25
obj_path = /obj/item/weapon/spell/insert/purify
ability_icon_state = "tech_purify"
@@ -24,12 +23,12 @@
H.disabilities = 0
// for(var/datum/disease/D in H.viruses)
// D.cure()
var/heal_power = host == origin ? 10 : 30
origin.adjust_instability(10)
for(var/i = 0, i<5,i++)
if(H)
H.adjustToxLoss(-5)
H.adjustCloneLoss(-5)
H.radiation = max(host.radiation - 10, 0)
H.adjust_instability(2.5)
origin.adjust_instability(2.5)
H.adjustToxLoss(-heal_power / 5)
H.adjustCloneLoss(-heal_power / 5)
H.radiation = max(host.radiation - ( (heal_power * 2) / 5), 0)
sleep(1 SECOND)
on_expire()
@@ -20,8 +20,8 @@
/obj/item/weapon/spell/instability_tap/on_use_cast(mob/user)
if(check_for_scepter())
core.give_energy(7500)
owner.adjust_instability(40)
adjust_instability(40)
else
core.give_energy(5000)
owner.adjust_instability(50)
adjust_instability(50)
qdel(src)
@@ -37,7 +37,7 @@
else
mark_spell_ref.forceMove(get_turf(user))
user << "<span class='notice'>Your mark is moved from its old position to \the [get_turf(user)] under you.</span>"
owner.adjust_instability(5)
adjust_instability(5)
return 1
else
user << "<span class='warning'>You can't afford the energy cost!</span>"
@@ -99,7 +99,7 @@
playsound(old_turf, 'sound/effects/sparks2.ogg', 50, 1)
owner.adjust_instability(25)
adjust_instability(25)
qdel(src)
return 1
else
@@ -20,7 +20,7 @@
var/mob/living/carbon/human/H = hit_atom
if(pay_energy(1500))
H.adjustOxyLoss(-35)
owner.adjust_instability(10)
adjust_instability(10)
return
else if(isturf(hit_atom))
var/turf/T = hit_atom
@@ -28,4 +28,4 @@
T.assume_gas("oxygen", 200)
T.assume_gas("nitrogen", 800)
playsound(src.loc, 'sound/effects/spray.ogg', 50, 1, -3)
owner.adjust_instability(10)
adjust_instability(10)
@@ -15,6 +15,7 @@
/obj/item/weapon/spell/phase_shift/New()
..()
set_light(3, 2, l_color = "#FA58F4")
processing_objects |= src
/obj/effect/phase_shift
name = "rift"
@@ -32,8 +33,13 @@
/obj/effect/phase_shift/Destroy()
for(var/atom/movable/AM in contents) //Eject everything out.
AM.forceMove(get_turf(src))
processing_objects -= src
..()
/obj/effect/phase_shift/process()
for(var/mob/living/L in contents)
L.adjust_instability(2)
/obj/effect/phase_shift/relaymove(mob/user as mob)
if(user.stat)
return
@@ -36,10 +36,10 @@
P.damage = round(energy_before_firing * 0.004) // 4% of their current energy pool.
else
P.damage = round(energy_before_firing * 0.003) // 3% of their current energy pool.
owner.adjust_instability(instability_per_shot)
adjust_instability(instability_per_shot)
return 1
// muzzle_type = /obj/effect/projectile/lightning/muzzle
// tracer_type = /obj/effect/projectile/lightning/tracer
// impact_type = /obj/effect/projectile/lightning/impact
// impact_type = /obj/effect/projectile/lightning/impact
@@ -13,9 +13,10 @@
if(set_up(hit_atom, user))
var/obj/item/projectile/new_projectile = new spell_projectile(get_turf(user))
new_projectile.launch(hit_atom)
log_and_message_admins("has casted [src] at \the [hit_atom].")
if(fire_sound)
playsound(get_turf(src), fire_sound, 75, 1)
owner.adjust_instability(instability_per_shot)
adjust_instability(instability_per_shot)
return 1
return 0
@@ -28,5 +29,8 @@
user.Stun(pre_shot_delay / 10)
sleep(pre_shot_delay)
qdel(target_image)
return 1
return 0
if(owner)
return TRUE
return FALSE // We got dropped before the firing occured.
return TRUE // No delay, no need to check.
return FALSE
@@ -42,4 +42,4 @@
var/radius = max(get_dist(L, src), 1)
var/rads = (power / 10) * ( 1 / (radius**2) )
L.apply_effect(rads, IRRADIATE)
owner.adjust_instability(2)
adjust_instability(2)
@@ -37,7 +37,7 @@
dead_mob_list -= SM
living_mob_list += SM
SM.icon_state = SM.icon_living
owner.adjust_instability(30)
adjust_instability(30)
else if(ishuman(L))
var/mob/living/carbon/human/H = L
@@ -57,7 +57,7 @@
H.timeofdeath = null
visible_message("<span class='danger'>\The [H]'s eyes open!</span>")
user << "<span class='notice'>It's alive!</span>"
owner.adjust_instability(100)
adjust_instability(100)
else
user << "<span class='warning'>The body of \the [H] doesn't seem to respond, perhaps you could try again?</span>"
owner.adjust_instability(10)
adjust_instability(10)
@@ -24,5 +24,5 @@
if(pay_energy(500))
var/instability_to_drain = min(H.instability, 25)
user << "<span class='notice'>You draw instability away from \the [H] and towards you.</span>"
owner.adjust_instability(instability_to_drain)
adjust_instability(instability_to_drain)
H.adjust_instability(-instability_to_drain)
@@ -15,7 +15,7 @@
/obj/item/weapon/spell/spawner/darkness/on_ranged_cast(atom/hit_atom, mob/user)
if(pay_energy(500))
owner.adjust_instability(4)
adjust_instability(4)
..()
/obj/item/weapon/spell/spawner/darkness/New()
@@ -16,7 +16,7 @@
/obj/item/weapon/spell/spawner/fire_blast/on_ranged_cast(atom/hit_atom, mob/user)
if(pay_energy(2000))
owner.adjust_instability(12)
adjust_instability(12)
..() // Makes the booms happen.
/obj/effect/temporary_effect/fire_blast
@@ -19,7 +19,7 @@
/obj/item/weapon/spell/spawner/pulsar/on_ranged_cast(atom/hit_atom, mob/user)
if(pay_energy(4000))
owner.adjust_instability(8)
adjust_instability(8)
..()
/obj/item/weapon/spell/spawner/pulsar/on_throw_cast(atom/hit_atom, mob/user)
@@ -19,16 +19,17 @@
E.icon_state = "anom"
sleep(5 SECONDS)
qdel(E)
var/mob/living/L = new summoned_mob_type(T)
core.summoned_mobs |= L
L.summoned = 1
var/image/summon_underlay = image('icons/obj/objects.dmi',"anom")
summon_underlay.alpha = 127
L.underlays |= summon_underlay
on_summon(L)
user << "<span class='notice'>You've successfully teleported \a [L] to you!</span>"
visible_message("<span class='warning'>\A [L] appears from no-where!</span>")
user.adjust_instability(instability_cost)
if(owner) // We might've been dropped.
var/mob/living/L = new summoned_mob_type(T)
core.summoned_mobs |= L
L.summoned = 1
var/image/summon_underlay = image('icons/obj/objects.dmi',"anom")
summon_underlay.alpha = 127
L.underlays |= summon_underlay
on_summon(L)
user << "<span class='notice'>You've successfully teleported \a [L] to you!</span>"
visible_message("<span class='warning'>\A [L] appears from no-where!</span>")
user.adjust_instability(instability_cost)
/obj/item/weapon/spell/summon/on_use_cast(mob/living/user)
if(summon_options.len)
@@ -32,15 +32,24 @@
response_help = "pets the"
response_disarm = "swats away"
response_harm = "punches"
min_oxy = 0
max_oxy = 0
min_tox = 0
max_tox = 0
min_co2 = 0
max_co2 = 0
min_n2 = 0
max_n2 = 0
minbodytemp = 0
maxbodytemp = 0
unsuitable_atoms_damage = 0
heat_damage_per_tick = 0
cold_damage_per_tick = 0
var/true_sight = 0 // If true, detects more than what the Technomancer normally can't.
var/mob/living/carbon/human/creator = null
var/list/seen_mobs = list()
/mob/living/simple_animal/ward/New()
..()
spawn(6 MINUTES)
expire()
/mob/living/simple_animal/ward/death()
if(creator)
creator << "<span class='danger'>Your ward inside [get_area(src)] was killed!</span>"
@@ -49,7 +49,7 @@
var/new_dir = get_dir(user, chosen_target)
user.dir = new_dir
sparks.start()
owner.adjust_instability(12)
adjust_instability(12)
//Finally, we handle striking the victim with whatever's in the user's offhand.
var/obj/item/I = user.get_inactive_hand()
@@ -6,9 +6,9 @@
fear and excitement. Ultimately, their purpose is unknown. However, it is up to you and your crew to decide if \
their powers can be used for good or if their arrival foreshadows the destruction of the entire colony, or worse."
config_tag = "technomancer"
votable = 0
votable = 1
required_players = 5
required_players_secret = 5
required_enemies = 1
end_on_antag_death = 0
antag_tags = list(MODE_TECHNOMANCER)
antag_tags = list(MODE_TECHNOMANCER)
+1 -1
View File
@@ -127,7 +127,7 @@
/var/const/access_captain = 20
/datum/access/captain
id = access_captain
desc = "Captain"
desc = "Colony Director"
region = ACCESS_REGION_COMMAND
/var/const/access_all_personal_lockers = 21
+4 -4
View File
@@ -1,7 +1,7 @@
var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
/datum/job/captain
title = "Station Administrator"
title = "Colony Director"
flag = CAPTAIN
department = "Command"
head_position = 1
@@ -11,7 +11,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
spawn_positions = 1
supervisors = "company officials and Corporate Regulations"
selection_color = "#1D1D4F"
alt_titles = list("Site Manager")
alt_titles = list("Site Manager", "Overseer")
idtype = /obj/item/weapon/card/id/gold
req_admin_notify = 1
access = list() //See get_access()
@@ -70,7 +70,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
faction = "Station"
total_positions = 1
spawn_positions = 1
supervisors = "the station administrator"
supervisors = "the Colony Director"
selection_color = "#2F2F7F"
idtype = /obj/item/weapon/card/id/silver
alt_titles = list("Crew Resources Officer")
@@ -145,4 +145,4 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
H.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket/female/skirt(H), slot_w_uniform)
else
H.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket/charcoal(H), slot_w_uniform)
return 1
return 1
+1 -1
View File
@@ -231,7 +231,7 @@
idtype = /obj/item/weapon/card/id/civilian
access = list(access_library, access_maint_tunnels)
minimal_access = list(access_library)
alt_titles = list("Journalist", "Professor", "Historian")
alt_titles = list("Journalist", "Professor", "Historian", "Writer")
equip(var/mob/living/carbon/human/H)
+1 -1
View File
@@ -7,7 +7,7 @@
faction = "Station"
total_positions = 1
spawn_positions = 1
supervisors = "the station administrator"
supervisors = "the Colony Director"
selection_color = "#7F6E2C"
idtype = /obj/item/weapon/card/id/engineering/head
req_admin_notify = 1
+1 -1
View File
@@ -7,7 +7,7 @@
faction = "Station"
total_positions = 1
spawn_positions = 1
supervisors = "the station administrator"
supervisors = "the Colony Director"
selection_color = "#026865"
idtype = /obj/item/weapon/card/id/medical/head
req_admin_notify = 1
+1 -1
View File
@@ -7,7 +7,7 @@
faction = "Station"
total_positions = 1
spawn_positions = 1
supervisors = "the station administrator"
supervisors = "the Colony Director"
selection_color = "#AD6BAD"
idtype = /obj/item/weapon/card/id/science/head
req_admin_notify = 1
+1 -1
View File
@@ -7,7 +7,7 @@
faction = "Station"
total_positions = 1
spawn_positions = 1
supervisors = "the station administrator"
supervisors = "the Colony Director"
selection_color = "#8E2929"
idtype = /obj/item/weapon/card/id/security/head
req_admin_notify = 1
+2 -2
View File
@@ -442,9 +442,9 @@ var/global/datum/controller/occupations/job_master
return H.Robotize()
if("AI")
return H
if("Station Administrator")
if("Colony Director")
var/sound/announce_sound = (ticker.current_state <= GAME_STATE_SETTING_UP)? null : sound('sound/misc/boatswain.ogg', volume=20)
captain_announcement.Announce("All hands, [alt_title ? alt_title : "Station Administrator"] [H.real_name] on deck!", new_sound=announce_sound)
captain_announcement.Announce("All hands, [alt_title ? alt_title : "Colony Director"] [H.real_name] on deck!", new_sound=announce_sound)
//Deferred item spawning.
if(spawn_in_storage && spawn_in_storage.len)
+1 -1
View File
@@ -52,7 +52,7 @@ var/list/assistant_occupations = list(
var/list/command_positions = list(
"Station Administrator",
"Colony Director",
"Head of Personnel",
"Head of Security",
"Chief Engineer",
+2 -2
View File
@@ -775,7 +775,7 @@ Just a object used in constructing air alarms
icon = 'icons/obj/doors/door_assembly.dmi'
icon_state = "door_electronics"
desc = "Looks like a circuit. Probably is."
w_class = 2.0
w_class = ITEMSIZE_SMALL
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
*/
/*
@@ -991,7 +991,7 @@ Just a object used in constructing fire alarms
icon = 'icons/obj/doors/door_assembly.dmi'
icon_state = "door_electronics"
desc = "A circuit. It has a label on it, it says \"Can handle heat levels up to 40 degrees celsius!\""
w_class = 2.0
w_class = ITEMSIZE_SMALL
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
*/
/obj/machinery/partyalarm
+1 -1
View File
@@ -5,7 +5,7 @@
density = 1
var/health = 100.0
flags = CONDUCT
w_class = 5
w_class = ITEMSIZE_HUGE
var/valve_open = 0
var/release_pressure = ONE_ATMOSPHERE
+1 -1
View File
@@ -4,7 +4,7 @@
icon = 'icons/obj/atmos.dmi'
icon_state = "psiphon:0"
density = 1
w_class = 3
w_class = ITEMSIZE_NORMAL
var/on = 0
var/direction_out = 0 //0 = siphoning, 1 = releasing
+1 -1
View File
@@ -4,7 +4,7 @@
icon = 'icons/obj/atmos.dmi'
icon_state = "pscrubber:0"
density = 1
w_class = 3
w_class = ITEMSIZE_NORMAL
var/on = 0
var/volume_rate = 800
@@ -3,7 +3,7 @@
desc = "A pre-fabricated security camera kit, ready to be assembled and mounted to a surface."
icon = 'icons/obj/monitors.dmi'
icon_state = "cameracase"
w_class = 2
w_class = ITEMSIZE_SMALL
anchored = 0
matter = list(DEFAULT_WALL_MATERIAL = 700,"glass" = 300)
+3
View File
@@ -41,6 +41,9 @@
return
if(istype(W, /obj/item/weapon/cell) && anchored)
if(istype(W, /obj/item/weapon/cell/device))
user << "<span class='warning'> The charger isn't fitted for that type of cell.</span>"
return
if(charging)
user << "<span class='warning'>There is already a cell in the charger.</span>"
return
+1 -1
View File
@@ -395,7 +395,7 @@
icon = 'icons/obj/cloning.dmi'
icon_state = "datadisk0" //Gosh I hope syndies don't mistake them for the nuke disk.
item_state = "card-id"
w_class = 2.0
w_class = ITEMSIZE_SMALL
var/datum/dna2/record/buf = null
var/read_only = 0 //Well,it's still a floppy disk
+1 -1
View File
@@ -1005,7 +1005,7 @@
desc = "A model spaceship, it looks like those used back in the day when travelling to Orion! It even has a miniature FX-293 reactor, which was renowned for its instability and tendency to explode..."
icon = 'icons/obj/toy.dmi'
icon_state = "ship"
w_class = 2
w_class = ITEMSIZE_SMALL
var/active = 0 //if the ship is on
/obj/item/weapon/orion_ship/examine(mob/user)
+1 -1
View File
@@ -314,7 +314,7 @@
src.active2.fields["cdi_d"] = t1
if("notes")
if (istype(src.active2, /datum/data/record))
var/t1 = sanitize(input("Please summarize notes:", "Med. records", html_decode(src.active2.fields["notes"]), null) as message, extra = 0)
var/t1 = sanitize(input("Please summarize notes:", "Med. records", html_decode(src.active2.fields["notes"]), null) as message, extra = 0, max_length = MAX_RECORD_LENGTH)
if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
return
src.active2.fields["notes"] = t1
+2 -2
View File
@@ -481,7 +481,7 @@ What a mess.*/
active2.fields["ma_crim_d"] = t1
if("notes")
if (istype(active2, /datum/data/record))
var/t1 = sanitize(input("Please summarize notes:", "Secure. records", html_decode(active2.fields["notes"]), null) as message, extra = 0)
var/t1 = sanitize(input("Please summarize notes:", "Secure. records", html_decode(active2.fields["notes"]), null) as message, extra = 0, max_length = MAX_RECORD_LENGTH)
if (!t1 || active2 != a2)
return
active2.fields["notes"] = t1
@@ -496,7 +496,7 @@ What a mess.*/
temp += "<li><a href='?src=\ref[src];choice=Change Criminal Status;criminal2=released'>Released</a></li>"
temp += "</ul>"
if("rank")
var/list/L = list( "Head of Personnel", "Station Administrator", "AI" )
var/list/L = list( "Head of Personnel", "Colony Director", "AI" )
//This was so silly before the change. Now it actually works without beating your head against the keyboard. /N
if ((istype(active1, /datum/data/record) && L.Find(rank)))
temp = "<h5>Rank:</h5>"
+1 -1
View File
@@ -343,7 +343,7 @@ What a mess.*/
return
active1.fields["age"] = t1
if("rank")
var/list/L = list( "Head of Personnel", "Station Administrator", "AI" )
var/list/L = list( "Head of Personnel", "Colony Director", "AI" )
//This was so silly before the change. Now it actually works without beating your head against the keyboard. /N
if ((istype(active1, /datum/data/record) && L.Find(rank)))
temp = "<h5>Rank:</h5>"
@@ -2,7 +2,7 @@
/obj/item/part/computer/circuitboard
density = 0
anchored = 0
w_class = 2.0
w_class = ITEMSIZE_SMALL
name = "Circuit board"
icon = 'icons/obj/module.dmi'
icon_state = "id_mod"
+1 -1
View File
@@ -14,7 +14,7 @@
gender = PLURAL
icon = 'icons/obj/stock_parts.dmi'
icon_state = "hdd1"
w_class = 2.0
w_class = ITEMSIZE_SMALL
var/emagged = 0
@@ -35,8 +35,8 @@
var jobs_all = ""
jobs_all += "<table><tr><td></td><td><b>Command</b></td>"
jobs_all += "</tr><tr height='20'><td><b>Special</b></td>"//Station Administrator in special because he is head of heads ~Intercross21
jobs_all += "<td weight='100'><a href='?src=\ref[src];;assign=Station Administrator'>Station Administrator</a></td>"
jobs_all += "</tr><tr height='20'><td><b>Special</b></td>"//Colony Director in special because he is head of heads ~Intercross21
jobs_all += "<td weight='100'><a href='?src=\ref[src];;assign=Colony Director'>Colony Director</a></td>"
jobs_all += "<td weight='100'><a href='?src=\ref[src];;assign=Custom'>Custom</a></td>"
counter = 0
@@ -348,4 +348,4 @@
authenticate()
if(access_cent_captain in reader.access)
return 1
return 0
return 0
@@ -513,7 +513,7 @@ What a mess.*/
temp += "<li><a href='?src=\ref[src];choice=Change Criminal Status;criminal2=released'>Released</a></li>"
temp += "</ul>"
if("rank")
var/list/L = list( "Head of Personnel", "Station Administrator", "AI" )
var/list/L = list( "Head of Personnel", "Colony Director", "AI" )
//This was so silly before the change. Now it actually works without beating your head against the keyboard. /N
if ((istype(active1, /datum/data/record) && L.Find(rank)))
temp = "<h5>Rank:</h5>"
+1 -1
View File
@@ -24,7 +24,7 @@
icon_state = "laptop-closed"
pixel_x = 2
pixel_y = -3
w_class = 3
w_class = ITEMSIZE_NORMAL
var/obj/machinery/computer3/laptop/stored_computer = null
@@ -4,7 +4,7 @@
name = "airlock electronics"
icon = 'icons/obj/doors/door_assembly.dmi'
icon_state = "door_electronics"
w_class = 2.0 //It should be tiny! -Agouri
w_class = ITEMSIZE_SMALL //It should be tiny! -Agouri
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 50)
+1
View File
@@ -1,6 +1,7 @@
//Terribly sorry for the code doubling, but things go derpy otherwise.
/obj/machinery/door/airlock/multi_tile
width = 2
appearance_flags = 0
/obj/machinery/door/airlock/multi_tile/New()
..()

Some files were not shown because too many files have changed in this diff Show More