diff --git a/monkestation/code/modules/admin/ggg/where_are_your_fingers.dm b/monkestation/code/modules/admin/ggg/where_are_your_fingers.dm new file mode 100644 index 000000000000..a209e53dd53b --- /dev/null +++ b/monkestation/code/modules/admin/ggg/where_are_your_fingers.dm @@ -0,0 +1,19 @@ +/// Rips off the target's arms +/datum/smite/where_are_your_fingers + name = "Where are your fingers?" + +/datum/smite/where_are_your_fingers/effect(client/user, mob/living/target) + . = ..() + + if (!iscarbon(target)) + to_chat(user, span_warning("This must be used on a carbon mob."), confidential = TRUE) + return + + var/mob/living/carbon/carbon_target = target + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), carbon_target, 'monkestation/sound/effects/ggg/whereareyourfingers.mp3', 70), 0 SECONDS) + + for (var/_limb in carbon_target.bodyparts) + var/obj/item/bodypart/limb = _limb + if (limb.body_part == HEAD || limb.body_part == CHEST || limb.body_part == LEG_LEFT || limb.body_part == LEG_RIGHT) + continue + addtimer(CALLBACK(limb, TYPE_PROC_REF(/obj/item/bodypart/, dismember)), 5 SECONDS) diff --git a/monkestation/code/modules/mob/living/basic/ggg/glerm.dm b/monkestation/code/modules/mob/living/basic/ggg/glerm.dm new file mode 100644 index 000000000000..b01035299249 --- /dev/null +++ b/monkestation/code/modules/mob/living/basic/ggg/glerm.dm @@ -0,0 +1,76 @@ +/mob/living/basic/ggg/glerm + name = "\improper glerm" + desc = "A little guy. Seems to be glerming." + icon = 'monkestation/icons/mob/ggg/glerm.dmi' + icon_state = "glerm" + icon_living = "glerm" + icon_dead = "glerm_dead" + + gender = NEUTER + mob_biotypes = MOB_ORGANIC + pass_flags = PASSTABLE|PASSGRILLE|PASSMOB + mob_size = MOB_SIZE_SMALL + held_w_class = WEIGHT_CLASS_TINY + gold_core_spawnable = FRIENDLY_SPAWN + + response_help_continuous = "nuzzles" + response_help_simple = "nuzzle" + response_disarm_continuous = "bonks" + response_disarm_simple = "bonk" + attack_verb_continuous = "chomps" + attack_verb_simple = "chomp" + attack_vis_effect = ATTACK_EFFECT_BITE + + maxHealth = 25 + health = 25 + + speak_emote = list("glurps") + death_message = "stops glerming for good." + + melee_damage_lower = 1 + melee_damage_upper = 1 + + ai_controller = /datum/ai_controller/basic_controller/dog + +/mob/living/basic/ggg/glerm/cool + name = "\improper cool glerm" + desc = "A cool little guy. Seems to be glerming harder than the rest." + icon = 'monkestation/icons/mob/ggg/glerm.dmi' + icon_state = "glerm_cool" + icon_living = "glerm_cool" + icon_dead = "glerm_cool_dead" + gold_core_spawnable = NO_SPAWN + +/mob/living/basic/ggg/glerm/cool/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change = TRUE) + . = ..() + playsound(src, 'sound/vehicles/skateboard_roll.ogg', 50, TRUE) + +/mob/living/basic/ggg/glerm/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) + +/obj/item/choice_beacon/pet/donator/glerm + name = "Glerm" + default_name = "Bingus" + company_source = "Glerm Industries LLC" + company_message = "Be sure to feed your glerm." + donator_pet = /mob/living/basic/ggg/glerm + +/obj/item/choice_beacon/pet/donator/coolglerm + name = "Cool Glerm" + default_name = "Cool Bingus" + company_source = "Glerm Industries LLC" + company_message = "Be sure to feed your cool glerm premium glerm food." + donator_pet = /mob/living/basic/ggg/glerm/cool + +/datum/loadout_item/pocket_items/donator/glerm + name = "Pet Delivery Beacon - Glerm" + item_path = /obj/item/choice_beacon/pet/donator/glerm + donator_only = FALSE + requires_purchase = TRUE + +/datum/loadout_item/pocket_items/donator/coolglerm + name = "Pet Delivery Beacon - Cool Glerm" + item_path = /obj/item/choice_beacon/pet/donator/coolglerm + donator_only = TRUE + requires_purchase = FALSE diff --git a/monkestation/code/modules/mob/living/basic/ggg/susflash.dm b/monkestation/code/modules/mob/living/basic/ggg/susflash.dm new file mode 100644 index 000000000000..2a0430f3d05a --- /dev/null +++ b/monkestation/code/modules/mob/living/basic/ggg/susflash.dm @@ -0,0 +1,61 @@ +/mob/living/basic/ggg/susflash + name = "suspicious flash" + desc = "A powerful and versatile flashbulb device, with applications ranging from disorienting attackers to acting as visual receptors in robot production. This one has legs for some reason..." + icon = 'monkestation/icons/mob/ggg/susflash.dmi' + icon_state = "flash_living" + icon_living = "flash_living" + icon_dead = "flash_dead" + gender = NEUTER + //istate = ISTATE_HARM|ISTATE_BLOCKING + mob_biotypes = MOB_ROBOTIC + density = FALSE + pass_flags = PASSTABLE|PASSGRILLE|PASSMOB + mob_size = MOB_SIZE_TINY + held_w_class = WEIGHT_CLASS_TINY + gold_core_spawnable = NO_SPAWN + can_be_held = FALSE //Will be changed when I make a sprite + // attacked_sound = "" + // death_sound = "" + + response_help_continuous = "nuzzles" + response_help_simple = "nuzzle" + response_disarm_continuous = "bonks" + response_disarm_simple = "bonk" + + maxHealth = 25 + health = 25 + melee_damage_lower = 1 + melee_damage_upper = 1 + // speed = 3 + attack_verb_continuous = "spooks" + attack_verb_simple = "spook" + attack_vis_effect = ATTACK_EFFECT_SLASH + + speak_emote = list("muffles") + death_message = "'s head falls off." + unsuitable_atmos_damage = 0 + unsuitable_cold_damage = 0 + unsuitable_heat_damage = 0 + + lighting_cutoff_red = 15 + lighting_cutoff_green = 10 + lighting_cutoff_blue = 25 + + ai_controller = /datum/ai_controller/basic_controller/mouse + +/mob/living/basic/ggg/susflash/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) + +/obj/item/choice_beacon/pet/donator/susflash + name = "Ordinary Flash Bulb" + default_name = "suspicious flash" + company_source = "Saturnian United Systems" + company_message = "Here is your completely ordinary flash bulb." + donator_pet = /mob/living/basic/ggg/susflash + +/datum/loadout_item/pocket_items/donator/susflash + name = "Pet Delivery Beacon - Ordinary Flash Bulb" + item_path = /obj/item/choice_beacon/pet/donator/susflash + donator_only = TRUE + requires_purchase = FALSE diff --git a/monkestation/icons/mob/ggg/glerm.dmi b/monkestation/icons/mob/ggg/glerm.dmi new file mode 100644 index 000000000000..1dec85cc0682 Binary files /dev/null and b/monkestation/icons/mob/ggg/glerm.dmi differ diff --git a/monkestation/icons/mob/ggg/susflash.dmi b/monkestation/icons/mob/ggg/susflash.dmi new file mode 100644 index 000000000000..8ab236ea4ed6 Binary files /dev/null and b/monkestation/icons/mob/ggg/susflash.dmi differ diff --git a/monkestation/sound/effects/ggg/whereareyourfingers.mp3 b/monkestation/sound/effects/ggg/whereareyourfingers.mp3 new file mode 100644 index 000000000000..3e999923a967 Binary files /dev/null and b/monkestation/sound/effects/ggg/whereareyourfingers.mp3 differ diff --git a/tgstation.dme b/tgstation.dme index 904191d3af23..044ce57064a8 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -5539,6 +5539,7 @@ #include "monkestation\code\game\objects\items\storage\uplink_kits.dm" #include "monkestation\code\modules\admin\antag_tokens.dm" #include "monkestation\code\modules\admin\camera_view.dm" +#include "monkestation\code\modules\admin\ggg\where_are_your_fingers.dm" #include "monkestation\code\modules\aesthetics\airlock\airlock.dm" #include "monkestation\code\modules\aesthetics\items\clothing.dm" #include "monkestation\code\modules\aesthetics\mapping\tilecoloring.dm" @@ -5990,6 +5991,8 @@ #include "monkestation\code\modules\mob\living\living_defines.dm" #include "monkestation\code\modules\mob\living\status_procs.dm" #include "monkestation\code\modules\mob\living\basic\animatronic.dm" +#include "monkestation\code\modules\mob\living\basic\ggg\glerm.dm" +#include "monkestation\code\modules\mob\living\basic\ggg\susflash.dm" #include "monkestation\code\modules\mob\living\basic\space_fauna\fugu_gland.dm" #include "monkestation\code\modules\mob\living\basic\vermin\mouse.dm" #include "monkestation\code\modules\mob\living\carbon\carbon_defense.dm"