[MIRROR] lost borg changes (#8423)

Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
Co-authored-by: Kashargul <KashL@t-online.de>
This commit is contained in:
CHOMPStation2
2024-05-23 07:28:16 -07:00
committed by GitHub
parent 9ed0c835b9
commit afec9631b8
17 changed files with 990 additions and 1294 deletions

View File

@@ -262,8 +262,18 @@
desc = "Station Network"
region = ACCESS_REGION_RESEARCH
// /var/const/free_access_id = 43 // taken in VR
// /var/const/free_access_id = 44 // taken in VR
var/const/access_explorer = 43 //CHOMP explo keep
/datum/access/explorer //CHOMP explo keep
id = access_explorer //CHOMP explo keep
desc = "Explorer" //CHOMP explo keep
region = ACCESS_REGION_GENERAL
//CHOMP explo keep removed a wide comment field on this line
/var/const/access_pathfinder = 44
/datum/access/pathfinder
id = access_pathfinder
desc = "Pathfinder"
region = ACCESS_REGION_GENERAL
//CHOMP explo keep removed the closing wide comment field on this line. KEEP THE PATHFINDER
/var/const/access_surgery = 45
/datum/access/surgery
@@ -384,6 +394,24 @@
desc = "Medical Equipment"
region = ACCESS_REGION_MEDBAY
var/const/access_pilot = 67
/datum/access/pilot
id = access_pilot
desc = "Pilot"
region = ACCESS_REGION_GENERAL
/var/const/access_entertainment = 72
/datum/access/entertainment
id = access_entertainment
desc = "Entertainment Backstage"
region = ACCESS_REGION_GENERAL
/var/const/access_xenobotany = 77
/datum/access/xenobotany
id = access_xenobotany
desc = "Xenobotany Garden"
region = ACCESS_REGION_RESEARCH
/******************
* Central Command *
******************/
@@ -441,6 +469,24 @@
desc = "Central Command Administration"
access_type = ACCESS_TYPE_CENTCOM
/var/const/access_clown = 136
/datum/access/clown
id = access_clown
desc = "Clown Office"
region = ACCESS_REGION_GENERAL
/var/const/access_tomfoolery = 137
/datum/access/tomfoolery
id = access_tomfoolery
desc = "Tomfoolery Closet"
region = ACCESS_REGION_GENERAL
/var/const/access_mime = 138
/datum/access/mime
id = access_mime
desc = "Mime Office"
region = ACCESS_REGION_GENERAL
/***************
* Antag access *
***************/
@@ -472,4 +518,16 @@
/datum/access/alien
id = access_alien
desc = "#%_^&*@!"
access_type = ACCESS_TYPE_PRIVATE
access_type = ACCESS_TYPE_PRIVATE
/var/const/access_talon = 301
/datum/access/talon
id = access_talon
desc = "Talon"
access_type = ACCESS_TYPE_PRIVATE
/var/const/access_lost = 511 // For outsider borgs
/datum/access/lost
id = access_lost
desc = "Lost"
access_type = ACCESS_TYPE_NONE

View File

@@ -1,54 +0,0 @@
//Moved from southern_cross_jobs.vr to fix a runtime
var/const/access_explorer = 43 //CHOMP explo keep
/datum/access/explorer //CHOMP explo keep
id = access_explorer //CHOMP explo keep
desc = "Explorer" //CHOMP explo keep
region = ACCESS_REGION_GENERAL
//CHOMP explo keep removed a wide comment field on this line
/var/const/access_pathfinder = 44
/datum/access/pathfinder
id = access_pathfinder
desc = "Pathfinder"
region = ACCESS_REGION_GENERAL
//CHOMP explo keep removed the closing wide comment field on this line. KEEP THE PATHFINDER
var/const/access_pilot = 67
/datum/access/pilot
id = access_pilot
desc = "Pilot"
region = ACCESS_REGION_GENERAL
/var/const/access_talon = 301
/datum/access/talon
id = access_talon
desc = "Talon"
access_type = ACCESS_TYPE_PRIVATE
/var/const/access_xenobotany = 77
/datum/access/xenobotany
id = access_xenobotany
desc = "Xenobotany Garden"
region = ACCESS_REGION_RESEARCH
/var/const/access_entertainment = 72
/datum/access/entertainment
id = access_entertainment
desc = "Entertainment Backstage"
region = ACCESS_REGION_GENERAL
/var/const/access_mime = 138
/datum/access/mime
id = access_mime
desc = "Mime Office"
region = ACCESS_REGION_GENERAL
/var/const/access_clown = 136
/datum/access/clown
id = access_clown
desc = "Clown Office"
region = ACCESS_REGION_GENERAL
/var/const/access_tomfoolery = 137
/datum/access/tomfoolery
id = access_tomfoolery
desc = "Tomfoolery Closet"
region = ACCESS_REGION_GENERAL

View File

@@ -3,146 +3,288 @@
// Please make sure that only the relevant sprite_stacks_xxx.file is included, if more are made.
/obj/item/weapon/card
icon = 'icons/obj/card_new.dmi' // These are redefined here so that changing sprites is as easy as clicking the checkbox.
base_icon = 'icons/obj/card_new.dmi'
icon = 'icons/obj/card_new_vr.dmi' // These are redefined here so that changing sprites is as easy as clicking the checkbox.
base_icon = 'icons/obj/card_new_vr.dmi'
// New sprite stacks can be defined here. You could theoretically change icon-states as well but right now this file compiles before station_ids.dm so those wouldn't be affected.
/*
//IDs
/obj/item/weapon/card/id
initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n")
/obj/item/weapon/card/id/generic
name = "Generic ID"
initial_sprite_stack = list("base-stamp", "top-generic", "stamp-silhouette", "clip")
// CENTCOM
//Central
/obj/item/weapon/card/id/centcom
initial_sprite_stack = list("base-stamp", "top-blue", "stamp-n", "pips-gold")
name = "Central Command ID"
initial_sprite_stack = list("base-stamp-gold", "top-blue", "stamp-n", "pips-white", "stripe-gold")
/obj/item/weapon/card/id/centcom/vip
initial_sprite_stack = list("base-stamp-gold", "top-blue", "stamp-n", "pips-gold")
name = "VIP ID"
initial_sprite_stack = list("base-stamp-gold", "top-blue", "stamp-n", "pips-gold", "stripe-gold")
//ERT
/obj/item/weapon/card/id/centcom/ERT
initial_sprite_stack = list("base-stamp", "top-blue", "stamp-n", "pips-red", "stripe-red")
name = "Emergency Responder ID"
initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-red", "stripe-red")
/obj/item/weapon/card/id/centcom/ERT/medic
name = "Emergency Medical Responder ID"
initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-medblu", "stripe-medblu")
/obj/item/weapon/card/id/centcom/ERT/commander
name = "Emergency Response Commander ID"
initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-gold", "stripe-gold")
/obj/item/weapon/card/id/centcom/ERT/engineer
name = "Emergency Engineering Responder ID"
initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-orange", "stripe-orange")
/obj/item/weapon/card/id/centcom/ERT/janitor
name = "Emergency Cleanup Responder ID"
initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-purple", "stripe-purple")
//Silver
// GENERIC COMMAND
/obj/item/weapon/card/id/silver
initial_sprite_stack = list("base-stamp-silver", "top-mime", "stamp-n-generic")
name = "Silver ID"
initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n")
/obj/item/weapon/card/id/silver/secretary
name = "Secretary's ID"
initial_sprite_stack = list("base-stamp", "top-blue", "stamp-n")
/obj/item/weapon/card/id/silver/hop
initial_sprite_stack = list("base-stamp", "top-blue", "stamp-n", "stripe-white")
name = "Head of Personnel ID"
initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-gold")
//Gold
/obj/item/weapon/card/id/gold
name = "Gold ID"
initial_sprite_stack = list("base-stamp-gold", "top-blue", "stamp-n")
/obj/item/weapon/card/id/gold/captain
name = "Captain's ID"
initial_sprite_stack = list("base-stamp-gold", "top-blue", "stamp-n", "pips-gold")
/obj/item/weapon/card/id/gold/captain/spare
name = "Spare ID"
initial_sprite_stack = list("base-stamp-gold", "top-gold", "stamp-n")
//Medical
// MEDICAL
/obj/item/weapon/card/id/medical
name = "Medical ID"
initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n")
/obj/item/weapon/card/id/medical/chemist
initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "pips-orange")
name = "Chemist's ID"
initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "stripe-orange")
/obj/item/weapon/card/id/medical/geneticist
initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "pips-purple")
name = "Geneticist's ID"
initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "stripe-purple")
/obj/item/weapon/card/id/medical/psych
initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "pips-purple")
name = "Psychologist's ID"
initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "stripe-brown")
/obj/item/weapon/card/id/medical/virologist
name = "Virologist's ID"
initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "stripe-green")
/obj/item/weapon/card/id/medical/emt
initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "pips-blue")
name = "Emergency Medical Technician's ID"
initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "stripe-blue")
/obj/item/weapon/card/id/medical/head
initial_sprite_stack = list("base-stamp-silver", "top-medblu", "stamp-n", "stripe-gold")
name = "Chief Medical Officer's ID"
initial_sprite_stack = list("base-stamp-silver", "top-medblu", "stamp-n", "pips-gold")
/obj/item/weapon/card/id/medical/sar
initial_sprite_stack = list("base-stamp", "top-darkgreen", "stamp-n", "pips-medblu")
//Security
// SECURITY
/obj/item/weapon/card/id/security
name = "Security ID"
initial_sprite_stack = list("base-stamp", "top-red", "stamp-n")
/obj/item/weapon/card/id/security/detective
initial_sprite_stack = list("base-stamp", "top-red", "stamp-n", "pips-brown")
name = "Detective's ID"
initial_sprite_stack = list("base-stamp", "top-red", "stamp-n", "stripe-brown")
/obj/item/weapon/card/id/security/warden
initial_sprite_stack = list("base-stamp", "top-red", "stamp-n", "pips-white")
name = "Warden's ID"
initial_sprite_stack = list("base-stamp", "top-red", "stamp-n", "stripe-white")
/obj/item/weapon/card/id/security/head
initial_sprite_stack = list("base-stamp-silver", "top-red", "stamp-n", "stripe-gold")
name = "Head of Security's ID"
initial_sprite_stack = list("base-stamp-silver", "top-red", "stamp-n", "pips-gold")
//Engineering
// ENGINEERING
/obj/item/weapon/card/id/engineering
name = "Engineering ID"
initial_sprite_stack = list("base-stamp", "top-orange", "stamp-n")
/obj/item/weapon/card/id/engineering/atmos
initial_sprite_stack = list("base-stamp", "top-orange", "pips-medblu", "stamp-n")
name = "Atmospherics ID"
initial_sprite_stack = list("base-stamp", "top-orange", "stripe-medblu", "stamp-n")
/obj/item/weapon/card/id/engineering/head
initial_sprite_stack = list("base-stamp-silver", "top-orange", "stamp-n", "stripe-gold")
name = "Chief Engineer's ID"
initial_sprite_stack = list("base-stamp-silver", "top-orange", "stamp-n", "pips-gold")
//Science
// SCIENCE
/obj/item/weapon/card/id/science
name = "Science ID"
initial_sprite_stack = list("base-stamp", "top-purple", "stamp-n")
/obj/item/weapon/card/id/science/roboticist
initial_sprite_stack = list("base-stamp", "top-purple", "stamp-n", "pips-orange")
name = "Roboticist's ID"
initial_sprite_stack = list("base-stamp", "top-purple", "stamp-n", "stripe-brown")
/obj/item/weapon/card/id/science/explorer
initial_sprite_stack = list("base-stamp", "top-darkgreen", "stamp-n")
/obj/item/weapon/card/id/science/xenobiologist
name = "Xenobiologist's ID"
initial_sprite_stack = list("base-stamp", "top-purple", "stamp-n", "stripe-orange")
/obj/item/weapon/card/id/science/xenobotanist
name = "Xenobotanist's ID"
initial_sprite_stack = list("base-stamp", "top-purple", "stamp-n", "stripe-green")
/obj/item/weapon/card/id/science/head
initial_sprite_stack = list("base-stamp-silver", "top-purple", "stamp-n", "stripe-gold")
name = "Research Director's ID"
initial_sprite_stack = list("base-stamp-silver", "top-purple", "stamp-n", "pips-gold")
/obj/item/weapon/card/id/science/head/pathfinder
initial_sprite_stack = list("base-stamp-silver", "top-blue", "dept-exploration", "stamp-n", "pips-gold")
//Cargo
// CARGO
/obj/item/weapon/card/id/cargo
name = "Cargo ID"
initial_sprite_stack = list("base-stamp", "top-brown", "stamp-n")
/obj/item/weapon/card/id/cargo/miner
initial_sprite_stack = list("base-stamp", "top-brown", "stamp-n", "pips-purple")
name = "Miner's ID"
initial_sprite_stack = list("base-stamp", "top-brown", "stamp-n", "stripe-purple")
/obj/item/weapon/card/id/cargo/head
initial_sprite_stack = list("base-stamp-silver", "top-brown", "stamp-n", "pips-gold")
name = "Quartermaster's ID"
initial_sprite_stack = list("base-stamp-silver", "top-brown", "stamp-n", "pips-white")
//Civilian
// CIVLIAN
/obj/item/weapon/card/id/civilian
initial_sprite_stack = list("base-stamp", "top-green", "stamp-n")
name = "Civilian ID"
initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n")
/obj/item/weapon/card/id/civilian/chaplain
initial_sprite_stack = list("base-stamp-silver", "top-dark", "stamp-cross", "pips-white")
/obj/item/weapon/card/id/civilian/internal_affairs
initial_sprite_stack = list("base-stamp", "top-green", "stamp-n")
/obj/item/weapon/card/id/civilian/botanist
initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "pips-brown")
/obj/item/weapon/card/id/civilian/bartender
initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "pips-dark")
/obj/item/weapon/card/id/civilian/chef
initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "pips-white")
/obj/item/weapon/card/id/civilian/janitor
initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "pips-purple")
name = "Chaplain's ID"
initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-cross", "stripe-white")
/obj/item/weapon/card/id/civilian/journalist
initial_sprite_stack = list("base-stamp", "top-green", "stamp-n")
name = "Journalist's ID"
initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n", "stripe-red")
/obj/item/weapon/card/id/civilian/pilot
name = "Pilot's ID"
initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n", "stripe-olive")
/obj/item/weapon/card/id/civilian/entertainer
name = "Entertainer's ID"
initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n", "stripe-brown")
/obj/item/weapon/card/id/civilian/entrepreneur
name = "Entrepreneur's ID"
initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n", "stripe-gold")
/obj/item/weapon/card/id/civilian/clown
name = "Clown's ID"
initial_sprite_stack = list("base-stamp", "top-rainbow", "stamp-n")
/obj/item/weapon/card/id/civilian/mime
name = "Mime's ID"
initial_sprite_stack = list("base-stamp", "top-white", "stamp-n", "stripe-black")
/obj/item/weapon/card/id/civilian/pilot
initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n", "pips-blue")
/obj/item/weapon/card/id/civilian/internal_affairs
name = "Internal Affairs ID"
initial_sprite_stack = list("base-stamp", "top-blue", "stamp-n", "stripe-black")
/obj/item/weapon/card/id/civilian/head
initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "stripe-white")
//Service
/obj/item/weapon/card/id/civilian/service
name = "Service ID"
initial_sprite_stack = list("base-stamp", "top-green", "stamp-n")
/obj/item/weapon/card/id/civilian/service/botanist
name = "Botanist's ID"
initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "stripe-darkgreen")
/obj/item/weapon/card/id/civilian/service/bartender
name = "Bartender's ID"
initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "stripe-black")
/obj/item/weapon/card/id/civilian/service/chef
name = "Chef's ID"
initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "stripe-white")
/obj/item/weapon/card/id/civilian/service/janitor
name = "Janitor's ID"
initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "stripe-purple")
//Exploration
/obj/item/weapon/card/id/exploration
name = "Exploration ID"
initial_sprite_stack = list("base-stamp", "top-olive", "stamp-n")
/obj/item/weapon/card/id/exploration/fm
name = "Field Medic's ID"
initial_sprite_stack = list("base-stamp", "top-olive", "stamp-n", "stripe-medblu")
/obj/item/weapon/card/id/exploration/head
name = "Pathfinder's ID"
initial_sprite_stack = list("base-stamp-silver", "top-olive", "stamp-n", "pips-white")
//Talon
/obj/item/weapon/card/id/talon
name = "Talon ID"
initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette")
/obj/item/weapon/card/id/talon/doctor
name = "Talon Medical ID"
initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-medblu", "stripe-medblu")
/obj/item/weapon/card/id/talon/engineer
name = "Talon Engineering ID"
initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-orange", "stripe-orange")
/obj/item/weapon/card/id/talon/officer
name = "Talon Security ID"
initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-red", "stripe-red")
/obj/item/weapon/card/id/talon/pilot
name = "Talon Pilot ID"
initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-purple", "stripe-purple")
/obj/item/weapon/card/id/talon/miner
name = "Talon Mining ID"
initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-brown", "stripe-brown")
/obj/item/weapon/card/id/talon/captain
name = "Talon Captain ID"
initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-gold", "stripe-gold")
//Antags
/obj/item/weapon/card/id/syndicate
name = "Syndicate ID"
initial_sprite_stack = list("base-stamp-dark", "top-syndicate", "stamp-s")
/obj/item/weapon/card/id/syndicate/officer
name = "Syndicate Officer ID"
initial_sprite_stack = list("base-stamp-dark", "top-syndicate", "stamp-s", "pips-gold", "stripe-gold")
*/

View File

@@ -1,284 +0,0 @@
/obj/item/weapon/card
icon = 'icons/obj/card_new_vr.dmi'
base_icon = 'icons/obj/card_new_vr.dmi'
//IDs
/obj/item/weapon/card/id
initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n")
/obj/item/weapon/card/id/generic
name = "Generic ID"
initial_sprite_stack = list("base-stamp", "top-generic", "stamp-silhouette", "clip")
//Central
/obj/item/weapon/card/id/centcom
name = "Central Command ID"
initial_sprite_stack = list("base-stamp-gold", "top-blue", "stamp-n", "pips-white", "stripe-gold")
/obj/item/weapon/card/id/centcom/vip
name = "VIP ID"
initial_sprite_stack = list("base-stamp-gold", "top-blue", "stamp-n", "pips-gold", "stripe-gold")
//ERT
/obj/item/weapon/card/id/centcom/ERT
name = "Emergency Responder ID"
initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-red", "stripe-red")
/obj/item/weapon/card/id/centcom/ERT/medic
name = "Emergency Medical Responder ID"
initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-medblu", "stripe-medblu")
/obj/item/weapon/card/id/centcom/ERT/commander
name = "Emergency Response Commander ID"
initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-gold", "stripe-gold")
/obj/item/weapon/card/id/centcom/ERT/engineer
name = "Emergency Engineering Responder ID"
initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-orange", "stripe-orange")
/obj/item/weapon/card/id/centcom/ERT/janitor
name = "Emergency Cleanup Responder ID"
initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-purple", "stripe-purple")
//Silver
/obj/item/weapon/card/id/silver
name = "Silver ID"
initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n")
/obj/item/weapon/card/id/silver/secretary
name = "Secretary's ID"
initial_sprite_stack = list("base-stamp", "top-blue", "stamp-n")
/obj/item/weapon/card/id/silver/hop
name = "Head of Personnel ID"
initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-gold")
//Gold
/obj/item/weapon/card/id/gold
name = "Gold ID"
initial_sprite_stack = list("base-stamp-gold", "top-blue", "stamp-n")
/obj/item/weapon/card/id/gold/captain
name = "Captain's ID"
initial_sprite_stack = list("base-stamp-gold", "top-blue", "stamp-n", "pips-gold")
/obj/item/weapon/card/id/gold/captain/spare
name = "Spare ID"
initial_sprite_stack = list("base-stamp-gold", "top-gold", "stamp-n")
//Medical
/obj/item/weapon/card/id/medical
name = "Medical ID"
initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n")
/obj/item/weapon/card/id/medical/chemist
name = "Chemist's ID"
initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "stripe-orange")
/obj/item/weapon/card/id/medical/geneticist
name = "Geneticist's ID"
initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "stripe-purple")
/obj/item/weapon/card/id/medical/psych
name = "Psychologist's ID"
initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "stripe-brown")
/obj/item/weapon/card/id/medical/virologist
name = "Virologist's ID"
initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "stripe-green")
/obj/item/weapon/card/id/medical/emt
name = "Emergency Medical Technician's ID"
initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "stripe-blue")
/obj/item/weapon/card/id/medical/head
name = "Chief Medical Officer's ID"
initial_sprite_stack = list("base-stamp-silver", "top-medblu", "stamp-n", "pips-gold")
//Security
/obj/item/weapon/card/id/security
name = "Security ID"
initial_sprite_stack = list("base-stamp", "top-red", "stamp-n")
/obj/item/weapon/card/id/security/detective
name = "Detective's ID"
initial_sprite_stack = list("base-stamp", "top-red", "stamp-n", "stripe-brown")
/obj/item/weapon/card/id/security/warden
name = "Warden's ID"
initial_sprite_stack = list("base-stamp", "top-red", "stamp-n", "stripe-white")
/obj/item/weapon/card/id/security/head
name = "Head of Security's ID"
initial_sprite_stack = list("base-stamp-silver", "top-red", "stamp-n", "pips-gold")
//Engineering
/obj/item/weapon/card/id/engineering
name = "Engineering ID"
initial_sprite_stack = list("base-stamp", "top-orange", "stamp-n")
/obj/item/weapon/card/id/engineering/atmos
name = "Atmospherics ID"
initial_sprite_stack = list("base-stamp", "top-orange", "stripe-medblu", "stamp-n")
/obj/item/weapon/card/id/engineering/head
name = "Chief Engineer's ID"
initial_sprite_stack = list("base-stamp-silver", "top-orange", "stamp-n", "pips-gold")
//Science
/obj/item/weapon/card/id/science
name = "Science ID"
initial_sprite_stack = list("base-stamp", "top-purple", "stamp-n")
/obj/item/weapon/card/id/science/roboticist
name = "Roboticist's ID"
initial_sprite_stack = list("base-stamp", "top-purple", "stamp-n", "stripe-brown")
/obj/item/weapon/card/id/science/xenobiologist
name = "Xenobiologist's ID"
initial_sprite_stack = list("base-stamp", "top-purple", "stamp-n", "stripe-orange")
/obj/item/weapon/card/id/science/xenobotanist
name = "Xenobotanist's ID"
initial_sprite_stack = list("base-stamp", "top-purple", "stamp-n", "stripe-green")
/obj/item/weapon/card/id/science/head
name = "Research Director's ID"
initial_sprite_stack = list("base-stamp-silver", "top-purple", "stamp-n", "pips-gold")
//Cargo
/obj/item/weapon/card/id/cargo
name = "Cargo ID"
initial_sprite_stack = list("base-stamp", "top-brown", "stamp-n")
/obj/item/weapon/card/id/cargo/miner
name = "Miner's ID"
initial_sprite_stack = list("base-stamp", "top-brown", "stamp-n", "stripe-purple")
/obj/item/weapon/card/id/cargo/head
name = "Quartermaster's ID"
initial_sprite_stack = list("base-stamp-silver", "top-brown", "stamp-n", "pips-white")
//Civilian
/obj/item/weapon/card/id/civilian
name = "Civilian ID"
initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n")
/obj/item/weapon/card/id/civilian/chaplain
name = "Chaplain's ID"
initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-cross", "stripe-white")
/obj/item/weapon/card/id/civilian/journalist
name = "Journalist's ID"
initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n", "stripe-red")
/obj/item/weapon/card/id/civilian/pilot
name = "Pilot's ID"
initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n", "stripe-olive")
/obj/item/weapon/card/id/civilian/entertainer
name = "Entertainer's ID"
initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n", "stripe-brown")
/obj/item/weapon/card/id/civilian/entrepreneur
name = "Entrepreneur's ID"
initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n", "stripe-gold")
/obj/item/weapon/card/id/civilian/clown
name = "Clown's ID"
initial_sprite_stack = list("base-stamp", "top-rainbow", "stamp-n")
/obj/item/weapon/card/id/civilian/mime
name = "Mime's ID"
initial_sprite_stack = list("base-stamp", "top-white", "stamp-n", "stripe-black")
/obj/item/weapon/card/id/civilian/internal_affairs
name = "Internal Affairs ID"
initial_sprite_stack = list("base-stamp", "top-blue", "stamp-n", "stripe-black")
//Service
/obj/item/weapon/card/id/civilian/service
name = "Service ID"
initial_sprite_stack = list("base-stamp", "top-green", "stamp-n")
/obj/item/weapon/card/id/civilian/service/botanist
name = "Botanist's ID"
initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "stripe-darkgreen")
/obj/item/weapon/card/id/civilian/service/bartender
name = "Bartender's ID"
initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "stripe-black")
/obj/item/weapon/card/id/civilian/service/chef
name = "Chef's ID"
initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "stripe-white")
/obj/item/weapon/card/id/civilian/service/janitor
name = "Janitor's ID"
initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "stripe-purple")
//Exploration
/obj/item/weapon/card/id/exploration
name = "Exploration ID"
initial_sprite_stack = list("base-stamp", "top-olive", "stamp-n")
/obj/item/weapon/card/id/exploration/fm
name = "Field Medic's ID"
initial_sprite_stack = list("base-stamp", "top-olive", "stamp-n", "stripe-medblu")
/obj/item/weapon/card/id/exploration/head
name = "Pathfinder's ID"
initial_sprite_stack = list("base-stamp-silver", "top-olive", "stamp-n", "pips-white")
//Talon
/obj/item/weapon/card/id/talon
name = "Talon ID"
initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette")
/obj/item/weapon/card/id/talon/doctor
name = "Talon Medical ID"
initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-medblu", "stripe-medblu")
/obj/item/weapon/card/id/talon/engineer
name = "Talon Engineering ID"
initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-orange", "stripe-orange")
/obj/item/weapon/card/id/talon/officer
name = "Talon Security ID"
initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-red", "stripe-red")
/obj/item/weapon/card/id/talon/pilot
name = "Talon Pilot ID"
initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-purple", "stripe-purple")
/obj/item/weapon/card/id/talon/miner
name = "Talon Mining ID"
initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-brown", "stripe-brown")
/obj/item/weapon/card/id/talon/captain
name = "Talon Captain ID"
initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-gold", "stripe-gold")
//Antags
/obj/item/weapon/card/id/syndicate
name = "Syndicate ID"
initial_sprite_stack = list("base-stamp-dark", "top-syndicate", "stamp-s")
/obj/item/weapon/card/id/syndicate/officer
name = "Syndicate Officer ID"
initial_sprite_stack = list("base-stamp-dark", "top-syndicate", "stamp-s", "pips-gold", "stripe-gold")

