fixes and balance

Fixes:

* Depot mobs now generate attack animations when you attack them.

* Depot mobs can no longer be endlessly spammed with melee item attacks. This counters the 'spam attacks till you get lucky' strategy.

* Depot mobs can no longer be harmed by punching them. This counters the 'bypass eshield with punches' strategy.

* Depot mobs will now kill you if you're in crit. This counters endlessly-regenerating diona.

* Syndicate sentry bot will now path through other depot mobs. This fixes the bot getting stuck on them.

Balance tweaks:

* Armory airlocks are now harder to hack.

* Armory is now protected by an energy shield. Killing officers may randomly unlock the shield. This counters people rushing the armory every time. Depot mobs can walk through the shield.

* Depot mobs (except for the bot) now recogize if you've returned from death to attack them again, and increase the alert level further. This counters changelings.
This commit is contained in:
Kyep
2018-06-19 00:25:09 -07:00
parent 8343b6d807
commit 49db5396a7
8 changed files with 132 additions and 23 deletions
+22 -14
View File
@@ -744,9 +744,9 @@
"op" = (/obj/structure/table,/obj/item/wrench,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot)
"oq" = (/obj/structure/table,/obj/item/folder/syndicate/yellow,/obj/item/pen,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot)
"or" = (/obj/structure/cable,/obj/machinery/power/terminal,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot)
"os" = (/obj/effect/spawner/random_spawners/syndicate/layout/door/vault,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot)
"ot" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/wall/r_wall,/area/syndicate_depot)
"ou" = (/obj/structure/sign/poster/contraband/energy_swords,/turf/simulated/wall/r_wall,/area/syndicate_depot)
"os" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot)
"ot" = (/obj/effect/landmark{dir = 6; name = "syndi_depot_shield"},/turf/simulated/wall/r_wall,/area/syndicate_depot)
"ou" = (/obj/effect/spawner/random_spawners/syndicate/layout/door/vault,/obj/effect/landmark{dir = 4; name = "syndi_depot_shield"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot)
"ov" = (/obj/effect/spawner/random_spawners/syndicate/mob,/turf/simulated/floor/mineral/plasma,/area/syndicate_depot)
"ow" = (/obj/machinery/light/small{tag = "icon-bulb1 (EAST)"; icon_state = "bulb1"; dir = 4},/turf/simulated/floor/mineral/silver,/area/syndicate_depot)
"ox" = (/obj/structure/sign/poster/official/state_laws,/turf/simulated/wall/r_wall,/area/syndicate_depot)
@@ -762,12 +762,12 @@
"oH" = (/obj/machinery/atmospherics/unary/passive_vent/high_volume{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot)
"oI" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot)
"oJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot)
"oK" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/effect/spawner/random_spawners/syndicate/layout/door/vault,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot)
"oK" = (/obj/effect/landmark{dir = 4; name = "syndi_depot_shield"},/turf/simulated/wall/r_wall,/area/syndicate_depot)
"oL" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot)
"oM" = (/obj/machinery/porta_turret/syndicate/grenade,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot)
"oM" = (/obj/structure/sign/poster/contraband/energy_swords,/obj/effect/landmark{dir = 4; name = "syndi_depot_shield"},/turf/simulated/wall/r_wall,/area/syndicate_depot)
"oN" = (/obj/effect/decal/warning_stripes/north,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot)
"oO" = (/obj/effect/decal/warning_stripes/north,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot)
"oP" = (/obj/structure/sign/poster/contraband/revolver,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/syndicate_depot)
"oP" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/landmark{dir = 4; name = "syndi_depot_shield"},/turf/simulated/wall/r_wall,/area/syndicate_depot)
"oQ" = (/obj/machinery/atmospherics/unary/passive_vent/high_volume{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot)
"oR" = (/obj/effect/spawner/random_spawners/syndicate/turret,/mob/living/simple_animal/hostile/syndicate/melee/autogib/depotboss,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot)
"oS" = (/obj/structure/mirror{pixel_x = -32},/turf/simulated/floor/mineral/plasma,/area/syndicate_depot)
@@ -779,7 +779,7 @@
"oY" = (/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot/outer)
"oZ" = (/obj/structure/sign/poster/official/obey,/turf/simulated/wall/r_wall,/area/syndicate_depot)
"pa" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/wall/r_wall,/area/syndicate_depot)
"pb" = (/obj/structure/sign/poster/contraband/syndicate_pistol,/turf/simulated/wall/r_wall,/area/syndicate_depot)
"pb" = (/obj/effect/landmark{dir = 10; name = "syndi_depot_shield"},/turf/simulated/wall/r_wall,/area/syndicate_depot)
"pc" = (/mob/living/silicon/decoy/syndicate/depot,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot)
"pd" = (/turf/simulated/mineral,/area/syndicate_depot)
"pe" = (/obj/machinery/door_control{active_power_usage = 0; id = "syndi_depot_rear"; idle_power_usage = 0; name = "mysterious button"; normaldoorcontrol = 0; use_power = 0},/obj/structure/sign/poster/contraband/syndicate_recruitment,/turf/simulated/wall,/area/syndicate_depot)
@@ -806,6 +806,14 @@
"pz" = (/obj/machinery/navbeacon/invisible{codes_txt = "patrol;next_patrol=SDNE"; invisibility = 100; location = "SDSE"},/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot/outer)
"pA" = (/turf/space,/area/syndicate_depot/outer)
"pB" = (/obj/machinery/door_control{active_power_usage = 0; id = "syndi_depot_rear"; idle_power_usage = 0; name = "mysterious button"; normaldoorcontrol = 0; pixel_x = 24; use_power = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot)
"pC" = (/obj/effect/landmark{name = "syndi_depot_shield"},/turf/simulated/wall/r_wall,/area/syndicate_depot)
"pD" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/effect/spawner/random_spawners/syndicate/layout/door/vault,/obj/effect/landmark{name = "syndi_depot_shield"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot)
"pE" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/mob/living/simple_animal/hostile/syndicate/melee/autogib/depotboss/armory,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot)
"pF" = (/obj/structure/sign/poster/contraband/revolver,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/effect/landmark{name = "syndi_depot_shield"},/turf/simulated/wall/r_wall,/area/syndicate_depot)
"pG" = (/obj/effect/spawner/random_spawners/syndicate/layout/door/vault,/obj/effect/landmark{name = "syndi_depot_shield"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot)
"pH" = (/obj/effect/landmark{dir = 5; name = "syndi_depot_shield"},/turf/simulated/wall/r_wall,/area/syndicate_depot)
"pI" = (/obj/structure/sign/poster/contraband/syndicate_pistol,/obj/effect/landmark{dir = 4; name = "syndi_depot_shield"},/turf/simulated/wall/r_wall,/area/syndicate_depot)
"pJ" = (/obj/effect/landmark{dir = 9; name = "syndi_depot_shield"},/turf/simulated/wall/r_wall,/area/syndicate_depot)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -1026,13 +1034,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQmFmFaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQmFmgnnnqmFnrazaznsnsntaznunvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlRlRlTlTmknwmAmAmAmAmkmNnxnmmknymAmAmkmknzmkmkmCmkmkmkmAmAnxmNmklTlTlRlRlRlQlQaaaaaaaaaaaaaaaaaalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQlQlQlQmHazazazazaznAaznunBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalRlRlTlTmknCmAmAmAnDmkmAmAmAmCmAmAmAmCmAmAmBmvmAmAmAmCmAmAmAmAmklTlTlRlRlRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQlQlQnEnFnGaznHnAaznAaznAnunBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalPaaaaaaaalRlRlTnenInJmAmAmAmAmCnlmAmAmkmBmAmAmknKmAmAmAmAmAnLmkmZmsnMmAmkmllTlTlRlRlQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQlQnNaznOazmpaznrazazaznAnunBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlRlRlTlTmknPmBmAmAmBmknQmCmkmkmknRmkmkmAnSnTnUnVmAnWmkmkmkmknXmkmelTlRlRlRlQbBlQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQlQnYnnnZazoaazazobnsnsaznuocaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlRlTlTmemkmkmkmCmkmkmkodmAmvmsoeofogmkmAohnToinVmAojokolomonoomklTlTlRlRlRmFmFmFbBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQlQlQlQnYnnnnmmmmnnnnnnnnmJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlRlRlTlTmwmEmDmAmAopmkoqmAmAmAmAormkmkosotoumkmkmCmkmkokmkovowmklTlTlRlRlTmFbBmFmFaaaaaalQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlRlRlTlTmkmkoxnlmAmAmCmAmBmAnKmAoymkozoAoBoCoDmkmAmAmvmAmkoEoFmklTlTlRlRmdmFlQmFmFaaaabBlQmFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQaalQlQlQlQlQmFmFlQlQlQlQlQlQlQlQlQlQlQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalRlRlTlTnemkmNmAmAnDoGmAmAmAoHoIoJoKoLoMoNoOoOoPoLoQoRmAmkoSoTmkmllTlRlRlTmFlQlQmFaaaaaamFmFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQmFmFmFlQlQlQlQlQlQlQlQlQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalRlRlTlTlTmkmkmkmCmkmkoUnToVmAoWoXmkmAmAohmAmAosmAmAmAmAmknXmkmklTlTlRlRlTlQlQlQmFmFaalQbBlQmFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQaaaaaaaamFmFlQmFlQlQmFmFmFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlRlRlTlTmelToYmkmAnlmkoZmkmkmCpamkmkmkpbotosmkmknTnTmApcmkmAmBmklTlTpdpepflQmFmFmFmFbBlQaalQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQlQnNaznOazmpaznrazazaznAnunBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlRlRlTlTmknPmBmAmAmBmknQmCmkmkmknRmkmkmAnSnTososmAnWmkmkmkmknXmkmelTlRlRlRlQbBlQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQlQnYnnnZazoaazazobnsnsaznuocaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlRlTlTmemkmkmkmCmkmkmkodmAmvmsoeofogmkmAohnToinUmAojokolomonoomklTlTlRlRlRmFmFmFbBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQlQlQlQnYnnnnmmmmnnnnnnnnmJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlRlRlTlTmwmEmDmAmAopmkoqmAmAmAmAorotoKouoPoMoKpbmCmkmkokmkovowmklTlTlRlRlTmFbBmFmFaaaaaalQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlRlRlTlTmkmkoxnlmAmAmCmAmBmAnKmAoypCozoAoBoCoDpCmAmAmvmAmkoEoFmklTlTlRlRmdmFlQmFmFaaaabBlQmFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQaalQlQlQlQlQmFmFlQlQlQlQlQlQlQlQlQlQlQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalRlRlTlTnemkmNmAmAnDoGmAmAmAoHoIoJpDoLpEoNoOoOpFoLoQoRmAmkoSoTmkmllTlRlRlTmFlQlQmFaaaaaamFmFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQmFmFmFlQlQlQlQlQlQlQlQlQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalRlRlTlTlTmkmkmkmCmkmkoUnToVmAoWoXpCmAmAohmAmApGmAmAmAmAmknXmkmklTlTlRlRlTlQlQlQmFmFaalQbBlQmFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQaaaaaaaamFmFlQmFlQlQmFmFmFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlRlRlTlTmelToYmkmAnlmkoZmkmkmCpamkpHoKpIoPouoKpJnTnTmApcmkmAmBmklTlTpdpepflQmFmFmFmFbBlQaalQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaamFlQlQlQlQlQlQmFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlRlRlTlTlTlTlTmkmAmAmvmAmAmkmApgmkoUnTnTphmApimkmkmkmCmkmkpjpBmkmDmkpdpkplbBmFbBlQmFlQmFmFlQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQmFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlRlRlRlRlRlTlTmkmknmpmnVmAmCmAoWmCmAmAmApnmAmAmCmAmvmApomCmAmAmDngpppqprpflQmFlQmFmFmFlQmFlQlQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalRlRlRlRlRlRlTlTmkmkmkmkmkmkpsoWmkmAmAmAnKmAmAmkmBmAmAmAmMmAmAmkmDmkpdpdptlQmFmFmFlQmFlQmFbBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+17 -2
View File
@@ -561,7 +561,8 @@ var/list/ghostteleportlocs = list()
var/peace_betrayed = FALSE
var/detected_mech = FALSE
var/obj/structure/fusionreactor/reactor
var/hostiles_seen_dead = list()
var/list/deployed_shields = list()
/area/syndicate_depot/updateicon()
if(destroyed)
@@ -605,7 +606,6 @@ var/list/ghostteleportlocs = list()
activate_self_destruct(reason, FALSE, null)
updateicon()
/area/syndicate_depot/proc/locker_looted()
something_looted = TRUE
if(on_peaceful)
@@ -781,11 +781,26 @@ var/list/ghostteleportlocs = list()
to_chat(R, msg_text)
R << sound('sound/misc/notice1.ogg')
/area/syndicate_depot/proc/shields_up()
if(deployed_shields.len)
return
for(var/obj/effect/landmark/L in landmarks_list)
if(L.name == "syndi_depot_shield")
var/obj/machinery/shieldwall/syndicate/S = new /obj/machinery/shieldwall/syndicate(L.loc)
S.dir = L.dir
deployed_shields += S
/area/syndicate_depot/proc/shields_down()
for(var/obj/machinery/shieldwall/syndicate/S in deployed_shields)
qdel(S)
deployed_shields = list()
/area/syndicate_depot/outer
name = "Suspicious Asteroid"
icon_state = "green"
//EXTRA
/area/asteroid // -- TLE
+16 -1
View File
@@ -155,9 +155,12 @@
req_access = list()
/obj/machinery/computer/syndicate_depot/selfdestruct/get_menu(var/mob/user)
return {"<B>Syndicate Depot Fusion Reactor Control</B><HR>
var menutext = {"<B>Syndicate Depot Fusion Reactor Control</B><HR>
<BR><BR><a href='?src=[UID()];primary=1'>Disable Containment Field</a>
<BR>"}
if(check_rights(R_ADMIN, 0, user))
menutext += {"(ADMIN) Defense Shield: [depotarea.deployed_shields.len ? "ON" : "OFF"] (<a href='?src=[UID()];secondary=1'>[depotarea.deployed_shields.len ? "Disable" : "Enable"]</a>)<BR>"}
return menutext
/obj/machinery/computer/syndicate_depot/selfdestruct/primary(var/mob/user)
if(..())
@@ -170,6 +173,18 @@
depotarea.activate_self_destruct("Fusion reactor containment field disengaged. All hands, evacuate. All hands, evacuate!", TRUE, user)
/obj/machinery/computer/syndicate_depot/selfdestruct/secondary(var/mob/user)
if(..())
return
if(!check_rights(R_ADMIN, 0, user))
return
if(!istype(depotarea))
return
if(depotarea.deployed_shields.len)
depotarea.shields_down()
else
depotarea.shields_up()
// Syndicate comms computer, used to activate visitor mode, and message syndicate. Traitor-only use.
@@ -337,6 +337,7 @@
name = "syndicate vault hatch"
req_access_txt = "151"
assemblytype = /obj/structure/door_assembly/door_assembly_highsecurity
security_level = 6
hackProof = 1
aiControlDisabled = 1
+14
View File
@@ -607,3 +607,17 @@
return prob(10)
else
return !src.density
/obj/machinery/shieldwall/syndicate/CanPass(atom/movable/mover, turf/target, height=0)
if(isliving(mover))
var/mob/living/M = mover
if("syndicate" in M.faction)
return 1
return ..(mover, target, height)
/obj/machinery/shieldwall/syndicate/CanAStarPass(ID, to_dir, caller)
if(isliving(caller))
var/mob/living/M = caller
if("syndicate" in M.faction)
return 1
return ..(ID, to_dir, caller)
@@ -276,7 +276,7 @@
/obj/effect/spawner/random_spawners/syndicate/loot/level4
name = "armory loot"
icon_state = "4"
spawn_nothing_percentage = 30
spawn_nothing_percentage = 0
// Loot schema: high-power weapons (m90, esword, ebow, revolver), devices that negate depot challenges (thermal glasses, chameleon device), explosives
result = list(
/obj/item/clothing/glasses/thermal = 1,
+2
View File
@@ -70,6 +70,7 @@
if(!depotarea.used_self_destruct)
depotarea.used_self_destruct = TRUE // Silences all further alerts from this point onwards.
depotarea.updateicon()
depotarea.shields_down()
/obj/effect/overload/process()
if(cycles < max_cycles)
@@ -91,3 +92,4 @@
explosion(get_turf(src), 25, 35, 45, 55, 1, 1, 60, 0, 0)
processing_objects.Remove(src)
qdel(src)
@@ -41,6 +41,8 @@
loot = list(/obj/effect/landmark/mobcorpse/syndicatesoldier, /obj/item/melee/energy/sword/saber/red, /obj/item/shield/energy)
/mob/living/simple_animal/hostile/syndicate/melee/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
user.changeNext_move(CLICK_CD_MELEE)
user.do_attack_animation(src)
if(O.force)
if(prob(80))
var/damage = O.force
@@ -70,33 +72,62 @@
/mob/living/simple_animal/hostile/syndicate/melee/autogib/depotboss
name = "Syndicate Officer"
force_threshold = 6 // Prevents people using punches to bypass eshield
robust_searching = 1 // Together with stat_attack, ensures dionae/etc that regen are killed properly
stat_attack = 1
var/area/syndicate_depot/depotarea
var/raised_alert = FALSE
var/seen_enemy = FALSE
var/aggro_cycles = 0
var/seen_revived_enemy = FALSE
var/scan_cycles = 0
var/shield_key = FALSE
/mob/living/simple_animal/hostile/syndicate/melee/autogib/depotboss/New()
..()
name = "[name] [pick(last_names)]"
depotarea = areaMaster
if(prob(30))
shield_key = TRUE
/mob/living/simple_animal/hostile/syndicate/melee/autogib/depotboss/Aggro()
seen_enemy = TRUE
if(!seen_enemy)
seen_enemy = TRUE
playsound(loc, 'sound/weapons/saberon.ogg', 35, 1)
..()
if(target && istype(target, /obj/mecha))
mech_alert()
if(target)
if(istype(target, /obj/mecha))
mech_alert()
if(istype(depotarea) && target in depotarea.hostiles_seen_dead)
seen_revived_enemy = TRUE
depotarea.hostiles_seen_dead -= target
raise_alert("[name] reports intruder [target] has returned from death!")
/mob/living/simple_animal/hostile/syndicate/melee/autogib/depotboss/handle_automated_action()
if(seen_enemy)
aggro_cycles++
if(!raised_alert && aggro_cycles >= 60)
raise_alert("[name] has reported contact with hostile forces.")
if(scan_cycles >= 30 && depotarea)
scan_cycles = 0
for(var/mob/living/body in hearers(vision_range, targets_from))
if(body.stat != DEAD)
continue
if(body in depotarea.hostiles_seen_dead)
continue
if(faction_check(body))
continue
say("Target [body]... terminated.")
depotarea.hostiles_seen_dead += body
pointed(body)
else
scan_cycles++
..()
/mob/living/simple_animal/hostile/syndicate/melee/autogib/depotboss/proc/raise_alert(var/reason)
if(depotarea && !raised_alert && !depotarea.used_self_destruct)
say("Intruder!")
if(istype(depotarea) && (!raised_alert || seen_revived_enemy) && !depotarea.used_self_destruct)
raised_alert = TRUE
say("Intruder!")
depotarea.increase_alert(reason)
/mob/living/simple_animal/hostile/syndicate/melee/autogib/depotboss/proc/mech_alert()
@@ -105,9 +136,32 @@
/mob/living/simple_animal/hostile/syndicate/melee/autogib/depotboss/death()
raise_alert("[name] has died.")
if(shield_key && depotarea)
depotarea.shields_down()
return ..()
/mob/living/simple_animal/hostile/syndicate/melee/autogib/depotboss/CanPass(atom/movable/mover, turf/target, height=0)
if(isliving(mover))
var/mob/living/blocker = mover
if(faction_check(blocker))
return 1
return ..(mover, target, height)
/mob/living/simple_animal/hostile/syndicate/melee/autogib/depotboss/armory
name = "Syndicate Armory Officer"
icon_state = "syndicatemeleespace"
icon_living = "syndicatemeleespace"
maxHealth = 250
health = 250
/mob/living/simple_animal/hostile/syndicate/melee/autogib/depotboss/armory/New()
. = ..()
spawn(100)
if(depotarea)
depotarea.shields_up()
/mob/living/simple_animal/hostile/syndicate/melee/space
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
minbodytemp = 0