diff --git a/_maps/RandomRuins/SpaceRuins/garbagetruck4.dmm b/_maps/RandomRuins/SpaceRuins/garbagetruck4.dmm index a636b7220ca..33c5893bcee 100644 --- a/_maps/RandomRuins/SpaceRuins/garbagetruck4.dmm +++ b/_maps/RandomRuins/SpaceRuins/garbagetruck4.dmm @@ -78,7 +78,7 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/garbagetruck/toystore) "hH" = ( -/obj/structure/spider/solid, +/obj/structure/spider/stickyweb/sealed/tough, /obj/item/book/manual/wiki/cytology, /obj/effect/decal/cleanable/plastic, /turf/open/floor/plating, @@ -122,7 +122,7 @@ /area/ruin/space/has_grav/garbagetruck/toystore) "lm" = ( /obj/structure/spider/stickyweb, -/obj/structure/spider/sticky, +/obj/structure/spider/stickyweb/very_sticky, /turf/open/floor/plating, /area/ruin/space/has_grav/garbagetruck/toystore) "mf" = ( @@ -182,7 +182,7 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/garbagetruck/toystore) "qX" = ( -/obj/structure/spider/sticky, +/obj/structure/spider/stickyweb/very_sticky, /obj/item/food/badrecipe/moldy, /obj/structure/spider/stickyweb, /obj/item/food/spidereggs{ @@ -255,7 +255,7 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/garbagetruck/toystore) "ts" = ( -/obj/structure/spider/solid, +/obj/structure/spider/stickyweb/sealed/tough, /obj/structure/spider/stickyweb, /obj/structure/closet/crate/trashcart/filled, /turf/open/floor/plating, @@ -841,7 +841,7 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/garbagetruck/toystore) "XI" = ( -/obj/structure/spider/solid, +/obj/structure/spider/stickyweb/sealed/tough, /obj/item/food/badrecipe/moldy/bacteria, /turf/open/floor/plating, /area/ruin/space/has_grav/garbagetruck/toystore) diff --git a/_maps/map_files/Deathmatch/mech_madness.dmm b/_maps/map_files/Deathmatch/mech_madness.dmm index d36ccfb16cc..3f804d2ee54 100644 --- a/_maps/map_files/Deathmatch/mech_madness.dmm +++ b/_maps/map_files/Deathmatch/mech_madness.dmm @@ -664,7 +664,7 @@ /area/deathmatch) "ot" = ( /obj/structure/mop_bucket/janitorialcart{ - dir = 4 + dir = 4 }, /turf/open/floor/engine, /area/deathmatch) diff --git a/_maps/map_files/Deathmatch/starwars.dmm b/_maps/map_files/Deathmatch/starwars.dmm index c1f00546107..c7654810360 100644 --- a/_maps/map_files/Deathmatch/starwars.dmm +++ b/_maps/map_files/Deathmatch/starwars.dmm @@ -1142,9 +1142,6 @@ }, /turf/open/indestructible/large, /area/deathmatch) -"US" = ( -/turf/closed/indestructible/reinforced, -/area/deathmatch) "Ve" = ( /obj/effect/turf_decal/tile/red/full, /obj/structure/barricade/security/murderdome, @@ -1320,7 +1317,7 @@ tV tV IC IC -US +KX Vz sZ sZ diff --git a/code/__DEFINES/icon_smoothing.dm b/code/__DEFINES/icon_smoothing.dm index c00361184a5..efcbfdfb940 100644 --- a/code/__DEFINES/icon_smoothing.dm +++ b/code/__DEFINES/icon_smoothing.dm @@ -205,12 +205,18 @@ DEFINE_BITFIELD(smoothing_junction, list( #define SMOOTH_GROUP_CLEANABLE_DIRT S_OBJ(68) ///obj/effect/decal/cleanable/dirt -#define SMOOTH_GROUP_GAS_TANK S_OBJ(72) +#define SMOOTH_GROUP_GAS_TANK S_OBJ(69) + +#define SMOOTH_GROUP_SPIDER_WEB S_OBJ(70) // /obj/structure/spider/stickyweb +#define SMOOTH_GROUP_SPIDER_WEB_WALL S_OBJ(71) // /obj/structure/spider/stickyweb/sealed +#define SMOOTH_GROUP_SPIDER_WEB_ROOF S_OBJ(72) // /obj/structure/spider/passage +#define SMOOTH_GROUP_SPIDER_WEB_WALL_TOUGH S_OBJ(73) // /obj/structure/spider/stickyweb/sealed/thick +#define SMOOTH_GROUP_SPIDER_WEB_WALL_MIRROR S_OBJ(74) // /obj/structure/spider/stickyweb/sealed/reflector //SKYRAT EDIT ADDITION -#define SMOOTH_GROUP_SHUTTERS S_OBJ(73) +#define SMOOTH_GROUP_SHUTTERS S_OBJ(75) -#define SMOOTH_GROUP_WATER S_OBJ(74) ///obj/effect/abstract/liquid_turf +#define SMOOTH_GROUP_WATER S_OBJ(76) ///obj/effect/abstract/liquid_turf //SKYRAT EDIT END /// Performs the work to set smoothing_groups and canSmoothWith. diff --git a/code/game/objects/effects/decals/cleanable/misc.dm b/code/game/objects/effects/decals/cleanable/misc.dm index 7fe6c59075f..4b23987b979 100644 --- a/code/game/objects/effects/decals/cleanable/misc.dm +++ b/code/game/objects/effects/decals/cleanable/misc.dm @@ -129,6 +129,7 @@ desc = "Somebody should remove that." gender = NEUTER layer = WALL_OBJ_LAYER + icon = 'icons/effects/web.dmi' icon_state = "cobweb1" resistance_flags = FLAMMABLE beauty = -100 diff --git a/code/game/objects/effects/spiderwebs.dm b/code/game/objects/effects/spiderwebs.dm index 5023f9bd825..2d0f1b9b14d 100644 --- a/code/game/objects/effects/spiderwebs.dm +++ b/code/game/objects/effects/spiderwebs.dm @@ -1,7 +1,8 @@ -//generic procs copied from obj/effect/alien +#define SPIDER_WEB_TINT "web_colour_tint" + /obj/structure/spider name = "web" - icon = 'icons/effects/effects.dmi' + icon = 'icons/effects/web.dmi' desc = "It's stringy and sticky." anchored = TRUE density = FALSE @@ -22,7 +23,7 @@ damage_amount *= 1.25 if(BRUTE) damage_amount *= 0.25 - . = ..() + return ..() /obj/structure/spider/should_atmos_process(datum/gas_mixture/air, exposed_temperature) return exposed_temperature > 350 @@ -31,17 +32,37 @@ take_damage(5, BURN, 0, 0) /obj/structure/spider/stickyweb + plane = FLOOR_PLANE + layer = MID_TURF_LAYER + icon = 'icons/obj/smooth_structures/stickyweb.dmi' + base_icon_state = "stickyweb" + icon_state = "stickyweb-0" + smoothing_flags = SMOOTH_BITMASK + smoothing_groups = SMOOTH_GROUP_SPIDER_WEB + canSmoothWith = SMOOTH_GROUP_SPIDER_WEB + SMOOTH_GROUP_WALLS ///Whether or not the web is from the genetics power var/genetic = FALSE ///Whether or not the web is a sealed web var/sealed = FALSE - icon_state = "stickyweb1" + ///Do we need to offset this based on a sprite frill? + var/has_frill = TRUE + /// Chance that someone will get stuck when trying to cross this tile + var/stuck_chance = 50 + /// Chance that a bullet will hit this instead of flying through it + var/projectile_stuck_chance = 30 + +/obj/structure/spider/stickyweb/Initialize(mapload) + // Offset on init so that they look nice in the map editor + if (has_frill) + pixel_x = -9 + pixel_y = -9 + return ..() /obj/structure/spider/stickyweb/attack_hand(mob/user, list/modifiers) .= ..() if(.) return - if(!HAS_TRAIT(user,TRAIT_WEB_WEAVER)) + if(!HAS_TRAIT(user, TRAIT_WEB_WEAVER)) return loc.balloon_alert_to_viewers("weaving...") if(!do_after(user, 2 SECONDS)) @@ -51,11 +72,6 @@ var/obj/item/stack/sheet/cloth/woven_cloth = new /obj/item/stack/sheet/cloth user.put_in_hands(woven_cloth) -/obj/structure/spider/stickyweb/Initialize(mapload) - if(!sealed && prob(50)) - icon_state = "stickyweb2" - . = ..() - /obj/structure/spider/stickyweb/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(genetic) @@ -67,65 +83,125 @@ return TRUE if(mover.pulledby && HAS_TRAIT(mover.pulledby, TRAIT_WEB_SURFER)) return TRUE - if(prob(50)) - loc.balloon_alert(mover, "stuck in web!") + if(prob(stuck_chance)) + stuck_react(mover) return FALSE - else if(isprojectile(mover)) - return prob(30) + return . + if(isprojectile(mover)) + return prob(projectile_stuck_chance) + return . -/obj/structure/spider/stickyweb/sealed - name = "sealed web" - desc = "A solid thick wall of web, airtight enough to block air flow." - icon_state = "sealedweb" - sealed = TRUE - can_atmos_pass = ATMOS_PASS_NO +/// Show some feedback when you can't pass through something +/obj/structure/spider/stickyweb/proc/stuck_react(atom/movable/stuck_guy) + loc.balloon_alert(stuck_guy, "stuck in web!") + stuck_guy.Shake(duration = 0.1 SECONDS) -/obj/structure/spider/stickyweb/sealed/Initialize(mapload) - . = ..() - air_update_turf(TRUE, TRUE) - -/obj/structure/spider/stickyweb/genetic //for the spider genes in genetics +/// Web made by geneticists, needs special handling to allow them to pass through their own webs +/obj/structure/spider/stickyweb/genetic genetic = TRUE + desc = "It's stringy, sticky, and came out of your coworker." + /// Mob with special permission to cross this web var/mob/living/allowed_mob /obj/structure/spider/stickyweb/genetic/Initialize(mapload, allowedmob) - allowed_mob = allowedmob . = ..() + // Tint it purple so that spiders don't get confused about why they can't cross this one + add_filter(SPIDER_WEB_TINT, 10, list("type" = "outline", "color" = "#ffaaf8ff", "size" = 0.1)) + +/obj/structure/spider/stickyweb/genetic/Initialize(mapload, allowedmob) + allowed_mob = allowedmob + return ..() /obj/structure/spider/stickyweb/genetic/CanAllowThrough(atom/movable/mover, border_dir) - . = ..() //this is the normal spider web return aka a spider would make this TRUE + . = ..() if(mover == allowed_mob) return TRUE else if(isliving(mover)) //we change the spider to not be able to go through here if(mover.pulledby == allowed_mob) return TRUE if(prob(50)) - loc.balloon_alert(mover, "stuck in web!") + stuck_react(mover) return FALSE else if(isprojectile(mover)) return prob(30) + return . -/obj/structure/spider/solid - name = "solid web" - icon = 'icons/effects/effects.dmi' - desc = "A solid wall of web, thick enough to block air flow." - icon_state = "solidweb" +/// Web with a 100% chance to intercept movement +/obj/structure/spider/stickyweb/very_sticky + max_integrity = 20 + desc = "Extremely sticky silk, you're not easily getting through there." + stuck_chance = 100 + projectile_stuck_chance = 100 + +/obj/structure/spider/stickyweb/very_sticky/Initialize(mapload) + . = ..() + add_filter(SPIDER_WEB_TINT, 10, list("type" = "outline", "color" = "#ffffaaff", "size" = 0.1)) + +/obj/structure/spider/stickyweb/very_sticky/update_overlays() + . = ..() + var/mutable_appearance/web_overlay = mutable_appearance(icon = 'icons/effects/web.dmi', icon_state = "sticky_overlay", layer = layer + 1) + web_overlay.pixel_x -= pixel_x + web_overlay.pixel_y -= pixel_y + . += web_overlay + + +/// Web 'wall' +/obj/structure/spider/stickyweb/sealed + name = "sealed web" + desc = "A solid wall of web, dense enough to block air flow." + icon = 'icons/obj/smooth_structures/webwall.dmi' + base_icon_state = "webwall" + icon_state = "webwall-0" + smoothing_groups = SMOOTH_GROUP_SPIDER_WEB_WALL + canSmoothWith = SMOOTH_GROUP_SPIDER_WEB_WALL + plane = GAME_PLANE + layer = OBJ_LAYER + sealed = TRUE + has_frill = FALSE can_atmos_pass = ATMOS_PASS_NO + +/obj/structure/spider/stickyweb/sealed/Initialize(mapload) + . = ..() + air_update_turf(TRUE, TRUE) + +/// Walls which reflects lasers +/obj/structure/spider/stickyweb/sealed/reflector + name = "reflective silk screen" + desc = "Hardened webbing treated with special chemicals which cause it to repel projectiles." + icon = 'icons/obj/smooth_structures/webwall_reflector.dmi' + base_icon_state = "webwall_reflector" + icon_state = "webwall_reflector-0" + smoothing_groups = SMOOTH_GROUP_SPIDER_WEB_WALL_MIRROR + canSmoothWith = SMOOTH_GROUP_SPIDER_WEB_WALL_MIRROR + max_integrity = 30 + opacity = TRUE + flags_ricochet = RICOCHET_SHINY | RICOCHET_HARD + receive_ricochet_chance_mod = INFINITY + +/// Opaque and durable web 'wall' +/obj/structure/spider/stickyweb/sealed/tough + name = "hardened web" + desc = "Webbing hardened through a chemical process into a durable barrier." + icon = 'icons/obj/smooth_structures/webwall_dark.dmi' + base_icon_state = "webwall_dark" + icon_state = "webwall_dark-0" + smoothing_groups = SMOOTH_GROUP_SPIDER_WEB_WALL_TOUGH + canSmoothWith = SMOOTH_GROUP_SPIDER_WEB_WALL_TOUGH opacity = TRUE - density = TRUE max_integrity = 90 layer = ABOVE_MOB_LAYER resistance_flags = FIRE_PROOF | FREEZE_PROOF -/obj/structure/spider/solid/Initialize(mapload) - . = ..() - air_update_turf(TRUE, TRUE) - +/// Web 'door', blocks atmos but not movement /obj/structure/spider/passage name = "web passage" - icon = 'icons/effects/effects.dmi' - desc = "A messy connection of webs blocking the other side, but not solid enough to prevent passage." - icon_state = "webpassage" + desc = "An opaque curtain of web which seals in air but doesn't impede passage." + icon = 'icons/obj/smooth_structures/stickyweb_rotated.dmi' + base_icon_state = "stickyweb_rotated" + icon_state = "stickyweb_rotated-0" + smoothing_flags = SMOOTH_BITMASK + smoothing_groups = SMOOTH_GROUP_SPIDER_WEB_ROOF + canSmoothWith = SMOOTH_GROUP_SPIDER_WEB_ROOF + SMOOTH_GROUP_WALLS can_atmos_pass = ATMOS_PASS_NO opacity = TRUE max_integrity = 60 @@ -135,7 +211,10 @@ /obj/structure/spider/passage/Initialize(mapload) . = ..() + pixel_x = -9 + pixel_y = -9 air_update_turf(TRUE, TRUE) + add_filter(SPIDER_WEB_TINT, 10, list("type" = "outline", "color" = "#ffffffff", "alpha" = 0.8, "size" = 0.1)) /obj/structure/spider/cocoon name = "cocoon" @@ -165,56 +244,31 @@ A.forceMove(T) return ..() -/obj/structure/spider/sticky - name = "sticky web" - icon = 'icons/effects/effects.dmi' - desc = "Extremely soft and sticky silk." - icon_state = "verystickyweb" - max_integrity = 20 - -/obj/structure/spider/sticky/CanAllowThrough(atom/movable/mover, border_dir) - . = ..() - if(HAS_TRAIT(mover, TRAIT_WEB_SURFER)) - return TRUE - if(!isliving(mover)) - return - if(!isnull(mover.pulledby) && HAS_TRAIT(mover.pulledby, TRAIT_WEB_SURFER)) - return TRUE - loc.balloon_alert(mover, "stuck in web!") - return FALSE - +/// Web caltrops /obj/structure/spider/spikes name = "web spikes" - icon = 'icons/effects/effects.dmi' desc = "Silk hardened into small yet deadly spikes." - icon_state = "webspikes1" + plane = FLOOR_PLANE + layer = MID_TURF_LAYER + icon = 'icons/obj/smooth_structures/stickyweb_spikes.dmi' + base_icon_state = "stickyweb_spikes" + icon_state = "stickyweb_spikes-0" + smoothing_flags = SMOOTH_BITMASK + smoothing_groups = SMOOTH_GROUP_SPIDER_WEB + canSmoothWith = SMOOTH_GROUP_SPIDER_WEB + SMOOTH_GROUP_WALLS max_integrity = 40 /obj/structure/spider/spikes/Initialize(mapload) . = ..() + pixel_x = -9 + pixel_y = -9 + add_filter(SPIDER_WEB_TINT, 10, list("type" = "outline", "color" = "#ac0000ff", "size" = 0.1)) AddComponent(/datum/component/caltrop, min_damage = 20, max_damage = 30, flags = CALTROP_NOSTUN | CALTROP_BYPASS_SHOES) -/obj/structure/spider/reflector - name = "Reflective silk screen" - icon = 'icons/effects/effects.dmi' - desc = "Made up of an extremly reflective silk material looking at it hurts." - icon_state = "reflector" - max_integrity = 30 - density = TRUE - opacity = TRUE - anchored = TRUE - flags_ricochet = RICOCHET_SHINY | RICOCHET_HARD - receive_ricochet_chance_mod = INFINITY - -/obj/structure/spider/reflector/Initialize(mapload) - . = ..() - air_update_turf(TRUE, TRUE) - /obj/structure/spider/effigy name = "web effigy" - icon = 'icons/effects/effects.dmi' desc = "A giant spider! Fortunately, this one is just a statue of hardened webbing." - icon_state = "webcarcass" + icon_state = "effigy" max_integrity = 125 density = TRUE anchored = FALSE @@ -222,3 +276,5 @@ /obj/structure/spider/effigy/Initialize(mapload) . = ..() AddElement(/datum/element/temporary_atom, 1 MINUTES) + +#undef SPIDER_WEB_TINT diff --git a/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spider_subtrees.dm b/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spider_subtrees.dm index 56aacb11a96..8682c8028e3 100644 --- a/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spider_subtrees.dm +++ b/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spider_subtrees.dm @@ -22,7 +22,7 @@ controller.clear_blackboard_key(target_key) var/turf/our_turf = get_turf(spider) - if (is_valid_web_turf(our_turf)) + if (is_valid_web_turf(our_turf, spider)) controller.set_blackboard_key(target_key, our_turf) finish_action(controller, succeeded = TRUE) return @@ -31,7 +31,7 @@ for (var/i in 1 to scan_range) turfs_by_range["[i]"] = list() for (var/turf/turf_in_view in oview(scan_range, our_turf)) - if (!is_valid_web_turf(turf_in_view)) + if (!is_valid_web_turf(turf_in_view, spider)) continue turfs_by_range["[get_dist(our_turf, turf_in_view)]"] += turf_in_view diff --git a/code/modules/mob/living/basic/space_fauna/spider/spider_abilities/web.dm b/code/modules/mob/living/basic/space_fauna/spider/spider_abilities/web.dm index fa44cb35b2d..5bb27b5109c 100644 --- a/code/modules/mob/living/basic/space_fauna/spider/spider_abilities/web.dm +++ b/code/modules/mob/living/basic/space_fauna/spider/spider_abilities/web.dm @@ -3,7 +3,7 @@ name = "Spin Web" desc = "Spin a web to slow down potential prey." button_icon = 'icons/mob/actions/actions_animal.dmi' - button_icon_state = "lay_web" + button_icon_state = "spider_web" background_icon_state = "bg_alien" overlay_icon_state = "bg_alien_border" cooldown_time = 0 SECONDS @@ -17,10 +17,12 @@ . = ..() if (!owner) return + ADD_TRAIT(owner, TRAIT_WEB_WEAVER, REF(src)) RegisterSignals(owner, list(COMSIG_MOVABLE_MOVED, COMSIG_DO_AFTER_BEGAN, COMSIG_DO_AFTER_ENDED), PROC_REF(update_status_on_signal)) /datum/action/cooldown/mob_cooldown/lay_web/Remove(mob/removed_from) . = ..() + REMOVE_TRAIT(removed_from, TRAIT_WEB_WEAVER, REF(src)) UnregisterSignal(removed_from, list(COMSIG_MOVABLE_MOVED, COMSIG_DO_AFTER_BEGAN, COMSIG_DO_AFTER_ENDED)) /datum/action/cooldown/mob_cooldown/lay_web/IsAvailable(feedback = FALSE) @@ -72,7 +74,7 @@ /// Variant for genetics, created webs only allow the creator passage /datum/action/cooldown/mob_cooldown/lay_web/genetic desc = "Spin a web. Only you will be able to traverse your web easily." - cooldown_time = 4 SECONDS //the same time to lay a web + cooldown_time = 4 SECONDS /datum/action/cooldown/mob_cooldown/lay_web/genetic/plant_web(turf/target_turf, obj/structure/spider/stickyweb/existing_web) new /obj/structure/spider/stickyweb/genetic(target_turf, owner) @@ -94,20 +96,20 @@ /datum/action/cooldown/mob_cooldown/lay_web/solid_web name = "Spin Solid Web" desc = "Spin a web to obstruct potential prey." - button_icon_state = "lay_solid_web" + button_icon_state = "spider_wall" cooldown_time = 0 SECONDS webbing_time = 5 SECONDS /datum/action/cooldown/mob_cooldown/lay_web/solid_web/obstructed_by_other_web() - return !!(locate(/obj/structure/spider/solid) in get_turf(owner)) + return !!(locate(/obj/structure/spider/stickyweb/sealed/tough) in get_turf(owner)) /datum/action/cooldown/mob_cooldown/lay_web/solid_web/plant_web(turf/target_turf, obj/structure/spider/stickyweb/existing_web) - new /obj/structure/spider/solid(target_turf) + new /obj/structure/spider/stickyweb/sealed/tough(target_turf) /datum/action/cooldown/mob_cooldown/lay_web/web_passage name = "Spin Web Passage" desc = "Spin a web passage to hide the nest from prey view." - button_icon_state = "lay_web_passage" + button_icon_state = "spider_roof" cooldown_time = 0 SECONDS webbing_time = 4 SECONDS @@ -120,20 +122,20 @@ /datum/action/cooldown/mob_cooldown/lay_web/sticky_web name = "Spin Sticky Web" desc = "Spin a sticky web to trap intruders." - button_icon_state = "lay_sticky_web" + button_icon_state = "spider_ropes" cooldown_time = 20 SECONDS webbing_time = 3 SECONDS /datum/action/cooldown/mob_cooldown/lay_web/sticky_web/obstructed_by_other_web() - return !!(locate(/obj/structure/spider/sticky) in get_turf(owner)) + return !!(locate(/obj/structure/spider/stickyweb/very_sticky) in get_turf(owner)) /datum/action/cooldown/mob_cooldown/lay_web/sticky_web/plant_web(turf/target_turf, obj/structure/spider/stickyweb/existing_web) - new /obj/structure/spider/sticky(target_turf) + new /obj/structure/spider/stickyweb/very_sticky(target_turf) /datum/action/cooldown/mob_cooldown/lay_web/web_spikes name = "Spin Web Spikes" desc = "Extrude silk spikes to dissuade invaders." - button_icon_state = "lay_web_spikes" + button_icon_state = "spider_spikes" cooldown_time = 40 SECONDS webbing_time = 3 SECONDS @@ -174,12 +176,12 @@ /datum/action/cooldown/mob_cooldown/lay_web/web_reflector name = "Spin reflective silk screen" desc = "Spin a web to reflect missiles from the nest." - button_icon_state = "lay_web_reflector" + button_icon_state = "spider_mirror" cooldown_time = 30 SECONDS webbing_time = 4 SECONDS /datum/action/cooldown/mob_cooldown/lay_web/web_reflector/obstructed_by_other_web() - return !!(locate(/obj/structure/spider/reflector) in get_turf(owner)) + return !!(locate(/obj/structure/spider/stickyweb/sealed/reflector) in get_turf(owner)) /datum/action/cooldown/mob_cooldown/lay_web/web_reflector/plant_web(turf/target_turf, obj/structure/spider/stickyweb/existing_web) - new /obj/structure/spider/reflector(target_turf) + new /obj/structure/spider/stickyweb/sealed/reflector(target_turf) diff --git a/code/modules/mob_spawn/ghost_roles/spider_roles.dm b/code/modules/mob_spawn/ghost_roles/spider_roles.dm index 8ab32d9d4f4..102a73d6f92 100644 --- a/code/modules/mob_spawn/ghost_roles/spider_roles.dm +++ b/code/modules/mob_spawn/ghost_roles/spider_roles.dm @@ -1,5 +1,6 @@ /obj/structure/spider/eggcluster name = "egg cluster" + icon = 'icons/effects/effects.dmi' desc = "There's something alive in there, and sooner or later it's going to find its way out." icon_state = "eggs" /// Mob spawner handling the actual spawn of the spider diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index fcb4e262d7c..77489551f60 100644 Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ diff --git a/icons/effects/web.dmi b/icons/effects/web.dmi new file mode 100644 index 00000000000..e21eb4d6ec3 Binary files /dev/null and b/icons/effects/web.dmi differ diff --git a/icons/mob/actions/actions_animal.dmi b/icons/mob/actions/actions_animal.dmi index 64b1c700f41..c13290716b7 100644 Binary files a/icons/mob/actions/actions_animal.dmi and b/icons/mob/actions/actions_animal.dmi differ diff --git a/icons/obj/smooth_structures/stickyweb.dmi b/icons/obj/smooth_structures/stickyweb.dmi new file mode 100644 index 00000000000..2c445260bd2 Binary files /dev/null and b/icons/obj/smooth_structures/stickyweb.dmi differ diff --git a/icons/obj/smooth_structures/stickyweb.png b/icons/obj/smooth_structures/stickyweb.png new file mode 100644 index 00000000000..ae53aaa53b2 Binary files /dev/null and b/icons/obj/smooth_structures/stickyweb.png differ diff --git a/icons/obj/smooth_structures/stickyweb.png.toml b/icons/obj/smooth_structures/stickyweb.png.toml new file mode 100644 index 00000000000..cf7f5ce339f --- /dev/null +++ b/icons/obj/smooth_structures/stickyweb.png.toml @@ -0,0 +1,14 @@ +output_name = "stickyweb" +template = "bitmask/diagonal_32x32.toml" + +[icon_size] +x = 50 +y = 50 + +[output_icon_size] +x = 50 +y = 50 + +[cut_pos] +x = 25 +y = 25 diff --git a/icons/obj/smooth_structures/stickyweb_rotated.dmi b/icons/obj/smooth_structures/stickyweb_rotated.dmi new file mode 100644 index 00000000000..11d3e5546ae Binary files /dev/null and b/icons/obj/smooth_structures/stickyweb_rotated.dmi differ diff --git a/icons/obj/smooth_structures/stickyweb_rotated.png b/icons/obj/smooth_structures/stickyweb_rotated.png new file mode 100644 index 00000000000..6c5413ab792 Binary files /dev/null and b/icons/obj/smooth_structures/stickyweb_rotated.png differ diff --git a/icons/obj/smooth_structures/stickyweb_rotated.png.toml b/icons/obj/smooth_structures/stickyweb_rotated.png.toml new file mode 100644 index 00000000000..61c615585e1 --- /dev/null +++ b/icons/obj/smooth_structures/stickyweb_rotated.png.toml @@ -0,0 +1,14 @@ +output_name = "stickyweb_rotated" +template = "bitmask/diagonal_32x32.toml" + +[icon_size] +x = 50 +y = 50 + +[output_icon_size] +x = 50 +y = 50 + +[cut_pos] +x = 25 +y = 25 diff --git a/icons/obj/smooth_structures/stickyweb_spikes.dmi b/icons/obj/smooth_structures/stickyweb_spikes.dmi new file mode 100644 index 00000000000..b3dcfcc83f9 Binary files /dev/null and b/icons/obj/smooth_structures/stickyweb_spikes.dmi differ diff --git a/icons/obj/smooth_structures/stickyweb_spikes.png b/icons/obj/smooth_structures/stickyweb_spikes.png new file mode 100644 index 00000000000..98832695f67 Binary files /dev/null and b/icons/obj/smooth_structures/stickyweb_spikes.png differ diff --git a/icons/obj/smooth_structures/stickyweb_spikes.png.toml b/icons/obj/smooth_structures/stickyweb_spikes.png.toml new file mode 100644 index 00000000000..ebd1260cfcf --- /dev/null +++ b/icons/obj/smooth_structures/stickyweb_spikes.png.toml @@ -0,0 +1,14 @@ +output_name = "stickyweb_spikes" +template = "bitmask/diagonal_32x32.toml" + +[icon_size] +x = 50 +y = 50 + +[output_icon_size] +x = 50 +y = 50 + +[cut_pos] +x = 25 +y = 25 diff --git a/icons/obj/smooth_structures/webwall.dmi b/icons/obj/smooth_structures/webwall.dmi new file mode 100644 index 00000000000..e2308526cc9 Binary files /dev/null and b/icons/obj/smooth_structures/webwall.dmi differ diff --git a/icons/obj/smooth_structures/webwall.png b/icons/obj/smooth_structures/webwall.png new file mode 100644 index 00000000000..207978b8aaf Binary files /dev/null and b/icons/obj/smooth_structures/webwall.png differ diff --git a/icons/obj/smooth_structures/webwall.png.toml b/icons/obj/smooth_structures/webwall.png.toml new file mode 100644 index 00000000000..3f91f5f62e7 --- /dev/null +++ b/icons/obj/smooth_structures/webwall.png.toml @@ -0,0 +1,2 @@ +output_name = "webwall" +template = "bitmask/diagonal_32x32.toml" diff --git a/icons/obj/smooth_structures/webwall_dark.dmi b/icons/obj/smooth_structures/webwall_dark.dmi new file mode 100644 index 00000000000..d3863a81814 Binary files /dev/null and b/icons/obj/smooth_structures/webwall_dark.dmi differ diff --git a/icons/obj/smooth_structures/webwall_dark.png b/icons/obj/smooth_structures/webwall_dark.png new file mode 100644 index 00000000000..df36c5108bd Binary files /dev/null and b/icons/obj/smooth_structures/webwall_dark.png differ diff --git a/icons/obj/smooth_structures/webwall_dark.png.toml b/icons/obj/smooth_structures/webwall_dark.png.toml new file mode 100644 index 00000000000..4b3b155f126 --- /dev/null +++ b/icons/obj/smooth_structures/webwall_dark.png.toml @@ -0,0 +1,2 @@ +output_name = "webwall_dark" +template = "bitmask/diagonal_32x32.toml" diff --git a/icons/obj/smooth_structures/webwall_reflector.dmi b/icons/obj/smooth_structures/webwall_reflector.dmi new file mode 100644 index 00000000000..04547349d53 Binary files /dev/null and b/icons/obj/smooth_structures/webwall_reflector.dmi differ diff --git a/icons/obj/smooth_structures/webwall_reflector.png b/icons/obj/smooth_structures/webwall_reflector.png new file mode 100644 index 00000000000..881cb24fc0d Binary files /dev/null and b/icons/obj/smooth_structures/webwall_reflector.png differ diff --git a/icons/obj/smooth_structures/webwall_reflector.png.toml b/icons/obj/smooth_structures/webwall_reflector.png.toml new file mode 100644 index 00000000000..c47c554f8da --- /dev/null +++ b/icons/obj/smooth_structures/webwall_reflector.png.toml @@ -0,0 +1,2 @@ +output_name = "webwall_reflector" +template = "bitmask/diagonal_32x32.toml" diff --git a/tools/UpdatePaths/Scripts/81839_webs.txt b/tools/UpdatePaths/Scripts/81839_webs.txt new file mode 100644 index 00000000000..10341bc2321 --- /dev/null +++ b/tools/UpdatePaths/Scripts/81839_webs.txt @@ -0,0 +1,3 @@ +/obj/structure/spider/solid : /obj/structure/spider/stickyweb/sealed/tough{@OLD} +/obj/structure/spider/sticky : /obj/structure/spider/stickyweb/very_sticky{@OLD} +/obj/structure/spider/reflector : /obj/structure/spider/stickyweb/sealed/reflector{@OLD}