diff --git a/code/game/jobs/access_datum.dm b/code/game/jobs/access_datum.dm index 4345f731b9..6e397a347a 100644 --- a/code/game/jobs/access_datum.dm +++ b/code/game/jobs/access_datum.dm @@ -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 \ No newline at end of file + 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 diff --git a/code/game/jobs/access_datum_vr.dm b/code/game/jobs/access_datum_vr.dm deleted file mode 100644 index 5c144e9d9a..0000000000 --- a/code/game/jobs/access_datum_vr.dm +++ /dev/null @@ -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 diff --git a/code/game/objects/items/weapons/id cards/id_stacks.dm b/code/game/objects/items/weapons/id cards/id_stacks.dm index 495697da7b..e3dc53bfe8 100644 --- a/code/game/objects/items/weapons/id cards/id_stacks.dm +++ b/code/game/objects/items/weapons/id cards/id_stacks.dm @@ -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") -*/ \ No newline at end of file diff --git a/code/game/objects/items/weapons/id cards/id_stacks_vr.dm b/code/game/objects/items/weapons/id cards/id_stacks_vr.dm deleted file mode 100644 index e91d92ae44..0000000000 --- a/code/game/objects/items/weapons/id cards/id_stacks_vr.dm +++ /dev/null @@ -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") \ No newline at end of file diff --git a/code/game/objects/items/weapons/id cards/station_ids.dm b/code/game/objects/items/weapons/id cards/station_ids.dm index 7d6f8479f7..555ab60ff0 100644 --- a/code/game/objects/items/weapons/id cards/station_ids.dm +++ b/code/game/objects/items/weapons/id cards/station_ids.dm @@ -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, "Card settings set.") + +/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, "You copy the access from \the [I] to \the [src].") + 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, "ITG Cards do not seem to be able to accept the access codes for your ID.") + 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, "ITG Cards do not seem to be able to accept the access codes for your ID.") + 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." diff --git a/code/game/objects/items/weapons/id cards/station_ids_vr.dm b/code/game/objects/items/weapons/id cards/station_ids_vr.dm deleted file mode 100644 index a76717e804..0000000000 --- a/code/game/objects/items/weapons/id cards/station_ids_vr.dm +++ /dev/null @@ -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, "Card settings set.") - -/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, "You copy the access from \the [I] to \the [src].") - 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, "ITG Cards do not seem to be able to accept the access codes for your ID.") - 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, "ITG Cards do not seem to be able to accept the access codes for your ID.") - 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." diff --git a/code/game/turfs/simulated/outdoors/outdoors.dm b/code/game/turfs/simulated/outdoors/outdoors.dm index 2a7b6a803c..f0ce25633b 100644 --- a/code/game/turfs/simulated/outdoors/outdoors.dm +++ b/code/game/turfs/simulated/outdoors/outdoors.dm @@ -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 diff --git a/code/game/turfs/simulated/outdoors/outdoors_vr.dm b/code/game/turfs/simulated/outdoors/outdoors_vr.dm deleted file mode 100644 index 39b35b2d92..0000000000 --- a/code/game/turfs/simulated/outdoors/outdoors_vr.dm +++ /dev/null @@ -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 diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 947aaa4427..fdae31c2a3 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -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" diff --git a/code/modules/mining/mine_items_vr.dm b/code/modules/mining/mine_items_vr.dm deleted file mode 100644 index 55ee93a18e..0000000000 --- a/code/modules/mining/mine_items_vr.dm +++ /dev/null @@ -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 diff --git a/code/modules/mob/living/silicon/robot/login.dm b/code/modules/mob/living/silicon/robot/login.dm index d01043373f..89a136223e 100644 --- a/code/modules/mob/living/silicon/robot/login.dm +++ b/code/modules/mob/living/silicon/robot/login.dm @@ -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) \ No newline at end of file + plane_holder.set_vis(VIS_AUGMENTED, TRUE) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index cfebb60b6e..60cf0b73af 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -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, "You remove \the [cell].") + 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, "You remove \the [broken_device].") + 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, "You remove \the [cell].") - 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, "You remove \the [broken_device].") - 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("[H] reaches out for [src], but quickly refrains from petting.") + 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("[H] reaches out for [src], but quickly refrains from petting.") + return + else + visible_message("[H] pets [src].") + 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("[H] punches [src], but doesn't leave a dent.") + return + if(I_DISARM) + H.do_attack_animation(src) + playsound(src.loc, 'sound/effects/clang2.ogg', 10, 1) + visible_message("[H] taps [src].") return - else - visible_message("[H] pets [src].") - 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("[H] punches [src], but doesn't leave a dent.") - return - if(I_DISARM) - H.do_attack_animation(src) - playsound(src.loc, 'sound/effects/clang2.ogg', 10, 1) - visible_message("[H] taps [src].") - 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("[M] stops riding [ridden]!") + +//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, "This isn't a pony show! You need to be bigger for them to ride.") + return FALSE + + var/mob/living/carbon/human/H = M + + if(istaurtail(H.tail_style)) + to_chat(src, "Too many legs. TOO MANY LEGS!!") + 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("[M] starts riding [name]!") + +/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, "Your connection with the shell is suddenly interrupted!") + 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) diff --git a/code/modules/mob/living/silicon/robot/robot_vr.dm b/code/modules/mob/living/silicon/robot/robot_vr.dm deleted file mode 100644 index f812fe1af4..0000000000 --- a/code/modules/mob/living/silicon/robot/robot_vr.dm +++ /dev/null @@ -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("[M] stops riding [ridden]!") - -//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, "This isn't a pony show! You need to be bigger for them to ride.") - return FALSE - - var/mob/living/carbon/human/H = M - - if(istaurtail(H.tail_style)) - to_chat(src, "Too many legs. TOO MANY LEGS!!") - 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("[M] starts riding [name]!") - -/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, "Your connection with the shell is suddenly interrupted!") - 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 - ..() diff --git a/code/modules/mob/living/silicon/robot/subtypes/gravekeeper.dm b/code/modules/mob/living/silicon/robot/subtypes/gravekeeper.dm index 92a0819878..0253ce8916 100644 --- a/code/modules/mob/living/silicon/robot/subtypes/gravekeeper.dm +++ b/code/modules/mob/living/silicon/robot/subtypes/gravekeeper.dm @@ -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") diff --git a/code/modules/mob/living/silicon/robot/subtypes/lost_drone.dm b/code/modules/mob/living/silicon/robot/subtypes/lost_drone.dm index c32c8d92fc..953a5f6f81 100644 --- a/code/modules/mob/living/silicon/robot/subtypes/lost_drone.dm +++ b/code/modules/mob/living/silicon/robot/subtypes/lost_drone.dm @@ -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, "Obey these laws:") + 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 diff --git a/code/modules/mob/living/silicon/robot/subtypes/lost_drone_vr.dm b/code/modules/mob/living/silicon/robot/subtypes/lost_drone_vr.dm deleted file mode 100644 index 108aca5473..0000000000 --- a/code/modules/mob/living/silicon/robot/subtypes/lost_drone_vr.dm +++ /dev/null @@ -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 diff --git a/vorestation.dme b/vorestation.dme index b5cb2059c5..d03f7373dd 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -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"