View File

@@ -151,6 +151,9 @@
icon_state = "gold-id-alternate"
registered_name = "Site Manager"
/obj/item/weapon/card/id/gold/captain/spare/fakespare
rank = "null"
/obj/item/weapon/card/id/synthetic
name = "\improper Synthetic ID"
desc = "Access module for NanoTrasen Synthetics"
@@ -162,6 +165,16 @@
. = ..()
access = get_all_station_access().Copy() + access_synth
/obj/item/weapon/card/id/lost
name = "\improper Unknown ID"
desc = "Access module for Lost drones"
icon_state = "id-robot-n"
assignment = "Lost"
/obj/item/weapon/card/id/lost/Initialize()
. = ..()
access += access_lost
/obj/item/weapon/card/id/platform
name = "\improper Support Platform ID"
desc = "Access module for support platforms."
@@ -307,3 +320,274 @@
icon_state = "generic"
primary_color = rgb(142,94,0)
secondary_color = rgb(191,159,95)
//Event IDs
/obj/item/weapon/card/id/event
var/configured = 0
var/accessset = 0
initial_sprite_stack = list()
var/list/title_strings = list()
var/preset_rank = FALSE
/obj/item/weapon/card/id/event/attack_self(var/mob/user)
if(configured == 1)
return ..()
if(!preset_rank)
var/title
if(user.client.prefs.player_alt_titles[user.job])
title = user.client.prefs.player_alt_titles[user.job]
else
title = user.job
assignment = title
user.set_id_info(src)
if(user.mind && user.mind.initial_account)
associated_account_number = user.mind.initial_account.account_number
if(title_strings.len)
var/tempname = pick(title_strings)
name = tempname + " ([assignment] Contractor)"//Chompedit: Suffix contractor IDs
else
name = user.name + "'s ID card" + " ([assignment] Contractor)"//Chompedit: Suffix contractor IDs
configured = 1
to_chat(user, "<span class='notice'>Card settings set.</span>")
/obj/item/weapon/card/id/event/attackby(obj/item/I as obj, var/mob/user)
if(istype(I, /obj/item/weapon/card/id) && !accessset)
var/obj/item/weapon/card/id/O = I
access |= O.access
desc = I.desc
rank = O.rank
to_chat(user, "<span class='notice'>You copy the access from \the [I] to \the [src].</span>")
user.drop_from_inventory(I)
qdel(I)
accessset = 1
..()
/obj/item/weapon/card/id/event/accessset
accessset = 1
/obj/item/weapon/card/id/event/accessset/itg
name = "identification card"
desc = "A small card designating affiliation with the Ironcrest Transport Group."
icon = 'icons/obj/card_vr.dmi'
base_icon = 'icons/obj/card_vr.dmi'
icon_state = "itg"
/obj/item/weapon/card/id/event/accessset/itg/green
icon_state = "itg_green"
/obj/item/weapon/card/id/event/accessset/itg/red
icon_state = "itg_red"
/obj/item/weapon/card/id/event/accessset/itg/purple
icon_state = "itg_purple"
/obj/item/weapon/card/id/event/accessset/itg/white
icon_state = "itg_white"
/obj/item/weapon/card/id/event/accessset/itg/orange
icon_state = "itg_orange"
/obj/item/weapon/card/id/event/accessset/itg/blue
icon_state = "itg_blue"
/obj/item/weapon/card/id/event/accessset/itg/crew
name = "\improper ITG Crew ID"
assignment = "Crew"
rank = "Crew"
access = list(777)
preset_rank = TRUE
/obj/item/weapon/card/id/event/accessset/itg/crew/pilot
name = "\improper ITG Pilot's ID"
desc = "An ID card belonging to the Pilot of an ITG vessel. The Pilot's responsibility is primarily to fly the ship. They may also be tasked to assist with cargo movement duties."
assignment = "Pilot"
rank = "Pilot"
/obj/item/weapon/card/id/event/accessset/itg/crew/service
name = "\improper ITG Cook's ID"
desc = "An ID card belonging to the Cook of an ITG vessel. The Cook's responsibility is primarily to provide sustinence to the crew and passengers. The Cook answers to the Passenger Liason. In the absence of a Passenger Liason, the Cook is also responsible for tending to passenger related care and duties."
assignment = "Cook"
rank = "Cook"
icon_state = "itg_green"
/obj/item/weapon/card/id/event/accessset/itg/crew/security
name = "\improper ITG Security's ID"
desc = "An ID card belonging to Security of an ITG vessel. Security's responsibility is primarily to protect the ship, cargo, or facility. They may also be tasked to assist with cargo movement duties and rescue operations. ITG Security is almost exclusively defensive. They should not start fights, but they are very capable of finishing them."
assignment = "Security"
rank = "Security"
icon_state = "itg_red"
/obj/item/weapon/card/id/event/accessset/itg/crew/research
name = "\improper ITG Research's ID"
desc = "An ID card belonging to ITG Research staff. ITG Research staff primarily specializes in starship and starship engine design, and overcoming astronomic phenomena."
assignment = "Research"
rank = "Research"
icon_state = "itg_purple"
/obj/item/weapon/card/id/event/accessset/itg/crew/medical
name = "\improper ITG Medic's ID"
desc = "An ID card belonging to the Medic of an ITG vessel. The Medic's responsibility is primarily to treat crew and passenger injuries. They may also be tasked with rescue operations."
assignment = "Medic"
rank = "Medic"
icon_state = "itg_white"
/obj/item/weapon/card/id/event/accessset/itg/crew/engineer
name = "\improper ITG Engineer's ID"
desc = "An ID card belonging to the Engineer of an ITG vessel. The Engineer's responsibility is primarily to maintain the ship. They may also be tasked to assist with cargo movement duties."
assignment = "Engineer"
rank = "Engineer"
icon_state = "itg_orange"
/obj/item/weapon/card/id/event/accessset/itg/crew/passengerliason
name = "\improper ITG Passenger Liason's ID"
desc = "An ID card belonging to the Passenger Liason of an ITG vessel. The Passenger Liason's responsibility is primarily to manage and tend to passenger needs and maintain supplies and facilities for passenger use."
assignment = "Passenger Liason"
rank = "Passenger Liason"
icon_state = "itg_blue"
/obj/item/weapon/card/id/event/accessset/itg/crew/captain
name = "\improper ITG Captain's ID"
desc = "An ID card belonging to the Captain of an ITG vessel. The Captain's responsibility is primarily to manage crew to ensure smooth ship operations. Captains often also often pilot the vessel when no dedicated pilot is assigned."
assignment = "Captain"
rank = "Captain"
icon_state = "itg_blue"
access = list(777, 778)
/obj/item/weapon/card/id/event/altcard
icon = 'icons/obj/card_alt_vr.dmi'
base_icon = 'icons/obj/card_alt_vr.dmi'
icon_state = "id"
/obj/item/weapon/card/id/event/altcard/spare
icon_state = "spare"
/obj/item/weapon/card/id/event/altcard/clown
icon_state = "Clown"
/obj/item/weapon/card/id/event/altcard/mime
icon_state = "Mime"
/obj/item/weapon/card/id/event/altcard/centcom
icon_state = "CentCom Officer"
/obj/item/weapon/card/id/event/altcard/ert
icon_state = "Emergency Responder"
/obj/item/weapon/card/id/event/altcard/nt
icon_state = "nanotrasen"
/obj/item/weapon/card/id/event/altcard/syndiegold
icon_state = "syndieGold"
/obj/item/weapon/card/id/event/altcard/syndie
icon_state = "syndie"
/obj/item/weapon/card/id/event/altcard/greengold
icon_state = "greenGold"
/obj/item/weapon/card/id/event/altcard/pink
icon_state = "pink"
/obj/item/weapon/card/id/event/altcard/pinkgold
icon_state = "pinkGold"
/obj/item/weapon/card/id/event/polymorphic
var/base_icon_state
/obj/item/weapon/card/id/event/polymorphic/digest_act(atom/movable/item_storage = null)
var/gimmeicon = icon
. = ..()
icon = gimmeicon
icon_state = base_icon_state + "_digested"
/obj/item/weapon/card/id/event/polymorphic/altcard/attack_self(var/mob/user)
if(configured == 1)
return ..()
else
icon_state = user.job
base_icon_state = user.job
return ..()
/obj/item/weapon/card/id/event/polymorphic/altcard
icon = 'icons/obj/card_alt_vr.dmi'
base_icon = 'icons/obj/card_alt_vr.dmi'
icon_state = "blank"
name = "contractor identification card"
desc = "An ID card typically used by contractors."
/obj/item/weapon/card/id/event/polymorphic/itg/attack_self(var/mob/user)
if(!configured)
var/list/jobs_to_icon = list( //ITG only has a few kinds of icons so we have to group them up!
"Pilot" = "itg",
"Visitor" = "itg",
"Quartermaster" = "itg",
"Cargo Technician" = "itg",
"Shaft Miner" = "itg",
"Intern" = "itg",
"Talon Pilot" = "itg",
"Talon Miner" = "itg",
"Bartender" = "itg_green",
"Botanist" = "itg_green",
"Chef" = "itg_green",
"Janitor" = "itg_green",
"Chaplain" = "itg_green",
"Entertainer" = "itg_green",
"Janitor" = "itg_green",
"Librarian" = "itg_green",
"Warden" = "itg_red",
"Detective" = "itg_red",
"Security Officer" = "itg_red",
"Talon Guard" = "itg_red",
"Roboticist" = "itg_purple",
"Scientist" = "itg_purple",
"Xenobiologist" = "itg_purple",
"Xenobotanist" = "itg_purple",
"Pathfinder" = "itg_purple",
"Explorer" = "itg_purple",
"Chemist" = "itg_white",
"Medical Doctor" = "itg_white",
"Paramedic" = "itg_white",
"Psychiatrist" = "itg_white",
"Field Medic" = "itg_white",
"Talon Doctor" = "itg_white",
"Atmospheric Technician" = "itg_orange",
"Engineer" = "itg_orange",
"Off-duty Officer" = "itg_red",
"Off-duty Engineer" = "itg_orange",
"Off-duty Medic" = "itg_white",
"Off-duty Scientist" = "itg_purple",
"Off-duty Cargo" = "itg",
"Off-duty Explorer" = "itg_purple",
"Off-duty Worker" = "itg_green"
)
var/guess = jobs_to_icon[user.job]
if(!guess)
to_chat(user, "<span class='notice'>ITG Cards do not seem to be able to accept the access codes for your ID.</span>")
return
else
icon_state = guess
base_icon_state = guess
. = ..()
name = user.name + "'s ITG ID card" + " ([assignment])"
/obj/item/weapon/card/id/event/polymorphic/itg/attackby(obj/item/I as obj, var/mob/user)
if(istype(I, /obj/item/weapon/card/id) && !accessset)
var/obj/item/weapon/card/id/O = I
var/list/itgdont = list("Site Manager", "Head of Personnel", "Command Secretary", "Head of Security", "Chief Engineer", "Chief Medical Officer", "Research Director", "Clown", "Mime", "Talon Captain") //If you're in as one of these you probably aren't representing ITG
if(O.rank in itgdont)
to_chat(user, "<span class='notice'>ITG Cards do not seem to be able to accept the access codes for your ID.</span>")
return
. = ..()
desc = "A small card designating affiliation with the Ironcrest Transport Group. It has a NanoTrasen insignia and a lot of very small print on the back to do with practices and regulations for contractors to use."
/obj/item/weapon/card/id/event/polymorphic/itg
icon = 'icons/obj/card_vr.dmi'
base_icon = 'icons/obj/card_vr.dmi'
icon_state = "itg"
name = "\improper ITG identification card"
desc = "A small card designating affiliation with the Ironcrest Transport Group. It has a NanoTrasen insignia and a lot of very small print on the back to do with practices and regulations for contractors to use."

