2 Commits

Author SHA1 Message Date
CHOMPStation2StaffMirrorBot
422d9b7815 Catslug Belly Marks 2025-12-08 15:20:56 +00:00
Will
040c8eb195 catslug marking (#18841) 2025-12-08 15:20:56 +00:00
8 changed files with 87 additions and 100 deletions

View File

@@ -8,7 +8,6 @@
var/banglet = 0
var/spawner_type = null // must be an object path
var/deliveryamt = 1 // amount of type to deliver
var/flash = TRUE //Will the grenade flash on detonation?
// Detonate now just handles the two loops that query for people in lockers and people who can see it.
/obj/item/grenade/spawnergrenade/detonate()
@@ -17,10 +16,9 @@
// Make a quick flash
var/turf/T = get_turf(src)
playsound(src, 'sound/effects/phasein.ogg', 100, 1)
if(flash)
for(var/mob/living/carbon/human/M in viewers(T, null))
if(M.eyecheck() <= 0)
M.flash_eyes()
for(var/mob/living/carbon/human/M in viewers(T, null))
if(M:eyecheck() <= 0)
M.flash_eyes()
// Spawn some hostile syndicate critters
for(var/i=1, i<=deliveryamt, i++)
@@ -79,97 +77,3 @@
throw_range = 4
w_class = ITEMSIZE_LARGE
deliveryamt = 6
/obj/item/grenade/spawnergrenade/manhacks/station/locked
desc = "It is set to detonate in 5 seconds. It will deploy three weaponized survey drones. This one has a safety interlock that prevents release if used while in proximity to the facility."
req_access = list(ACCESS_ARMORY) //for toggling safety
var/locked = 1
/obj/item/grenade/spawnergrenade/manhacks/station/locked/detonate()
if(locked)
var/turf/T = get_turf(src)
if(T.z in using_map.station_levels)
icon_state = initial(icon_state)
active = 0
return 0
return ..()
/obj/item/grenade/spawnergrenade/manhacks/station/locked/attackby(obj/item/I, mob/user)
var/obj/item/card/id/id = I.GetID()
if(istype(id))
if(check_access(id))
locked = !locked
to_chat(user, span_warning("You [locked ? "enable" : "disable"] the safety lock on \the [src]."))
else
to_chat(user, span_warning("Access denied."))
user.visible_message(span_notice("[user] swipes \the [I] against \the [src]."))
else
return ..()
/obj/item/grenade/spawnergrenade/manhacks/station/locked/emag_act(var/remaining_charges,var/mob/user)
..()
locked = !locked
to_chat(user, span_warning("You [locked ? "enable" : "disable"] the safety lock on \the [src]!"))
// Generic creature spawner grenades for loadout.
/obj/item/grenade/spawnergrenade/loadout
name = "Creature Container (Cat)"
desc = "It is set to detonate in 5 seconds. It will release a cat won from the grenade!"
icon = 'icons/obj/casino.dmi'
icon_state = "generic_delivery"
flash = FALSE
/obj/item/grenade/spawnergrenade/loadout/penguin
desc = "It is set to detonate in 5 seconds. It will release a penguin from the grenade!"
name = "Creature Container (Penguin)"
spawner_type = /mob/living/simple_mob/animal/passive/penguin
/obj/item/grenade/spawnergrenade/loadout/chicken
desc = "It is set to detonate in 5 seconds. It will release a chicken from the grenade!"
name = "Creature Container (Chicken)"
spawner_type = /mob/living/simple_mob/animal/passive/chicken
/obj/item/grenade/spawnergrenade/loadout/cow
desc = "It is set to detonate in 5 seconds. It will release a cow from the grenade!"
name = "Creature Container (Cow)"
spawner_type = /mob/living/simple_mob/animal/passive/cow
/obj/item/grenade/spawnergrenade/loadout/corgi
desc = "It is set to detonate in 5 seconds. It will release a corgi from the grenade!"
name = "Creature Container (Corgi)"
spawner_type = /mob/living/simple_mob/animal/passive/dog/corgi
/obj/item/grenade/spawnergrenade/loadout/fox
desc = "It is set to detonate in 5 seconds. It will release a fox from the grenade!"
name = "Creature Container (Fox)"
spawner_type = /mob/living/simple_mob/animal/passive/fox
/obj/item/grenade/spawnergrenade/loadout/fennec
desc = "It is set to detonate in 5 seconds. It will release a fennec from the grenade!"
name = "Creature Container (Fennec)"
spawner_type = /mob/living/simple_mob/vore/fennec
/obj/item/grenade/spawnergrenade/loadout/snake
desc = "It is set to detonate in 5 seconds. It will release a snake from the grenade!"
name = "Creature Container (Snake)"
spawner_type = /mob/living/simple_mob/animal/passive/snake
/obj/item/grenade/spawnergrenade/loadout/redpanda
desc = "It is set to detonate in 5 seconds. It will release a red panda from the grenade!"
name = "Creature Container (Red panda)"
spawner_type = /mob/living/simple_mob/vore/redpanda
/obj/item/grenade/spawnergrenade/loadout/otie
desc = "It is set to detonate in 5 seconds. It will release a otie from the grenade!"
name = "Creature Container (Otie)"
spawner_type = /mob/living/simple_mob/vore/otie/friendly
/obj/item/grenade/spawnergrenade/loadout/goldcrest
desc = "It is set to detonate in 5 seconds. It will release a bird from the grenade!"
name = "Creature Container (Bird)"
spawner_type = /mob/living/simple_mob/animal/passive/bird/goldcrest
/obj/item/grenade/spawnergrenade/loadout/teppi
desc = "It is set to detonate in 5 seconds. It will release a teppi from the grenade!"
name = "Creature Container (Teppi)"
spawner_type = /mob/living/simple_mob/vore/alienanimals/teppi

View File

@@ -0,0 +1,30 @@
/obj/item/grenade/spawnergrenade/manhacks/station/locked
desc = "It is set to detonate in 5 seconds. It will deploy three weaponized survey drones. This one has a safety interlock that prevents release if used while in proximity to the facility."
req_access = list(ACCESS_ARMORY) //for toggling safety
var/locked = 1
/obj/item/grenade/spawnergrenade/manhacks/station/locked/detonate()
if(locked)
var/turf/T = get_turf(src)
if(T.z in using_map.station_levels)
icon_state = initial(icon_state)
active = 0
return 0
return ..()
/obj/item/grenade/spawnergrenade/manhacks/station/locked/attackby(obj/item/I, mob/user)
var/obj/item/card/id/id = I.GetID()
if(istype(id))
if(check_access(id))
locked = !locked
to_chat(user, span_warning("You [locked ? "enable" : "disable"] the safety lock on \the [src]."))
else
to_chat(user, span_warning("Access denied."))
user.visible_message(span_notice("[user] swipes \the [I] against \the [src]."))
else
return ..()
/obj/item/grenade/spawnergrenade/manhacks/station/locked/emag_act(var/remaining_charges,var/mob/user)
..()
locked = !locked
to_chat(user, span_warning("You [locked ? "enable" : "disable"] the safety lock on \the [src]!"))

View File

@@ -7,6 +7,21 @@
origin_tech = list(TECH_MATERIAL = 2, TECH_MAGNET = 2)
spawner_type = /mob/living/simple_mob/animal/passive/cat
// Detonate now just handles the two loops that query for people in lockers and people who can see it.
/obj/item/grenade/spawnergrenade/casino/detonate()
if(spawner_type && deliveryamt)
var/turf/T = get_turf(src)
playsound(T, 'sound/effects/phasein.ogg', 100, 1)
for(var/i=1, i<=deliveryamt, i++)
var/atom/movable/x = new spawner_type(T)
if(prob(50))
for(var/j = 1, j <= rand(1, 3), j++)
step(x, pick(NORTH,SOUTH,EAST,WEST))
qdel(src)
return
//
// Creatures
//

View File

@@ -3035,3 +3035,18 @@ includes scars and tattoos
body_parts = list(BP_HEAD)
color_blend_mode = ICON_MULTIPLY
hide_body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/scug_shelter
name = "Catslug Belly Mark, Shelter"
icon_state = "scug_shelter"
body_parts = list(BP_GROIN)
/datum/sprite_accessory/marking/scug_gate
name = "Catslug Belly Mark, Gate"
icon_state = "scug_gate"
body_parts = list(BP_GROIN)
/datum/sprite_accessory/marking/scug_door
name = "Catslug Belly Mark, Door"
icon_state = "scug_door"
body_parts = list(BP_GROIN)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 161 KiB

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 66 KiB

View File

@@ -1,7 +1,29 @@
/obj/item/grenade/spawnergrenade/casino/goose
/obj/item/grenade/spawnergrenade/casino
desc = "It is set to detonate in 5 seconds. It will release a goose that has been won from the golden goose casino!"
name = "Casino Creature Container (Goose)"
icon = 'icons/obj/grenade_ch.dmi'
icon_state = "casino"
item_state = "casino"
origin_tech = list(TECH_MATERIAL = 2, TECH_MAGNET = 2)
spawner_type = /mob/living/simple_mob/animal/space/goose/domesticated
// Detonate now just handles the two loops that query for people in lockers and people who can see it.
/obj/item/grenade/spawnergrenade/casino/detonate()
if(spawner_type && deliveryamt)
var/turf/T = get_turf(src)
playsound(T, 'sound/effects/phasein.ogg', 100, 1)
for(var/i=1, i<=deliveryamt, i++)
var/atom/movable/x = new spawner_type(T)
if(prob(50))
for(var/j = 1, j <= rand(1, 3), j++)
step(x, pick(NORTH,SOUTH,EAST,WEST))
qdel(src)
return
/obj/item/grenade/spawnergrenade/casino/goat
desc = "It is set to detonate in 5 seconds. It will release a goat that has been won from the golden goose casino!"
name = "Casino Creature Container (Goat)"

View File

@@ -1793,6 +1793,7 @@
#include "code\game\objects\items\weapons\grenades\projectile.dm"
#include "code\game\objects\items\weapons\grenades\smokebomb.dm"
#include "code\game\objects\items\weapons\grenades\spawnergrenade.dm"
#include "code\game\objects\items\weapons\grenades\spawnergrenade_vr.dm"
#include "code\game\objects\items\weapons\grenades\supermatter.dm"
#include "code\game\objects\items\weapons\id cards\cards.dm"
#include "code\game\objects\items\weapons\id cards\cards_vr.dm"