diff --git a/code/game/area/areas/depot-areas.dm b/code/game/area/areas/depot-areas.dm index 67bf0eaef50..52def39ba0d 100644 --- a/code/game/area/areas/depot-areas.dm +++ b/code/game/area/areas/depot-areas.dm @@ -374,12 +374,14 @@ if(S) qdel(S) shield_list = list() + for(var/obj/machinery/door/airlock/hatch/syndicate/vault/A in src) + A.unlock() + +/area/syndicate_depot/core/proc/unlock_lockers() // used on QM's death for(var/obj/structure/closet/secure_closet/depot/armory/L in src) if(L.locked) L.locked = !L.locked L.update_icon() - for(var/obj/machinery/door/airlock/hatch/syndicate/vault/A in src) - A.unlock() /area/syndicate_depot/core/proc/despawn_guards() for(var/mob/thismob in list_getmobs(guard_list)) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/depot_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/depot_closets.dm index d334f3233f4..42f2caed559 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/depot_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/depot_closets.dm @@ -3,7 +3,7 @@ desc = "A red and black lootbox full of things the Head of Security is going to flip their shit over." locked = FALSE anchored = TRUE - req_access = list() + req_access = list(ACCESS_SYNDICATE) icon_state = "tac" layer = 2.9 // ensures the loot they drop always appears on top of them. var/is_armory = FALSE @@ -57,6 +57,6 @@ ignore_use = FALSE /obj/structure/closet/secure_closet/depot/armory - req_access = list(ACCESS_SYNDICATE) + req_access = list(ACCESS_SYNDICATE_COMMAND) // can't open without killing QM/breaking a closet is_armory = TRUE icon_state = "armory" diff --git a/code/game/objects/structures/depot_structures.dm b/code/game/objects/structures/depot_structures.dm index 0137faaf4f5..cbfc9370fef 100644 --- a/code/game/objects/structures/depot_structures.dm +++ b/code/game/objects/structures/depot_structures.dm @@ -87,7 +87,6 @@ if(!depotarea.used_self_destruct) depotarea.used_self_destruct = TRUE // Silences all further alerts from this point onwards. depotarea.update_state() - depotarea.shields_down() else log_debug("[src] at [x],[y],[z] failed depotarea istype check during Initialize()! Either it was spawned outside the depot area (bad idea), or a bug is happening.") @@ -109,6 +108,7 @@ for(var/obj/O in L) qdel(O) L.open() + depotarea.shields_down() for(var/mob/living/M in range(30, T)) M.gib() for(var/obj/mecha/E in range(30, T)) diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate_mobs.dm b/code/modules/mob/living/simple_animal/hostile/syndicate_mobs.dm index b982c5168b5..92779de451a 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate_mobs.dm @@ -48,8 +48,8 @@ ///////////////Sword and shield//////////// /mob/living/simple_animal/hostile/syndicate/melee - melee_damage_lower = 30 - melee_damage_upper = 25 + melee_damage_lower = 25 + melee_damage_upper = 30 icon_state = "syndicate_sword" icon_living = "syndicate_sword" attacktext = "slashes" @@ -257,15 +257,12 @@ . = ..() if(prob(50)) // 50% chance of switching to ranged variant. - melee_damage_lower = 30 - melee_damage_upper = 25 attacktext = "punches" attack_sound = 'sound/weapons/cqchit1.ogg' ranged = TRUE rapid = 3 retreat_distance = 5 minimum_distance = 3 - melee_block_chance = 0 ranged_block_chance = 0 icon_state = "syndicate_pistol" icon_living = "syndicate_pistol" @@ -277,26 +274,27 @@ icon_state = "syndicate_stormtrooper_sword" icon_living = "syndicate_stormtrooper_sword" 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) + armour_penetration_percentage = 50 // same as e-sword minbodytemp = 0 - maxHealth = 200 - health = 200 + maxHealth = 250 + health = 250 melee_block_chance = 40 + ranged_block_chance = 35 // same as officer's alert_on_shield_breach = TRUE - death_sound = 'sound/mecha/mechmove03.ogg' loot = list(/obj/effect/mob_spawn/human/corpse/syndicatequartermaster, /obj/effect/decal/cleanable/blood/innards, /obj/effect/decal/cleanable/blood, /obj/effect/gibspawner/generic, /obj/effect/gibspawner/generic) +/mob/living/simple_animal/hostile/syndicate/melee/autogib/depot/armory/Process_Spacemove(movement_dir = 0) + return TRUE // he should be able to chase us in space + /mob/living/simple_animal/hostile/syndicate/melee/autogib/depot/armory/Initialize(mapload) . = ..() if(prob(50)) // 50% chance of switching to extremely dangerous ranged variant - melee_damage_lower = 10 - melee_damage_upper = 10 attacktext = "punches" - attack_sound = 'sound/weapons/punch1.ogg' + attack_sound = 'sound/weapons/cqchit1.ogg' ranged = TRUE retreat_distance = 2 minimum_distance = 2 - melee_block_chance = 0 ranged_block_chance = 0 icon_state = "syndicate_stormtrooper_shotgun" icon_living = "syndicate_stormtrooper_shotgun" @@ -316,6 +314,13 @@ O.shield_key = TRUE depotarea.shields_up() +/mob/living/simple_animal/hostile/syndicate/melee/autogib/depot/armory/death() // i hope it's all right + if(!istype(depotarea)) + return ..() + if(!length(depotarea.shield_list)) // not opening lockers without getting shields down + depotarea.unlock_lockers() + return ..() + /mob/living/simple_animal/hostile/syndicate/melee/autogib/depot/space name = "Syndicate Backup" @@ -327,7 +332,6 @@ wander = FALSE alert_on_spacing = FALSE // So it chasing players in space doesn't make depot explode. alert_on_timeout = FALSE // So random fauna doesn't make depot explode. - death_sound = 'sound/mecha/mechmove03.ogg' loot = list() // Explodes, doesn't drop loot. /mob/living/simple_animal/hostile/syndicate/melee/autogib/depot/space/Process_Spacemove(movement_dir = 0)