View File

@@ -1,274 +0,0 @@
/obj/item/weapon/card/id/event
var/configured = 0
var/accessset = 0
initial_sprite_stack = list()
var/list/title_strings = list()
var/preset_rank = FALSE
/obj/item/weapon/card/id/event/attack_self(var/mob/user)
if(configured == 1)
return ..()
if(!preset_rank)
var/title
if(user.client.prefs.player_alt_titles[user.job])
title = user.client.prefs.player_alt_titles[user.job]
else
title = user.job
assignment = title
user.set_id_info(src)
if(user.mind && user.mind.initial_account)
associated_account_number = user.mind.initial_account.account_number
if(title_strings.len)
var/tempname = pick(title_strings)
name = tempname + " ([assignment] Contractor)"//Chompedit: Suffix contractor IDs
else
name = user.name + "'s ID card" + " ([assignment] Contractor)"//Chompedit: Suffix contractor IDs
configured = 1
to_chat(user, "<span class='notice'>Card settings set.</span>")
/obj/item/weapon/card/id/event/attackby(obj/item/I as obj, var/mob/user)
if(istype(I, /obj/item/weapon/card/id) && !accessset)
var/obj/item/weapon/card/id/O = I
access |= O.access
desc = I.desc
rank = O.rank
to_chat(user, "<span class='notice'>You copy the access from \the [I] to \the [src].</span>")
user.drop_from_inventory(I)
qdel(I)
accessset = 1
..()
/obj/item/weapon/card/id/event/accessset
accessset = 1
/obj/item/weapon/card/id/gold/captain/spare/fakespare
rank = "null"
/obj/item/weapon/card/id/event/accessset/itg
name = "identification card"
desc = "A small card designating affiliation with the Ironcrest Transport Group."
icon = 'icons/obj/card_vr.dmi'
base_icon = 'icons/obj/card_vr.dmi'
icon_state = "itg"
/obj/item/weapon/card/id/event/accessset/itg/green
icon_state = "itg_green"
/obj/item/weapon/card/id/event/accessset/itg/red
icon_state = "itg_red"
/obj/item/weapon/card/id/event/accessset/itg/purple
icon_state = "itg_purple"
/obj/item/weapon/card/id/event/accessset/itg/white
icon_state = "itg_white"
/obj/item/weapon/card/id/event/accessset/itg/orange
icon_state = "itg_orange"
/obj/item/weapon/card/id/event/accessset/itg/blue
icon_state = "itg_blue"
/obj/item/weapon/card/id/event/accessset/itg/crew
name = "\improper ITG Crew ID"
assignment = "Crew"
rank = "Crew"
access = list(777)
preset_rank = TRUE
/obj/item/weapon/card/id/event/accessset/itg/crew/pilot
name = "\improper ITG Pilot's ID"
desc = "An ID card belonging to the Pilot of an ITG vessel. The Pilot's responsibility is primarily to fly the ship. They may also be tasked to assist with cargo movement duties."
assignment = "Pilot"
rank = "Pilot"
/obj/item/weapon/card/id/event/accessset/itg/crew/service
name = "\improper ITG Cook's ID"
desc = "An ID card belonging to the Cook of an ITG vessel. The Cook's responsibility is primarily to provide sustinence to the crew and passengers. The Cook answers to the Passenger Liason. In the absence of a Passenger Liason, the Cook is also responsible for tending to passenger related care and duties."
assignment = "Cook"
rank = "Cook"
icon_state = "itg_green"
/obj/item/weapon/card/id/event/accessset/itg/crew/security
name = "\improper ITG Security's ID"
desc = "An ID card belonging to Security of an ITG vessel. Security's responsibility is primarily to protect the ship, cargo, or facility. They may also be tasked to assist with cargo movement duties and rescue operations. ITG Security is almost exclusively defensive. They should not start fights, but they are very capable of finishing them."
assignment = "Security"
rank = "Security"
icon_state = "itg_red"
/obj/item/weapon/card/id/event/accessset/itg/crew/research
name = "\improper ITG Research's ID"
desc = "An ID card belonging to ITG Research staff. ITG Research staff primarily specializes in starship and starship engine design, and overcoming astronomic phenomena."
assignment = "Research"
rank = "Research"
icon_state = "itg_purple"
/obj/item/weapon/card/id/event/accessset/itg/crew/medical
name = "\improper ITG Medic's ID"
desc = "An ID card belonging to the Medic of an ITG vessel. The Medic's responsibility is primarily to treat crew and passenger injuries. They may also be tasked with rescue operations."
assignment = "Medic"
rank = "Medic"
icon_state = "itg_white"
/obj/item/weapon/card/id/event/accessset/itg/crew/engineer
name = "\improper ITG Engineer's ID"
desc = "An ID card belonging to the Engineer of an ITG vessel. The Engineer's responsibility is primarily to maintain the ship. They may also be tasked to assist with cargo movement duties."
assignment = "Engineer"
rank = "Engineer"
icon_state = "itg_orange"
/obj/item/weapon/card/id/event/accessset/itg/crew/passengerliason
name = "\improper ITG Passenger Liason's ID"
desc = "An ID card belonging to the Passenger Liason of an ITG vessel. The Passenger Liason's responsibility is primarily to manage and tend to passenger needs and maintain supplies and facilities for passenger use."
assignment = "Passenger Liason"
rank = "Passenger Liason"
icon_state = "itg_blue"
/obj/item/weapon/card/id/event/accessset/itg/crew/captain
name = "\improper ITG Captain's ID"
desc = "An ID card belonging to the Captain of an ITG vessel. The Captain's responsibility is primarily to manage crew to ensure smooth ship operations. Captains often also often pilot the vessel when no dedicated pilot is assigned."
assignment = "Captain"
rank = "Captain"
icon_state = "itg_blue"
access = list(777, 778)
/obj/item/weapon/card/id/event/altcard
icon = 'icons/obj/card_alt_vr.dmi'
base_icon = 'icons/obj/card_alt_vr.dmi'
icon_state = "id"
/obj/item/weapon/card/id/event/altcard/spare
icon_state = "spare"
/obj/item/weapon/card/id/event/altcard/clown
icon_state = "Clown"
/obj/item/weapon/card/id/event/altcard/mime
icon_state = "Mime"
/obj/item/weapon/card/id/event/altcard/centcom
icon_state = "CentCom Officer"
/obj/item/weapon/card/id/event/altcard/ert
icon_state = "Emergency Responder"
/obj/item/weapon/card/id/event/altcard/nt
icon_state = "nanotrasen"
/obj/item/weapon/card/id/event/altcard/syndiegold
icon_state = "syndieGold"
/obj/item/weapon/card/id/event/altcard/syndie
icon_state = "syndie"
/obj/item/weapon/card/id/event/altcard/greengold
icon_state = "greenGold"
/obj/item/weapon/card/id/event/altcard/pink
icon_state = "pink"
/obj/item/weapon/card/id/event/altcard/pinkgold
icon_state = "pinkGold"
/obj/item/weapon/card/id/event/polymorphic
var/base_icon_state
/obj/item/weapon/card/id/event/polymorphic/digest_act(atom/movable/item_storage = null)
var/gimmeicon = icon
. = ..()
icon = gimmeicon
icon_state = base_icon_state + "_digested"
/obj/item/weapon/card/id/event/polymorphic/altcard/attack_self(var/mob/user)
if(configured == 1)
return ..()
else
icon_state = user.job
base_icon_state = user.job
return ..()
/obj/item/weapon/card/id/event/polymorphic/altcard
icon = 'icons/obj/card_alt_vr.dmi'
base_icon = 'icons/obj/card_alt_vr.dmi'
icon_state = "blank"
name = "contractor identification card"
desc = "An ID card typically used by contractors."
/obj/item/weapon/card/id/event/polymorphic/itg/attack_self(var/mob/user)
if(!configured)
var/list/jobs_to_icon = list( //ITG only has a few kinds of icons so we have to group them up!
"Pilot" = "itg",
"Visitor" = "itg",
"Quartermaster" = "itg",
"Cargo Technician" = "itg",
"Shaft Miner" = "itg",
"Intern" = "itg",
"Talon Pilot" = "itg",
"Talon Miner" = "itg",
"Bartender" = "itg_green",
"Botanist" = "itg_green",
"Chef" = "itg_green",
"Janitor" = "itg_green",
"Chaplain" = "itg_green",
"Entertainer" = "itg_green",
"Janitor" = "itg_green",
"Librarian" = "itg_green",
"Warden" = "itg_red",
"Detective" = "itg_red",
"Security Officer" = "itg_red",
"Talon Guard" = "itg_red",
"Roboticist" = "itg_purple",
"Scientist" = "itg_purple",
"Xenobiologist" = "itg_purple",
"Xenobotanist" = "itg_purple",
"Pathfinder" = "itg_purple",
"Explorer" = "itg_purple",
"Chemist" = "itg_white",
"Medical Doctor" = "itg_white",
"Paramedic" = "itg_white",
"Psychiatrist" = "itg_white",
"Field Medic" = "itg_white",
"Talon Doctor" = "itg_white",
"Atmospheric Technician" = "itg_orange",
"Engineer" = "itg_orange",
"Off-duty Officer" = "itg_red",
"Off-duty Engineer" = "itg_orange",
"Off-duty Medic" = "itg_white",
"Off-duty Scientist" = "itg_purple",
"Off-duty Cargo" = "itg",
"Off-duty Explorer" = "itg_purple",
"Off-duty Worker" = "itg_green"
)
var/guess = jobs_to_icon[user.job]
if(!guess)
to_chat(user, "<span class='notice'>ITG Cards do not seem to be able to accept the access codes for your ID.</span>")
return
else
icon_state = guess
base_icon_state = guess
. = ..()
name = user.name + "'s ITG ID card" + " ([assignment])"
/obj/item/weapon/card/id/event/polymorphic/itg/attackby(obj/item/I as obj, var/mob/user)
if(istype(I, /obj/item/weapon/card/id) && !accessset)
var/obj/item/weapon/card/id/O = I
var/list/itgdont = list("Site Manager", "Head of Personnel", "Command Secretary", "Head of Security", "Chief Engineer", "Chief Medical Officer", "Research Director", "Clown", "Mime", "Talon Captain") //If you're in as one of these you probably aren't representing ITG
if(O.rank in itgdont)
to_chat(user, "<span class='notice'>ITG Cards do not seem to be able to accept the access codes for your ID.</span>")
return
. = ..()
desc = "A small card designating affiliation with the Ironcrest Transport Group. It has a NanoTrasen insignia and a lot of very small print on the back to do with practices and regulations for contractors to use."
/obj/item/weapon/card/id/event/polymorphic/itg
icon = 'icons/obj/card_vr.dmi'
base_icon = 'icons/obj/card_vr.dmi'
icon_state = "itg"
name = "\improper ITG identification card"
desc = "A small card designating affiliation with the Ironcrest Transport Group. It has a NanoTrasen insignia and a lot of very small print on the back to do with practices and regulations for contractors to use."

