Skip to content

Commit

Permalink
whats this
Browse files Browse the repository at this point in the history
  • Loading branch information
dwasint committed Oct 7, 2023
1 parent e73541a commit c00b0cf
Show file tree
Hide file tree
Showing 22 changed files with 176 additions and 3 deletions.
2 changes: 1 addition & 1 deletion code/__DEFINES/role_preferences.dm
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@
#define ROLE_LAVALAND "Lavaland"
#define ROLE_LAZARUS_BAD "Slaved Revived Mob"
#define ROLE_LAZARUS_GOOD "Friendly Revived Mob"
#define ROLE_SLASHER "Slasher"

#define ROLE_CLOWN_OPERATIVE "Clown Operative"
#define ROLE_FREE_GOLEM "Free Golem"
Expand Down Expand Up @@ -108,7 +109,6 @@
#define ROLE_VENUSHUMANTRAP "Venus Human Trap"



/// This defines the antagonists you can operate with in the settings.
/// Keys are the antagonist, values are the number of days since the player's
/// first connection in order to play.
Expand Down
2 changes: 2 additions & 0 deletions code/modules/mob/living/carbon/status_procs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
return

/mob/living/carbon/stamina_stun()
if(HAS_TRAIT(src, TRAIT_BATON_RESISTANCE))
return //baton resistance can't stam crit but can still be non sprinted
if(HAS_TRAIT_FROM(src, TRAIT_INCAPACITATED, STAMINA)) //Already in stamcrit
return
if(check_stun_immunity(CANKNOCKDOWN))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1322,6 +1322,7 @@

/datum/reagent/medicine/changelingadrenaline/on_mob_life(mob/living/carbon/metabolizer, seconds_per_tick, times_fired)
..()
metabolizer.exit_stamina_stun()
metabolizer.AdjustAllImmobility(-20 * REM * seconds_per_tick)
metabolizer.stamina.adjust(10 * REM * seconds_per_tick, 0)
metabolizer.set_jitter_if_lower(20 SECONDS * REM * seconds_per_tick)
Expand Down
Binary file added goon/icons/obj/items/weapons.dmi
Binary file not shown.
Binary file added goon/sounds/impact_sounds/Flesh_Break_1.ogg
Binary file not shown.
Binary file added goon/sounds/impact_sounds/Flesh_Break_2.ogg
Binary file not shown.
Binary file added goon/sounds/impact_sounds/Flesh_Crush_1.ogg
Binary file not shown.
Binary file added goon/sounds/impact_sounds/Flesh_Cut_1.ogg
Binary file not shown.
Binary file added goon/sounds/impact_sounds/Flesh_Stab_1.ogg
Binary file not shown.
Binary file added goon/sounds/impact_sounds/Flesh_Stab_2.ogg
Binary file not shown.
Binary file added goon/sounds/impact_sounds/Flesh_Stab_3.ogg
Binary file not shown.
Binary file added goon/sounds/impact_sounds/Flesh_Tear_1.ogg
Binary file not shown.
Binary file added goon/sounds/impact_sounds/Flesh_Tear_2.ogg
Binary file not shown.
Binary file added goon/sounds/impact_sounds/Flesh_Tear_3.ogg
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
/datum/action/cooldown/slasher
name = "Slasher Possession"
desc = "You've been possessed by the Slasher"
button_icon = 'goon/icons/mob/slasher.dmi'
background_icon = 'goon/icons/mob/slasher.dmi'
background_icon_state = "slasher_background"
button_icon = 'goon/icons/mob/slasher.dmi'
button_icon_state = "slasher_template"
buttontooltipstyle = "cult"
transparent_when_unavailable = TRUE

click_to_activate = FALSE

/datum/action/cooldown/slasher/IsAvailable(feedback = FALSE)
return next_use_time <= world.time
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
/datum/action/cooldown/slasher/incorporealize/PreActivate(atom/target)
. = ..()
if(!do_after(target, 1.5 SECONDS, get_turf(target)))
break_corp()
return FALSE

