Merge remote-tracking branch 'refs/remotes/ParadiseSS13/master'
@@ -1930,7 +1930,7 @@
|
||||
"aLf" = (/obj/machinery/newscaster{pixel_y = -28},/obj/structure/closet/athletic_mixed,/turf/simulated/floor{icon_state = "neutral"},/area/crew_quarters/fitness)
|
||||
"aLg" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/light,/obj/structure/closet/boxinggloves,/turf/simulated/floor{icon_state = "neutral"},/area/crew_quarters/fitness)
|
||||
"aLh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/closet/masks,/turf/simulated/floor{icon_state = "neutral"},/area/crew_quarters/fitness)
|
||||
"aLi" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor{icon_state = "neutral"},/area/crew_quarters/fitness)
|
||||
"aLi" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light_switch{pixel_y = -25},/obj/structure/closet/wardrobe/pjs,/turf/simulated/floor{icon_state = "neutral"},/area/crew_quarters/fitness)
|
||||
"aLj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/poolcontroller{pixel_y = -25; srange = 7},/turf/simulated/floor{icon_state = "neutral"},/area/crew_quarters/fitness)
|
||||
"aLk" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor,/area/crew_quarters/fitness)
|
||||
"aLl" = (/obj/structure/reagent_dispensers/water_cooler,/turf/simulated/floor,/area/crew_quarters/fitness)
|
||||
@@ -3376,7 +3376,7 @@
|
||||
"bmV" = (/obj/machinery/door/airlock{name = "Unit 1"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet)
|
||||
"bmW" = (/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet)
|
||||
"bmX" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet)
|
||||
"bmY" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/crew_quarters/locker)
|
||||
"bmY" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/closet/wardrobe/pjs,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/crew_quarters/locker)
|
||||
"bmZ" = (/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/crew_quarters/locker)
|
||||
"bna" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/dresser,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/crew_quarters/locker)
|
||||
"bnb" = (/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/locker)
|
||||
@@ -6280,7 +6280,7 @@
|
||||
"cqN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
|
||||
"cqO" = (/obj/structure/table,/obj/item/weapon/reagent_containers/blood/AMinus,/obj/item/weapon/reagent_containers/blood/APlus,/obj/item/weapon/reagent_containers/blood/BMinus,/obj/item/weapon/reagent_containers/blood/BPlus,/obj/item/weapon/reagent_containers/blood/OPlus,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/alarm{pixel_y = 23},/obj/item/weapon/reagent_containers/blood/OMinus,/obj/machinery/camera{c_tag = "Medbay Surgery 2 North"; network = list("SS13")},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
|
||||
"cqP" = (/obj/structure/table,/obj/item/weapon/storage/box/gloves,/obj/item/weapon/storage/box/masks,/obj/item/weapon/reagent_containers/spray/cleaner{desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; name = "Surgery Cleaner"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/light_switch{pixel_x = 5; pixel_y = 27},/obj/machinery/holosign_switch{id = "surgery2"; pixel_x = -5; pixel_y = 27},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
|
||||
"cqQ" = (/obj/machinery/light{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/medbay2)
|
||||
"cqQ" = (/obj/machinery/light{dir = 8},/obj/structure/closet/wardrobe/pjs,/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/medbay2)
|
||||
"cqR" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
|
||||
"cqS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/visible/universal,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
|
||||
"cqT" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/asmaint)
|
||||
@@ -8712,6 +8712,7 @@
|
||||
"dlB" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/space)
|
||||
"dlC" = (/obj/structure/grille,/obj/structure/window/full/shuttle,/turf/space,/area/shuttle/constructionsite)
|
||||
"dlD" = (/obj/docking_port/mobile/pod{dir = 4; id = "pod4"; name = "escape pod 4"},/obj/machinery/door/airlock/shuttle{id_tag = "s_docking_airlock"; name = "Escape Pod Hatch"},/turf/simulated/shuttle/floor,/area/shuttle/pod_4)
|
||||
"dlE" = (/obj/structure/table,/obj/structure/bedsheetbin{pixel_x = -1; pixel_y = 2},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/crew_quarters/locker)
|
||||
|
||||
(1,1,1) = {"
|
||||
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
|
||||
@@ -8839,7 +8840,7 @@ bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbi
|
||||
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbqYbqXbqXbqXbqXbqXbqXbqXbqXbqXbqXbqZbraaGdbraaJrbfqbgNblwbimblxblxblxblybimblzbgNblAblBbjWblCblCblCblCblDblCblEbecblFblGblHblHblIblJbcoblKblLblMblNblOblPblQblRblSblRblTblTblTblTblTblUberbeublVblWblXblYblZbmabmbbmcbmdbkBbmebmfbmgbmgbmgbmgbmhbmgbmibmjbmkbmlbmebmmbmnbcEbmobmpbmqbkNbmsbmtaYiaYibjfbcSbnCbcSbcSbcSaRebcSbcSbmvbmvbmwbmwbmxbeMbeMbmybmzbeMbeMbeMbmAbmBbmCaVbbgxbhNbeXbeXbeXbeXbhPbmDaVbbmEbmFbmFbmGbmFbmHbbPbbPbbPbbPbmIbbPbbPbbPbmJblobfgbfgbfgbfgbfgbfgbfgblnbloblpbgHbatbfjbfjbfkbfjbatddEbaAbmLbmMbmNbaAbBQbtmbmKbutbBQbtmbmKbutbBQbtmbmKbutbBQbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
|
||||
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbrcbrbbrebrdbrfbrfbrgbrfbrfbrfbrgbluaInaInaKzbrVbcjbmQbimbmRblxblxblxblybmRbimbgNbmSbmTbjWblCbmUbmVbmWbmXblCbmYbmZbnabcobnbbncbndbnebcobejbnfbngbngbnhbngbngbngbngbnibnjbnjbnjbnkbnjbnlbnmbnnbnobnpbnqbnqbnqbnqbnqbnqbnrbnsbnrbmgbmgbntbnubnvbnwbnxbnybntbnzbmgbnAbnBbnAbnAbnAbnAbnAbnAbnAbmtaYiaYiaMebnEbnDbcSbnGbcSbnFbcSbnIbnHbnJbmwbpjaUTbnKbnLaUTaUTczObnNddybnNaUTaUTaVbbnObnPbnQbnQbnQbnQbnPbnRaVbbnSbmFbmFbmGbnTaRDbnUbnVbnWbnXbnYbnZboabobbocaQbbodaRSboebfgbfgboeaRSbofaQbbogbgHbatbgIbgIbgJbgIbatddDbgKblrblrblrbaAbGVbtmbmKbutbGVbtmbmKbutbGVbtmbmKbutbGVbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
|
||||
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbrcbltbltblubltbltbltblvbltbltbtnaabaInboibdFbokbgNbjObjObjObimbolbombonboobgNbopboqbjWblCborblCbosbotblCboubovbowbcobnbbncbndbiCbcobejbnfbngboxboybozboAboBbngboCboDboEboFbnmbnmbnmbnmboGboHboIbnqboJboKboLboMboNboOboPboQbmgboRbnvboSboTboUboTboSbnvboVbmgboWboXboYboZbpabpbbpcbpdbnAbpebpfbpfbpgaMeaMeaMeaMebphbjfbphbpiaMeaURaMeaMeaUTaUTaUTaUTbplbpkbpkbpkbpkbpmbpJaVbbakbpnbakbpobpobakbpnbakaVbbnSbmFbmFbppbnTaRDaRDaRDaRDaRDbjvaRDaRDaRDaRDaQbbpqaQcaQcaQcaQcaQcaQcaQbaQbbprbpsbatbatbatbavbatbatddAbaAbaAbaAbaAbgKbqUddFbmKbmKbmKbmKbmKbmKbmKbmKbmKddGbqUbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
|
||||
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaLyaCuaKzaKzaKzaDEaDEaDEaDEaDEaDEbtobpubgNbgNbgNbgNbgNbgNbpvbgNbgNbgNbejbejbpxblCbpybpzbosbpAblCbpBbpCbpBbcobnbbncbndbecbcobejbnfbngbpDbpEbpFboAbpFbngboCbpGbpHbpIbqtbpKbpLbnmbpMbpNboIbpObpPbpQbpRbpSbpSbpRbpTbpUbmgbpVbnvbnvbpWbpXboTboSbnvbpYbmkbpZbqabqbbqcbqdbqebqbbqfbnAbqgbqhbqibqjbqkbqlbqmbqnbqnbqnbqnbqnbqnbqobqpbqqbqrbqnbqsbqnbqnbqnbqnbqnbqnbqnbqndcZbqubqvbqvbqvbqvbqvbqvbqwbqlbqxbqybqybqzbqAbqBbqAbqCbqAbqDbqEbqFbqAbqGbqHbqIbqJbqKbqKbqKbqKbqKbqKbqKbqLbqMbqNbqNbqNbqNbqObqNbqPbKnddHbPfddIbiibPfdlbbmKbmKbmKbmKddKbmKddKbmKbmKbmKddGbdBbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
|
||||
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaLyaCuaKzaKzaKzaDEaDEaDEaDEaDEaDEbtobpubgNbgNbgNbgNbgNbgNbpvbgNbgNbgNbejbejbpxblCbpybpzbosbpAblCdlEbpCbpBbcobnbbncbndbecbcobejbnfbngbpDbpEbpFboAbpFbngboCbpGbpHbpIbqtbpKbpLbnmbpMbpNboIbpObpPbpQbpRbpSbpSbpRbpTbpUbmgbpVbnvbnvbpWbpXboTboSbnvbpYbmkbpZbqabqbbqcbqdbqebqbbqfbnAbqgbqhbqibqjbqkbqlbqmbqnbqnbqnbqnbqnbqnbqobqpbqqbqrbqnbqsbqnbqnbqnbqnbqnbqnbqnbqndcZbqubqvbqvbqvbqvbqvbqvbqwbqlbqxbqybqybqzbqAbqBbqAbqCbqAbqDbqEbqFbqAbqGbqHbqIbqJbqKbqKbqKbqKbqKbqKbqKbqLbqMbqNbqNbqNbqNbqObqNbqPbKnddHbPfddIbiibPfdlbbmKbmKbmKbmKddKbmKddKbmKbmKbmKddGbdBbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
|
||||
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbtpbtqbtqbtqbtqbwpbwpbtqbtqbxZbikaabaInaLAaJtbzPbzObzRbzQbzQbzQbzQbzSbzUbzTbcsbdVbBFbrhblCblCblCbribotblCbcobcobcobcobnbbrjbrkbrlbcobrmbrnbngbrobrpboAbpFbrqbngboCbrrbpHbpIbpIbrsbrtbnmbrubpNboIbpObrvbrwbrxbrybrzbrAbpTbrBbmgbrCbpWbnvbrDbrEbrDbnvbpWbrFbnzbrGbqbbqbbqcbrHbqebqbbrIbnAbrJbqibqibqjbqkbqlbqnbqnbqnbqnbqnbqnbqnbrKbqnbqnbqnbqnbqnbqnbrLbrMbrMbrMbrMbrMbrMbrMbrMbrMbrMbrMbrMbrMbrMbrNbrObrPbqKbqKbrQbmFbmFbmFbmFbmFbmGbmFbmFbmFbmFbmFbmFbmFbmFbmFbmFbmFbmFbrRbmFbrSbrTbatbatbatbatbatbatbatddLbaAbgKbaAbaAbaAbqUddMddOddNbdBddPbdBddPbdBddQddMddObqUbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
|
||||
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbBGbDCbBHdjhbDDdjidjidjkdjjbtqbxZbjNaInaInaKBbrWbrXbrYbrXbrXbrXbrXbrZbsabsbbcsbcsbscbsdblCbmUbsebsfbpAblCbsgbshbsgbcobcobcobcobsibcobsjbskbngbslbsmbpFbsnbsobngboCbnmbspbpIbpIbpIbsqbnmbsrbpNboIbpObssbrwbrxbstbsubrAbpTbsvbmgbswbsxbnvbsybszbsAboSbsBbsCbsDbsEbsFbsGbsHbsIbsJbqbbsKbnAbsLbsMbqibqjbqkbqlbqnbsNbqnbqnbqnbqnbsObsPbsPbsPbsPbsQbqnbqnbqnbqnbsRbqnbsNbsSbqnbsTbsUbsVbqnbsWbsXbsXbsYbsZbtabtbbmFbmFbmFbmFbmFbmFbmFbtcbtdbmFbmFbmFbmFbmFbmFbmFbmFbmFbmFbmFbtebtfbtfbtgddSddRddUddTddTddTddTddVddWbaAaabbikbikaabbqUddXddZddYdeabqUbikbqUdecdebdecdecbqUbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
|
||||
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbBGbDCdjldjidjidjidjidjidjidjideHdjnaGddjnaJrbtrbrXbtsbttbtubtvbtwbrZbtxbtybtzbtzbtAbtBblCblCblCbosbtCborbcsbcsbcsbcsbtDbejbejbskbejbsjbskbngbtEbtFbtGbtHboAbngbtIbnmbtJbpIbpIbpIbtKbtLbtMbpNbtNbnqbtObtPbpRbpRbpRbpRbpTbtQbmgbtRbtSbmgbmgbmgbmgbmgbmgbmgbnzbnAbtTbtUbtVbtWbtXbtYbtZbnAbvubuabuabucbucbucbucbucbucbucbudbudbuebufbugbugbufbuebudbudbuhbuhbuhbuhbuhbuhbuibuibujbuibuibuibuibuibukbulbumbunbmFbmFbuobuobupbupbupbupbupbuqbtfbtfbtebtfbmFbtfbtfbtfbtfburbusbusbusbusdedbuubuubuubuubuubuubuubuubuubikbikbikbikbdBddYddYddYdeebqUbikbqUdefdebdebdegbqUbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
|
||||
|
||||
@@ -26,20 +26,3 @@
|
||||
#define MEMBER_PUBLIC 8192
|
||||
|
||||
#define TOGGLES_DEFAULT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_ATTACKLOGS|CHAT_LOOC|MEMBER_PUBLIC)
|
||||
|
||||
#define BE_TRAITOR 1
|
||||
#define BE_OPERATIVE 2
|
||||
#define BE_CHANGELING 4
|
||||
#define BE_WIZARD 8
|
||||
#define BE_MALF 16
|
||||
#define BE_REV 32
|
||||
#define BE_ALIEN 64
|
||||
#define BE_PAI 128
|
||||
#define BE_CULTIST 256
|
||||
#define BE_NINJA 512
|
||||
#define BE_RAIDER 1024
|
||||
#define BE_VAMPIRE 2048
|
||||
#define BE_MUTINEER 4096
|
||||
#define BE_BLOB 8192
|
||||
#define BE_SHADOWLING 16384
|
||||
#define BE_REVENANT 32768
|
||||
@@ -0,0 +1,69 @@
|
||||
|
||||
|
||||
//Values for antag preferences, event roles, etc. unified here
|
||||
|
||||
|
||||
|
||||
//These are synced with the Database, if you change the values of the defines
|
||||
//then you MUST update the database!
|
||||
// If you're adding a new role, remember to update modules/admin/topic.dm, so admins can dish out
|
||||
// justice if someone's abusing your role
|
||||
#define ROLE_TRAITOR "traitor"
|
||||
#define ROLE_OPERATIVE "operative"
|
||||
#define ROLE_CHANGELING "changeling"
|
||||
#define ROLE_WIZARD "wizard"
|
||||
#define ROLE_MALF "malf AI"
|
||||
#define ROLE_REV "revolutionary"
|
||||
#define ROLE_ALIEN "xenomorph"
|
||||
#define ROLE_PAI "pAI"
|
||||
#define ROLE_CULTIST "cultist"
|
||||
#define ROLE_BLOB "blob"
|
||||
#define ROLE_NINJA "space ninja"
|
||||
#define ROLE_MONKEY "monkey"
|
||||
#define ROLE_GANG "gangster"
|
||||
#define ROLE_SHADOWLING "shadowling"
|
||||
#define ROLE_ABDUCTOR "abductor"
|
||||
#define ROLE_REVENANT "revenant"
|
||||
#define ROLE_HOG_GOD "hand of god: god" // We're prolly gonna port this one day or another
|
||||
#define ROLE_HOG_CULTIST "hand of god: cultist"
|
||||
#define ROLE_RAIDER "vox raider"
|
||||
#define ROLE_VAMPIRE "vampire"
|
||||
#define ROLE_MUTINEER "mutineer"
|
||||
// Role tags for EVERYONE!
|
||||
#define ROLE_BORER "cortical borer"
|
||||
#define ROLE_DEMON "slaughter demon"
|
||||
#define ROLE_SENTIENT "sentient animal"
|
||||
#define ROLE_POSIBRAIN "positronic brain"
|
||||
#define ROLE_GUARDIAN "guardian"
|
||||
|
||||
|
||||
//Missing assignment means it's not a gamemode specific role, IT'S NOT A BUG OR ERROR.
|
||||
//The gamemode specific ones are just so the gamemodes can query whether a player is old enough
|
||||
//(in game days played) to play that role
|
||||
var/global/list/special_roles = list(
|
||||
ROLE_TRAITOR = /datum/game_mode/traitor,
|
||||
ROLE_OPERATIVE = /datum/game_mode/nuclear,
|
||||
ROLE_CHANGELING = /datum/game_mode/changeling,
|
||||
ROLE_WIZARD = /datum/game_mode/wizard,
|
||||
ROLE_MALF = /datum/game_mode/malfunction,
|
||||
ROLE_REV = /datum/game_mode/revolution,
|
||||
ROLE_ALIEN,
|
||||
ROLE_PAI,
|
||||
ROLE_CULTIST = /datum/game_mode/cult,
|
||||
ROLE_BLOB = /datum/game_mode/blob,
|
||||
ROLE_NINJA,
|
||||
// ROLE_MONKEY = /datum/game_mode/monkey, Sooner or later these are going to get ported
|
||||
// ROLE_GANG = /datum/game_mode/gang,
|
||||
ROLE_SHADOWLING = /datum/game_mode/shadowling,
|
||||
// ROLE_ABDUCTOR = /datum/game_mode/abduction,
|
||||
// ROLE_HOG_GOD = /datum/game_mode/hand_of_god,
|
||||
// ROLE_HOG_CULTIST = /datum/game_mode/hand_of_god,
|
||||
ROLE_RAIDER = /datum/game_mode/heist,
|
||||
ROLE_VAMPIRE = /datum/game_mode/vampire,
|
||||
ROLE_MUTINEER = /datum/game_mode/mutiny,
|
||||
ROLE_BORER,
|
||||
ROLE_DEMON,
|
||||
ROLE_SENTIENT,
|
||||
ROLE_POSIBRAIN,
|
||||
ROLE_GUARDIAN,
|
||||
)
|
||||
@@ -290,17 +290,17 @@ proc/isInSight(var/atom/A, var/atom/B)
|
||||
return M
|
||||
return null
|
||||
|
||||
/proc/get_candidates(be_special_flag=0, afk_bracket=3000, override_age=0, override_jobban=0)
|
||||
var/roletext = get_roletext(be_special_flag)
|
||||
/proc/get_candidates(be_special_type, afk_bracket=3000, override_age=0, override_jobban=0)
|
||||
var/roletext = get_roletext(be_special_type)
|
||||
var/list/candidates = list()
|
||||
// Keep looping until we find a non-afk candidate within the time bracket (we limit the bracket to 10 minutes (6000))
|
||||
while(!candidates.len && afk_bracket < 6000)
|
||||
for(var/mob/dead/observer/G in player_list)
|
||||
if(G.client != null)
|
||||
if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD))
|
||||
if(!G.client.is_afk(afk_bracket) && (G.client.prefs.be_special & be_special_flag))
|
||||
if(!G.client.is_afk(afk_bracket) && (be_special_type in G.client.prefs.be_special))
|
||||
if(!override_jobban || (!jobban_isbanned(G, roletext) && !jobban_isbanned(G,"Syndicate")))
|
||||
if(override_age || player_old_enough_antag(G.client,be_special_flag))
|
||||
if(override_age || player_old_enough_antag(G.client,be_special_type))
|
||||
candidates += G.client
|
||||
afk_bracket += 600 // Add a minute to the bracket, for every attempt
|
||||
|
||||
|
||||
@@ -44,10 +44,24 @@
|
||||
if(65 to 70) . += ascii2text(ascii+32) //letters A to F - translates to lowercase
|
||||
else return default
|
||||
return .
|
||||
|
||||
|
||||
/proc/sanitize_ooccolor(color)
|
||||
var/list/HSL = rgb2hsl(hex2num(copytext(color,2,4)),hex2num(copytext(color,4,6)),hex2num(copytext(color,6,8)))
|
||||
HSL[3] = min(HSL[3],0.4)
|
||||
var/list/RGB = hsl2rgb(arglist(HSL))
|
||||
return "#[num2hex(RGB[1],2)][num2hex(RGB[2],2)][num2hex(RGB[3],2)]"
|
||||
|
||||
|
||||
|
||||
// Sanitize inputs to avoid SQL injection attacks
|
||||
/proc/sql_sanitize_text(var/text)
|
||||
text = replacetext(text, "'", "''")
|
||||
text = replacetext(text, ";", "")
|
||||
text = replacetext(text, "&", "")
|
||||
return text
|
||||
|
||||
// Calls the above proc on each entry of a list to ensure its entries are clean
|
||||
/proc/sql_sanitize_text_list(var/list/l)
|
||||
var/list/new_list = l.Copy()
|
||||
for (var/text in new_list)
|
||||
sql_sanitize_text(text)
|
||||
return new_list
|
||||
@@ -31,25 +31,6 @@ var/MAX_EX_LIGHT_RANGE = 14
|
||||
var/MAX_EX_FLASH_RANGE = 14
|
||||
var/MAX_EX_FLAME_RANGE = 14
|
||||
|
||||
var/list/be_special_flags = list(
|
||||
"traitor" = BE_TRAITOR,
|
||||
"operative" = BE_OPERATIVE,
|
||||
"changeling" = BE_CHANGELING,
|
||||
"wizard" = BE_WIZARD,
|
||||
"malf AI" = BE_MALF,
|
||||
"revolutionary" = BE_REV,
|
||||
"alien" = BE_ALIEN,
|
||||
"pAI" = BE_PAI,
|
||||
"cultist" = BE_CULTIST,
|
||||
"ninja" = BE_NINJA,
|
||||
"raider" = BE_RAIDER,
|
||||
"vampire" = BE_VAMPIRE,
|
||||
"mutineer" = BE_MUTINEER,
|
||||
"blob" = BE_BLOB,
|
||||
"shadowling" = BE_SHADOWLING,
|
||||
"revenant" = BE_REVENANT
|
||||
)
|
||||
|
||||
//Random event stuff, apparently used
|
||||
var/eventchance = 10 //% per 5 mins
|
||||
var/event = 0
|
||||
|
||||
@@ -180,7 +180,7 @@
|
||||
else
|
||||
text += "<b>EMPLOYEE</b>|<a href='?src=\ref[src];revolution=headrev'>headrev</a>|<a href='?src=\ref[src];revolution=rev'>rev</a>"
|
||||
|
||||
if(current && current.client && current.client.prefs.be_special & BE_REV)
|
||||
if(current && current.client && (ROLE_REV in current.client.prefs.be_special))
|
||||
text += "|Enabled in Prefs"
|
||||
else
|
||||
text += "|Disabled in Prefs"
|
||||
@@ -205,7 +205,7 @@
|
||||
text += "<b>EMPLOYEE</b>|<a href='?src=\ref[src];cult=cultist'>cultist</a>"
|
||||
|
||||
|
||||
if(current && current.client && current.client.prefs.be_special & BE_CULTIST)
|
||||
if(current && current.client && (ROLE_CULTIST in current.client.prefs.be_special))
|
||||
text += "|Enabled in Prefs"
|
||||
else
|
||||
text += "|Disabled in Prefs"
|
||||
@@ -225,7 +225,7 @@
|
||||
else
|
||||
text += "<a href='?src=\ref[src];wizard=wizard'>yes</a>|<b>NO</b>"
|
||||
|
||||
if(current && current.client && current.client.prefs.be_special & BE_WIZARD)
|
||||
if(current && current.client && (ROLE_WIZARD in current.client.prefs.be_special))
|
||||
text += "|Enabled in Prefs"
|
||||
else
|
||||
text += "|Disabled in Prefs"
|
||||
@@ -246,7 +246,7 @@
|
||||
else
|
||||
text += "<a href='?src=\ref[src];changeling=changeling'>yes</a>|<b>NO</b>"
|
||||
|
||||
if(current && current.client && current.client.prefs.be_special & BE_CHANGELING)
|
||||
if(current && current.client && (ROLE_CHANGELING in current.client.prefs.be_special))
|
||||
text += "|Enabled in Prefs"
|
||||
else
|
||||
text += "|Disabled in Prefs"
|
||||
@@ -294,7 +294,7 @@
|
||||
else
|
||||
text += "<a href='?src=\ref[src];nuclear=nuclear'>operative</a>|<b>NANOTRASEN</b>"
|
||||
|
||||
if(current && current.client && current.client.prefs.be_special & BE_OPERATIVE)
|
||||
if(current && current.client && (ROLE_OPERATIVE in current.client.prefs.be_special))
|
||||
text += "|Enabled in Prefs"
|
||||
else
|
||||
text += "|Disabled in Prefs"
|
||||
@@ -316,7 +316,7 @@
|
||||
else
|
||||
text += "<a href='?src=\ref[src];traitor=traitor'>traitor</a>|<b>EMPLOYEE</b>"
|
||||
|
||||
if(current && current.client && current.client.prefs.be_special & BE_TRAITOR)
|
||||
if(current && current.client && (ROLE_TRAITOR in current.client.prefs.be_special))
|
||||
text += "|Enabled in Prefs"
|
||||
else
|
||||
text += "|Disabled in Prefs"
|
||||
@@ -335,7 +335,7 @@
|
||||
else
|
||||
text += "<a href='?src=\ref[src];shadowling=shadowling'>shadowling</a>|<a href='?src=\ref[src];shadowling=thrall'>thrall</a>|<b>HUMAN</b>"
|
||||
|
||||
if(current && current.client && current.client.prefs.be_special & BE_SHADOWLING)
|
||||
if(current && current.client && (ROLE_SHADOWLING in current.client.prefs.be_special))
|
||||
text += "|Enabled in Prefs"
|
||||
else
|
||||
text += "|Disabled in Prefs"
|
||||
|
||||
@@ -13,9 +13,9 @@ var/list/uplink_items = list()
|
||||
var/datum/uplink_item/I = new item()
|
||||
if(!I.item)
|
||||
continue
|
||||
if(I.gamemodes.len && ticker && !(ticker.mode.name in I.gamemodes))
|
||||
if(I.gamemodes.len && ticker && !(ticker.mode.type in I.gamemodes))
|
||||
continue
|
||||
if(I.excludefrom.len && ticker && (ticker.mode.name in I.excludefrom))
|
||||
if(I.excludefrom.len && ticker && (ticker.mode.type in I.excludefrom))
|
||||
continue
|
||||
if(I.last)
|
||||
last += I
|
||||
@@ -285,7 +285,7 @@ var/list/uplink_items = list()
|
||||
desc = "A fully-loaded Scarborough Arms bullpup submachine gun that fires .45 rounds with a 20-round magazine and is compatible with suppressors."
|
||||
item = /obj/item/weapon/gun/projectile/automatic/c20r
|
||||
cost = 14
|
||||
gamemodes = list("nuclear emergency")
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
surplus = 40
|
||||
|
||||
/datum/uplink_item/dangerous/carbine
|
||||
@@ -294,7 +294,7 @@ var/list/uplink_items = list()
|
||||
reference = "AR"
|
||||
item = /obj/item/weapon/gun/projectile/automatic/m90
|
||||
cost = 18
|
||||
gamemodes = list("nuclear emergency")
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
surplus = 50
|
||||
|
||||
/datum/uplink_item/dangerous/machinegun
|
||||
@@ -303,7 +303,7 @@ var/list/uplink_items = list()
|
||||
reference = "LMG"
|
||||
item = /obj/item/weapon/gun/projectile/automatic/l6_saw
|
||||
cost = 40
|
||||
gamemodes = list("nuclear emergency")
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
surplus = 0
|
||||
|
||||
/datum/uplink_item/dangerous/crossbow
|
||||
@@ -312,7 +312,7 @@ var/list/uplink_items = list()
|
||||
reference = "EC"
|
||||
item = /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow
|
||||
cost = 12
|
||||
excludefrom = list("nuclear emergency")
|
||||
excludefrom = list(/datum/game_mode/nuclear)
|
||||
surplus = 50
|
||||
|
||||
/datum/uplink_item/dangerous/flamethrower
|
||||
@@ -321,7 +321,7 @@ var/list/uplink_items = list()
|
||||
reference = "FT"
|
||||
item = /obj/item/weapon/flamethrower/full/tank
|
||||
cost = 11
|
||||
gamemodes = list("nuclear emergency")
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
surplus = 40
|
||||
|
||||
/datum/uplink_item/dangerous/sword
|
||||
@@ -344,7 +344,7 @@ var/list/uplink_items = list()
|
||||
reference = "VDG"
|
||||
item = /obj/item/weapon/grenade/spawnergrenade/manhacks
|
||||
cost = 8
|
||||
gamemodes = list("nuclear emergency")
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
surplus = 35
|
||||
|
||||
/datum/uplink_item/ammo/bioterror
|
||||
@@ -353,7 +353,7 @@ var/list/uplink_items = list()
|
||||
reference = "BTS"
|
||||
item = /obj/item/weapon/storage/box/syndie_kit/bioterror
|
||||
cost = 6
|
||||
gamemodes = list("nuclear emergency")
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/dangerous/tabungrenades
|
||||
name = "Tabun Gas Grenades"
|
||||
@@ -361,7 +361,7 @@ var/list/uplink_items = list()
|
||||
reference = "TGG"
|
||||
item = /obj/item/weapon/storage/box/syndie_kit/tabun
|
||||
cost = 15
|
||||
gamemodes = list("nuclear emergency")
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
surplus = 0
|
||||
|
||||
/datum/uplink_item/dangerous/emp
|
||||
@@ -385,7 +385,7 @@ var/list/uplink_items = list()
|
||||
reference = "GE"
|
||||
item = /obj/mecha/combat/gygax/dark/loaded
|
||||
cost = 90
|
||||
gamemodes = list("nuclear emergency")
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
surplus = 0
|
||||
|
||||
/datum/uplink_item/dangerous/mauler
|
||||
@@ -394,7 +394,7 @@ var/list/uplink_items = list()
|
||||
reference = "ME"
|
||||
item = /obj/mecha/combat/marauder/mauler/loaded
|
||||
cost = 140
|
||||
gamemodes = list("nuclear emergency")
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
surplus = 0
|
||||
|
||||
/datum/uplink_item/dangerous/syndieborg
|
||||
@@ -403,7 +403,7 @@ var/list/uplink_items = list()
|
||||
reference = "SC"
|
||||
item = /obj/item/weapon/antag_spawner/borg_tele
|
||||
cost = 50
|
||||
gamemodes = list("nuclear emergency")
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
surplus = 0
|
||||
|
||||
//for refunding the syndieborg teleporter
|
||||
@@ -416,7 +416,7 @@ var/list/uplink_items = list()
|
||||
name = "Holoparasites"
|
||||
desc = "Though capable of near sorcerous feats via use of hardlight holograms and nanomachines, they require an organic host as a home base and source of fuel."
|
||||
item = /obj/item/weapon/storage/box/syndie_kit/guardian
|
||||
excludefrom = list("nuclear emergency")
|
||||
excludefrom = list(/datum/game_mode/nuclear)
|
||||
cost = 12
|
||||
|
||||
// Ammunition
|
||||
@@ -445,7 +445,7 @@ var/list/uplink_items = list()
|
||||
reference = "45"
|
||||
item = /obj/item/ammo_box/magazine/smgm45
|
||||
cost = 2
|
||||
gamemodes = list("nuclear emergency")
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/ammo/ammobag
|
||||
name = "Ammo Duffelbag - Shotgun Ammo Grab Bag"
|
||||
@@ -453,7 +453,7 @@ var/list/uplink_items = list()
|
||||
reference = "SAGL"
|
||||
item = /obj/item/weapon/storage/backpack/duffel/syndie/ammo/loaded
|
||||
cost = 10 //bulk buyer's discount. Very useful if you're buying a mech and dont have TC left to buy people non-shotgun guns
|
||||
gamemodes = list("nuclear emergency")
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/ammo/bullslug
|
||||
name = "Drum Magazine - 12g Slugs"
|
||||
@@ -461,7 +461,7 @@ var/list/uplink_items = list()
|
||||
reference = "12BSG"
|
||||
item = /obj/item/ammo_box/magazine/m12g
|
||||
cost = 2
|
||||
gamemodes = list("nuclear emergency")
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/ammo/bullbuck
|
||||
name = "Drum Magazine - 12g buckshot"
|
||||
@@ -469,7 +469,7 @@ var/list/uplink_items = list()
|
||||
reference = "12BS"
|
||||
item = /obj/item/ammo_box/magazine/m12g/buckshot
|
||||
cost = 2
|
||||
gamemodes = list("nuclear emergency")
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/ammo/bullstun
|
||||
name = "Drum Magazine - 12g Stun Slug"
|
||||
@@ -477,7 +477,7 @@ var/list/uplink_items = list()
|
||||
reference = "12SS"
|
||||
item = /obj/item/ammo_box/magazine/m12g/stun
|
||||
cost = 3
|
||||
gamemodes = list("nuclear emergency")
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/ammo/bulldragon
|
||||
name = "Drum Magazine - 12g Dragon's Breath"
|
||||
@@ -485,7 +485,7 @@ var/list/uplink_items = list()
|
||||
reference = "12DB"
|
||||
item = /obj/item/ammo_box/magazine/m12g/dragon
|
||||
cost = 2
|
||||
gamemodes = list("nuclear emergency")
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/ammo/carbine
|
||||
name = "Toploader Magazine - 5.56"
|
||||
@@ -493,7 +493,7 @@ var/list/uplink_items = list()
|
||||
reference = "556"
|
||||
item = /obj/item/ammo_box/magazine/m556
|
||||
cost = 2
|
||||
gamemodes = list("nuclear emergency")
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/ammo/a40mm
|
||||
name = "Ammo Box - 40mm grenades"
|
||||
@@ -501,7 +501,7 @@ var/list/uplink_items = list()
|
||||
reference = "40MM"
|
||||
item = /obj/item/ammo_box/a40mm
|
||||
cost = 4
|
||||
gamemodes = list("nuclear emergency")
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/ammo/machinegun
|
||||
name = "Box Magazine - 7.62x51mm"
|
||||
@@ -509,7 +509,7 @@ var/list/uplink_items = list()
|
||||
reference = "762"
|
||||
item = /obj/item/ammo_box/magazine/m762
|
||||
cost = 12
|
||||
gamemodes = list("nuclear emergency")
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
surplus = 0
|
||||
|
||||
// STEALTHY WEAPONS
|
||||
@@ -530,7 +530,7 @@ var/list/uplink_items = list()
|
||||
reference = "SP"
|
||||
item = /obj/item/weapon/pen/sleepy
|
||||
cost = 8
|
||||
excludefrom = list("nuclear emergency")
|
||||
excludefrom = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/stealthy_weapons/soap
|
||||
name = "Syndicate Soap"
|
||||
@@ -605,14 +605,14 @@ var/list/uplink_items = list()
|
||||
reference = "NSSS"
|
||||
item = /obj/item/clothing/shoes/syndigaloshes
|
||||
cost = 2
|
||||
excludefrom = list("nuclear emergency")
|
||||
excludefrom = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/stealthy_tools/syndigaloshes/nuke
|
||||
name = "Tactical No-Slip Brown Shoes"
|
||||
desc = "These allow you to run on wet floors. They do not work on lubricated surfaces, and the maker swears they're better than normal ones, somehow."
|
||||
reference = "NNSSS"
|
||||
cost = 4 //but they aren't
|
||||
gamemodes = list("nuclear emergency")
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/stealthy_tools/agent_card
|
||||
name = "Agent ID Card"
|
||||
@@ -691,7 +691,7 @@ var/list/uplink_items = list()
|
||||
reference = "SBM"
|
||||
item = /obj/item/weapon/storage/belt/military
|
||||
cost = 3
|
||||
excludefrom = list("nuclear emergency")
|
||||
excludefrom = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/device_tools/medkit
|
||||
name = "Syndicate Combat Medic Kit"
|
||||
@@ -700,7 +700,7 @@ var/list/uplink_items = list()
|
||||
reference = "SCMK"
|
||||
item = /obj/item/weapon/storage/firstaid/tactical
|
||||
cost = 9
|
||||
gamemodes = list("nuclear emergency")
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/device_tools/space_suit
|
||||
name = "Space Suit"
|
||||
@@ -718,6 +718,17 @@ var/list/uplink_items = list()
|
||||
item = /obj/item/weapon/storage/box/syndie_kit/hardsuit
|
||||
cost = 8
|
||||
|
||||
/datum/uplink_item/device_tools/elite_hardsuit
|
||||
name = "Elite Syndicate Hardsuit"
|
||||
desc = "The elite Syndicate hardsuit is worn by only the best nuclear agents. Features much better armoring and complete fireproofing, as well as a built in jetpack. \
|
||||
When the built in helmet is deployed your identity will be protected, even in death, as the suit cannot be removed by outside forces. Toggling the suit into combat mode \
|
||||
will allow you all the mobility of a loose fitting uniform without sacrificing armoring. Additionally the suit is collapsible, small enough to fit within a backpack. \
|
||||
Nanotrasen crewmembers are trained to report red space suit sightings; these suits in particular are known to drive employees into a panic."
|
||||
reference = "ESHS"
|
||||
item = /obj/item/weapon/storage/box/syndie_kit/elite_hardsuit
|
||||
cost = 8
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/device_tools/thermal
|
||||
name = "Thermal Imaging Glasses"
|
||||
desc = "These glasses are thermals disguised as engineers' optical meson scanners. They allow you to see organisms through walls by capturing the upper portion of the infra-red light spectrum, emitted as heat and light by objects. Hotter objects, such as warm bodies, cybernetic organisms and artificial intelligence cores emit more of this light than cooler objects like walls and airlocks."
|
||||
@@ -755,7 +766,7 @@ var/list/uplink_items = list()
|
||||
reference = "BRMB"
|
||||
item = /obj/item/clothing/shoes/magboots/syndie
|
||||
cost = 3
|
||||
gamemodes = list("nuclear emergency")
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/device_tools/plastic_explosives
|
||||
name = "Composition C-4"
|
||||
@@ -793,7 +804,7 @@ var/list/uplink_items = list()
|
||||
reference = "SD"
|
||||
item = /obj/item/device/syndicatedetonator
|
||||
cost = 3
|
||||
gamemodes = list("nuclear emergency")
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/device_tools/advpinpointer
|
||||
name = "Advanced Pinpointer"
|
||||
@@ -815,7 +826,7 @@ var/list/uplink_items = list()
|
||||
item = /obj/item/weapon/circuitboard/teleporter
|
||||
reference = "TP"
|
||||
cost = 40
|
||||
gamemodes = list("nuclear emergency")
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
surplus = 0
|
||||
|
||||
/datum/uplink_item/device_tools/shield
|
||||
@@ -824,7 +835,7 @@ var/list/uplink_items = list()
|
||||
item = /obj/item/weapon/shield/energy
|
||||
reference = "ESD"
|
||||
cost = 16
|
||||
gamemodes = list("nuclear emergency")
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
surplus = 20
|
||||
|
||||
/datum/uplink_item/device_tools/medgun
|
||||
@@ -833,7 +844,7 @@ var/list/uplink_items = list()
|
||||
item = /obj/item/weapon/gun/medbeam
|
||||
reference = "MBG"
|
||||
cost = 15
|
||||
gamemodes = list("nuclear emergency")
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
|
||||
|
||||
// IMPLANTS
|
||||
@@ -903,7 +914,7 @@ var/list/uplink_items = list()
|
||||
reference = "SYB"
|
||||
item = /obj/item/weapon/storage/box/syndicate
|
||||
cost = 20
|
||||
excludefrom = list("nuclear emergency")
|
||||
excludefrom = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/badass/syndiecards
|
||||
name = "Syndicate Playing Cards"
|
||||
@@ -912,7 +923,7 @@ var/list/uplink_items = list()
|
||||
reference = "SPC"
|
||||
item = /obj/item/toy/cards/deck/syndicate
|
||||
cost = 1
|
||||
excludefrom = list("nuclear emergency")
|
||||
excludefrom = list(/datum/game_mode/nuclear)
|
||||
surplus = 40
|
||||
|
||||
/datum/uplink_item/badass/syndiecash
|
||||
@@ -962,7 +973,7 @@ var/list/uplink_items = list()
|
||||
reference = "SYSC"
|
||||
cost = 20
|
||||
item = /obj/item/weapon/storage/box/syndicate
|
||||
excludefrom = list("nuclear emergency")
|
||||
excludefrom = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/badass/surplus_crate/spawn_item(turf/loc, obj/item/device/uplink/U)
|
||||
var/obj/structure/closet/crate/C = new(loc)
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
return
|
||||
checking = 1
|
||||
user << "<span class='notice'>The device is now checking for possible borgs.</span>"
|
||||
var/list/mob/dead/observer/borg_candidates = pollCandidates("Do you want to play as a Syndicate [borg_to_spawn] borg?", "operative", 1, BE_OPERATIVE, 300)
|
||||
var/list/mob/dead/observer/borg_candidates = pollCandidates("Do you want to play as a Syndicate [borg_to_spawn] borg?", "operative", 1, ROLE_OPERATIVE, 300)
|
||||
if(borg_candidates.len > 0 && !used)
|
||||
checking = 0
|
||||
used = 1
|
||||
@@ -74,7 +74,7 @@
|
||||
icon_state = "vial"
|
||||
|
||||
/obj/item/weapon/antag_spawner/slaughter_demon/attack_self(mob/user as mob)
|
||||
var/list/demon_candidates = get_candidates(BE_ALIEN)
|
||||
var/list/demon_candidates = get_candidates(ROLE_DEMON)
|
||||
if(user.z == ZLEVEL_CENTCOMM)//this is to make sure the wizard does NOT summon a demon from the Den..
|
||||
user << "<span class='notice'>You should probably wait until you reach the station.</span>"
|
||||
return
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
if(config.protect_roles_from_antagonist)
|
||||
restricted_jobs += protected_jobs
|
||||
|
||||
possible_traitors = get_players_for_role(BE_TRAITOR)
|
||||
possible_traitors = get_players_for_role(ROLE_TRAITOR)
|
||||
|
||||
for(var/mob/new_player/P in world)
|
||||
if(P.client && P.ready)
|
||||
@@ -76,13 +76,13 @@
|
||||
var/traitorcount = 0
|
||||
var/possible_traitors[0]
|
||||
for(var/mob/living/player in mob_list)
|
||||
if (player.client && player.stat != 2)
|
||||
if (player.client && player.stat != DEAD)
|
||||
playercount += 1
|
||||
if (player.client && player.mind && player.mind.special_role && player.stat != 2)
|
||||
if (player.client && player.mind && player.mind.special_role && player.stat != DEAD)
|
||||
traitorcount += 1
|
||||
if (player.client && player.mind && !player.mind.special_role && player.stat != 2)
|
||||
if (player.client && player.mind && !player.mind.special_role && player.stat != DEAD)
|
||||
if (ishuman(player) || isrobot(player) || isAI(player))
|
||||
if (player.client && player.client.prefs.be_special & BE_TRAITOR && !jobban_isbanned(player, "traitor") && !jobban_isbanned(player, "Syndicate"))
|
||||
if (player.client && (ROLE_TRAITOR in player.client.prefs.be_special) && !jobban_isbanned(player, "traitor") && !jobban_isbanned(player, "Syndicate"))
|
||||
possible_traitors += player.mind
|
||||
for(var/datum/mind/player in possible_traitors)
|
||||
for(var/job in restricted_jobs)
|
||||
@@ -160,15 +160,15 @@
|
||||
if(shuttle_master.emergency.mode >= SHUTTLE_ESCAPE)
|
||||
return
|
||||
//message_admins("Late Join Check")
|
||||
if((character.client && character.client.prefs.be_special & BE_TRAITOR) && !jobban_isbanned(character, "traitor") && !jobban_isbanned(character, "Syndicate"))
|
||||
if(character.client && (ROLE_TRAITOR in character.client.prefs.be_special) && !jobban_isbanned(character, "traitor") && !jobban_isbanned(character, "Syndicate"))
|
||||
//message_admins("Late Joiner has Be Syndicate")
|
||||
//message_admins("Checking number of players")
|
||||
var/playercount = 0
|
||||
var/traitorcount = 0
|
||||
for(var/mob/living/player in mob_list)
|
||||
if (player.client && player.stat != 2)
|
||||
if (player.client && player.stat != DEAD)
|
||||
playercount += 1
|
||||
if (player.client && player.mind && player.mind.special_role && player.stat != 2)
|
||||
if (player.client && player.mind && player.mind.special_role && player.stat != DEAD)
|
||||
traitorcount += 1
|
||||
//message_admins("Live Players: [playercount]")
|
||||
//message_admins("Live Traitors: [traitorcount]")
|
||||
|
||||
@@ -29,7 +29,7 @@ var/list/blob_nodes = list()
|
||||
|
||||
/datum/game_mode/blob/pre_setup()
|
||||
|
||||
var/list/possible_blobs = get_players_for_role(BE_BLOB)
|
||||
var/list/possible_blobs = get_players_for_role(ROLE_BLOB)
|
||||
|
||||
// stop setup if no possible traitors
|
||||
if(!possible_blobs.len)
|
||||
@@ -58,7 +58,7 @@ var/list/blob_nodes = list()
|
||||
/datum/game_mode/blob/proc/get_blob_candidates()
|
||||
var/list/candidates = list()
|
||||
for(var/mob/living/carbon/human/player in player_list)
|
||||
if(!player.stat && player.mind && !player.mind.special_role && !jobban_isbanned(player, "Syndicate") && (player.client.prefs.be_special & BE_BLOB))
|
||||
if(!player.stat && player.mind && !player.mind.special_role && !jobban_isbanned(player, "Syndicate") && (ROLE_BLOB in player.client.prefs.be_special))
|
||||
candidates += player
|
||||
return candidates
|
||||
|
||||
|
||||
@@ -101,7 +101,7 @@
|
||||
var/list/candidates = list()
|
||||
|
||||
if(!new_overmind)
|
||||
candidates = get_candidates(BE_BLOB)
|
||||
candidates = get_candidates(ROLE_BLOB)
|
||||
if(candidates.len)
|
||||
C = pick(candidates)
|
||||
else
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
// also make sure that there's at least one borer and one host
|
||||
recommended_enemies = max(src.num_players() / 20 * 2, 2)
|
||||
|
||||
var/list/datum/mind/possible_borers = get_players_for_role(BE_ALIEN)
|
||||
var/list/datum/mind/possible_borers = get_players_for_role(ROLE_BORER)
|
||||
|
||||
if(possible_borers.len < 2)
|
||||
log_admin("MODE FAILURE: BORER. NOT ENOUGH BORER CANDIDATES.")
|
||||
|
||||
@@ -46,7 +46,7 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon"
|
||||
if(config.protect_roles_from_antagonist)
|
||||
restricted_jobs += protected_jobs
|
||||
|
||||
var/list/datum/mind/possible_changelings = get_players_for_role(BE_CHANGELING)
|
||||
var/list/datum/mind/possible_changelings = get_players_for_role(ROLE_CHANGELING)
|
||||
|
||||
changeling_amount = 1 + round(num_players() / 10)
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
if(config.protect_roles_from_antagonist)
|
||||
restricted_jobs += protected_jobs
|
||||
|
||||
var/list/datum/mind/possible_changelings = get_players_for_role(BE_CHANGELING)
|
||||
var/list/datum/mind/possible_changelings = get_players_for_role(ROLE_CHANGELING)
|
||||
|
||||
for(var/mob/new_player/player in player_list)
|
||||
if((player.mind in possible_changelings) && (player.client.prefs.species in protected_species_changeling))
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
if(config.protect_roles_from_antagonist)
|
||||
restricted_jobs += protected_jobs
|
||||
|
||||
var/list/cultists_possible = get_players_for_role(BE_CULTIST)
|
||||
var/list/cultists_possible = get_players_for_role(ROLE_CULTIST)
|
||||
|
||||
for(var/cultists_number = 1 to max_cultists_to_start)
|
||||
if(!cultists_possible.len)
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
if(temp_vent.parent.other_atmosmch.len > 50) // Stops Aliens getting stuck in small networks. See: Security, Virology
|
||||
vents += temp_vent
|
||||
|
||||
var/list/candidates = get_candidates(BE_ALIEN,ALIEN_AFK_BRACKET)
|
||||
var/list/candidates = get_candidates(ROLE_ALIEN,ALIEN_AFK_BRACKET)
|
||||
|
||||
if(prob(40)) spawncount++ //sometimes, have two larvae spawn instead of one
|
||||
while((spawncount >= 1) && vents.len && candidates.len)
|
||||
@@ -25,7 +25,7 @@
|
||||
command_announcement.Announce("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", new_sound = 'sound/AI/aliens.ogg')
|
||||
for(var/mob/M in player_list)
|
||||
M << sound('sound/AI/aliens.ogg')
|
||||
|
||||
|
||||
/proc/lightsout(isEvent = 0, lightsoutAmount = 1,lightsoutRange = 25) //leave lightsoutAmount as 0 to break ALL lights
|
||||
if(isEvent)
|
||||
command_announcement.Announce("An Electrical storm has been detected in your area, please repair potential electronic overloads.","Electrical Storm Alert")
|
||||
|
||||
@@ -254,7 +254,7 @@
|
||||
|
||||
// Get a list of all the people who want to be the antagonist for this round, except those with incompatible species
|
||||
for(var/mob/new_player/player in players)
|
||||
if(player.client.prefs.be_special & role && !(player.client.prefs.species in protected_species))
|
||||
if((role in player.client.prefs.be_special) && !(player.client.prefs.species in protected_species))
|
||||
log_debug("[player.key] had [roletext] enabled, so we are drafting them.")
|
||||
candidates += player.mind
|
||||
players -= player
|
||||
@@ -276,57 +276,6 @@
|
||||
if(player.assigned_role == job)
|
||||
candidates -= player
|
||||
|
||||
/*if(candidates.len < recommended_enemies)
|
||||
for(var/mob/new_player/player in players)
|
||||
if(player.client && player.ready)
|
||||
if(!(player.client.prefs.be_special & role)) // We don't have enough people who want to be antagonist, make a seperate list of people who don't want to be one
|
||||
if(!jobban_isbanned(player, "Syndicate") && !jobban_isbanned(player, roletext)) //Nodrak/Carn: Antag Job-bans
|
||||
drafted += player.mind
|
||||
|
||||
if(restricted_jobs)
|
||||
for(var/datum/mind/player in drafted) // Remove people who can't be an antagonist
|
||||
for(var/job in restricted_jobs)
|
||||
if(player.assigned_role == job)
|
||||
drafted -= player
|
||||
|
||||
drafted = shuffle(drafted) // Will hopefully increase randomness, Donkie
|
||||
|
||||
while(candidates.len < recommended_enemies) // Pick randomlly just the number of people we need and add them to our list of candidates
|
||||
if(drafted.len > 0)
|
||||
applicant = pick(drafted)
|
||||
if(applicant)
|
||||
candidates += applicant
|
||||
log_debug("[applicant.key] was force-drafted as [roletext], because there aren't enough candidates.")
|
||||
drafted.Remove(applicant)
|
||||
|
||||
else // Not enough scrubs, ABORT ABORT ABORT
|
||||
break
|
||||
|
||||
if(candidates.len < recommended_enemies && override_jobbans) //If we still don't have enough people, we're going to start drafting banned people.
|
||||
for(var/mob/new_player/player in players)
|
||||
if (player.client && player.ready)
|
||||
if(jobban_isbanned(player, "Syndicate") || jobban_isbanned(player, roletext)) //Nodrak/Carn: Antag Job-bans
|
||||
drafted += player.mind
|
||||
|
||||
if(restricted_jobs)
|
||||
for(var/datum/mind/player in drafted) // Remove people who can't be an antagonist
|
||||
for(var/job in restricted_jobs)
|
||||
if(player.assigned_role == job)
|
||||
drafted -= player
|
||||
|
||||
drafted = shuffle(drafted) // Will hopefully increase randomness, Donkie
|
||||
|
||||
while(candidates.len < recommended_enemies) // Pick randomlly just the number of people we need and add them to our list of candidates
|
||||
if(drafted.len > 0)
|
||||
applicant = pick(drafted)
|
||||
if(applicant)
|
||||
candidates += applicant
|
||||
drafted.Remove(applicant)
|
||||
log_debug("[applicant.key] was force-drafted as [roletext], because there aren't enough candidates.")
|
||||
|
||||
else // Not enough scrubs, ABORT ABORT ABORT
|
||||
break
|
||||
*/
|
||||
|
||||
return candidates // Returns: The number of people who had the antagonist role set to yes, regardless of recomended_enemies, if that number is greater than recommended_enemies
|
||||
// recommended_enemies if the number of people with that role set to yes is less than recomended_enemies,
|
||||
@@ -336,7 +285,7 @@
|
||||
/datum/game_mode/proc/latespawn(var/mob)
|
||||
|
||||
/*
|
||||
/datum/game_mode/proc/check_player_role_pref(var/role, var/mob/new_player/player)
|
||||
/datum/game_mode/proc/check_player_role_pref(var/role, var/mob/player)
|
||||
if(player.preferences.be_special & role)
|
||||
return 1
|
||||
return 0
|
||||
@@ -489,22 +438,7 @@ proc/get_nt_opposed()
|
||||
obj_count++
|
||||
|
||||
/proc/get_roletext(var/role)
|
||||
var/roletext
|
||||
switch(role)
|
||||
if(BE_CHANGELING) roletext="changeling"
|
||||
if(BE_TRAITOR) roletext="traitor"
|
||||
if(BE_OPERATIVE) roletext="operative"
|
||||
if(BE_WIZARD) roletext="wizard"
|
||||
if(BE_MALF) roletext="malf AI"
|
||||
if(BE_REV) roletext="revolutionary"
|
||||
if(BE_CULTIST) roletext="cultist"
|
||||
if(BE_NINJA) roletext="ninja"
|
||||
if(BE_RAIDER) roletext="raider"
|
||||
if(BE_VAMPIRE) roletext="vampire"
|
||||
if(BE_ALIEN) roletext="alien"
|
||||
if(BE_MUTINEER) roletext="mutineer"
|
||||
if(BE_BLOB) roletext="blob"
|
||||
return roletext
|
||||
return role
|
||||
|
||||
/proc/get_nuke_code()
|
||||
var/nukecode = "ERROR"
|
||||
|
||||
@@ -33,7 +33,7 @@ var/global/list/obj/cortical_stacks = list() //Stacks for 'leave nobody behind'
|
||||
if(!..())
|
||||
return 0
|
||||
|
||||
var/list/candidates = get_players_for_role(BE_RAIDER)
|
||||
var/list/candidates = get_players_for_role(ROLE_RAIDER)
|
||||
var/raider_num = 0
|
||||
|
||||
//Check that we have enough vox.
|
||||
|
||||
@@ -25,13 +25,13 @@
|
||||
<B>The AI on the satellite has malfunctioned and must be destroyed.</B><br />
|
||||
The AI satellite is deep in space and can only be accessed with the use of a teleporter! You have [AI_win_timeleft/60] minutes to disable it."}
|
||||
|
||||
/datum/game_mode/malfunction/get_players_for_role(var/role = BE_MALF)
|
||||
/datum/game_mode/malfunction/get_players_for_role(var/role = ROLE_MALF)
|
||||
var/roletext = get_roletext(role)
|
||||
|
||||
var/datum/job/ai/DummyAIjob = new
|
||||
for(var/mob/new_player/player in player_list)
|
||||
if(player.client && player.ready)
|
||||
if(player.client.prefs.be_special & BE_MALF)
|
||||
if(ROLE_MALF in player.client.prefs.be_special)
|
||||
if(!jobban_isbanned(player, "Syndicate") && !jobban_isbanned(player, "AI") && !jobban_isbanned(player, roletext) && DummyAIjob.player_old_enough(player.client))
|
||||
if(player_old_enough_antag(player.client,role))
|
||||
antag_candidates += player.mind
|
||||
@@ -39,7 +39,7 @@
|
||||
return antag_candidates
|
||||
|
||||
/datum/game_mode/malfunction/pre_setup()
|
||||
get_players_for_role(BE_MALF)
|
||||
get_players_for_role(ROLE_MALF)
|
||||
|
||||
var/datum/mind/chosen_ai
|
||||
if(!antag_candidates.len)
|
||||
|
||||
@@ -80,7 +80,7 @@ datum/game_mode/mutiny
|
||||
proc/get_head_mutineer_candidates()
|
||||
var/list/candidates[0]
|
||||
for(var/mob/mutineer in player_list)
|
||||
if(mutineer.client.prefs.be_special & BE_MUTINEER)
|
||||
if(ROLE_MUTINEER in mutineer.client.prefs.be_special)
|
||||
if(!jobban_isbanned(mutineer, "mutineer") && !jobban_isbanned(mutineer,"Syndicate"))
|
||||
for(var/job in command_positions - "Captain")
|
||||
if(mutineer.mind && mutineer.mind.assigned_role == job)
|
||||
|
||||
@@ -31,7 +31,7 @@ proc/issyndicate(mob/living/M as mob)
|
||||
if(!..())
|
||||
return 0
|
||||
|
||||
var/list/possible_syndicates = get_players_for_role(BE_OPERATIVE)
|
||||
var/list/possible_syndicates = get_players_for_role(ROLE_OPERATIVE)
|
||||
var/agent_number = 0
|
||||
|
||||
if(possible_syndicates.len < 1)
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
if(config.protect_roles_from_antagonist)
|
||||
restricted_jobs += protected_jobs
|
||||
|
||||
var/list/datum/mind/possible_headrevs = get_players_for_role(BE_REV)
|
||||
var/list/datum/mind/possible_headrevs = get_players_for_role(ROLE_REV)
|
||||
|
||||
for (var/i=1 to max_headrevs)
|
||||
if(possible_headrevs.len==0)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
// BS12's less violent revolution mode
|
||||
// Isn't this basically mutiny but without any real reason
|
||||
|
||||
/datum/game_mode/revolution/rp_revolution
|
||||
name = "rp-revolution"
|
||||
@@ -29,7 +30,7 @@
|
||||
max_headrevs = max(num_players / 4, 3)
|
||||
recommended_enemies = max_headrevs
|
||||
|
||||
var/list/datum/mind/possible_headrevs = get_players_for_role(BE_REV)
|
||||
var/list/datum/mind/possible_headrevs = get_players_for_role(ROLE_REV)
|
||||
|
||||
var/head_check = 0
|
||||
for(var/mob/new_player/player in player_list)
|
||||
|
||||
@@ -78,7 +78,7 @@ Made by Xhuis
|
||||
if(config.protect_roles_from_antagonist)
|
||||
restricted_jobs += protected_jobs
|
||||
|
||||
var/list/datum/mind/possible_shadowlings = get_players_for_role(BE_SHADOWLING)
|
||||
var/list/datum/mind/possible_shadowlings = get_players_for_role(ROLE_SHADOWLING)
|
||||
|
||||
if(!possible_shadowlings.len)
|
||||
return 0
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
if(config.protect_roles_from_antagonist)
|
||||
restricted_jobs += protected_jobs
|
||||
|
||||
var/list/possible_traitors = get_players_for_role(BE_TRAITOR)
|
||||
var/list/possible_traitors = get_players_for_role(ROLE_TRAITOR)
|
||||
|
||||
// stop setup if no possible traitors
|
||||
if(!possible_traitors.len)
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
if(config.protect_roles_from_antagonist)
|
||||
restricted_jobs += protected_jobs
|
||||
|
||||
var/list/datum/mind/possible_vampires = get_players_for_role(BE_VAMPIRE)
|
||||
var/list/datum/mind/possible_vampires = get_players_for_role(ROLE_VAMPIRE)
|
||||
|
||||
vampire_amount = 1 + round(num_players() / 10)
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
if (used)
|
||||
H << "You already used this contract!"
|
||||
return
|
||||
var/list/candidates = get_candidates(BE_WIZARD)
|
||||
var/list/candidates = get_candidates(ROLE_WIZARD)
|
||||
if(candidates.len)
|
||||
src.used = 1
|
||||
var/client/C = pick(candidates)
|
||||
@@ -294,7 +294,7 @@ var/global/list/multiverse = list()
|
||||
usr.mind.special_role = "[usr.real_name] Prime"
|
||||
evil = FALSE
|
||||
else
|
||||
var/list/candidates = get_candidates(BE_WIZARD)
|
||||
var/list/candidates = get_candidates(ROLE_WIZARD)
|
||||
if(candidates.len)
|
||||
var/client/C = pick(candidates)
|
||||
spawn_copy(C, get_turf(user.loc), user)
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
..()
|
||||
if(!max_mages)
|
||||
for(var/mob/living/player in mob_list)
|
||||
if (player.client && player.stat != 2)
|
||||
if (player.client && player.stat != DEAD)
|
||||
playercount += 1
|
||||
max_mages = round(playercount / 5)
|
||||
|
||||
@@ -40,12 +40,12 @@
|
||||
continue
|
||||
if(istype(wizard.current,/mob/living/carbon/brain))
|
||||
continue
|
||||
if(wizard.current.stat==2)
|
||||
if(wizard.current.stat==DEAD)
|
||||
continue
|
||||
if(wizard.current.stat==1)
|
||||
if(wizard.current.stat==UNCONSCIOUS)
|
||||
if(wizard.current.health < 0)
|
||||
wizard.current << "\red <font size='4'>The Space Wizard Federation is upset with your performance and have terminated your employment.</font>"
|
||||
wizard.current.stat = 2
|
||||
wizard.current.death()
|
||||
continue
|
||||
wizards_alive++
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
var/mob/dead/observer/theghost = null
|
||||
spawn(rand(200, 600))
|
||||
message_admins("SWF is still pissed, sending another wizard - [max_mages - mages_made] left.")
|
||||
candidates = get_candidates(BE_WIZARD)
|
||||
candidates = get_candidates(ROLE_WIZARD)
|
||||
if(!candidates.len)
|
||||
message_admins("No applicable ghosts for the next ragin' mage, asking ghosts instead.")
|
||||
var/time_passed = world.time
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
/datum/game_mode/wizard/can_start()//This could be better, will likely have to recode it later
|
||||
if(!..())
|
||||
return 0
|
||||
var/list/datum/mind/possible_wizards = get_players_for_role(BE_WIZARD)
|
||||
var/list/datum/mind/possible_wizards = get_players_for_role(ROLE_WIZARD)
|
||||
if(possible_wizards.len==0)
|
||||
return 0
|
||||
var/datum/mind/wizard = pick(possible_wizards)
|
||||
@@ -211,7 +211,7 @@
|
||||
for(var/datum/mind/wizard in wizards)
|
||||
if(!istype(wizard.current,/mob/living/carbon))
|
||||
continue
|
||||
if(wizard.current.stat==2)
|
||||
if(wizard.current.stat==DEAD)
|
||||
continue
|
||||
wizards_alive++
|
||||
|
||||
@@ -219,7 +219,7 @@
|
||||
for(var/datum/mind/traitor in traitors)
|
||||
if(!istype(traitor.current,/mob/living/carbon))
|
||||
continue
|
||||
if(traitor.current.stat==2)
|
||||
if(traitor.current.stat==DEAD)
|
||||
continue
|
||||
traitors_alive++
|
||||
|
||||
@@ -269,7 +269,7 @@
|
||||
wizardwin = 0
|
||||
count++
|
||||
|
||||
if(wizard.current && wizard.current.stat!=2 && wizardwin)
|
||||
if(wizard.current && wizard.current.stat!=DEAD && wizardwin)
|
||||
text += "<br><font color='green'><B>The wizard was successful!</B></font>"
|
||||
feedback_add_details("wizard_success","SUCCESS")
|
||||
else
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
if(!..())
|
||||
return 0
|
||||
|
||||
var/list/candidates = get_players_for_role(BE_ALIEN)
|
||||
var/list/candidates = get_players_for_role(ROLE_ALIEN)
|
||||
var/playersready = 0
|
||||
var/xenos_num
|
||||
for(var/mob/new_player/player in player_list)
|
||||
|
||||
@@ -94,7 +94,7 @@ var/global/datum/controller/occupations/job_master
|
||||
if(!job.player_old_enough(player.client))
|
||||
Debug("FOC player not old enough, Player: [player]")
|
||||
continue
|
||||
if(flag && (!player.client.prefs.be_special & flag))
|
||||
if(flag && !(flag in player.client.prefs.be_special))
|
||||
Debug("FOC flag failed, Player: [player], Flag: [flag], ")
|
||||
continue
|
||||
if(player.mind && job.title in player.mind.restricted_roles)
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
T += M.rating
|
||||
min_temperature = max(0,T0C - (170 + (T*15)))
|
||||
current_heat_capacity = 1000 * ((H - 1) ** 2)
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/unary/cold_sink/freezer/construction()
|
||||
..(dir,dir)
|
||||
|
||||
@@ -62,8 +62,10 @@
|
||||
if(!panel_open)
|
||||
user << "<span class='notice'>Open the maintenance panel first.</span>"
|
||||
return
|
||||
var/list/choices = list("West" = WEST, "East" = EAST, "South" = SOUTH, "North" = NORTH)
|
||||
var/selected = input(user,"Select a direction for the connector.", "Connector Direction") in choices
|
||||
dir = choices[selected]
|
||||
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
dir = pick(WEST,EAST,SOUTH,NORTH)
|
||||
var/node_connect = dir
|
||||
initialize_directions = dir
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node_connect))
|
||||
@@ -84,7 +86,7 @@
|
||||
|
||||
/obj/machinery/atmospherics/unary/cold_sink/freezer/attack_ai(mob/user as mob)
|
||||
attack_hand(user)
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/unary/cold_sink/freezer/attack_ghost(mob/user as mob)
|
||||
attack_hand(user)
|
||||
|
||||
@@ -92,7 +94,7 @@
|
||||
if(panel_open)
|
||||
user << "<span class='notice'>Close the maintenance panel first.</span>"
|
||||
return
|
||||
|
||||
|
||||
src.ui_interact(user)
|
||||
|
||||
/obj/machinery/atmospherics/unary/cold_sink/freezer/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
@@ -193,8 +195,8 @@
|
||||
RefreshParts()
|
||||
|
||||
/obj/machinery/atmospherics/unary/heat_reservoir/heater/construction()
|
||||
..(dir,dir)
|
||||
|
||||
..(dir,dir)
|
||||
|
||||
/obj/machinery/atmospherics/unary/heat_reservoir/heater/RefreshParts()
|
||||
var/H
|
||||
var/T
|
||||
@@ -220,8 +222,10 @@
|
||||
if(!panel_open)
|
||||
user << "<span class='notice'>Open the maintenance panel first.</span>"
|
||||
return
|
||||
var/list/choices = list("West" = WEST, "East" = EAST, "South" = SOUTH, "North" = NORTH)
|
||||
var/selected = input(user,"Select a direction for the connector.", "Connector Direction") in choices
|
||||
dir = choices[selected]
|
||||
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
dir = pick(WEST,EAST,SOUTH,NORTH)
|
||||
var/node_connect = dir
|
||||
initialize_directions = dir
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node_connect))
|
||||
@@ -242,9 +246,9 @@
|
||||
|
||||
/obj/machinery/atmospherics/unary/heat_reservoir/heater/attack_ai(mob/user as mob)
|
||||
attack_hand(user)
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/unary/heat_reservoir/heater/attack_ghost(mob/user as mob)
|
||||
src.attack_hand(user)
|
||||
src.attack_hand(user)
|
||||
|
||||
/obj/machinery/atmospherics/unary/heat_reservoir/heater/attack_hand(mob/user as mob)
|
||||
if(panel_open)
|
||||
|
||||
@@ -865,10 +865,10 @@
|
||||
product_ads = "Probably not bad for you!;Don't believe the scientists!;It's good for you!;Don't quit, buy more!;Smoke!;Nicotine heaven.;Best cigarettes since 2150.;Award-winning cigs."
|
||||
vend_delay = 34
|
||||
icon_state = "cigs"
|
||||
products = list(/obj/item/weapon/storage/fancy/cigarettes = 5,/obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift = 3,/obj/item/weapon/storage/fancy/cigarettes/cigpack_robust = 2,/obj/item/weapon/storage/fancy/cigarettes/cigpack_carp = 3,/obj/item/weapon/storage/fancy/cigarettes/cigpack_midori = 1,/obj/item/weapon/storage/fancy/cigarettes/cigpack_random = 2,/obj/item/weapon/storage/box/matches = 10,/obj/item/weapon/lighter/random = 4,/obj/item/weapon/rollingpaperpack = 5)
|
||||
products = list(/obj/item/weapon/storage/fancy/cigarettes = 5,/obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift = 3,/obj/item/weapon/storage/fancy/cigarettes/cigpack_robust = 2,/obj/item/weapon/storage/fancy/cigarettes/cigpack_carp = 3,/obj/item/weapon/storage/fancy/cigarettes/cigpack_midori = 1,/obj/item/weapon/storage/fancy/cigarettes/cigpack_random = 2, /obj/item/weapon/reagent_containers/pill/patch/nicotine = 10, /obj/item/weapon/storage/box/matches = 10,/obj/item/weapon/lighter/random = 4,/obj/item/weapon/rollingpaperpack = 5)
|
||||
contraband = list(/obj/item/weapon/lighter/zippo = 4)
|
||||
premium = list(/obj/item/clothing/mask/cigarette/cigar/havana = 2,/obj/item/weapon/storage/fancy/cigarettes/cigpack_robustgold = 1)
|
||||
prices = list(/obj/item/weapon/storage/fancy/cigarettes = 60,/obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift = 60,/obj/item/weapon/storage/fancy/cigarettes/cigpack_robust = 60,/obj/item/weapon/storage/fancy/cigarettes/cigpack_carp = 60,/obj/item/weapon/storage/fancy/cigarettes/cigpack_midori = 60,/obj/item/weapon/storage/fancy/cigarettes/cigpack_random = 150,/obj/item/weapon/storage/box/matches = 10,/obj/item/weapon/lighter/random = 60, /obj/item/weapon/rollingpaperpack = 20)
|
||||
prices = list(/obj/item/weapon/storage/fancy/cigarettes = 60,/obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift = 60,/obj/item/weapon/storage/fancy/cigarettes/cigpack_robust = 60,/obj/item/weapon/storage/fancy/cigarettes/cigpack_carp = 60,/obj/item/weapon/storage/fancy/cigarettes/cigpack_midori = 60,/obj/item/weapon/storage/fancy/cigarettes/cigpack_random = 150, /obj/item/weapon/reagent_containers/pill/patch/nicotine = 15, /obj/item/weapon/storage/box/matches = 10,/obj/item/weapon/lighter/random = 60, /obj/item/weapon/rollingpaperpack = 20)
|
||||
refill_canister = /obj/item/weapon/vending_refill/cigarette
|
||||
|
||||
/obj/machinery/vending/cigarette/New()
|
||||
|
||||
@@ -198,7 +198,7 @@
|
||||
S.faction = faction
|
||||
S.master_commander = master_commander
|
||||
if(player_spiders)
|
||||
var/list/candidates = get_candidates(BE_ALIEN, ALIEN_AFK_BRACKET)
|
||||
var/list/candidates = get_candidates(ROLE_ALIEN, ALIEN_AFK_BRACKET)
|
||||
var/client/C = null
|
||||
|
||||
if(candidates.len)
|
||||
|
||||
@@ -150,6 +150,17 @@
|
||||
new /obj/item/clothing/head/helmet/space/rig/syndi(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/elite_hardsuit
|
||||
name = "Boxed Elite Syndicate Hardsuit and Helmet"
|
||||
can_hold = list("/obj/item/clothing/suit/space/rig/syndi/elite", "/obj/item/clothing/head/helmet/space/rig/syndi/elite")
|
||||
max_w_class = 3
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/elite_hardsuit/New()
|
||||
..()
|
||||
new /obj/item/clothing/suit/space/rig/syndi/elite(src)
|
||||
new /obj/item/clothing/head/helmet/space/rig/syndi/elite(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/conversion
|
||||
name = "box (CK)"
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ client/proc/one_click_antag()
|
||||
var/datum/mind/themind = null
|
||||
|
||||
for(var/mob/living/silicon/ai/ai in player_list)
|
||||
if(ai.client && ai.client.prefs.be_special & BE_MALF)
|
||||
if(ai.client && (ROLE_MALF in ai.client.prefs.be_special))
|
||||
AIs += ai
|
||||
|
||||
if(AIs.len)
|
||||
@@ -57,8 +57,8 @@ client/proc/one_click_antag()
|
||||
var/mob/living/carbon/human/H = null
|
||||
|
||||
for(var/mob/living/carbon/human/applicant in player_list)
|
||||
if(applicant.client.prefs.be_special & BE_TRAITOR)
|
||||
if(player_old_enough_antag(applicant.client,BE_TRAITOR))
|
||||
if(ROLE_TRAITOR in applicant.client.prefs.be_special)
|
||||
if(player_old_enough_antag(applicant.client,ROLE_TRAITOR))
|
||||
if(!applicant.stat)
|
||||
if(applicant.mind)
|
||||
if (!applicant.mind.special_role)
|
||||
@@ -91,8 +91,8 @@ client/proc/one_click_antag()
|
||||
var/mob/living/carbon/human/H = null
|
||||
|
||||
for(var/mob/living/carbon/human/applicant in player_list)
|
||||
if(applicant.client.prefs.be_special & BE_CHANGELING)
|
||||
if(player_old_enough_antag(applicant.client,BE_CHANGELING))
|
||||
if(ROLE_CHANGELING in applicant.client.prefs.be_special)
|
||||
if(player_old_enough_antag(applicant.client,ROLE_CHANGELING))
|
||||
if(!applicant.stat)
|
||||
if(applicant.mind)
|
||||
if (!applicant.mind.special_role)
|
||||
@@ -123,8 +123,8 @@ client/proc/one_click_antag()
|
||||
var/mob/living/carbon/human/H = null
|
||||
|
||||
for(var/mob/living/carbon/human/applicant in player_list)
|
||||
if(applicant.client.prefs.be_special & BE_REV)
|
||||
if(player_old_enough_antag(applicant.client,BE_REV))
|
||||
if(ROLE_REV in applicant.client.prefs.be_special)
|
||||
if(player_old_enough_antag(applicant.client,ROLE_REV))
|
||||
if(applicant.stat == CONSCIOUS)
|
||||
if(applicant.mind)
|
||||
if(!applicant.mind.special_role)
|
||||
@@ -150,9 +150,9 @@ client/proc/one_click_antag()
|
||||
var/time_passed = world.time
|
||||
|
||||
for(var/mob/G in respawnable_list)
|
||||
if(istype(G) && G.client && G.client.prefs.be_special & BE_WIZARD)
|
||||
if(istype(G) && G.client && (ROLE_WIZARD in G.client.prefs.be_special))
|
||||
if(!jobban_isbanned(G, "wizard") && !jobban_isbanned(G, "Syndicate"))
|
||||
if(player_old_enough_antag(G.client,BE_WIZARD))
|
||||
if(player_old_enough_antag(G.client,ROLE_WIZARD))
|
||||
spawn(0)
|
||||
switch(G.timed_alert("Do you wish to be considered for the position of Space Wizard Foundation 'diplomat'?","Please answer in 30 seconds!","No",300,"Yes","No"))//alert(G, "Do you wish to be considered for the position of Space Wizard Foundation 'diplomat'?","Please answer in 30 seconds!","Yes","No"))
|
||||
if("Yes")
|
||||
@@ -192,8 +192,8 @@ client/proc/one_click_antag()
|
||||
var/mob/living/carbon/human/H = null
|
||||
|
||||
for(var/mob/living/carbon/human/applicant in player_list)
|
||||
if(applicant.client.prefs.be_special & BE_CULTIST)
|
||||
if(player_old_enough_antag(applicant.client,BE_CULTIST))
|
||||
if(ROLE_CULTIST in applicant.client.prefs.be_special)
|
||||
if(player_old_enough_antag(applicant.client,ROLE_CULTIST))
|
||||
if(applicant.stat == CONSCIOUS)
|
||||
if(applicant.mind)
|
||||
if(!applicant.mind.special_role)
|
||||
@@ -224,9 +224,9 @@ client/proc/one_click_antag()
|
||||
var/time_passed = world.time
|
||||
|
||||
for(var/mob/G in respawnable_list)
|
||||
if(istype(G) && G.client && G.client.prefs.be_special & BE_OPERATIVE)
|
||||
if(istype(G) && G.client && (ROLE_OPERATIVE in G.client.prefs.be_special))
|
||||
if(!jobban_isbanned(G, "operative") && !jobban_isbanned(G, "Syndicate"))
|
||||
if(player_old_enough_antag(G.client,BE_OPERATIVE))
|
||||
if(player_old_enough_antag(G.client,ROLE_OPERATIVE))
|
||||
spawn(0)
|
||||
switch(alert(G,"Do you wish to be considered for a nuke team being sent in?","Please answer in 30 seconds!","Yes","No"))
|
||||
if("Yes")
|
||||
@@ -442,8 +442,8 @@ client/proc/one_click_antag()
|
||||
|
||||
//Generates a list of candidates from active ghosts.
|
||||
for(var/mob/G in respawnable_list)
|
||||
if(istype(G) && G.client && G.client.prefs.be_special & BE_RAIDER)
|
||||
if(player_old_enough_antag(G.client,BE_RAIDER))
|
||||
if(istype(G) && G.client && (ROLE_RAIDER in G.client.prefs.be_special))
|
||||
if(player_old_enough_antag(G.client,ROLE_RAIDER))
|
||||
if(!jobban_isbanned(G, "raider") && !jobban_isbanned(G, "Syndicate"))
|
||||
spawn(0)
|
||||
switch(alert(G,"Do you wish to be considered for a vox raiding party arriving on the station?","Please answer in 30 seconds!","Yes","No"))
|
||||
@@ -543,8 +543,8 @@ client/proc/one_click_antag()
|
||||
var/mob/living/carbon/human/H = null
|
||||
|
||||
for(var/mob/living/carbon/human/applicant in player_list)
|
||||
if(applicant.client.prefs.be_special & BE_VAMPIRE)
|
||||
if(player_old_enough_antag(applicant.client,BE_VAMPIRE))
|
||||
if(ROLE_VAMPIRE in applicant.client.prefs.be_special)
|
||||
if(player_old_enough_antag(applicant.client,ROLE_VAMPIRE))
|
||||
if(!applicant.stat)
|
||||
if(applicant.mind)
|
||||
if (!applicant.mind.special_role)
|
||||
|
||||
@@ -444,7 +444,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
var/list/candidates = list()
|
||||
for(var/mob/M in player_list)
|
||||
if(M.stat != DEAD) continue //we are not dead!
|
||||
if(!M.client.prefs.be_special & BE_ALIEN) continue //we don't want to be an alium
|
||||
if(!(ROLE_ALIEN in M.client.prefs.be_special)) continue //we don't want to be an alium
|
||||
if(jobban_isbanned(M, "alien") || jobban_isbanned(M, "Syndicate")) continue //we are jobbanned
|
||||
if(M.client.is_afk()) continue //we are afk
|
||||
if(M.mind && M.mind.current && M.mind.current.stat != DEAD) continue //we have a live body we are tied to
|
||||
|
||||
@@ -204,6 +204,8 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
save_preferences(C)
|
||||
save_character(C) //let's save this new random character so it doesn't keep generating new ones.
|
||||
|
||||
|
||||
// Hello I am a proc full of snowflake species checks how are you
|
||||
/datum/preferences/proc/ShowChoices(mob/user)
|
||||
if(!user || !user.client) return
|
||||
update_preview_icon()
|
||||
@@ -412,7 +414,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
|
||||
dat += "</td><td width='300px' height='300px' valign='top'>"
|
||||
dat += "<h2>Special Role Settings</h2>"
|
||||
// dat += "<br><br>"
|
||||
// dat += "<br><br>"
|
||||
if(jobban_isbanned(user, "Syndicate"))
|
||||
dat += "<b>You are banned from special roles.</b>"
|
||||
src.be_special = list()
|
||||
@@ -434,7 +436,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
dat += "<a href='?_src_=prefs;preference=reset_all'>Reset Setup</a>"
|
||||
dat += "</center></body></html>"
|
||||
|
||||
// user << browse(dat, "window=preferences;size=560x580")
|
||||
// user << browse(dat, "window=preferences;size=560x580")
|
||||
var/datum/browser/popup = new(user, "preferences", "<div align='center'>Character Setup</div>", 640, 810)
|
||||
popup.set_content(dat)
|
||||
popup.open(0)
|
||||
@@ -1132,6 +1134,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
|
||||
ha_style = "None" // No Vulp ears on Unathi
|
||||
m_style = "None" // No Unathi markings on Tajara
|
||||
|
||||
body_accessory = null //no vulpatail on humans damnit
|
||||
if("speciesprefs")//oldvox code
|
||||
speciesprefs = !speciesprefs
|
||||
@@ -1673,6 +1676,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
character.g_markings = g_markings
|
||||
character.b_markings = b_markings
|
||||
character.m_style = m_style
|
||||
|
||||
if(body_accessory)
|
||||
character.body_accessory = body_accessory_by_name["[body_accessory]"]
|
||||
|
||||
@@ -1687,6 +1691,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
character.gender = MALE
|
||||
|
||||
/datum/preferences/proc/open_load_dialog(mob/user)
|
||||
|
||||
var/DBQuery/query = dbcon.NewQuery("SELECT slot,real_name FROM [format_table_name("characters")] WHERE ckey='[user.ckey]' ORDER BY slot")
|
||||
|
||||
var/dat = "<body>"
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
volume = text2num(query.item[10])
|
||||
|
||||
old_roles_to_new(C)
|
||||
|
||||
|
||||
//Sanitize
|
||||
ooccolor = sanitize_hexcolor(ooccolor, initial(ooccolor))
|
||||
// lastchangelog = sanitize_text(lastchangelog, initial(lastchangelog))
|
||||
@@ -118,6 +118,8 @@
|
||||
facial_style_name,
|
||||
marking_style_name,
|
||||
head_accessory_style_name,
|
||||
hair_style_name,
|
||||
facial_style_name,
|
||||
eyes_red,
|
||||
eyes_green,
|
||||
eyes_blue,
|
||||
@@ -150,7 +152,7 @@
|
||||
speciesprefs,
|
||||
socks,
|
||||
body_accessory
|
||||
FROM [format_table_name("characters")] WHERE ckey='[C.ckey]' AND slot='[slot]'"})
|
||||
FROM [format_table_name("characters")] WHERE ckey='[C.ckey]' AND slot='[slot]'"})
|
||||
if(!query.Execute())
|
||||
var/err = query.ErrorMsg()
|
||||
log_game("SQL ERROR during character slot loading. Error : \[[err]\]\n")
|
||||
@@ -429,7 +431,6 @@
|
||||
return
|
||||
return 1
|
||||
|
||||
|
||||
// If you see this proc lying around and don't know why it's there, expunge it, as this is for a short-term DB update, starting 27/12/2015
|
||||
// 0 on failed update, 1 on success
|
||||
/datum/preferences/proc/old_roles_to_new(var/client/C)
|
||||
@@ -536,4 +537,4 @@
|
||||
load_character(C)
|
||||
return 0
|
||||
load_character(C,pick(saves))
|
||||
return 1*/
|
||||
return 1*/
|
||||
@@ -264,6 +264,7 @@ BLIND // can't see anything
|
||||
var/flash_protect = 0
|
||||
var/tint = 0
|
||||
var/HUDType = null
|
||||
var/darkness_view = 0
|
||||
var/vision_flags = 0
|
||||
var/see_darkness = 1
|
||||
|
||||
|
||||
@@ -364,6 +364,27 @@
|
||||
user.update_inv_wear_suit()
|
||||
user.update_inv_w_uniform()
|
||||
|
||||
//Elite Syndie suit
|
||||
/obj/item/clothing/head/helmet/space/rig/syndi/elite
|
||||
name = "elite syndicate hardsuit helmet"
|
||||
desc = "An elite version of the syndicate helmet, with improved armour and fire shielding. It is in travel mode. Property of Gorlex Marauders."
|
||||
icon_state = "hardsuit0-syndielite"
|
||||
item_color = "syndielite"
|
||||
armor = list(melee = 80, bullet = 70, laser = 50, energy = 25, bomb = 55, bio = 100, rad = 70)
|
||||
heat_protection = HEAD
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
|
||||
sprite_sheets = null
|
||||
|
||||
/obj/item/clothing/suit/space/rig/syndi/elite
|
||||
name = "elite syndicate hardsuit"
|
||||
desc = "An elite version of the syndicate hardsuit, with improved armour and fire shielding. It is in travel mode."
|
||||
icon_state = "hardsuit0-syndielite"
|
||||
item_color = "syndielite"
|
||||
armor = list(melee = 80, bullet = 70, laser = 50, energy = 25, bomb = 55, bio = 100, rad = 70)
|
||||
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
|
||||
sprite_sheets = null
|
||||
|
||||
//Wizard Rig
|
||||
/obj/item/clothing/head/helmet/space/rig/wizard
|
||||
name = "gem-encrusted hardsuit helmet"
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
if(temp_vent.parent.other_atmosmch.len > 50) //Stops Aliens getting stuck in small networks. See: Security, Virology
|
||||
vents += temp_vent
|
||||
|
||||
var/list/candidates = get_candidates(BE_ALIEN,ALIEN_AFK_BRACKET)
|
||||
var/list/candidates = get_candidates(ROLE_ALIEN,ALIEN_AFK_BRACKET)
|
||||
|
||||
while(spawncount > 0 && vents.len && candidates.len)
|
||||
var/obj/vent = pick_n_take(vents)
|
||||
@@ -33,4 +33,4 @@
|
||||
|
||||
spawncount--
|
||||
successSpawn = 1
|
||||
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
if(temp_vent.parent.other_atmosmch.len > 50)
|
||||
vents += temp_vent
|
||||
|
||||
var/list/candidates = get_candidates(BE_ALIEN,ALIEN_AFK_BRACKET)
|
||||
var/list/candidates = get_candidates(ROLE_BORER,ALIEN_AFK_BRACKET)
|
||||
while(spawncount > 0 && vents.len && candidates.len)
|
||||
var/obj/vent = pick_n_take(vents)
|
||||
var/client/C = pick_n_take(candidates)
|
||||
@@ -32,4 +32,4 @@
|
||||
|
||||
spawncount--
|
||||
successSpawn = 1
|
||||
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
/datum/event/spawn_slaughter/proc/get_slaughter(var/end_if_fail = 0)
|
||||
key_of_slaughter = null
|
||||
if(!key_of_slaughter)
|
||||
var/list/candidates = get_candidates(BE_ALIEN)
|
||||
var/list/candidates = get_candidates(ROLE_DEMON)
|
||||
if(!candidates.len)
|
||||
if(end_if_fail)
|
||||
return 0
|
||||
@@ -55,4 +55,3 @@
|
||||
return 0
|
||||
message_admins("Unfortunately, no candidates were available for becoming a Slaugter Demon. Shutting down.")
|
||||
kill()
|
||||
|
||||
@@ -2,80 +2,4 @@
|
||||
var/list/currently_querying // Used to avoid asking the same ghost repeatedly.
|
||||
|
||||
// The following procs are used to grab players for mobs produced by a seed (mostly for dionaea).
|
||||
/datum/seed/proc/handle_living_product(var/mob/living/host)
|
||||
/*
|
||||
if(!host || !istype(host)) return
|
||||
|
||||
spawn(0)
|
||||
request_player(host)
|
||||
if(istype(host,/mob/living/simple_animal))
|
||||
return
|
||||
spawn(75)
|
||||
if(!host.ckey && !host.client)
|
||||
host.death() // This seems redundant, but a lot of mobs don't
|
||||
host.stat = DEAD // handle death() properly. Better safe than etc.
|
||||
host.visible_message("<span class='danger'>[host] is malformed and unable to survive. It expires pitifully, leaving behind some seeds.</span>")
|
||||
|
||||
var/total_yield = rand(1,3)
|
||||
for(var/j = 0;j<=total_yield;j++)
|
||||
var/obj/item/seeds/S = new(get_turf(host))
|
||||
S.seed_type = name
|
||||
S.update_seed()
|
||||
|
||||
/datum/seed/proc/request_player(var/mob/living/host)
|
||||
if(!host) return
|
||||
for(var/mob/dead/observer/O in player_list)
|
||||
if(jobban_isbanned(O, "Dionaea"))
|
||||
continue
|
||||
if(O.client)
|
||||
if(O.client.prefs.be_special & BE_PLANT && !(O.client in currently_querying))
|
||||
currently_querying |= O.client
|
||||
question(O.client,host)
|
||||
|
||||
/datum/seed/proc/question(var/client/C,var/mob/living/host)
|
||||
spawn(0)
|
||||
|
||||
if(!C || !host || !(C.mob && istype(C.mob,/mob/dead))) return // We don't want to spam them repeatedly if they're already in a mob.
|
||||
|
||||
var/response = alert(C, "Someone is harvesting [display_name]. Would you like to play as one?", "Sentient plant harvest", "Yes", "No", "Never for this round.")
|
||||
|
||||
if(!C || !host || !(C.mob && istype(C.mob,/mob/dead))) return // ...or accidentally accept an invalid argument for transfer.
|
||||
|
||||
if(response == "Yes")
|
||||
transfer_personality(C,host)
|
||||
else if (response == "Never for this round")
|
||||
C.prefs.be_special ^= BE_PLANT
|
||||
|
||||
currently_querying -= C
|
||||
|
||||
/datum/seed/proc/transfer_personality(var/client/player,var/mob/living/host)
|
||||
|
||||
//Something is wrong, abort.
|
||||
if(!player || !host) return
|
||||
|
||||
//Host already has a controller, pike off slowpoke.
|
||||
if(host.client && host.ckey) return
|
||||
|
||||
//Transfer them over.
|
||||
host.ckey = player.ckey
|
||||
if(player.mob && player.mob.mind)
|
||||
player.mob.mind.transfer_to(host)
|
||||
|
||||
if(host.dna) host.dna.real_name = host.real_name
|
||||
|
||||
// Update mode specific HUD icons.
|
||||
callHook("harvest_podman", list(host))
|
||||
|
||||
host << "\green <B>You awaken slowly, stirring into sluggish motion as the air caresses you.</B>"
|
||||
|
||||
// This is a hack, replace with some kind of species blurb proc.
|
||||
if(istype(host,/mob/living/simple_animal/diona))
|
||||
host << "<B>You are [host], one of a race of drifting interstellar plantlike creatures that sometimes share their seeds with human traders.</B>"
|
||||
host << "<B>Too much darkness will send you into shock and starve you, but light will help you heal.</B>"
|
||||
|
||||
var/newname = input(host,"Enter a name, or leave blank for the default name.", "Name change","") as text
|
||||
newname = sanitize(newname)
|
||||
if (newname != "")
|
||||
host.real_name = newname
|
||||
host.name = host.real_name
|
||||
*/
|
||||
/datum/seed/proc/handle_living_product(var/mob/living/host)
|
||||
@@ -83,7 +83,7 @@ var/const/ALIEN_AFK_BRACKET = 450 // 45 seconds
|
||||
AttemptGrow()
|
||||
|
||||
/obj/item/alien_embryo/proc/AttemptGrow(var/gib_on_success = 1)
|
||||
var/list/candidates = get_candidates(BE_ALIEN,ALIEN_AFK_BRACKET,1)
|
||||
var/list/candidates = get_candidates(ROLE_ALIEN,ALIEN_AFK_BRACKET,1)
|
||||
var/client/C = null
|
||||
|
||||
// To stop clientless larva, we will check that our host has a client
|
||||
|
||||
@@ -32,8 +32,9 @@
|
||||
/obj/item/device/mmi/posibrain/proc/request_player()
|
||||
for(var/mob/dead/observer/O in player_list)
|
||||
if(check_observer(O))
|
||||
O << "\blue <b>\A [src] has been activated. (<a href='?src=\ref[O];jump=\ref[src]'>Teleport</a> | <a href='?src=\ref[src];signup=\ref[O]'>Sign Up</a>)"
|
||||
//question(O.client)
|
||||
O << "<span class='boldnotice'>\A [src] has been activated. (<a href='?src=\ref[O];jump=\ref[src]'>Teleport</a> | <a href='?src=\ref[src];signup=\ref[O]'>Sign Up</a>)</span>"
|
||||
// if(ROLE_POSIBRAIN in O.client.prefs.be_special) The Guardian implementation looks cleaner
|
||||
// question(O.client)
|
||||
|
||||
/obj/item/device/mmi/posibrain/proc/check_observer(var/mob/dead/observer/O)
|
||||
if(O.has_enabled_antagHUD == 1 && config.antag_hud_restricted)
|
||||
@@ -52,7 +53,7 @@
|
||||
if(response == "Yes")
|
||||
transfer_personality(C.mob)
|
||||
else if (response == "Never for this round")
|
||||
C.prefs.be_special ^= BE_PAI
|
||||
C.prefs.be_special -= ROLE_POSIBRAIN
|
||||
|
||||
// This should not ever happen, but let's be safe
|
||||
/obj/item/device/mmi/posibrain/dropbrain(var/turf/dropspot)
|
||||
|
||||
@@ -413,6 +413,7 @@
|
||||
if(H.client)
|
||||
H.client.screen += global_hud.darkMask
|
||||
|
||||
var/minimum_darkness_view = INFINITY
|
||||
if(H.glasses)
|
||||
if(istype(H.glasses, /obj/item/clothing/glasses))
|
||||
var/obj/item/clothing/glasses/G = H.glasses
|
||||
@@ -420,6 +421,7 @@
|
||||
|
||||
if(G.darkness_view)
|
||||
H.see_in_dark = G.darkness_view
|
||||
minimum_darkness_view = G.darkness_view
|
||||
|
||||
if(!G.see_darkness)
|
||||
H.see_invisible = SEE_INVISIBLE_MINIMUM
|
||||
@@ -437,6 +439,9 @@
|
||||
var/obj/item/clothing/head/hat = H.head
|
||||
H.sight |= hat.vision_flags
|
||||
|
||||
if(hat.darkness_view && hat.darkness_view < minimum_darkness_view) // Pick the lowest of the two darkness_views between the glasses and helmet.
|
||||
H.see_in_dark = hat.darkness_view
|
||||
|
||||
if(!hat.see_darkness)
|
||||
H.see_invisible = SEE_INVISIBLE_MINIMUM
|
||||
|
||||
|
||||
@@ -789,7 +789,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75
|
||||
user << "<span class='notice'>You offer the sentience potion to [M]...</span>"
|
||||
being_used = 1
|
||||
|
||||
var/list/candidates = get_candidates(BE_ALIEN, ALIEN_AFK_BRACKET)
|
||||
var/list/candidates = get_candidates(ROLE_SENTIENT, ALIEN_AFK_BRACKET)
|
||||
|
||||
shuffle(candidates)
|
||||
|
||||
|
||||
@@ -348,15 +348,15 @@ var/datum/paiController/paiController // Global handler for pAI candidates
|
||||
|
||||
proc/requestRecruits(var/obj/item/device/paicard/P)
|
||||
for(var/mob/dead/observer/O in player_list)
|
||||
if(O.client && O.client.prefs.be_special & BE_PAI)
|
||||
if(player_old_enough_antag(O.client,BE_PAI))
|
||||
if(O.client && (ROLE_PAI in O.client.prefs.be_special))
|
||||
if(player_old_enough_antag(O.client,ROLE_PAI))
|
||||
if(check_recruit(O))
|
||||
O << "\blue <b>A pAI card is looking for personalities. (<a href='?src=\ref[O];jump=\ref[P]'>Teleport</a> | <a href='?src=\ref[src];signup=\ref[O]'>Sign Up</a>)</b>"
|
||||
//question(O.client)
|
||||
proc/check_recruit(var/mob/dead/observer/O)
|
||||
if(jobban_isbanned(O, "pAI") || jobban_isbanned(O,"nonhumandept"))
|
||||
return 0
|
||||
if(!player_old_enough_antag(O.client,BE_PAI))
|
||||
if(!player_old_enough_antag(O.client,ROLE_PAI))
|
||||
return 0
|
||||
if(O.has_enabled_antagHUD == 1 && config.antag_hud_restricted)
|
||||
return 0
|
||||
|
||||
@@ -259,7 +259,7 @@
|
||||
if(jobban_isbanned(O,"nonhumandept") || jobban_isbanned(O,"Drone"))
|
||||
continue
|
||||
if(O.client)
|
||||
if(O.client.prefs.be_special & BE_PAI)
|
||||
if(ROLE_PAI in O.client.prefs.be_special)
|
||||
question(O.client,O)
|
||||
|
||||
/mob/living/silicon/robot/drone/proc/question(var/client/C,var/mob/M)
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
if (!message)
|
||||
return
|
||||
log_say("[key_name(src)] : [message]")
|
||||
if (stat == 2)
|
||||
if (stat == DEAD)
|
||||
return say_dead(message)
|
||||
var/mob/living/simple_animal/borer/B = src.loc
|
||||
src << "You whisper silently, \"[message]\""
|
||||
@@ -302,7 +302,7 @@
|
||||
detatch()
|
||||
leave_host()
|
||||
|
||||
mob/living/simple_animal/borer/proc/detatch()
|
||||
/mob/living/simple_animal/borer/proc/detatch()
|
||||
|
||||
if(!host) return
|
||||
|
||||
@@ -416,7 +416,7 @@ mob/living/simple_animal/borer/proc/detatch()
|
||||
src << "You cannot infest a target in your current state."
|
||||
return
|
||||
|
||||
if(M.stat == 2)
|
||||
if(M.stat == DEAD)
|
||||
src << "That is not an appropriate target."
|
||||
return
|
||||
|
||||
@@ -457,15 +457,15 @@ mob/living/simple_animal/borer/proc/detatch()
|
||||
return
|
||||
|
||||
//Procs for grabbing players.
|
||||
mob/living/simple_animal/borer/proc/request_player()
|
||||
/mob/living/simple_animal/borer/proc/request_player()
|
||||
for(var/mob/O in respawnable_list)
|
||||
if(jobban_isbanned(O, "Syndicate"))
|
||||
continue
|
||||
if(O.client)
|
||||
if(O.client.prefs.be_special & BE_ALIEN && !jobban_isbanned(O, "alien"))
|
||||
if((ROLE_BORER in O.client.prefs.be_special) && !jobban_isbanned(O, "alien"))
|
||||
question(O.client)
|
||||
|
||||
mob/living/simple_animal/borer/proc/question(var/client/C)
|
||||
/mob/living/simple_animal/borer/proc/question(var/client/C)
|
||||
spawn(0)
|
||||
if(!C) return
|
||||
var/response = alert(C, "A cortical borer needs a player. Are you interested?", "Cortical borer request", "Yes", "No", "Never for this round")
|
||||
@@ -474,9 +474,9 @@ mob/living/simple_animal/borer/proc/question(var/client/C)
|
||||
if(response == "Yes")
|
||||
transfer_personality(C)
|
||||
else if (response == "Never for this round")
|
||||
C.prefs.be_special ^= BE_ALIEN
|
||||
C.prefs.be_special -= ROLE_BORER
|
||||
|
||||
mob/living/simple_animal/borer/proc/transfer_personality(var/client/candidate)
|
||||
/mob/living/simple_animal/borer/proc/transfer_personality(var/client/candidate)
|
||||
|
||||
if(!candidate)
|
||||
return
|
||||
|
||||
@@ -641,7 +641,7 @@
|
||||
return
|
||||
used = TRUE
|
||||
user << "[use_message]"
|
||||
var/list/mob/dead/observer/candidates = pollCandidates("Do you want to play as the [mob_name] of [user.real_name]?",BE_PAI, null, FALSE, 100)
|
||||
var/list/mob/dead/observer/candidates = pollCandidates("Do you want to play as the [mob_name] of [user.real_name]?",ROLE_GUARDIAN, null, FALSE, 100)
|
||||
var/mob/dead/observer/theghost = null
|
||||
|
||||
if(candidates.len)
|
||||
|
||||
@@ -442,7 +442,7 @@
|
||||
|
||||
if(!key_of_revenant)
|
||||
message_admins("The new revenant's old client either could not be found or is in a new, living mob - grabbing a random candidate instead...")
|
||||
var/list/candidates = get_candidates(BE_REVENANT)
|
||||
var/list/candidates = get_candidates(ROLE_REVENANT)
|
||||
if(!candidates.len)
|
||||
qdel(R)
|
||||
message_admins("No candidates were found for the new revenant. Oh well!")
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
return
|
||||
key_of_revenant = null
|
||||
if(!key_of_revenant)
|
||||
var/list/candidates = get_candidates(BE_REVENANT)
|
||||
var/list/candidates = get_candidates(ROLE_REVENANT)
|
||||
if(!candidates.len)
|
||||
if(end_if_fail)
|
||||
return 0
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
/datum/reagent/nicotine/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
var/smoke_message = pick("You can just feel your lungs dying!", "You feel relaxed.", "You feel calmed.", "You feel the lung cancer forming.", "You feel the money you wasted.", "You feel like a space cowboy.", "You feel rugged.")
|
||||
var/smoke_message = pick("You feel relaxed.", "You feel calmed.", "You feel less stressed.", "You feel more placid.", "You feel more undivided.")
|
||||
if(prob(5))
|
||||
M << "<span class='notice'>[smoke_message]</span>"
|
||||
if(prob(50))
|
||||
@@ -27,8 +27,6 @@
|
||||
return
|
||||
|
||||
/datum/reagent/nicotine/overdose_process(var/mob/living/M as mob)
|
||||
if(prob(20))
|
||||
M << "You feel like you smoked too much."
|
||||
M.adjustToxLoss(1*REM)
|
||||
M.adjustOxyLoss(1*REM)
|
||||
..()
|
||||
|
||||
@@ -45,7 +45,6 @@ datum/reagents/proc/metabolize(var/mob/M)
|
||||
if(M && R)
|
||||
if(R.volume >= R.overdose_threshold && !R.overdosed && R.overdose_threshold > 0)
|
||||
R.overdosed = 1
|
||||
M << "<span class = 'userdanger'>You feel like you took too much [R.name]!</span>"
|
||||
R.overdose_start(M)
|
||||
if(R.volume < R.overdose_threshold && R.overdosed)
|
||||
R.overdosed = 0
|
||||
|
||||
@@ -36,4 +36,11 @@
|
||||
desc = "Helps with burn injuries."
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("synthflesh", 20)
|
||||
reagents.add_reagent("synthflesh", 20)
|
||||
|
||||
/obj/item/weapon/reagent_containers/pill/patch/nicotine
|
||||
name = "nicotine patch"
|
||||
desc = "Helps temporarily curb the cravings of nicotine dependency."
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nicotine", 20)
|
||||
@@ -144,13 +144,16 @@
|
||||
confused_start = 100
|
||||
|
||||
//copy paste from LSD... shoot me
|
||||
/datum/reagent/ethanol/absinthe/on_mob_life(var/mob/M)
|
||||
/datum/reagent/ethanol/absinthe/on_mob_life(var/mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
if(!data) data = 1
|
||||
data++
|
||||
M:hallucination += 5
|
||||
if(volume > overdose_threshold)
|
||||
M:adjustToxLoss(1)
|
||||
M.hallucination += 5
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/ethanol/absinthe/overdose_process(mob/living/M)
|
||||
M.adjustToxLoss(1)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -164,8 +167,11 @@
|
||||
/datum/reagent/ethanol/rum/on_mob_life(var/mob/living/M as mob)
|
||||
..()
|
||||
M.dizziness +=5
|
||||
if(volume > overdose_threshold)
|
||||
M:adjustToxLoss(1)
|
||||
return
|
||||
|
||||
/datum/reagent/ethanol/rum/overdose_process(mob/living/M)
|
||||
M.adjustToxLoss(1)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/ethanol/mojito
|
||||
|
||||
@@ -309,12 +309,6 @@ var/obj/machinery/blackbox_recorder/blackbox
|
||||
var/DBQuery/query_insert = dbcon.NewQuery(sql)
|
||||
query_insert.Execute()
|
||||
|
||||
// Sanitize inputs to avoid SQL injection attacks
|
||||
proc/sql_sanitize_text(var/text)
|
||||
text = replacetext(text, "'", "''")
|
||||
text = replacetext(text, ";", "")
|
||||
text = replacetext(text, "&", "")
|
||||
return text
|
||||
|
||||
proc/feedback_set(var/variable,var/value)
|
||||
if(!blackbox) return
|
||||
|
||||
|
Before Width: | Height: | Size: 242 KiB After Width: | Height: | Size: 244 KiB |
|
Before Width: | Height: | Size: 434 KiB After Width: | Height: | Size: 436 KiB |
|
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 113 KiB |
|
Before Width: | Height: | Size: 146 KiB After Width: | Height: | Size: 146 KiB |
@@ -34,6 +34,7 @@
|
||||
#include "code\__DEFINES\preferences.dm"
|
||||
#include "code\__DEFINES\process_scheduler.dm"
|
||||
#include "code\__DEFINES\qdel.dm"
|
||||
#include "code\__DEFINES\role_preferences.dm"
|
||||
#include "code\__DEFINES\sight.dm"
|
||||
#include "code\__DEFINES\stat.dm"
|
||||
#include "code\__HELPERS\_string_lists.dm"
|
||||
|
||||