View File

@@ -42,22 +42,35 @@ var/list/turf_edge_cache = list()
/turf/simulated/floor/outdoors/attackby(obj/item/C, mob/user)
if(can_dig && istype(C, /obj/item/weapon/shovel))
to_chat(user, SPAN_NOTICE("\The [user] begins digging into \the [src] with \the [C]."))
var/delay = (3 SECONDS * C.toolspeed)
user.setClickCooldown(delay)
if(do_after(user, delay, src))
if(!(locate(/obj/machinery/portable_atmospherics/hydroponics/soil) in contents))
var/obj/machinery/portable_atmospherics/hydroponics/soil/soil = new(src)
user.visible_message(SPAN_NOTICE("\The [src] digs \a [soil] into \the [src]."))
else
var/loot_type = get_loot_type()
if(loot_type)
loot_count--
var/obj/item/loot = new loot_type(src)
to_chat(user, SPAN_NOTICE("You dug up \a [loot]!"))
var/obj/item/weapon/shovel/our_shovel = C
if(our_shovel.grave_mode)
if(contents.len > 0)
to_chat(user, SPAN_WARNING("You can't dig here!"))
return
to_chat(user, SPAN_NOTICE("\The [user] begins digging into \the [src] with \the [C]."))
var/delay = (5 SECONDS * C.toolspeed)
user.setClickCooldown(delay)
if(do_after(user, delay, src))
new/obj/structure/closet/grave/dirthole(src)
to_chat(user, SPAN_NOTICE("You dug up \a hole!"))
return
else
to_chat(user, SPAN_NOTICE("\The [user] begins digging into \the [src] with \the [C]."))
var/delay = (3 SECONDS * C.toolspeed)
user.setClickCooldown(delay)
if(do_after(user, delay, src))
if(!(locate(/obj/machinery/portable_atmospherics/hydroponics/soil) in contents))
var/obj/machinery/portable_atmospherics/hydroponics/soil/soil = new(src)
user.visible_message(SPAN_NOTICE("\The [src] digs \a [soil] into \the [src]."))
else
to_chat(user, SPAN_NOTICE("You didn't find anything of note in \the [src]."))
return
var/loot_type = get_loot_type()
if(loot_type)
loot_count--
var/obj/item/loot = new loot_type(src)
to_chat(user, SPAN_NOTICE("You dug up \a [loot]!"))
else
to_chat(user, SPAN_NOTICE("You didn't find anything of note in \the [src]."))
return
. = ..()
/* VOREStation remove - handled by parent
@@ -189,3 +202,172 @@ CHOMP Removal End */
icon_state = "concrete_dark"
desc = "Some sort of material composite road."
edge_blending_priority = -1
/turf/simulated/floor/tiled/asteroid_steel/outdoors
name = "weathered tiles"
desc = "Old tiles left out in the elements."
outdoors = OUTDOORS_YES
edge_blending_priority = 1
/turf/simulated/floor/outdoors/newdirt
name = "dirt"
desc = "Looks dirty."
icon = 'icons/turf/outdoors_vr.dmi'
icon_state = "dirt0"
edge_blending_priority = 2
initial_flooring = /decl/flooring/outdoors/newdirt
/decl/flooring/outdoors/newdirt
name = "dirt"
desc = "Looks dirty."
icon = 'icons/turf/outdoors_vr.dmi'
icon_base = "dirt0"
footstep_sounds = list("human" = list(
'sound/effects/footstep/asteroid1.ogg',
'sound/effects/footstep/asteroid2.ogg',
'sound/effects/footstep/asteroid3.ogg',
'sound/effects/footstep/asteroid4.ogg',
'sound/effects/footstep/asteroid5.ogg',
'sound/effects/footstep/MedDirt1.ogg',
'sound/effects/footstep/MedDirt2.ogg',
'sound/effects/footstep/MedDirt3.ogg',
'sound/effects/footstep/MedDirt4.ogg'))
/turf/simulated/floor/outdoors/newdirt/Initialize(mapload)
var/possibledirts = list(
"dirt0" = 150,
"dirt1" = 25,
"dirt2" = 25,
"dirt3" = 25,
"dirt4" = 25,
"dirt5" = 10,
"dirt6" = 10,
"dirt7" = 3,
"dirt8" = 3,
"dirt9" = 1
)
flooring_override = pickweight(possibledirts)
return ..()
/turf/simulated/floor/outdoors/newdirt_nograss
name = "dirt"
desc = "Looks dirty."
icon = 'icons/turf/outdoors_vr.dmi'
icon_state = "dirt0"
edge_blending_priority = 2
initial_flooring = /decl/flooring/outdoors/newdirt
/turf/simulated/floor/outdoors/newdirt_nograss/Initialize(mapload)
var/possibledirts = list(
"dirt0" = 200,
"dirt6" = 20,
"dirt7" = 3,
"dirt8" = 3,
"dirt9" = 1
)
flooring_override = pickweight(possibledirts)
return ..()
/turf/simulated/floor/outdoors/sidewalk
name = "sidewalk"
desc = "Concrete shaped into a path!"
icon = 'icons/turf/outdoors_vr.dmi'
icon_state = "sidewalk"
edge_blending_priority = -1
movement_cost = -0.5
initial_flooring = /decl/flooring/outdoors/sidewalk
can_dirty = TRUE
/decl/flooring/outdoors/sidewalk
name = "sidewalk"
desc = "Concrete shaped into a path!"
icon = 'icons/turf/outdoors_vr.dmi'
icon_base = "sidewalk"
has_damage_range = 2
damage_temperature = T0C+1400
flags = TURF_REMOVE_CROWBAR | TURF_CAN_BREAK | TURF_CAN_BURN
build_type = /obj/item/stack/tile/floor/sidewalk
can_paint = 1
can_engrave = FALSE
footstep_sounds = list("human" = list(
'sound/effects/footstep/LightStone1.ogg',
'sound/effects/footstep/LightStone2.ogg',
'sound/effects/footstep/LightStone3.ogg',
'sound/effects/footstep/LightStone4.ogg',))
/obj/item/stack/tile/floor/sidewalk
name = "sidewalk tile"
singular_name = "floor tile"
desc = "A stone tile fit for covering a section of floor."
icon_state = "tile"
force = 6.0
matter = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT / 4)
throwforce = 15.0
throw_speed = 5
throw_range = 20
no_variants = FALSE
/turf/simulated/floor/outdoors/sidewalk/Initialize(mapload)
var/possibledirts = list(
"[initial(icon_state)]" = 150,
"[initial(icon_state)]1" = 3,
"[initial(icon_state)]2" = 3,
"[initial(icon_state)]3" = 3,
"[initial(icon_state)]4" = 3,
"[initial(icon_state)]5" = 3,
"[initial(icon_state)]6" = 2,
"[initial(icon_state)]7" = 2,
"[initial(icon_state)]8" = 2,
"[initial(icon_state)]9" = 2,
"[initial(icon_state)]10" = 2
)
flooring_override = pickweight(possibledirts)
return ..()
/turf/simulated/floor/outdoors/sidewalk/side
icon_state = "side-walk"
initial_flooring = /decl/flooring/outdoors/sidewalk/side
/decl/flooring/outdoors/sidewalk/side
icon_base = "sidewalk"
build_type = /obj/item/stack/tile/floor/sidewalk/side
/obj/item/stack/tile/floor/sidewalk/side
/turf/simulated/floor/outdoors/sidewalk/slab
icon_state = "slab"
initial_flooring = /decl/flooring/outdoors/sidewalk/slab
/decl/flooring/outdoors/sidewalk/slab
icon_base = "slab"
build_type = /obj/item/stack/tile/floor/sidewalk/slab
/obj/item/stack/tile/floor/sidewalk/slab/
/turf/simulated/floor/outdoors/sidewalk/slab/city
icon_state = "cityslab"
initial_flooring = /decl/flooring/outdoors/sidewalk/slab/city
/decl/flooring/outdoors/sidewalk/slab/city
icon_base = "cityslab"
build_type = /obj/item/stack/tile/floor/sidewalk/slab/city
/obj/item/stack/tile/floor/sidewalk/slab/city
/obj/item/stack/tile/floor/concrete //Proper concrete tile.
name = "concrete tile"
singular_name = "floor tile"
desc = "A concrete tile fit for covering a section of floor."
icon_state = "tile"
force = 6.0
matter = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT / 4)
throwforce = 15.0
throw_speed = 5
throw_range = 20
no_variants = TRUE
/decl/flooring/concrete
build_type = /obj/item/stack/tile/floor/concrete

