This commit is contained in:
silicons
2021-06-28 12:55:22 -07:00
parent a73ca4be46
commit 4653deddec
6 changed files with 108 additions and 45 deletions

View File

@@ -5,7 +5,11 @@
multiplicative_slowdown = -0.55
/datum/movespeed_modifier/reagent/ephedrine
multiplicative_slowdown = -0.5
// strong painkiller effect that caps out at slightly above runspeed
multiplicative_slowdown = -1.5
priority = -100
complex_calculation = TRUE
absolute_max_tiles_per_second = 7
/datum/movespeed_modifier/reagent/pepperspray
multiplicative_slowdown = 0.25
@@ -14,10 +18,19 @@
multiplicative_slowdown = -0.35
/datum/movespeed_modifier/reagent/changelinghaste
multiplicative_slowdown = -0.8
// extremely strong painkiller effect: allows user to run at old sprint speeds but not over by cancelling out slowdowns.
// however, will not make user go faster than that
multiplicative_slowdown = -4
priority = -100
complex_calculation = TRUE
absolute_max_tiles_per_second = 8
/datum/movespeed_modifier/reagent/methamphetamine
multiplicative_slowdown = -0.65
// very strong painkiller effect that caps out at slightly above runspeed
multiplicative_slowdown = -2.5
priority = -100
complex_calculation = TRUE
absolute_max_tiles_per_second = 7.5
/datum/movespeed_modifier/reagent/nitryl
multiplicative_slowdown = -0.65

View File

@@ -51,3 +51,11 @@
/datum/movespeed_modifier/status_effect/off_balance
variable = TRUE
/datum/movespeed_modifier/status_effect/slime/light_pink
// decently good painkiller + speedup effect
blacklisted_movetypes = FLYING | FLOATING
priority = -150 // someday we really need to make these defines lmao
multiplicative_slowdown = -2
complex_calculation = TRUE
absolute_max_tiles_per_second = 7

View File

@@ -77,6 +77,11 @@ Contents:
cell.name = "black power cell"
cell.icon_state = "bscell"
/obj/item/clothing/suit/space/space_ninja/Destroy()
if(affecting)
unlock_suit()
return ..()
//Simply deletes all the attachments and self, killing all related procs.
/obj/item/clothing/suit/space/space_ninja/proc/terminate()
qdel(n_hood)
@@ -84,7 +89,6 @@ Contents:
qdel(n_shoes)
qdel(src)
//Randomizes suit parameters.
/obj/item/clothing/suit/space/space_ninja/proc/randomize_param()
s_cost = rand(1,20)
@@ -93,7 +97,6 @@ Contents:
s_bombs = rand(5,20)
a_boost = rand(1,7)
//This proc prevents the suit from being taken off.
/obj/item/clothing/suit/space/space_ninja/proc/lock_suit(mob/living/carbon/human/H)
if(!istype(H))
@@ -113,14 +116,14 @@ Contents:
return FALSE
affecting = H
ADD_TRAIT(src, TRAIT_NODROP, NINJA_SUIT_TRAIT) //colons make me go all |=
slowdown = 0
n_hood = H.head
ADD_TRAIT(n_hood, TRAIT_NODROP, NINJA_SUIT_TRAIT)
n_shoes = H.shoes
ADD_TRAIT(n_shoes, TRAIT_NODROP, NINJA_SUIT_TRAIT)
n_shoes.slowdown -= 0.5
n_shoes.slowdown = -0.25
n_gloves = H.gloves
ADD_TRAIT(n_gloves, TRAIT_NODROP, NINJA_SUIT_TRAIT)
ADD_TRAIT(affecting, TRAIT_TASED_RESISTANCE, NINJA_SUIT_TRAIT)
return TRUE
/obj/item/clothing/suit/space/space_ninja/proc/lockIcons(mob/living/carbon/human/H)
@@ -133,19 +136,19 @@ Contents:
/obj/item/clothing/suit/space/space_ninja/proc/unlock_suit()
affecting = null
REMOVE_TRAIT(src, TRAIT_NODROP, NINJA_SUIT_TRAIT)
slowdown = 1
icon_state = "s-ninja"
if(n_hood)//Should be attached, might not be attached.
REMOVE_TRAIT(n_hood, TRAIT_NODROP, NINJA_SUIT_TRAIT)
if(n_shoes)
REMOVE_TRAIT(n_shoes, TRAIT_NODROP, NINJA_SUIT_TRAIT)
n_shoes.slowdown += 0.5
n_shoes.slowdown = 0.25
if(n_gloves)
n_gloves.icon_state = "s-ninja"
n_gloves.item_state = "s-ninja"
REMOVE_TRAIT(n_gloves, TRAIT_NODROP, NINJA_SUIT_TRAIT)
n_gloves.candrain=0
n_gloves.draining=0
REMOVE_TRAIT(affecting, TRAIT_TASED_RESISTANCE, NINJA_SUIT_TRAIT)
/obj/item/clothing/suit/space/space_ninja/examine(mob/user)

