diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index 5a3b7237656..cc16d7cf41d 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -40,7 +40,7 @@ flags_inv = HIDEFACE flags = HEADCOVERSEYES body_parts_covered = HEAD|EYES - armor = list(melee = 30, bullet = 10, laser = 5,energy = 5, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 50, bullet = 30, laser = 50,energy = 20, bomb = 25, bio = 10, rad = 0) cold_protection = HEAD min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECTION_TEMPERATURE siemens_coefficient = 0 diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 17c30543e08..a930dbcc0ab 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -98,6 +98,29 @@ brightness_on = 2 w_class = 1 +/obj/item/device/flashlight/heavy + name = "heavy duty flashlight" + desc = "A high-luminosity flashlight for specialist duties." + icon_state = "heavyflashlight" + item_state = "heavyflashlight" + brightness_on = 7 + w_class = 3 + matter = list(DEFAULT_WALL_MATERIAL = 100,"glass" = 70) + contained_sprite = 1 + +/obj/item/device/flashlight/maglight + name = "maglight" + desc = "A heavy flashlight designed for security personnel." + icon_state = "maglight" + item_state = "maglight" + force = 10 + brightness_on = 5 + w_class = 3 + attack_verb = list("slammed", "whacked", "bashed", "thunked", "battered", "bludgeoned", "thrashed") + matter = list(DEFAULT_WALL_MATERIAL = 200,"glass" = 100) + hitsound = 'sound/weapons/smash.ogg' + contained_sprite = 1 + // the desk lamps are a bit special /obj/item/device/flashlight/lamp @@ -206,3 +229,79 @@ /obj/item/device/flashlight/slime/attack_self(mob/user) return //Bio-luminescence does not toggle. + +//Glowsticks + +/obj/item/device/flashlight/glowstick + name = "green glowstick" + desc = "A green military-grade glowstick." + w_class = 2 + brightness_on = 3 + light_power = 2 + light_color = "#49F37C" + icon = 'icons/obj/glowsticks.dmi' + icon_state = "glowstick" + item_state = "glowstick" + contained_sprite = 1 + offset_light = 0 + diona_restricted_light = 0 + var/fuel = 0 + +/obj/item/device/flashlight/glowstick/New() + fuel = rand(900, 1200) + ..() + +/obj/item/device/flashlight/glowstick/process() + fuel = max(fuel - 1, 0) + if(!fuel || !on) + turn_off() + if(!fuel) + src.icon_state = "[initial(icon_state)]-empty" + processing_objects -= src + +/obj/item/device/flashlight/glowstick/proc/turn_off() + on = 0 + update_icon() + +/obj/item/device/flashlight/glowstick/attack_self(mob/user) + + if(!fuel) + user << "\The [src] has already been used." + return + if(on) + user << "\The [src] has already been turned on." + return + + . = ..() + + if(.) + user.visible_message("[user] cracks and shakes \the [src].", "You crack and shake \the [src], turning it on!") + processing_objects += src + +/obj/item/device/flashlight/glowstick/red + name = "red glowstick" + desc = "A red military-grade glowstick." + light_color = "#FC0F29" + icon_state = "glowstick_red" + item_state = "glowstick_red" + +/obj/item/device/flashlight/glowstick/blue + name = "blue glowstick" + desc = "A blue military-grade glowstick." + light_color = "#599DFF" + icon_state = "glowstick_blue" + item_state = "glowstick_blue" + +/obj/item/device/flashlight/glowstick/orange + name = "orange glowstick" + desc = "A orange military-grade glowstick." + light_color = "#FA7C0B" + icon_state = "glowstick_orange" + item_state = "glowstick_orange" + +/obj/item/device/flashlight/glowstick/yellow + name = "yellow glowstick" + desc = "A yellow military-grade glowstick." + light_color = "#FEF923" + icon_state = "glowstick_yellow" + item_state = "glowstick_yellow" diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index 12512026bbe..aeddc0b9c36 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -127,7 +127,9 @@ /obj/item/weapon/gun/energy/taser, /obj/item/weapon/flame/lighter, /obj/item/clothing/glasses/hud/security, - /obj/item/device/flashlight, + /obj/item/device/flashlight/maglight, + /obj/item/device/flashlight/flare, + /obj/item/device/flashlight/glowstick, /obj/item/device/pda, /obj/item/device/radio/headset, /obj/item/device/hailer, diff --git a/code/modules/clothing/spacesuits/void/wizard.dm b/code/modules/clothing/spacesuits/void/wizard.dm index 2024ecc7140..90b16b67fb5 100644 --- a/code/modules/clothing/spacesuits/void/wizard.dm +++ b/code/modules/clothing/spacesuits/void/wizard.dm @@ -38,6 +38,7 @@ armor = list(melee = 40, bullet = 20, laser = 20,energy = 20, bomb = 35, bio = 100, rad = 60) siemens_coefficient = 0.3 wizard_garb = 1 + allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/teleportation_scroll,/obj/item/weapon/scrying,/obj/item/weapon/spellbook,/obj/item/device/soulstone,/obj/item/weapon/material/knife/ritual) equipped(var/mob/user) if(!(user.mind.assigned_role == "Space Wizard")) diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 40bf82c8b1c..e3b4ec9d050 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -1,5 +1,5 @@ /obj/item/clothing/suit/armor - allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs) + allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/device/flashlight) body_parts_covered = UPPER_TORSO|LOWER_TORSO flags = THICKMATERIAL @@ -285,7 +285,7 @@ icon_state = "kvest" item_state = "kvest" armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0) - allowed = list(/obj/item/weapon/gun,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs) + allowed = list(/obj/item/weapon/gun,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/device/flashlight) siemens_coefficient = 0.5 /obj/item/clothing/suit/storage/vest/officer diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index bce2744aa32..764065cedf6 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -37,6 +37,7 @@ icon_state = "chaplain_hoodie" item_state = "chaplain_hoodie" body_parts_covered = UPPER_TORSO|ARMS + allowed = list(/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/storage/bible,/obj/item/weapon/nullrod,/obj/item/weapon/reagent_containers/food/drinks/bottle/holywater) sprite_sheets = list("Vox" = 'icons/mob/species/vox/suit.dmi') //Chaplain @@ -47,6 +48,7 @@ item_state = "nun" body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS flags_inv = HIDESHOES|HIDEJUMPSUIT + allowed = list(/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/storage/bible,/obj/item/weapon/nullrod,/obj/item/weapon/reagent_containers/food/drinks/bottle/holywater) sprite_sheets = list("Vox" = 'icons/mob/species/vox/suit.dmi') //Chef diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm index 908998c6f3c..e37d1eb7d4c 100644 --- a/code/modules/clothing/suits/wiz_robe.dm +++ b/code/modules/clothing/suits/wiz_robe.dm @@ -53,7 +53,7 @@ gas_transfer_coefficient = 0.01 // IT'S MAGICAL OKAY JEEZ +1 TO NOT DIE permeability_coefficient = 0.01 armor = list(melee = 30, bullet = 20, laser = 20,energy = 20, bomb = 20, bio = 20, rad = 20) - allowed = list(/obj/item/weapon/teleportation_scroll) + allowed = list(/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/teleportation_scroll,/obj/item/weapon/scrying,/obj/item/weapon/spellbook,/obj/item/device/soulstone,/obj/item/weapon/material/knife/ritual) flags_inv = HIDEJUMPSUIT siemens_coefficient = 0.7 wizard_garb = 1 diff --git a/html/changelogs/alberyk-PR-1025.yml b/html/changelogs/alberyk-PR-1025.yml new file mode 100644 index 00000000000..a7fb437667e --- /dev/null +++ b/html/changelogs/alberyk-PR-1025.yml @@ -0,0 +1,12 @@ +author: Alberyk + +delete-after: True + +changes: + - rscadd: "Added new flavors of flashlights." + - rscadd: "Ported glowsticks from polaris." + - rscadd: "You can now carry flashlights in your armor." + - rscadd: "Wizard robes and voidsuits can now carry magic related items." + - rscadd: "The chaplain hoodie, and nun robes, can now store religious objects in their suit storage." + - imageadd: "New recorder, camera and lantern sprites." + - tweak: "Cult hoods have the same armor as the robes now." diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 281ec1e62ba..3e2ee5330ab 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ diff --git a/icons/obj/glowsticks.dmi b/icons/obj/glowsticks.dmi new file mode 100644 index 00000000000..0e21408fe4b Binary files /dev/null and b/icons/obj/glowsticks.dmi differ diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index d8fdff5986a..4a9e31fbd2b 100644 Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ diff --git a/icons/obj/lighting.dmi b/icons/obj/lighting.dmi index 1f1c7d3f0a0..5c164a603f4 100644 Binary files a/icons/obj/lighting.dmi and b/icons/obj/lighting.dmi differ diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index c67df62011d..8fedc56a8d2 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -331,7 +331,7 @@ "ags" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/security/main) "agt" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/security/main) "agu" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/main) -"agv" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/table/standard,/obj/structure/reagent_dispensers/peppertank{pixel_x = 30},/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/turf/simulated/floor{icon_state = "bluecorner"},/area/security/main) +"agv" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/table/standard,/obj/structure/reagent_dispensers/peppertank{pixel_x = 30},/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/turf/simulated/floor{icon_state = "bluecorner"},/area/security/main) "agw" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/wall,/area/crew_quarters/heads/hos) "agx" = (/turf/simulated/wall,/area/crew_quarters/heads/hos) "agy" = (/obj/structure/grille,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/window/reinforced/polarized{dir = 1},/obj/structure/window/reinforced/polarized{dir = 8},/obj/structure/window/reinforced/polarized,/turf/simulated/floor/plating,/area/crew_quarters/heads/hos) @@ -821,7 +821,7 @@ "apO" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/security_starboard) "apP" = (/obj/machinery/door/airlock/maintenance{name = "Dormitory\\Security Maintenance"; req_access = list(12)},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/security_starboard) "apQ" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/swabs,/turf/simulated/floor{icon_state = "white"},/area/security/detectives_office) -"apR" = (/obj/machinery/requests_console{pixel_x = 0; pixel_y = 30},/obj/structure/table/glass,/turf/simulated/floor{icon_state = "white"},/area/security/detectives_office) +"apR" = (/obj/machinery/requests_console{pixel_x = 0; pixel_y = 30},/obj/structure/table/glass,/obj/item/device/flashlight/heavy,/turf/simulated/floor{icon_state = "white"},/area/security/detectives_office) "apS" = (/obj/machinery/dnaforensics,/turf/simulated/floor{icon_state = "white"},/area/security/detectives_office) "apT" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "dorm_outer"; locked = 1; name = "Dormitory External Access"; req_access = list(13)},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/dormitory) "apU" = (/obj/machinery/power/solar{id = "auxsolareast"; name = "Port Auxiliary Solar Array"},/obj/structure/cable/yellow,/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/solar/auxport) @@ -1503,7 +1503,7 @@ "aCU" = (/obj/machinery/gateway{dir = 6},/obj/effect/landmark{name = "JoinLateGateway"},/turf/simulated/floor{icon_state = "vault"; dir = 1},/area/gateway) "aCV" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/mask/breath,/obj/item/clothing/suit/space/void/engineering,/obj/item/clothing/head/helmet/space/void/engineering,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) "aCW" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/void/atmos,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/atmos,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) -"aCX" = (/obj/structure/table/reinforced,/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) +"aCX" = (/obj/structure/table/reinforced,/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/item/device/flashlight/heavy,/obj/item/device/flashlight/heavy,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) "aCY" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/ai_monitored/storage/eva) "aCZ" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aDa" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) @@ -6101,7 +6101,7 @@ "cnq" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/engineering/locker_room) "cnr" = (/obj/structure/table/standard,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/item/device/suit_cooling_unit,/turf/simulated/floor,/area/engineering/locker_room) "cns" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/standard,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/machinery/camera/network/engineering{c_tag = "Engineering Locker Room"; dir = 1},/obj/item/device/suit_cooling_unit,/turf/simulated/floor,/area/engineering/locker_room) -"cnt" = (/obj/structure/table/standard,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor,/area/engineering/locker_room) +"cnt" = (/obj/structure/table/standard,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/item/device/flashlight/heavy,/obj/item/device/flashlight/heavy,/obj/item/device/flashlight/heavy,/turf/simulated/floor,/area/engineering/locker_room) "cnu" = (/obj/machinery/power/breakerbox/activated{RCon_tag = "Engineering Substation Bypass"},/turf/simulated/floor/plating,/area/maintenance/substation/engineering) "cnv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/substation/engineering) "cnw" = (/obj/machinery/door/airlock/maintenance{req_one_access = list(11,24)},/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/substation/engineering)