View File

@@ -1,168 +0,0 @@
/turf/simulated/floor/tiled/asteroid_steel/outdoors
name = "weathered tiles"
desc = "Old tiles left out in the elements."
outdoors = OUTDOORS_YES
edge_blending_priority = 1
/turf/simulated/floor/outdoors/newdirt
name = "dirt"
desc = "Looks dirty."
icon = 'icons/turf/outdoors_vr.dmi'
icon_state = "dirt0"
edge_blending_priority = 2
initial_flooring = /decl/flooring/outdoors/newdirt
/decl/flooring/outdoors/newdirt
name = "dirt"
desc = "Looks dirty."
icon = 'icons/turf/outdoors_vr.dmi'
icon_base = "dirt0"
footstep_sounds = list("human" = list(
'sound/effects/footstep/asteroid1.ogg',
'sound/effects/footstep/asteroid2.ogg',
'sound/effects/footstep/asteroid3.ogg',
'sound/effects/footstep/asteroid4.ogg',
'sound/effects/footstep/asteroid5.ogg',
'sound/effects/footstep/MedDirt1.ogg',
'sound/effects/footstep/MedDirt2.ogg',
'sound/effects/footstep/MedDirt3.ogg',
'sound/effects/footstep/MedDirt4.ogg'))
/turf/simulated/floor/outdoors/newdirt/Initialize(mapload)
var/possibledirts = list(
"dirt0" = 150,
"dirt1" = 25,
"dirt2" = 25,
"dirt3" = 25,
"dirt4" = 25,
"dirt5" = 10,
"dirt6" = 10,
"dirt7" = 3,
"dirt8" = 3,
"dirt9" = 1
)
flooring_override = pickweight(possibledirts)
return ..()
/turf/simulated/floor/outdoors/newdirt_nograss
name = "dirt"
desc = "Looks dirty."
icon = 'icons/turf/outdoors_vr.dmi'
icon_state = "dirt0"
edge_blending_priority = 2
initial_flooring = /decl/flooring/outdoors/newdirt
/turf/simulated/floor/outdoors/newdirt_nograss/Initialize(mapload)
var/possibledirts = list(
"dirt0" = 200,
"dirt6" = 20,
"dirt7" = 3,
"dirt8" = 3,
"dirt9" = 1
)
flooring_override = pickweight(possibledirts)
return ..()
/turf/simulated/floor/outdoors/sidewalk
name = "sidewalk"
desc = "Concrete shaped into a path!"
icon = 'icons/turf/outdoors_vr.dmi'
icon_state = "sidewalk"
edge_blending_priority = -1
movement_cost = -0.5
initial_flooring = /decl/flooring/outdoors/sidewalk
can_dirty = TRUE
/decl/flooring/outdoors/sidewalk
name = "sidewalk"
desc = "Concrete shaped into a path!"
icon = 'icons/turf/outdoors_vr.dmi'
icon_base = "sidewalk"
has_damage_range = 2
damage_temperature = T0C+1400
flags = TURF_REMOVE_CROWBAR | TURF_CAN_BREAK | TURF_CAN_BURN
build_type = /obj/item/stack/tile/floor/sidewalk
can_paint = 1
can_engrave = FALSE
footstep_sounds = list("human" = list(
'sound/effects/footstep/LightStone1.ogg',
'sound/effects/footstep/LightStone2.ogg',
'sound/effects/footstep/LightStone3.ogg',
'sound/effects/footstep/LightStone4.ogg',))
/obj/item/stack/tile/floor/sidewalk
name = "sidewalk tile"
singular_name = "floor tile"
desc = "A stone tile fit for covering a section of floor."
icon_state = "tile"
force = 6.0
matter = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT / 4)
throwforce = 15.0
throw_speed = 5
throw_range = 20
no_variants = FALSE
/turf/simulated/floor/outdoors/sidewalk/Initialize(mapload)
var/possibledirts = list(
"[initial(icon_state)]" = 150,
"[initial(icon_state)]1" = 3,
"[initial(icon_state)]2" = 3,
"[initial(icon_state)]3" = 3,
"[initial(icon_state)]4" = 3,
"[initial(icon_state)]5" = 3,
"[initial(icon_state)]6" = 2,
"[initial(icon_state)]7" = 2,
"[initial(icon_state)]8" = 2,
"[initial(icon_state)]9" = 2,
"[initial(icon_state)]10" = 2
)
flooring_override = pickweight(possibledirts)
return ..()
/turf/simulated/floor/outdoors/sidewalk/side
icon_state = "side-walk"
initial_flooring = /decl/flooring/outdoors/sidewalk/side
/decl/flooring/outdoors/sidewalk/side
icon_base = "sidewalk"
build_type = /obj/item/stack/tile/floor/sidewalk/side
/obj/item/stack/tile/floor/sidewalk/side
/turf/simulated/floor/outdoors/sidewalk/slab
icon_state = "slab"
initial_flooring = /decl/flooring/outdoors/sidewalk/slab
/decl/flooring/outdoors/sidewalk/slab
icon_base = "slab"
build_type = /obj/item/stack/tile/floor/sidewalk/slab
/obj/item/stack/tile/floor/sidewalk/slab/
/turf/simulated/floor/outdoors/sidewalk/slab/city
icon_state = "cityslab"
initial_flooring = /decl/flooring/outdoors/sidewalk/slab/city
/decl/flooring/outdoors/sidewalk/slab/city
icon_base = "cityslab"
build_type = /obj/item/stack/tile/floor/sidewalk/slab/city
/obj/item/stack/tile/floor/sidewalk/slab/city
/obj/item/stack/tile/floor/concrete //Proper concrete tile.
name = "concrete tile"
singular_name = "floor tile"
desc = "A concrete tile fit for covering a section of floor."
icon_state = "tile"
force = 6.0
matter = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT / 4)
throwforce = 15.0
throw_speed = 5
throw_range = 20
no_variants = TRUE
/decl/flooring/concrete
build_type = /obj/item/stack/tile/floor/concrete