View File

@@ -345,6 +345,8 @@
victim.confused = max(M.confused, 3)
victim.damageoverlaytemp = 60
victim.DefaultCombatKnockdown(80, override_hardstun = 0.1, override_stamdmg = min(reac_volume * 3, 15))
victim.add_movespeed_modifier(/datum/movespeed_modifier/reagent/pepperspray)
addtimer(CALLBACK(victim, /mob.proc/remove_movespeed_modifier, /datum/movespeed_modifier/reagent/pepperspray), 10 SECONDS)
return
else if ( eyes_covered ) // Eye cover is better than mouth cover
victim.blur_eyes(3)
@@ -358,6 +360,8 @@
victim.confused = max(M.confused, 6)
victim.damageoverlaytemp = 75
victim.DefaultCombatKnockdown(80, override_hardstun = 0.1, override_stamdmg = min(reac_volume * 5, 25))
victim.add_movespeed_modifier(/datum/movespeed_modifier/reagent/pepperspray)
addtimer(CALLBACK(victim, /mob.proc/remove_movespeed_modifier, /datum/movespeed_modifier/reagent/pepperspray), 10 SECONDS)
victim.update_damage_hud()
/datum/reagent/consumable/condensedcapsaicin/on_mob_life(mob/living/carbon/M)

View File

