diff --git a/code/game/area/areas/shuttles.dm b/code/game/area/areas/shuttles.dm index 4a261c2d20..edc12b4d24 100644 --- a/code/game/area/areas/shuttles.dm +++ b/code/game/area/areas/shuttles.dm @@ -59,3 +59,23 @@ /area/shuttle/abandoned name = "Abandoned Ship" blob_allowed = FALSE + +/area/shuttle/sbc_starfury + name = "SBC Starfury" + blob_allowed = FALSE + +/area/shuttle/sbc_fighter1 + name = "SBC Fighter 1" + blob_allowed = FALSE + +/area/shuttle/sbc_fighter2 + name = "SBC Fighter 2" + blob_allowed = FALSE + +/area/shuttle/sbc_corvette + name = "SBC corvette" + blob_allowed = FALSE + +/area/shuttle/syndicate_scout + name = "Syndicate Scout" + blob_allowed = FALSE \ No newline at end of file diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index 4b2176c603..c1c609cdf1 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -87,9 +87,9 @@ if(has_cover) cover = new /obj/machinery/porta_turret_cover(loc) cover.parent_turret = src - var/mutable_appearance/base = mutable_appearance('icons/obj/turrets.dmi', "basedark") - base.layer = NOT_HIGH_OBJ_LAYER - underlays += base + var/mutable_appearance/base = mutable_appearance('icons/obj/turrets.dmi', "basedark") + base.layer = NOT_HIGH_OBJ_LAYER + underlays += base if(!has_cover) INVOKE_ASYNC(src, .proc/popUp) @@ -554,7 +554,7 @@ use_power = 0 has_cover = 0 scan_range = 9 - req_access = list(GLOB.access_syndicate) + req_access = list(GLOB.access_syndicate) stun_projectile = /obj/item/projectile/bullet lethal_projectile = /obj/item/projectile/bullet lethal_projectile_sound = 'sound/weapons/Gunshot.ogg' @@ -564,6 +564,15 @@ faction = "syndicate" emp_vunerable = 0 +/obj/machinery/porta_turret/syndicate/energy + icon_state = "standard_stun" + base_icon_state = "standard" + stun_projectile = /obj/item/projectile/energy/electrode + stun_projectile_sound = 'sound/weapons/Taser.ogg' + lethal_projectile = /obj/item/projectile/beam/laser/heavylaser + lethal_projectile_sound = 'sound/weapons/lasercannonfire.ogg' + + /obj/machinery/porta_turret/syndicate/setup() return @@ -571,8 +580,8 @@ return 10 //Syndicate turrets shoot everything not in their faction /obj/machinery/porta_turret/syndicate/pod - max_integrity = 40 - integrity_failure = 20 + max_integrity = 40 + integrity_failure = 20 obj_integrity = 40 stun_projectile = /obj/item/projectile/bullet/weakbullet3 lethal_projectile = /obj/item/projectile/bullet/weakbullet3 @@ -948,7 +957,7 @@ var/atom/target var/turf/target_turf var/warned = FALSE - var/mouseparams + var/mouseparams //BUCKLE HOOKS @@ -992,8 +1001,8 @@ icon = 'icons/obj/weapons.dmi' icon_state = "offhand" w_class = WEIGHT_CLASS_HUGE - flags = ABSTRACT | NODROP | NOBLUDGEON - resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF + flags = ABSTRACT | NODROP | NOBLUDGEON + resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF var/obj/machinery/manned_turret/turret /obj/item/gun_control/New(obj/machinery/manned_turret/MT) @@ -1005,22 +1014,22 @@ /obj/item/gun_control/CanItemAutoclick() return 1 -/obj/item/gun_control/attack_obj(obj/O, mob/living/user) - user.changeNext_move(CLICK_CD_MELEE) - O.attacked_by(src, user) - -/obj/item/gun_control/attack(mob/living/M, mob/living/user) - user.lastattacked = M - M.lastattacker = user - M.attacked_by(src, user) - add_fingerprint(user) - -/obj/item/gun_control/afterattack(atom/targeted_atom, mob/user, flag, params) +/obj/item/gun_control/attack_obj(obj/O, mob/living/user) + user.changeNext_move(CLICK_CD_MELEE) + O.attacked_by(src, user) + +/obj/item/gun_control/attack(mob/living/M, mob/living/user) + user.lastattacked = M + M.lastattacker = user + M.attacked_by(src, user) + add_fingerprint(user) + +/obj/item/gun_control/afterattack(atom/targeted_atom, mob/user, flag, params) ..() var/obj/machinery/manned_turret/E = user.buckled E.setDir(get_dir(E,targeted_atom)) user.setDir(E.dir) - E.mouseparams = params + E.mouseparams = params switch(E.dir) if(NORTH) E.layer = BELOW_MOB_LAYER @@ -1068,15 +1077,15 @@ else cooldown = world.time + cooldown_duration warned = FALSE - volley(user) + volley(user) -/obj/machinery/manned_turret/proc/volley(mob/user) +/obj/machinery/manned_turret/proc/volley(mob/user) target_turf = get_turf(target) for(var/i in 1 to number_of_shots) - addtimer(CALLBACK(src, /obj/machinery/manned_turret/.proc/fire_helper, user), i*rate_of_fire) + addtimer(CALLBACK(src, /obj/machinery/manned_turret/.proc/fire_helper, user), i*rate_of_fire) -/obj/machinery/manned_turret/proc/fire_helper(mob/user) +/obj/machinery/manned_turret/proc/fire_helper(mob/user) if(!src) return var/turf/targets_from = get_turf(src) @@ -1085,10 +1094,10 @@ var/obj/item/projectile/P = new projectile_type(targets_from) P.current = targets_from P.starting = targets_from - P.firer = user + P.firer = user P.original = target playsound(src, 'sound/weapons/Gunshot_smg.ogg', 75, 1) - P.preparePixelProjectile(target, target_turf, user, mouseparams, rand(-9, 9)) + P.preparePixelProjectile(target, target_turf, user, mouseparams, rand(-9, 9)) P.fire() /obj/machinery/manned_turret/ultimate // Admin-only proof of concept for autoclicker automatics @@ -1102,4 +1111,4 @@ if(target == user || target == get_turf(src)) return target_turf = get_turf(target) - fire_helper(user) + fire_helper(user) diff --git a/code/game/objects/effects/decals/decal.dm b/code/game/objects/effects/decals/decal.dm index 42555cd2d5..79606ae09c 100644 --- a/code/game/objects/effects/decals/decal.dm +++ b/code/game/objects/effects/decals/decal.dm @@ -64,4 +64,7 @@ icon_state = "sandyfloor" /obj/effect/turf_decal/sand/plating - icon_state = "sandyplating" \ No newline at end of file + icon_state = "sandyplating" + +/obj/effect/turf_decal/plaque + icon_state = "plaque" \ No newline at end of file diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index a15e2803df..50238498ad 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -371,3 +371,52 @@ back = /obj/item/weapon/storage/backpack implants = list(/obj/item/weapon/implant/mindshield) //No revolutionaries, he's MY friend. id = /obj/item/weapon/card/id + +/obj/effect/mob_spawn/human/syndicate + name = "Syndicate Operative" + roundstart = FALSE + death = FALSE + icon = 'icons/obj/Cryogenic2.dmi' + icon_state = "sleeper_s" + id_access_list = list(GLOB.access_syndicate) + outfit = /datum/outfit/syndicate_empty + +/datum/outfit/syndicate_empty + name = "Syndicate Operative Empty" + uniform = /obj/item/clothing/under/syndicate + shoes = /obj/item/clothing/shoes/combat + gloves = /obj/item/clothing/gloves/combat + ears = /obj/item/device/radio/headset/syndicate/alt + back = /obj/item/weapon/storage/backpack + implants = list(/obj/item/weapon/implant/weapons_auth) + id = /obj/item/weapon/card/id + +/datum/outfit/syndicate_empty/post_equip(mob/living/carbon/human/H) + H.faction |= "syndicate" + +/obj/effect/mob_spawn/human/syndicate/battlecruiser + name = "Syndicate Battlecruiser Ensign" + flavour_text = "You are a syndicate ensign aboard a state of the art weapons platform -- the SBC Starfury. Follow your captain's orders, maintain the ship, and protect both with your life." + outfit = /datum/outfit/syndicate_empty/SBC + +/datum/outfit/syndicate_empty/SBC + name = "Syndicate Battlecruiser Ensign" + belt = /obj/item/weapon/gun/ballistic/automatic/pistol + r_pocket = /obj/item/weapon/kitchen/knife/combat/survival + suit = /obj/item/clothing/suit/armor/vest + +/obj/effect/mob_spawn/human/syndicate/battlecruiser/captain + name = "Syndicate Battlecruiser Captain" + flavour_text = "You are a syndicate admiral in command of a state of the art weapons platform -- the SBC Starfury. You are to destroy Nanotrasens' Space Station 13. Do not let the enemy take control of your ship under any circumstances." + outfit = /datum/outfit/syndicate_empty/SBC/captain + id_access_list = list(150,151) + +/datum/outfit/syndicate_empty/SBC/captain + name = "Syndicate Battlecruiser Captain" + belt = /obj/item/weapon/gun/ballistic/automatic/pistol + r_pocket = /obj/item/weapon/melee/classic_baton/telescopic + suit = /obj/item/clothing/suit/armor/vest/capcarapace/syndicate + back = /obj/item/weapon/storage/backpack/satchel/leather + head = /obj/item/clothing/head/HoS/beret/syndicate + mask = /obj/item/clothing/mask/cigarette/cigar/havana + glasses = /obj/item/clothing/glasses/thermal/eyepatch diff --git a/code/game/shuttle_engines.dm b/code/game/shuttle_engines.dm index de13e28d58..b364cba2b1 100644 --- a/code/game/shuttle_engines.dm +++ b/code/game/shuttle_engines.dm @@ -36,3 +36,22 @@ /obj/structure/shuttle/engine/router name = "router" icon_state = "router" + + +/obj/structure/shuttle/engine/large + name = "engine" + opacity = 1 + icon = 'icons/obj/2x2.dmi' + icon_state = "large_engine" + bound_width = 64 + bound_height = 64 + appearance_flags = 0 + +/obj/structure/shuttle/engine/huge + name = "engine" + opacity = 1 + icon = 'icons/obj/3x3.dmi' + icon_state = "huge_engine" + bound_width = 96 + bound_height = 96 + appearance_flags = 0 diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index 083332c3bd..f43b707dc1 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -107,6 +107,12 @@ flags = NODROP dog_fashion = null //THIS IS FOR SLAUGHTER, NOT PUPPIES +/obj/item/clothing/head/beret/black + name = "black beret" + desc = "A black beret, perfect for war veterans and dark, brooding, anti-hero mimes." + icon_state = "beretblack" + + //Security /obj/item/clothing/head/HoS @@ -121,6 +127,10 @@ desc = "A robust beret for the Head of Security, for looking stylish while not sacrificing protection." icon_state = "hosberetblack" +/obj/item/clothing/head/HoS/beret/syndicate + name = "syndicate beret" + desc = "A black beret with thick armor padding inside. Stylish and robust." + /obj/item/clothing/head/warden name = "warden's police hat" desc = "It's a special armored hat issued to the Warden of a security force. Protects the head from impacts." diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 9c554455f9..5af350ac10 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -77,7 +77,7 @@ /obj/item/clothing/suit/armor/vest/capcarapace name = "captain's carapace" - desc = "An fireproof armored chestpiece reinforced with ceramic plates and plasteel pauldrons to provide additional protection whilst still offering maximum mobility and flexibility. Issued only to the station's finest, although it does chafe your nipples." + desc = "A fireproof armored chestpiece reinforced with ceramic plates and plasteel pauldrons to provide additional protection whilst still offering maximum mobility and flexibility. Issued only to the station's finest, although it does chafe your nipples." icon_state = "capcarapace" item_state = "armor" body_parts_covered = CHEST|GROIN @@ -85,6 +85,12 @@ dog_fashion = null resistance_flags = FIRE_PROOF +/obj/item/clothing/suit/armor/vest/capcarapace/syndicate + name = "syndicate captain's vest" + desc = "A sinister looking vest of advanced armor worn over a black and red fireproof jacket. The gold collar and shoulders denote that this belongs to a high ranking syndicate officer." + icon_state = "syndievest" + + /obj/item/clothing/suit/armor/vest/capcarapace/alt name = "captain's parade jacket" desc = "For when an armoured vest isn't fashionable enough." diff --git a/code/modules/ruins/lavaland_ruin_code.dm b/code/modules/ruins/lavaland_ruin_code.dm index 00011729e0..b2f99a7add 100644 --- a/code/modules/ruins/lavaland_ruin_code.dm +++ b/code/modules/ruins/lavaland_ruin_code.dm @@ -132,10 +132,9 @@ roundstart = FALSE death = FALSE icon = 'icons/obj/Cryogenic2.dmi' - icon_state = "sleeper" + icon_state = "sleeper_s" flavour_text = "You are a syndicate agent, employed in a top secret research facility developing biological weapons. Unfortunately, your hated enemy, Nanotrasen, has begun mining in this sector. Continue your research as best you can, and try to keep a low profile. Do not abandon the base without good cause. The base is rigged with explosives should the worst happen, do not let the base fall into enemy hands!" id_access_list = list(GLOB.access_syndicate) - faction = list("syndicate") outfit = /datum/outfit/lavaland_syndicate /datum/outfit/lavaland_syndicate @@ -150,6 +149,9 @@ r_pocket = /obj/item/weapon/gun/ballistic/automatic/pistol id = /obj/item/weapon/card/id +/datum/outfit/lavaland_syndicate/post_equip(mob/living/carbon/human/H) + H.faction |= "syndicate" + /obj/effect/mob_spawn/human/lavaland_syndicate/comms name = "Syndicate Comms Agent" diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index 86e720a421..2fcc33b3ec 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index bd7e22e5f6..f7219c21c8 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/obj/2x2.dmi b/icons/obj/2x2.dmi new file mode 100644 index 0000000000..3a4fa139af Binary files /dev/null and b/icons/obj/2x2.dmi differ diff --git a/icons/obj/3x3.dmi b/icons/obj/3x3.dmi new file mode 100644 index 0000000000..07a0213aa9 Binary files /dev/null and b/icons/obj/3x3.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 520ed276b8..347e40161e 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/turf/decals.dmi b/icons/turf/decals.dmi index 773da4df86..8fc6a700da 100644 Binary files a/icons/turf/decals.dmi and b/icons/turf/decals.dmi differ