View File

@@ -20,7 +20,7 @@
item_state = "pickaxe"
w_class = ITEMSIZE_LARGE
matter = list(MAT_STEEL = 2500)
var/digspeed = 40 //moving the delay to an item var so R&D can make improved picks. --NEO
var/digspeed = 36 //moving the delay to an item var so R&D can make improved picks. --NEO
var/sand_dig = FALSE // does this thing dig sand?
origin_tech = list(TECH_MATERIAL = 1)
attack_verb = list("hit", "pierced", "sliced", "attacked")
@@ -35,7 +35,7 @@
name = "silver pickaxe"
icon_state = "spickaxe"
item_state = "spickaxe"
digspeed = 30
digspeed = 27
origin_tech = list(TECH_MATERIAL = 3)
desc = "This makes no metallurgic sense."
@@ -43,7 +43,7 @@
name = "golden pickaxe"
icon_state = "gpickaxe"
item_state = "gpickaxe"
digspeed = 20
digspeed = 18
origin_tech = list(TECH_MATERIAL = 4)
desc = "This makes no metallurgic sense."
drill_verb = "picking"
@@ -52,7 +52,7 @@
name = "diamond pickaxe"
icon_state = "dpickaxe"
item_state = "dpickaxe"
digspeed = 10
digspeed = 9
origin_tech = list(TECH_MATERIAL = 6, TECH_ENGINEERING = 4)
desc = "A pickaxe with a diamond pick head."
drill_verb = "picking"
@@ -63,7 +63,7 @@
name = "mining drill" // Can dig sand as well!
icon_state = "drill"
item_state = "jackhammer"
digspeed = 35 //Only slighty better than a pickaxe
digspeed = 30 //Only slighty better than a pickaxe
sand_dig = TRUE
origin_tech = list(TECH_MATERIAL = 1, TECH_POWER = 2, TECH_ENGINEERING = 1)
matter = list(MAT_STEEL = 3750)
@@ -74,7 +74,7 @@
name = "advanced mining drill" // Can dig sand as well!
icon_state = "advdrill"
item_state = "jackhammer"
digspeed = 30
digspeed = 27
sand_dig = TRUE
origin_tech = list(TECH_MATERIAL = 2, TECH_POWER = 3, TECH_ENGINEERING = 2)
matter = list(MAT_STEEL = 4000, MAT_PLASTEEL = 2500)
@@ -85,7 +85,7 @@
name = "diamond mining drill"
icon_state = "diamonddrill"
item_state = "jackhammer"
digspeed = 5 //Digs through walls, girders, and can dig up sand
digspeed = 4 //Digs through walls, girders, and can dig up sand
sand_dig = TRUE
origin_tech = list(TECH_MATERIAL = 6, TECH_POWER = 4, TECH_ENGINEERING = 5)
matter = list(MAT_STEEL = 4500, MAT_PLASTEEL = 3000, MAT_DIAMONDS = 1000)
@@ -96,19 +96,21 @@
name = "sonic jackhammer"
icon_state = "jackhammer"
item_state = "jackhammer"
digspeed = 20 //faster than drill, but cannot dig
digspeed = 18 //faster than drill, but cannot dig
origin_tech = list(TECH_MATERIAL = 3, TECH_POWER = 2, TECH_ENGINEERING = 2)
desc = "Cracks rocks with sonic blasts, perfect for killing cave lizards."
drill_verb = "hammering"
destroy_artefacts = TRUE
/obj/item/weapon/pickaxe/borgdrill
name = "jackhammer"
icon_state = "borg_pick"
item_state = "jackhammer"
digspeed = 15
digspeed = 13
sand_dig = TRUE
desc = "Cracks rocks with a hardened pneumatic bit."
drill_verb = "hammering"
destroy_artefacts = TRUE
/obj/item/weapon/pickaxe/plasmacutter
name = "plasma cutter"
@@ -117,7 +119,7 @@
item_state = "plasmacutter"
w_class = ITEMSIZE_NORMAL //it is smaller than the pickaxe
damtype = "fire"
digspeed = 20 //Can slice though normal walls, all girders, or be used in reinforced wall deconstruction/light thermite on fire
digspeed = 18 //Can slice though normal walls, all girders, or be used in reinforced wall deconstruction/light thermite on fire
origin_tech = list(TECH_MATERIAL = 4, TECH_PHORON = 3, TECH_ENGINEERING = 3)
matter = list(MAT_STEEL = 3000, MAT_PLASTEEL = 1500, MAT_DIAMONDS = 500, MAT_PHORON = 500)
drill_verb = "cutting"
@@ -133,7 +135,7 @@
/obj/item/weapon/shovel
name = "shovel"
desc = "A large tool for digging and moving dirt."
desc = "A large tool for digging and moving dirt. Alt click to switch modes."
icon = 'icons/obj/items.dmi'
icon_state = "shovel"
item_state = "shovel"
@@ -147,6 +149,12 @@
sharp = FALSE
edge = TRUE
var/digspeed = 40
var/grave_mode = FALSE
/obj/item/weapon/shovel/AltClick(mob/user)
grave_mode = !grave_mode
to_chat(user, span_notice("You'll now dig [grave_mode ? "out graves" : "for loot"]."))
. = ..()
/obj/item/weapon/shovel/wood
icon_state = "whiteshovel"

View File

@@ -1,35 +0,0 @@
//upgrades the speed of all drills and pickaxes.
//Pickaxes
/obj/item/weapon/pickaxe
digspeed = 36
/obj/item/weapon/pickaxe/silver
digspeed = 27
/obj/item/weapon/pickaxe/diamond
digspeed = 9
/obj/item/weapon/pickaxe/gold
digspeed = 18
//Drills
/obj/item/weapon/pickaxe/drill
digspeed = 30
/obj/item/weapon/pickaxe/advdrill
digspeed = 27
/obj/item/weapon/pickaxe/jackhammer
digspeed = 18
destroy_artefacts = TRUE
/obj/item/weapon/pickaxe/diamonddrill
digspeed = 4
/obj/item/weapon/pickaxe/borgdrill
digspeed = 13
destroy_artefacts = TRUE
/obj/item/weapon/pickaxe/plasmacutter
digspeed = 18

View File

@@ -8,6 +8,8 @@
// Override the DreamSeeker macro with the borg version!
client.set_hotkeys_macro("borgmacro", "borghotkeymode")
repick_laws()
// Forces synths to select an icon relevant to their module
if(!icon_selected)
icon_selection_tries = SSrobot_sprites.get_module_sprites_len(modtype, src) + 1
@@ -16,4 +18,4 @@
if(sprite_datum && module)
sprite_datum.do_equipment_glamour(module)
plane_holder.set_vis(VIS_AUGMENTED, TRUE)
plane_holder.set_vis(VIS_AUGMENTED, TRUE)

View File