@@ -706,21 +706,42 @@
addiction_threshold = 30
pH = 12
/datum/reagent/medicine/ephedrine/on_mob_life(mob/living/carbon/M)
M.AdjustAllImmobility(-20, FALSE)
M.AdjustUnconscious(-20, FALSE)
M.adjustStaminaLoss(-4.5*REM, FALSE)
M.Jitter(10)
if(prob(50))
M.confused = max(M.confused, 1)
/datum/reagent/medicine/ephedrine/on_mob_metabolize(mob/living/L)
..()
L.add_movespeed_modifier(/datum/movespeed_modifier/reagent/ephedrine)
ADD_TRAIT(L, TRAIT_TASED_RESISTANCE, type)
/datum/reagent/medicine/ephedrine/on_mob_end_metabolize(mob/living/L)
L.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/ephedrine)
REMOVE_TRAIT(L, TRAIT_TASED_RESISTANCE, type)
..()
/datum/reagent/medicine/ephedrine/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
// if(DT_PROB(10 * (1-creation_purity), delta_time) && iscarbon(M))
// var/obj/item/I = M.get_active_held_item()
// if(I && M.dropItemToGround(I))
// to_chat(M, span_notice("Your hands spaz out and you drop what you were holding!"))
// M.Jitter(10)
M.AdjustAllImmobility(-20 * REM * delta_time * normalise_creation_purity())
M.adjustStaminaLoss(-1 * REM * delta_time * normalise_creation_purity(), FALSE)
..()
return TRUE
/datum/reagent/medicine/ephedrine/overdose_process(mob/living/M)
if(prob(33))
M.adjustToxLoss(0.5*REM, 0)
/datum/reagent/medicine/ephedrine/overdose_process(mob/living/M, delta_time, times_fired)
if(DT_PROB(1 * normalise_creation_purity(), delta_time) && iscarbon(M))
var/datum/disease/D = new /datum/disease/heart_failure
M.ForceContractDisease(D)
to_chat(M, span_userdanger("You're pretty sure you just felt your heart stop for a second there.."))
M.playsound_local(M, 'sound/effects/singlebeat.ogg', 100, 0)
if(DT_PROB(3.5 * normalise_creation_purity(), delta_time))
to_chat(M, span_notice("[pick("Your head pounds.", "You feel a tight pain in your chest.", "You find it hard to stay still.", "You feel your heart practically beating out of your chest.")]"))
if(DT_PROB(18 * normalise_creation_purity(), delta_time))
M.adjustToxLoss(1, 0)
M.losebreath++
. = 1
. = TRUE
return TRUE
/datum/reagent/medicine/ephedrine/addiction_act_stage1(mob/living/M)
@@ -1415,37 +1436,44 @@
/datum/reagent/medicine/changelingadrenaline
name = "Changeling Adrenaline"
description = "Reduces the duration of unconciousness, knockdown and stuns. Restores stamina, but deals toxin damage when overdosed."
color = "#918e53"
color = "#C1151D"
overdose_threshold = 30
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
value = REAGENT_VALUE_VERY_RARE
/datum/reagent/medicine/changelingadrenaline/on_mob_life(mob/living/carbon/metabolizer, delta_time, times_fired)
..()
metabolizer.AdjustAllImmobility(-20 * REM * delta_time)
metabolizer.adjustStaminaLoss(-10 * REM * delta_time, 0)
metabolizer.Jitter(10 * REM * delta_time)
metabolizer.Dizzy(10 * REM * delta_time)
return TRUE
/datum/reagent/medicine/changelingadrenaline/on_mob_metabolize(mob/living/L)
..()
ADD_TRAIT(L, TRAIT_SLEEPIMMUNE, type)
ADD_TRAIT(L, TRAIT_TASED_RESISTANCE, type)
L.add_movespeed_mod_immunities(type, /datum/movespeed_modifier/damage_slowdown)
/datum/reagent/medicine/changelingadrenaline/on_mob_end_metabolize(mob/living/L)
..()
REMOVE_TRAIT(L, TRAIT_SLEEPIMMUNE, type)
REMOVE_TRAIT(L, TRAIT_TASED_RESISTANCE, type)
..()
L.remove_movespeed_mod_immunities(type, /datum/movespeed_modifier/damage_slowdown)
L.Dizzy(0)
L.Jitter(0)
/datum/reagent/medicine/changelingadrenaline/on_mob_life(mob/living/carbon/M as mob)
M.AdjustUnconscious(-20, 0)
M.AdjustAllImmobility(-20, 0)
M.AdjustSleeping(-20, 0)
M.adjustStaminaLoss(-30, 0)
..()
return TRUE
/datum/reagent/medicine/changelingadrenaline/overdose_process(mob/living/M as mob)
M.adjustToxLoss(5, 0) //let's make this mildly more toxic because of the stamina buff
/datum/reagent/medicine/changelingadrenaline/overdose_process(mob/living/metabolizer, delta_time, times_fired)
metabolizer.adjustToxLoss(1 * REM * delta_time, 0)
..()
return TRUE
/datum/reagent/medicine/changelinghaste
name = "Changeling Haste"
description = "Drastically increases movement speed, but deals toxin damage."
color = "#669153"
metabolization_rate = 1
value = REAGENT_VALUE_VERY_RARE
color = "#AE151D"
metabolization_rate = 2.5 * REAGENTS_METABOLISM
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/medicine/changelinghaste/on_mob_metabolize(mob/living/L)
..()
@@ -1455,11 +1483,12 @@
L.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/changelinghaste)
..()
/datum/reagent/medicine/changelinghaste/on_mob_life(mob/living/carbon/M)
M.adjustToxLoss(2, 0)
/datum/reagent/medicine/changelinghaste/on_mob_life(mob/living/carbon/metabolizer, delta_time, times_fired)
metabolizer.adjustToxLoss(2 * REM * delta_time, 0)
..()
return TRUE
/datum/reagent/medicine/corazone
// Heart attack code will not do damage if corazone is present
// because it's SPACE MAGIC ASPIRIN

View File

@@ -702,16 +702,20 @@
/datum/status_effect/stabilized/sepia
id = "stabilizedsepia"
colour = "sepia"
var/mod = 0
var/list/possible = list(
-0.5,
-0.25,
0,
0.5,
1
)
/datum/status_effect/stabilized/sepia/New(list/arguments)
. = ..()
possible = typelist(NAMEOF(src, possible), possible)
/datum/status_effect/stabilized/sepia/tick()
if(prob(50) && mod > -1)
mod--
owner.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/status_effect/sepia, multiplicative_slowdown = 1)
else if(mod < 1)
mod++
// yeah a value of 0 does nothing but replacing the trait in place is cheaper than removing and adding repeatedly
owner.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/status_effect/sepia, multiplicative_slowdown = 0)
owner.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/status_effect/sepia, multiplicative_slowdown = safepick(possible))
return ..()
/datum/status_effect/stabilized/sepia/on_remove()
@@ -932,6 +936,7 @@
/datum/status_effect/stabilized/lightpink/on_apply()
ADD_TRAIT(owner, TRAIT_FREESPRINT, "stabilized_slime")
owner.add_movespeed_modifier(/datum/movespeed_modifier/status_effect/slime/light_pink)
return ..()
/datum/status_effect/stabilized/lightpink/tick()
@@ -943,6 +948,7 @@
/datum/status_effect/stabilized/lightpink/on_remove()
REMOVE_TRAIT(owner, TRAIT_FREESPRINT, "stabilized_slime")
owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/slime/light_pink)
return ..()
/datum/status_effect/stabilized/adamantine