if(!flipped)
Expand All @@ -26,7 +27,28 @@
name = "Corporealize"
desc = "Manifest your being from your incorporeal state."
button_icon_state = "corporealize"
if(isliving(owner))
var/mob/living/owner_mob = owner
owner_mob.incorporeal_move = INCORPOREAL_MOVE_BASIC
animate(owner_mob, alpha = 0, time = 1.5 SECONDS)
else
name = "Incorporealize"
desc = " Become incorporeal, capable of moving through walls and being completely invisible, but unable to interact with the world. Can only be used when corporeal and when not in view of any human being. "
button_icon_state = "incorporealize"
if(isliving(owner))
var/mob/living/owner_mob = owner
owner_mob.incorporeal_move = 0
animate(owner_mob, alpha = 255, time = 1.5 SECONDS)

build_all_button_icons(UPDATE_BUTTON_NAME|UPDATE_BUTTON_ICON)

/datum/action/cooldown/slasher/incorporealize/proc/break_corp()
name = "Incorporealize"
desc = " Become incorporeal, capable of moving through walls and being completely invisible, but unable to interact with the world. Can only be used when corporeal and when not in view of any human being. "
button_icon_state = "incorporealize"
flipped = FALSE
if(isliving(owner))
var/mob/living/owner_mob = owner
owner_mob.incorporeal_move = 0
animate(owner_mob, alpha = 255, time = 1.5 SECONDS)
build_all_button_icons(UPDATE_BUTTON_NAME|UPDATE_BUTTON_ICON)
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
/datum/action/cooldown/slasher/summon_machette
name = "Summon Machette"
desc = "Summon your machete to your active hand, or create one if it doesn't exist. This machete deals 15 BRUTE on hit, and stuns on throw."

button_icon_state = "summon_machete"

cooldown_time = 15 SECONDS

var/obj/item/slasher_machette/stored_machette


/datum/action/cooldown/slasher/summon_machette/Destroy()
. = ..()
qdel(stored_machette)
stored_machette = null

/datum/action/cooldown/slasher/summon_machette/Activate(atom/target)
. = ..()
if(!stored_machette)
stored_machette = new /obj/item/slasher_machette
var/datum/antagonist/slasher/slasherdatum = owner.mind.has_antag_datum(/datum/antagonist/slasher)
if(!slasherdatum)
return
slasherdatum.linked_machette = stored_machette

if(!owner.put_in_hands(stored_machette))
stored_machette.forceMove(get_turf(owner))

/obj/item/slasher_machette
name = "slasher's machete"
desc = "An old machete, clearly showing signs of wear and tear due to its age."

icon = 'goon/icons/obj/items/weapons.dmi'
icon_state = "welder_machete"
hitsound = 'goon/sounds/impact_sounds/Flesh_Cut_1.ogg'

inhand_icon_state = "PKMachete0"
lefthand_file = 'monkestation/icons/mob/inhands/weapons/melee_lefthand.dmi'
righthand_file = 'monkestation/icons/mob/inhands/weapons/melee_righthand.dmi'

force = 15 //damage increases by 2.5 for every soul they take
throwforce = 15 //damage goes up by 2.5 for every soul they take

sharpness = SHARP_EDGED
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF


/obj/item/slasher_machette/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
. = ..()
if(iscarbon(hit_atom))
var/mob/living/carbon/hit_carbon = hit_atom
hit_carbon.blood_volume -= throwforce
hit_carbon.Knockdown(1.5 SECONDS)
playsound(src, 'goon/sounds/impact_sounds/Flesh_Stab_3.ogg', 25, 1)
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/datum/action/cooldown/slasher/regenerate
name = "Regenerate"
desc = "Quickly regenerate your being, restoring most if not all lost health, repairing wounds, and removing all stuns."

button_icon_state = "regenerate"

cooldown_time = 75 SECONDS


/datum/action/cooldown/slasher/regenerate/Activate(atom/target)
. = ..()
if(isliving(target))
var/mob/living/mob_target = target
mob_target.set_timed_status_effect(5 SECONDS, /datum/status_effect/bloody_heal) // should heal most damage over 5 seconds
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/mob/living/carbon/human
/// Has our soul been sucked, this makes us pale white.
var/soul_sucked = FALSE
///sucked precent
var/sucked_precent = 0

/datum/action/cooldown/slasher/soul_steal
name = "Soul Steal"
desc = " Use on a corpse who has a full soul to steal theirs. Stealing a soul gives your current machete an extra 2.5 BRUTE on hit, and on throw."

button_icon_state = "soul_steal"