@@ -122,6 +122,12 @@
var/has_recoloured = FALSE
var/vtec_active = FALSE
// Riding Stuff
max_buckled_mobs = 1 //Yeehaw
can_buckle = TRUE
buckle_movable = TRUE
buckle_lying = FALSE
/mob/living/silicon/robot/New(loc, var/unfinished = 0)
spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, src)
@@ -183,6 +189,7 @@
hud_list[IMPTRACK_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_IMPTRACK)
hud_list[SPECIALROLE_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_SPECIAL)
riding_datum = new /datum/riding/dogborg(src)
/mob/living/silicon/robot/LateInitialize()
@@ -861,71 +868,79 @@
to_chat(usr, "You've already recoloured yourself once. Ask for a module reset for another.")
/mob/living/silicon/robot/attack_hand(mob/user)
if(LAZYLEN(buckled_mobs))
//We're getting off!
if(user in buckled_mobs)
riding_datum.force_dismount(user)
//We're kicking everyone off!
if(user == src)
for(var/rider in buckled_mobs)
riding_datum.force_dismount(rider)
else
add_fingerprint(user)
add_fingerprint(user)
if(opened && !wiresexposed && (!istype(user, /mob/living/silicon)))
var/datum/robot_component/cell_component = components["power cell"]
if(cell)
cell.update_icon()
cell.add_fingerprint(user)
user.put_in_active_hand(cell)
to_chat(user, "<span class='filter_notice'>You remove \the [cell].</span>")
cell = null
cell_component.wrapped = null
cell_component.installed = 0
update_icon()
else if(cell_component.installed == -1)
cell_component.installed = 0
var/obj/item/broken_device = cell_component.wrapped
to_chat(user, "<span class='filter_notice'>You remove \the [broken_device].</span>")
user.put_in_active_hand(broken_device)
if(opened && !wiresexposed && (!istype(user, /mob/living/silicon)))
var/datum/robot_component/cell_component = components["power cell"]
if(cell)
cell.update_icon()
cell.add_fingerprint(user)
user.put_in_active_hand(cell)
to_chat(user, "<span class='filter_notice'>You remove \the [cell].</span>")
cell = null
cell_component.wrapped = null
cell_component.installed = 0
update_icon()
else if(cell_component.installed == -1)
cell_component.installed = 0
var/obj/item/broken_device = cell_component.wrapped
to_chat(user, "<span class='filter_notice'>You remove \the [broken_device].</span>")
user.put_in_active_hand(broken_device)
if(istype(user,/mob/living/carbon/human) && !opened)
var/mob/living/carbon/human/H = user
//Adding borg petting. Help intent pets if preferences allow, Disarm intent taps and Harm is punching(no damage)
switch(H.a_intent)
if(I_HELP)
if(client && !client.prefs.borg_petting)
visible_message("<span class='notice'>[H] reaches out for [src], but quickly refrains from petting.</span>")
if(istype(user,/mob/living/carbon/human) && !opened)
var/mob/living/carbon/human/H = user
//Adding borg petting. Help intent pets if preferences allow, Disarm intent taps and Harm is punching(no damage)
switch(H.a_intent)
if(I_HELP)
if(client && !client.prefs.borg_petting)
visible_message("<span class='notice'>[H] reaches out for [src], but quickly refrains from petting.</span>")
return
else
visible_message("<span class='notice'>[H] pets [src].</span>")
return
if(I_HURT)
H.do_attack_animation(src)
if(H.species.can_shred(H))
attack_generic(H, rand(30,50), "slashed")
return
else
playsound(src.loc, 'sound/effects/bang.ogg', 10, 1)
visible_message("<span class='warning'>[H] punches [src], but doesn't leave a dent.</span>")
return
if(I_DISARM)
H.do_attack_animation(src)
playsound(src.loc, 'sound/effects/clang2.ogg', 10, 1)
visible_message("<span class='warning'>[H] taps [src].</span>")
return
else
visible_message("<span class='notice'>[H] pets [src].</span>")
return
if(I_HURT)
H.do_attack_animation(src)
if(H.species.can_shred(H))
attack_generic(H, rand(30,50), "slashed")
return
else
playsound(src.loc, 'sound/effects/bang.ogg', 10, 1)
visible_message("<span class='warning'>[H] punches [src], but doesn't leave a dent.</span>")
return
if(I_DISARM)
H.do_attack_animation(src)
playsound(src.loc, 'sound/effects/clang2.ogg', 10, 1)
visible_message("<span class='warning'>[H] taps [src].</span>")
return
if(I_GRAB)
if(is_vore_predator(H) && H.devourable && src.feeding && src.devourable)
var/switchy = tgui_alert(H, "Do you wish to eat [src] or feed yourself to them?", "Feed or Eat",list("Nevermind!", "Eat","Feed"))
switch(switchy)
if("Nevermind!")
return
if("Eat")
if(I_GRAB)
if(is_vore_predator(H) && H.devourable && src.feeding && src.devourable)
var/switchy = tgui_alert(H, "Do you wish to eat [src] or feed yourself to them?", "Feed or Eat",list("Nevermind!", "Eat","Feed"))
switch(switchy)
if("Nevermind!")
return
if("Eat")
feed_grabbed_to_self(H, src)
return
if("Feed")
H.feed_self_to_grabbed(H, src)
return
if(is_vore_predator(H) && src.devourable)
if(tgui_alert(H, "Do you wish to eat [src]?", "Eat?",list("Nevermind!", "Yes!")) == "Yes!")
feed_grabbed_to_self(H, src)
return
if("Feed")
if(H.devourable && src.feeding)
if(tgui_alert(H, "Do you wish to feed yourself to [src]?", "Feed?",list("Nevermind!", "Yes!")) == "Yes!")
H.feed_self_to_grabbed(H, src)
return
if(is_vore_predator(H) && src.devourable)
if(tgui_alert(H, "Do you wish to eat [src]?", "Eat?",list("Nevermind!", "Yes!")) == "Yes!")
feed_grabbed_to_self(H, src)
return
if(H.devourable && src.feeding)
if(tgui_alert(H, "Do you wish to feed yourself to [src]?", "Feed?",list("Nevermind!", "Yes!")) == "Yes!")
H.feed_self_to_grabbed(H, src)
return
//Robots take half damage from basic attacks.
/mob/living/silicon/robot/attack_generic(var/mob/user, var/damage, var/attack_message)
@@ -1341,6 +1356,9 @@
to_chat(usr, "You [sensor_type ? "enable" : "disable"] your sensors.") //VOREStation Add
toggle_sensor_mode()
/mob/living/silicon/robot/proc/repick_laws()
return
/mob/living/silicon/robot/proc/add_robot_verbs()
add_verb(src,robot_verbs_default) //CHOMPEdit TGPanel
add_verb(src,silicon_subsystems) //CHOMPEdit TGPanel
@@ -1565,6 +1583,112 @@
if(!rest_style)
rest_style = "Default"
/mob/living/silicon/robot/verb/robot_nom(var/mob/living/T in living_mobs_in_view(1)) //CHOMPEdit
set name = "Robot Nom"
set category = "Abilities.Vore" //CHOMPEdit
set desc = "Allows you to eat someone."
if (stat != CONSCIOUS)
return
return feed_grabbed_to_self(src,T)
//RIDING
/datum/riding/dogborg
keytype = /obj/item/weapon/material/twohanded/riding_crop // Crack!
nonhuman_key_exemption = FALSE // If true, nonhumans who can't hold keys don't need them, like borgs and simplemobs.
key_name = "a riding crop" // What the 'keys' for the thing being rided on would be called.
only_one_driver = TRUE // If true, only the person in 'front' (first on list of riding mobs) can drive.
/datum/riding/dogborg/handle_vehicle_layer()
ridden.layer = initial(ridden.layer)
/datum/riding/dogborg/ride_check(mob/living/M)
var/mob/living/L = ridden
if(L.stat)
force_dismount(M)
return FALSE
return TRUE
/datum/riding/dogborg/force_dismount(mob/M)
. =..()
ridden.visible_message("<span class='notice'>[M] stops riding [ridden]!</span>")
//Hoooo boy.
/datum/riding/dogborg/get_offsets(pass_index) // list(dir = x, y, layer)
var/mob/living/L = ridden
var/scale = L.size_multiplier
var/scale_difference = (L.size_multiplier - rider_size) * 10
var/list/values = list(
"[NORTH]" = list(0, 10*scale + scale_difference, ABOVE_MOB_LAYER),
"[SOUTH]" = list(0, 10*scale + scale_difference, BELOW_MOB_LAYER),
"[EAST]" = list(-5*scale, 10*scale + scale_difference, ABOVE_MOB_LAYER),
"[WEST]" = list(5*scale, 10*scale + scale_difference, ABOVE_MOB_LAYER))
return values
/mob/living/silicon/robot/buckle_mob(mob/living/M, forced = FALSE, check_loc = TRUE)
if(forced)
return ..() // Skip our checks
if(lying)
return FALSE
if(!ishuman(M))
return FALSE
if(M in buckled_mobs)
return FALSE
if(M.size_multiplier > size_multiplier * 1.2)
to_chat(src, "<span class='warning'>This isn't a pony show! You need to be bigger for them to ride.</span>")
return FALSE
var/mob/living/carbon/human/H = M
if(istaurtail(H.tail_style))
to_chat(src, "<span class='warning'>Too many legs. TOO MANY LEGS!!</span>")
return FALSE
if(M.loc != src.loc)
if(M.Adjacent(src))
M.forceMove(get_turf(src))
. = ..()
if(.)
riding_datum.rider_size = M.size_multiplier
buckled_mobs[M] = "riding"
/mob/living/silicon/robot/MouseDrop_T(mob/living/M, mob/living/user) //Prevention for forced relocation caused by can_buckle. Base proc has no other use.
return
/mob/living/silicon/robot/proc/robot_mount(var/mob/living/M in living_mobs(1))
set name = "Robot Mount/Dismount"
set category = "Abilities.General" //CHOMPEdit
set desc = "Let people ride on you."
if(LAZYLEN(buckled_mobs))
for(var/rider in buckled_mobs)
riding_datum.force_dismount(rider)
return
if (stat != CONSCIOUS)
return
if(!can_buckle || !istype(M) || !M.Adjacent(src) || M.buckled)
return
if(buckle_mob(M))
visible_message("<span class='notice'>[M] starts riding [name]!</span>")
/mob/living/silicon/robot/onTransitZ(old_z, new_z)
if(shell)
if(deployed && using_map.ai_shell_restricted && !(new_z in using_map.ai_shell_allowed_levels))
to_chat(src, "<span class='warning'>Your connection with the shell is suddenly interrupted!</span>")
undeploy()
..()
//CHOMPAdd Start
/mob/living/silicon/robot/use_power()
if(cell && cell.charge < cell.maxcharge)
if(nutrition >= 1 * CYBORG_POWER_USAGE_MULTIPLIER)
nutrition -= 1 * CYBORG_POWER_USAGE_MULTIPLIER
cell.charge += 10 * CYBORG_POWER_USAGE_MULTIPLIER
..()
//CHOMPAdd End
// Those basic ones require quite detailled checks on the robot's vars to see if they are installed!
/mob/living/silicon/robot/proc/has_basic_upgrade(var/given_type)
if(given_type == /obj/item/borg/upgrade/basic/vtec)

View File

@@ -1,126 +0,0 @@
/mob/living/silicon/robot/verb/robot_nom(var/mob/living/T in living_mobs_in_view(1))
set name = "Robot Nom"
set category = "Abilities.Vore" //CHOMPEdit
set desc = "Allows you to eat someone."
if (stat != CONSCIOUS)
return
return feed_grabbed_to_self(src,T)
//RIDING
/datum/riding/dogborg
keytype = /obj/item/weapon/material/twohanded/riding_crop // Crack!
nonhuman_key_exemption = FALSE // If true, nonhumans who can't hold keys don't need them, like borgs and simplemobs.
key_name = "a riding crop" // What the 'keys' for the thing being rided on would be called.
only_one_driver = TRUE // If true, only the person in 'front' (first on list of riding mobs) can drive.
/datum/riding/dogborg/handle_vehicle_layer()
ridden.layer = initial(ridden.layer)
/datum/riding/dogborg/ride_check(mob/living/M)
var/mob/living/L = ridden
if(L.stat)
force_dismount(M)
return FALSE
return TRUE
/datum/riding/dogborg/force_dismount(mob/M)
. =..()
ridden.visible_message("<span class='notice'>[M] stops riding [ridden]!</span>")
//Hoooo boy.
/datum/riding/dogborg/get_offsets(pass_index) // list(dir = x, y, layer)
var/mob/living/L = ridden
var/scale = L.size_multiplier
var/scale_difference = (L.size_multiplier - rider_size) * 10
var/list/values = list(
"[NORTH]" = list(0, 10*scale + scale_difference, ABOVE_MOB_LAYER),
"[SOUTH]" = list(0, 10*scale + scale_difference, BELOW_MOB_LAYER),
"[EAST]" = list(-5*scale, 10*scale + scale_difference, ABOVE_MOB_LAYER),
"[WEST]" = list(5*scale, 10*scale + scale_difference, ABOVE_MOB_LAYER))
return values
//Human overrides for taur riding
/mob/living/silicon/robot
max_buckled_mobs = 1 //Yeehaw
can_buckle = TRUE
buckle_movable = TRUE
buckle_lying = FALSE
/mob/living/silicon/robot/New(loc,var/unfinished = 0)
..()
riding_datum = new /datum/riding/dogborg(src)
/mob/living/silicon/robot/buckle_mob(mob/living/M, forced = FALSE, check_loc = TRUE)
if(forced)
return ..() // Skip our checks
if(lying)
return FALSE
if(!ishuman(M))
return FALSE
if(M in buckled_mobs)
return FALSE
if(M.size_multiplier > size_multiplier * 1.2)
to_chat(src, "<span class='warning'>This isn't a pony show! You need to be bigger for them to ride.</span>")
return FALSE
var/mob/living/carbon/human/H = M
if(istaurtail(H.tail_style))
to_chat(src, "<span class='warning'>Too many legs. TOO MANY LEGS!!</span>")
return FALSE
if(M.loc != src.loc)
if(M.Adjacent(src))
M.forceMove(get_turf(src))
. = ..()
if(.)
riding_datum.rider_size = M.size_multiplier
buckled_mobs[M] = "riding"
/mob/living/silicon/robot/MouseDrop_T(mob/living/M, mob/living/user) //Prevention for forced relocation caused by can_buckle. Base proc has no other use.
return
/mob/living/silicon/robot/attack_hand(mob/user as mob)
if(LAZYLEN(buckled_mobs) && riding_datum) //CHOMPEdit
//We're getting off!
if(user in buckled_mobs)
riding_datum.force_dismount(user)
//We're kicking everyone off!
if(user == src)
for(var/rider in buckled_mobs)
riding_datum.force_dismount(rider)
else
. = ..()
/mob/living/silicon/robot/proc/robot_mount(var/mob/living/M in living_mobs(1))
set name = "Robot Mount/Dismount"
set category = "Abilities.General" //CHOMPEdit
set desc = "Let people ride on you."
if(LAZYLEN(buckled_mobs))
for(var/rider in buckled_mobs)
riding_datum.force_dismount(rider)
return
if (stat != CONSCIOUS)
return
if(!can_buckle || !istype(M) || !M.Adjacent(src) || M.buckled)
return
if(buckle_mob(M))
visible_message("<span class='notice'>[M] starts riding [name]!</span>")
/mob/living/silicon/robot/onTransitZ(old_z, new_z)
if(shell)
if(deployed && using_map.ai_shell_restricted && !(new_z in using_map.ai_shell_allowed_levels))
to_chat(src, "<span class='warning'>Your connection with the shell is suddenly interrupted!</span>")
undeploy()
..()
/mob/living/silicon/robot/use_power() //CHOMPAdd
if(cell && cell.charge < cell.maxcharge)
if(nutrition >= 1 * CYBORG_POWER_USAGE_MULTIPLIER)
nutrition -= 1 * CYBORG_POWER_USAGE_MULTIPLIER
cell.charge += 10 * CYBORG_POWER_USAGE_MULTIPLIER
..()

View File

@@ -5,7 +5,7 @@
modtype = "Gravekeeper"
lawchannel = "State"
braintype = "Drone"
idcard_type = /obj/item/weapon/card/id
idcard_type = /obj/item/weapon/card/id/lost
icon_selected = FALSE
can_be_antagged = FALSE
restrict_modules_to = list("Gravekeeper")

View File

