Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion code/__DEFINES/admin.dm
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@
#define ADMIN_PUNISHMENT_BLEED ":B:loodless"
#define ADMIN_PUNISHMENT_PERFORATE ":B:erforate"
#define ADMIN_PUNISHMENT_SCARIFY "Scarify"
#define ADMIN_PUNISHMENT_SMSPIDER "SM Spider"

#define AHELP_ACTIVE 1
#define AHELP_CLOSED 2
Expand Down Expand Up @@ -118,4 +119,4 @@ GLOBAL_VAR_INIT(ghost_role_flags, (~0))
//ie pais, posibrains
#define GHOSTROLE_SILICONS (1<<3)
//ie mafia, ctf
#define GHOSTROLE_MINIGAME (1<<4)
#define GHOSTROLE_MINIGAME (1<<4)
15 changes: 14 additions & 1 deletion code/modules/admin/verbs/randomverbs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1100,7 +1100,8 @@ Traitors and the like can also be revived with the previous role mostly intact.
ADMIN_PUNISHMENT_CRACK,
ADMIN_PUNISHMENT_BLEED,
ADMIN_PUNISHMENT_PERFORATE,
ADMIN_PUNISHMENT_SCARIFY
ADMIN_PUNISHMENT_SCARIFY,
ADMIN_PUNISHMENT_SMSPIDER
)

var/punishment = input("Choose a punishment", "DIVINE SMITING") as null|anything in punishment_list
Expand Down Expand Up @@ -1190,6 +1191,17 @@ Traitors and the like can also be revived with the previous role mostly intact.
to_chat(target, span_reallybigphobia("HENK!! HENK!! HENK!! YOU DID SOMETHING EXTREMELY DUMB, AND MADE GOD MAD. CRY ABOUT IT."))
var/mob/living/carbon/human/H = target
H?.cluwneify()
if(ADMIN_PUNISHMENT_SMSPIDER)
var/confirm = alert(usr, "Dust target with a spider? There is no chance of revival!", "Supermatter Spider", "Yes", "No")
if(confirm == "No")
return
//What's an open turf within the target's sight? Lets make a list of them.
var/FOVlist = circleviewturfs(target,5)
//Okay, now we spawn a spider on the turf...
var/mob/living/simple_animal/hostile/smspider/spider = new /mob/living/simple_animal/hostile/smspider(pick(FOVlist))
//And have it target the victim.
spider.GiveTarget(target)
to_chat(usr, span_alert("Dusting target with a spider..."))
if(ADMIN_PUNISHMENT_CRACK)
if(!iscarbon(target))
to_chat(usr,span_warning("This must be used on a carbon mob."), confidential = TRUE)
Expand Down Expand Up @@ -1276,6 +1288,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
* * wound_bonus- the wounding power we're assigning to the bullet, since we don't care about the base one
* * damage- the damage we're assigning to the bullet, since we don't care about the base one
*/

/proc/firing_squad(mob/living/carbon/target, turf/source_turf, body_zone, wound_bonus, damage)
if(!target.get_bodypart(body_zone))
return
Expand Down
58 changes: 58 additions & 0 deletions code/modules/mob/living/simple_animal/hostile/smspider.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
/mob/living/simple_animal/hostile/smspider
name = "supermatter spider"
desc= "A sliver of supermatter placed upon a robotically enhanced pedestal."
icon = 'icons/mob/smspider.dmi'
icon_state = "smspider"
icon_living = "smspider"
icon_dead = "smspider_dead"
gender = NEUTER
turns_per_move = 2
speak_emote = list("vibrates")
emote_see = list("vibrates")
emote_taunt = list("vibrates")
taunt_chance = 40
maxHealth = 10
health = 10
minbodytemp = 0
maxbodytemp = 1500
healable = 0
attacktext = "slices"
attack_sound = 'sound/effects/supermatter.ogg'
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_plas" = 0, "max_plas" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
robust_searching = 1
faction = list("hostile")
see_in_dark = 8
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
ventcrawler = VENTCRAWLER_ALWAYS
deathmessage = "falls to the ground, its shard dulling to a miserable grey!"
var/overcharged = FALSE // if true, spider will not die if it dusts a limb

/mob/living/simple_animal/hostile/smspider/AttackingTarget()
. = ..()
if(isliving(target))
playsound(get_turf(src), 'sound/effects/supermatter.ogg', 10, TRUE)
visible_message(span_danger("[src] knocks into [target], turning them to dust in a brilliant flash of light!"))
var/mob/living/victim = target
victim.dust()
if(!overcharged)
death()
else if(!isturf(target))
playsound(get_turf(src), 'sound/effects/supermatter.ogg', 10, TRUE)
visible_message(span_danger("[src] knocks into [target], turning it to dust in a brilliant flash of light!"))
qdel(target)
if(!overcharged)
death()
return FALSE

/mob/living/simple_animal/hostile/smspider/Initialize(mapload)
. = ..()
AddComponent(/datum/component/swarming)

/mob/living/simple_animal/hostile/smspider/overcharged
name = "overcharged supermatter spider"
desc = "A sliver of overcharged supermatter placed upon a robotically enhanced pedestal. This one seems especially dangerous."
icon_state = "smspideroc"
icon_living = "smspideroc"
maxHealth = 25
health = 25
overcharged = TRUE
Binary file added icons/mob/smspider.dmi
Binary file not shown.
1 change: 1 addition & 0 deletions yogstation.dme
Original file line number Diff line number Diff line change
Expand Up @@ -2472,6 +2472,7 @@
#include "code\modules\mob\living\simple_animal\hostile\pirate.dm"
#include "code\modules\mob\living\simple_animal\hostile\russian.dm"
#include "code\modules\mob\living\simple_animal\hostile\skeleton.dm"
#include "code\modules\mob\living\simple_animal\hostile\smspider.dm"
#include "code\modules\mob\living\simple_animal\hostile\statue.dm"
#include "code\modules\mob\living\simple_animal\hostile\stickman.dm"
#include "code\modules\mob\living\simple_animal\hostile\syndicate.dm"
Expand Down