click_to_activate = TRUE

cooldown_time = 15 SECONDS

/datum/action/cooldown/slasher/soul_steal/PreActivate(atom/target)
. = ..()
var/mob/living/human_target = target
if(human_target.stat != DEAD)
to_chat(owner, span_notice("This target is not dead. You can't steal their soul."))
if(human_target.soul_sucked)
to_chat(owner, span_warning("Their soul has already been sucked."))
if(!human_target.mind)
to_chat(owner, span_warning("This target doesn't seem to have a soul to suck."))

/datum/action/cooldown/slasher/soul_steal/Activate(atom/target)
. = ..()
if(!ishuman(target))
return
var/mob/living/carbon/human/human_owner = owner
var/mob/living/carbon/human/human_target = target
while(do_after(owner, 1 SECONDS, target) && !human_target.soul_sucked)
human_target.sucked_precent += 20
if(human_target.sucked_precent >= 100)
human_target.soul_sucked = TRUE
if(human_target.dna.species.use_skintones)
human_target.skin_tone = "albino"
human_target.dna.update_ui_block(DNA_SKIN_TONE_BLOCK)
else
human_target.dna.features["mcolor"] = "#FFFFFF"
human_target.dna.update_uf_block(DNA_MUTANT_COLOR_BLOCK)

affected_human.update_body(is_creating = TRUE)

var/datum/antagonist/slasher/slasherdatum = human_owner.mind.has_antag_datum(/datum/antagonist/slasher)
if(!slasherdatum)
return
slasherdatum.linked_machette.force += 2.5
slasherdatum.linked_machette.throwforce += 2.5
27 changes: 27 additions & 0 deletions monkestation/code/modules/new_antagonists/slasher/slasher_datum.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/datum/antagonist/slasher
name = "\improper Slasher"
show_in_antagpanel = TRUE
roundend_category = "slashers"
antagpanel_category = "Slasher"
job_rank = ROLE_SLASHER
antag_hud_name = "slasher"
show_name_in_check_antagonists = TRUE
hud_icon = 'monkestation/icons/mob/slasher.dmi'

var/obj/item/slasher_machette/linked_machette

/datum/antagonist/slasher/apply_innate_effects(mob/living/mob_override)
. = ..()
var/mob/living/current_mob = mob_override || owner.current

ADD_TRAIT(current_mob, TRAIT_BATON_RESISTANCE, "slasher")

///abilities galore
var/datum/action/cooldown/slasher/summon_machette/machete = new
machete.Grant(current_mob)
var/datum/action/cooldown/slasher/blood_walk/blood_walk = new
blood_walk.Grant(current_mob)
var/datum/action/cooldown/slasher/incorporealize/incorporealize = new
incorporealize.Grant(current_mob)
var/datum/action/cooldown/slasher/soul_steal/soul_steal = new
soul_steal.Grant(current_mob)
Binary file added monkestation/icons/mob/slasher.dmi
Binary file not shown.
3 changes: 3 additions & 0 deletions tgstation.dme
Original file line number Diff line number Diff line change
Expand Up @@ -6023,9 +6023,12 @@
#include "monkestation\code\modules\mob\living\carbon\human\species_type\zombies.dm"
#include "monkestation\code\modules\mob\living\simple_animal\pets\bees.dm"
#include "monkestation\code\modules\mob\living\simple_animal\pets\honk_platinum.dm"
#include "monkestation\code\modules\new_antagonists\slasher\slasher_datum.dm"
#include "monkestation\code\modules\new_antagonists\slasher\abilities\_slasher_base.dm"
#include "monkestation\code\modules\new_antagonists\slasher\abilities\blood_walk.dm"
#include "monkestation\code\modules\new_antagonists\slasher\abilities\incorporealize.dm"
#include "monkestation\code\modules\new_antagonists\slasher\abilities\recall_machette.dm"
#include "monkestation\code\modules\new_antagonists\slasher\abilities\soul_steal.dm"
#include "monkestation\code\modules\ocean_content\department_consoles\engineering.dm"
#include "monkestation\code\modules\ocean_content\fluff\barrier.dm"
#include "monkestation\code\modules\ocean_content\fluff\base_turf_editor.dm"
Expand Down

0 comments on commit c00b0cf

Please sign in to comment.