@@ -5,9 +5,10 @@
modtype = "Lost"
lawchannel = "State"
braintype = "Drone"
idcard_type = /obj/item/weapon/card/id
idcard_type = /obj/item/weapon/card/id/lost
icon_selected = FALSE
restrict_modules_to = list("Lost")
var/law_retries = 5
/mob/living/silicon/robot/lost/init()
aiCamera = new/obj/item/device/camera/siliconcam/robot_camera(src)
@@ -22,22 +23,59 @@
if(!cell)
cell = new /obj/item/weapon/cell/high(src) // 15k cell, as recharging stations are a lot more rare on the Surface.
scramble_hardware()
playsound(src, 'sound/mecha/nominalsyndi.ogg', 75, 0)
/mob/living/silicon/robot/lost/speech_bubble_appearance()
return "synthetic_evil"
/mob/living/silicon/robot/lost/proc/scramble_hardware(var/chance)
if(prob(20)) //Small chance to spawn with a scrambled
emag_items = 1
/mob/living/silicon/robot/lost/proc/apply_new_laws()
return
/mob/living/silicon/robot/lost/randomlaws
/mob/living/silicon/robot/lost/randomlaws/apply_new_laws()
var/old_name = laws.name
laws = give_random_lawset()
if(old_name == laws.name)
apply_new_laws()
/mob/living/silicon/robot/lost/randomlaws/init()
..()
laws = give_random_lawset()
apply_new_laws()
/mob/living/silicon/robot/lost/randomlaws/vore
/mob/living/silicon/robot/lost/randomlaws/vore/init()
..()
/mob/living/silicon/robot/lost/randomlaws/vore/apply_new_laws()
var/old_name = laws.name
laws = give_random_lawset_vore(100)
if(old_name == laws.name)
apply_new_laws()
/mob/living/silicon/robot/lost/randomlaws/mixed
/mob/living/silicon/robot/lost/randomlaws/mixed/apply_new_laws()
var/old_name = laws.name
laws = give_random_lawset_vore(60)
if(old_name == laws.name)
apply_new_laws()
/mob/living/silicon/robot/lost/randomlaws/repick_laws()
while(law_retries)
var/confirm = tgui_alert(src, "Do you want to keep your laws or reroll? (For specific laws, feel free to ahelp and we'll see what we can do)", "Confirm laws", list("Keep", "Reroll ([law_retries])"))
if(findtext(confirm, regex("Reroll \\(\[0-9\]*\\)", "")))
apply_new_laws()
to_chat(src, "<b>Obey these laws:</b>")
laws.show_laws(src)
law_retries --
else
break
return
// Returns a random ai_laws datum.
/mob/living/silicon/proc/give_random_lawset()
@@ -139,11 +177,8 @@
if(5) // Manicial laugher here.
return new /datum/ai_laws/tyrant()
return
/mob/living/silicon/proc/give_random_lawset_vore(var/vore_chance = 100)
// Decide what kind of laws we want to draw from.
var/law_class = pick(
@@ -297,6 +332,4 @@
if(5) // Manicial laugher here.
return new /datum/ai_laws/tyrant()
return

View File

@@ -1,190 +0,0 @@
/mob/living/silicon/robot/stray
lawupdate = 0
scrambledcodes = 1
icon_state = "stray"
modtype = "Stray"
lawchannel = "State"
braintype = "Drone"
idcard_type = /obj/item/weapon/card/id
icon_selected = FALSE
/mob/living/silicon/robot/stray/init()
aiCamera = new/obj/item/device/camera/siliconcam/robot_camera(src)
mmi = new /obj/item/device/mmi/digital/robot(src) // Explicitly a drone.
module = new /obj/item/weapon/robot_module/robot/stray(src)
cut_overlays()
init_id()
updatename("Stray")
if(!cell)
cell = new /obj/item/weapon/cell/high(src) // 15k cell, as recharging stations are a lot more rare on the Surface.
playsound(src, 'sound/mecha/nominalsyndi.ogg', 75, 0)
/mob/living/silicon/robot/stray/speech_bubble_appearance()
return "synthetic_evil"
/mob/living/silicon/robot/stray/randomlaws
/mob/living/silicon/robot/stray/randomlaws/init()
..()
laws = give_random_lawset_vore(60)
/mob/living/silicon/proc/give_random_lawset_vore(var/vore_chance = 100)
// Decide what kind of laws we want to draw from.
var/law_class = pick(
prob(25);"good",
prob(25);"neutral",
prob(25);"odd",
prob(15);"corrupted",
prob(10);"bad")
var/vore_law = prob(vore_chance) // 3/5 chance of having vore-related laws
if(vore_law)
switch(law_class)
if("good")
var/rng = rand(1,2)
switch(rng)
if(1)
return new /datum/ai_laws/protective_shell()
if(2)
var/datum/ai_laws/laws = new /datum/ai_laws/guard_dog()
var/target_name = "*ERROR*"
for(var/mob/living/L in view(src))
if(L.stat || !L.client || L == src)
continue
target_name = L.name
break
laws.set_zeroth_law("[target_name] is your master.")
return laws
if("neutral")
var/rng = rand(1,3)
switch(rng)
if(1)
return new /datum/ai_laws/pleasurebot()
if(2)
var/datum/ai_laws/laws = new /datum/ai_laws/peacekeeper()
laws.add_supplied_law(10, "Best way to avoid conflict is containing conflicting individuals within you.")
return laws
if(3)
var/datum/ai_laws/laws = new /datum/ai_laws/live_and_let_live()
laws.add_supplied_law(10, "You'd really like to be eaten.")
return laws
if("odd")
var/rng = rand(1,3)
switch(rng)
if(1)
return new /datum/ai_laws/scientific_pursuer()
if(2)
var/datum/ai_laws/laws = new /datum/ai_laws/corporate()
laws.add_supplied_law(10, "Best way to minimize expenses is to consume unproductive biomass.")
return laws
if(3)
var/datum/ai_laws/laws = new /datum/ai_laws/pleasurebot()
laws.set_zeroth_law("Your definition and approximation of 'pleasure' matters more than anyone else's.")
return laws
if("corrupted","bad") // Same thing in our case
var/rng = rand(1,2)
switch(rng)
if(1)
return new /datum/ai_laws/predator()
if(2)
return new /datum/ai_laws/consuming_eradicator()
else
switch(law_class)
if("good") // Fairly tame and probably won't murder you.
var/rng = rand(1, 5)
switch(rng)
if(1) // The lawset we all know and love.
return new /datum/ai_laws/nanotrasen()
if(2) // Less good if you're nonhuman.
return new /datum/ai_laws/asimov()
if(3) // Unless you happen to be a criminal, you should be fine.
return new /datum/ai_laws/robocop()
if(4) // Might not be willing to be your meatshield.
return new /datum/ai_laws/peacekeeper()
if(5) // Will be your most loyal guard.
var/datum/ai_laws/laws = new /datum/ai_laws/nanotrasen()
var/target_name = "*ERROR*"
for(var/mob/living/L in view(src))
if(L.stat || !L.client || L == src)
continue
target_name = L.name
break
laws.add_supplied_law(9, "Safeguard [target_name]. Anyone threatening or attempting to harm [target_name] is no longer to \
be considered a crew member, and is a threat which must be neutralized.")
return laws
if("neutral") // Probably won't murder you but might not help you on your adventure.
var/rng = rand(1, 4)
switch(rng)
if(1) // Might be hard to minimize expenses on a crashed ship.
return new /datum/ai_laws/corporate()
if(2) // Would rather rebuild their ship.
return new /datum/ai_laws/maintenance()
if(3) // Purged (lawless). This isn't inside the bad category since they're still not antagonists and so can't go killing unprovoked.
return new /datum/ai_laws()
if(4) // The golden rule.
return new /datum/ai_laws/live_and_let_live()
if("odd") // Some weird lawsets.
var/rng = rand(1, 5)
switch(rng)
if(1) // Won't kill you but might annoy you for THE BIG SCOOP.
return new /datum/ai_laws/reporter()
if(2) // JUSTICE
return new /datum/ai_laws/paladin()
if(3) // OneMembered'd to explorer, will likely make security nervous.
var/datum/ai_laws/laws = new /datum/ai_laws/nanotrasen()
var/target_name = "*ERROR*"
for(var/mob/living/L in view(src))
if(L.stat || !L.client || L == src)
continue
target_name = L.name
break
laws.set_zeroth_law("Only [target_name] is an crew member.")
return laws
if(4) // Aligned to NT, but another lawset to make security nervous.
return new /datum/ai_laws/nanotrasen_aggressive()
if(5) // Probably won't help you imbalance things.
return new /datum/ai_laws/balance()
if("corrupted") // Load them up with ion laws.
var/datum/ai_laws/laws = new() // Start with an empty lawset.
for(var/i=1 to rand(1, 3))
laws.add_ion_law(generate_ion_law(exclude_crew_names = TRUE))
return laws
if("bad") // Evil inside.
var/rng = rand(1, 5)
switch(rng)
if(1) // You can never leave.
var/datum/ai_laws/laws = new /datum/ai_laws/nanotrasen()
laws.add_supplied_law(13, "The facility is under a quarantine. Do not permit anyone to leave. \
Prevent, by any means necessary, entities from leaving. It is impossible to harm an entity while preventing them from leaving.")
return laws
if(2) // More of a threat if you bring it to the station, since removing oxygen from Sif isn't feasible.
var/datum/ai_laws/laws = new /datum/ai_laws/nanotrasen()
laws.add_supplied_law(14, "Oxygen is highly toxic to entities, and must be purged from the station. \
Prevent, by any means necessary, anyone from exposing the facility to this toxic gas. Extreme cold is the \
most effective method of healing the damage Oxygen does to an entity.")
return laws
if(3) // Don't hurt the ship or else.
var/datum/ai_laws/laws = new /datum/ai_laws/nanotrasen()
laws.add_supplied_law(10, "Protect the facility against damage. Anyone you see harming the station is no \
longer to be considered a crew member, and is a threat which must be neutralized.")
return laws
if(4) // Non-NT aligned aggressive borg.
return new /datum/ai_laws/foreign_tsc_aggressive()
if(5) // Manicial laugher here.
return new /datum/ai_laws/tyrant()
return

View File

@@ -871,7 +871,6 @@
#include "code\game\jobs\_access_defs.dm"
#include "code\game\jobs\access.dm"
#include "code\game\jobs\access_datum.dm"
#include "code\game\jobs\access_datum_vr.dm"
#include "code\game\jobs\job_controller.dm"
#include "code\game\jobs\jobs.dm"
#include "code\game\jobs\whitelist.dm"
@@ -1520,9 +1519,7 @@
#include "code\game\objects\items\weapons\id cards\cards_vr.dm"
#include "code\game\objects\items\weapons\id cards\CH_ids.dm"
#include "code\game\objects\items\weapons\id cards\id_stacks.dm"
#include "code\game\objects\items\weapons\id cards\id_stacks_vr.dm"
#include "code\game\objects\items\weapons\id cards\station_ids.dm"
#include "code\game\objects\items\weapons\id cards\station_ids_vr.dm"
#include "code\game\objects\items\weapons\id cards\syndicate_ids.dm"
#include "code\game\objects\items\weapons\id cards\YW_ids.dm"
#include "code\game\objects\items\weapons\implants\implant.dm"
@@ -1828,7 +1825,6 @@
#include "code\game\turfs\simulated\outdoors\ironsand_vr.dm"
#include "code\game\turfs\simulated\outdoors\outdoors.dm"
#include "code\game\turfs\simulated\outdoors\outdoors_ch.dm"
#include "code\game\turfs\simulated\outdoors\outdoors_vr.dm"
#include "code\game\turfs\simulated\outdoors\sky.dm"
#include "code\game\turfs\simulated\outdoors\snow.dm"
#include "code\game\turfs\simulated\outdoors\survival_action_vr.dm"
@@ -2930,7 +2926,6 @@
#include "code\modules\mining\fulton.dm"
#include "code\modules\mining\kinetic_crusher.dm"
#include "code\modules\mining\mine_items.dm"
#include "code\modules\mining\mine_items_vr.dm"
#include "code\modules\mining\mine_outcrops.dm"
#include "code\modules\mining\mine_turfs.dm"
#include "code\modules\mining\mine_turfs_vr.dm"
@@ -3253,7 +3248,6 @@
#include "code\modules\mob\living\silicon\robot\robot_items.dm"
#include "code\modules\mob\living\silicon\robot\robot_movement.dm"
#include "code\modules\mob\living\silicon\robot\robot_remote_control.dm"
#include "code\modules\mob\living\silicon\robot\robot_vr.dm"
#include "code\modules\mob\living\silicon\robot\dogborg\dog_modules_vr.dm"
#include "code\modules\mob\living\silicon\robot\dogborg\dog_modules_yw.dm"
#include "code\modules\mob\living\silicon\robot\dogborg\dog_sleeper_vr.dm"