mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-16 18:45:22 +01:00
Merge remote-tracking branch 'tgstation/master' into upstream-2025-11-29
# Conflicts: # _maps/RandomRuins/SpaceRuins/derelict_sulaco.dmm # _maps/RandomRuins/SpaceRuins/garbagetruck2.dmm # _maps/map_files/CatwalkStation/CatwalkStation_2023.dmm # _maps/map_files/tramstation/tramstation.dmm # code/_onclick/hud/new_player.dm # code/datums/components/squashable.dm # code/datums/diseases/advance/symptoms/heal.dm # code/datums/diseases/chronic_illness.dm # code/datums/status_effects/buffs.dm # code/datums/status_effects/debuffs/drunk.dm # code/datums/status_effects/debuffs/stamcrit.dm # code/game/machinery/computer/crew.dm # code/game/objects/items/devices/scanners/health_analyzer.dm # code/game/objects/items/wall_mounted.dm # code/game/turfs/closed/indestructible.dm # code/modules/admin/view_variables/filterrific.dm # code/modules/antagonists/heretic/influences.dm # code/modules/cargo/orderconsole.dm # code/modules/client/preferences.dm # code/modules/events/space_vines/vine_mutations.dm # code/modules/mob/dead/new_player/new_player.dm # code/modules/mob/living/carbon/human/death.dm # code/modules/mob/living/carbon/human/species_types/jellypeople.dm # code/modules/mob/living/damage_procs.dm # code/modules/mob/living/living.dm # code/modules/mob_spawn/ghost_roles/mining_roles.dm # code/modules/mob_spawn/mob_spawn.dm # code/modules/projectiles/ammunition/energy/laser.dm # code/modules/projectiles/guns/ballistic/launchers.dm # code/modules/projectiles/guns/energy/laser.dm # code/modules/reagents/chemistry/machinery/chem_dispenser.dm # code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm # code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm # code/modules/reagents/chemistry/reagents/medicine_reagents.dm # code/modules/surgery/healing.dm # code/modules/unit_tests/designs.dm # icons/mob/inhands/items_lefthand.dmi # icons/mob/inhands/items_righthand.dmi # tgui/packages/tgui/interfaces/ChemDispenser.tsx
This commit is contained in:
@@ -160,7 +160,7 @@
|
||||
to_chat(loc, span_warning("Combat injection is still recharging."))
|
||||
return
|
||||
var/mob/living/carbon/human/wearer = loc
|
||||
wearer.adjustStaminaLoss(-75)
|
||||
wearer.adjust_stamina_loss(-75)
|
||||
wearer.SetUnconscious(0)
|
||||
wearer.SetStun(0)
|
||||
wearer.SetKnockdown(0)
|
||||
|
||||
@@ -262,7 +262,7 @@
|
||||
inhand_icon_state = "shrink_ray"
|
||||
icon_state = "shrink_ray"
|
||||
automatic_charge_overlays = FALSE
|
||||
fire_delay = 30
|
||||
fire_delay = 3 SECONDS
|
||||
selfcharge = 1//shot costs 200 energy, has a max capacity of 1000 for 5 shots. self charge returns 25 energy every couple ticks, so about 1 shot charged every 12~ seconds
|
||||
trigger_guard = TRIGGER_GUARD_ALLOW_ALL// variable-size trigger, get it? (abductors need this to be set so the gun is usable for them)
|
||||
|
||||
|
||||
@@ -16,5 +16,5 @@
|
||||
/obj/item/organ/heart/gland/chem/activate()
|
||||
var/chem_to_add = pick(possible_reagents)
|
||||
owner.reagents.add_reagent(chem_to_add, 2)
|
||||
owner.adjustToxLoss(-5, forced = TRUE)
|
||||
owner.adjust_tox_loss(-5, forced = TRUE)
|
||||
..()
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
replace_limb(zone, limb)
|
||||
return
|
||||
|
||||
if(owner.getToxLoss() > 40)
|
||||
if(owner.get_tox_loss() > 40)
|
||||
replace_blood()
|
||||
return
|
||||
var/tox_amount = 0
|
||||
@@ -68,8 +68,8 @@
|
||||
if(tox_amount > 10)
|
||||
replace_blood()
|
||||
return
|
||||
if(owner.blood_volume < BLOOD_VOLUME_OKAY)
|
||||
owner.blood_volume = BLOOD_VOLUME_NORMAL
|
||||
if(owner.get_blood_volume() < BLOOD_VOLUME_OKAY)
|
||||
owner.set_blood_volume(BLOOD_VOLUME_NORMAL)
|
||||
to_chat(owner, span_warning("You feel your blood pulsing within you."))
|
||||
return
|
||||
|
||||
@@ -194,13 +194,13 @@
|
||||
var/keep_going = FALSE
|
||||
owner.vomit(vomit_flags = (MOB_VOMIT_BLOOD | MOB_VOMIT_FORCE), lost_nutrition = 0, distance = 3)
|
||||
owner.Stun(15)
|
||||
owner.adjustToxLoss(-15, forced = TRUE)
|
||||
owner.adjust_tox_loss(-15, forced = TRUE)
|
||||
|
||||
owner.blood_volume = min(BLOOD_VOLUME_NORMAL, owner.blood_volume + 20)
|
||||
if(owner.blood_volume < BLOOD_VOLUME_NORMAL)
|
||||
owner.adjust_blood_volume(20, maximum = BLOOD_VOLUME_NORMAL)
|
||||
if(owner.get_blood_volume() < BLOOD_VOLUME_NORMAL)
|
||||
keep_going = TRUE
|
||||
|
||||
if(owner.getToxLoss())
|
||||
if(owner.get_tox_loss())
|
||||
keep_going = TRUE
|
||||
for(var/datum/reagent/toxin/R in owner.reagents.reagent_list)
|
||||
owner.reagents.remove_reagent(R.type, 4)
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
if(2)
|
||||
to_chat(target, span_warning("You hear an annoying buzz in your head."))
|
||||
target.adjust_confusion(15 SECONDS)
|
||||
target.adjustOrganLoss(ORGAN_SLOT_BRAIN, 10, 160)
|
||||
target.adjust_organ_loss(ORGAN_SLOT_BRAIN, 10, 160)
|
||||
if(3)
|
||||
target.adjust_hallucinations(150 SECONDS)
|
||||
|
||||
|
||||
@@ -28,8 +28,8 @@
|
||||
/datum/reagent/blob/cryogenic_poison/on_mob_life(mob/living/carbon/exposed_mob, seconds_per_tick, times_fired)
|
||||
. = ..()
|
||||
var/need_mob_update
|
||||
need_mob_update = exposed_mob.adjustBruteLoss(0.5 * REM * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update += exposed_mob.adjustFireLoss(0.5 * REM * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update += exposed_mob.adjustToxLoss(0.5 * REM * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update = exposed_mob.adjust_brute_loss(0.5 * REM * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update += exposed_mob.adjust_fire_loss(0.5 * REM * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update += exposed_mob.adjust_tox_loss(0.5 * REM * seconds_per_tick, updating_health = FALSE)
|
||||
if(need_mob_update)
|
||||
. = UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -30,6 +30,6 @@
|
||||
. = ..()
|
||||
reac_volume = return_mob_expose_reac_volume(exposed_mob, methods, reac_volume, show_message, touch_protection, overmind)
|
||||
exposed_mob.losebreath += round(0.2*reac_volume)
|
||||
exposed_mob.adjustStaminaLoss(reac_volume * 1.2)
|
||||
exposed_mob.adjust_stamina_loss(reac_volume * 1.2)
|
||||
if(exposed_mob)
|
||||
exposed_mob.apply_damage(0.6*reac_volume, OXY)
|
||||
|
||||
@@ -48,5 +48,5 @@
|
||||
exposed_mob.adjust_wet_stacks(reac_volume / 10)
|
||||
exposed_mob.apply_damage(0.4*reac_volume, BRUTE, wound_bonus=CANT_WOUND)
|
||||
if(exposed_mob)
|
||||
exposed_mob.adjustStaminaLoss(reac_volume, FALSE)
|
||||
exposed_mob.adjust_stamina_loss(reac_volume, FALSE)
|
||||
exposed_mob.apply_damage(0.4 * reac_volume, OXY)
|
||||
|
||||
@@ -42,4 +42,4 @@
|
||||
/datum/reagent/blob/reactive_spines/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message, touch_protection, mob/eye/blob/overmind)
|
||||
. = ..()
|
||||
reac_volume = return_mob_expose_reac_volume(exposed_mob, methods, reac_volume, show_message, touch_protection, overmind)
|
||||
exposed_mob.adjustBruteLoss(reac_volume)
|
||||
exposed_mob.adjust_brute_loss(reac_volume)
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
/datum/reagent/blob/regenerative_materia/on_mob_life(mob/living/carbon/metabolizer, seconds_per_tick, times_fired)
|
||||
. = ..()
|
||||
if(metabolizer.adjustToxLoss(1 * REM * seconds_per_tick, updating_health = FALSE))
|
||||
if(metabolizer.adjust_tox_loss(1 * REM * seconds_per_tick, updating_health = FALSE))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/blob/regenerative_materia/on_mob_metabolize(mob/living/metabolizer)
|
||||
|
||||
@@ -198,7 +198,7 @@ GLOBAL_LIST_EMPTY(blob_nodes)
|
||||
|
||||
/// Create a blob spore and link it to us
|
||||
/mob/eye/blob/proc/create_spore(turf/spore_turf, spore_type = /mob/living/basic/blob_minion/spore/minion)
|
||||
var/mob/living/basic/blob_minion/spore/spore = new spore_type(spore_turf)
|
||||
var/mob/living/basic/blob_minion/spore/spore = new spore_type(spore_turf, blob_borne = TRUE)
|
||||
spore.AddComponent(/datum/component/blob_minion, src)
|
||||
return spore
|
||||
|
||||
|
||||
@@ -216,7 +216,8 @@
|
||||
factory.assign_blobbernaut(null)
|
||||
return FALSE
|
||||
|
||||
var/mob/living/basic/blob_minion/blobbernaut/minion/blobber = new(get_turf(factory))
|
||||
var/mob_type = /mob/living/basic/blob_minion/blobbernaut/minion
|
||||
var/mob/living/basic/blob_minion/blobbernaut/minion/blobber = new mob_type(get_turf(factory), blob_borne = TRUE)
|
||||
blobber.AddComponent(/datum/component/blob_minion, new_overmind = src, new_death_cloud_size = blobber.death_cloud_size)
|
||||
factory.assign_blobbernaut(blobber)
|
||||
blobber.assign_key(ghost.key, blobstrain)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
// Get us standing up.
|
||||
user.SetAllImmobility(0)
|
||||
user.setStaminaLoss(0)
|
||||
user.set_stamina_loss(0)
|
||||
user.set_resting(FALSE, instant = TRUE)
|
||||
|
||||
user.reagents.add_reagent(/datum/reagent/medicine/changelingadrenaline, 4) //Tank 5 consecutive baton hits
|
||||
|
||||
@@ -297,7 +297,7 @@
|
||||
fire_sound = 'sound/effects/splat.ogg'
|
||||
force = 0
|
||||
max_charges = 1
|
||||
fire_delay = 1
|
||||
fire_delay = 1 DECISECONDS
|
||||
throwforce = 0 //Just to be on the safe side
|
||||
throw_range = 0
|
||||
throw_speed = 0
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
|
||||
stacks++
|
||||
|
||||
user.adjustStaminaLoss(stacks * 1.3) //At first the changeling may regenerate stamina fast enough to nullify fatigue, but it will stack
|
||||
user.adjust_stamina_loss(stacks * 1.3) //At first the changeling may regenerate stamina fast enough to nullify fatigue, but it will stack
|
||||
|
||||
if(stacks == 11) //Warning message that the stacks are getting too high
|
||||
to_chat(user, span_warning("Our legs are really starting to hurt..."))
|
||||
|
||||
@@ -761,7 +761,7 @@
|
||||
if(!ishuman(target))
|
||||
return
|
||||
var/mob/living/carbon/human/human_bloodbag = target
|
||||
if(HAS_TRAIT(human_bloodbag, TRAIT_NOBLOOD))
|
||||
if(!CAN_HAVE_BLOOD(human_bloodbag))
|
||||
human_bloodbag.balloon_alert(user, "no blood!")
|
||||
return
|
||||
if(human_bloodbag.stat == DEAD)
|
||||
@@ -814,21 +814,22 @@
|
||||
|
||||
/// used to ensure the proc returns TRUE if we completely restore an undamaged persons blood
|
||||
var/blood_donor = FALSE
|
||||
if(human_bloodbag.blood_volume < BLOOD_VOLUME_SAFE)
|
||||
var/blood_needed = BLOOD_VOLUME_SAFE - human_bloodbag.blood_volume
|
||||
var/cached_blood_volume = human_bloodbag.get_blood_volume()
|
||||
if(cached_blood_volume < BLOOD_VOLUME_SAFE)
|
||||
var/blood_needed = BLOOD_VOLUME_SAFE - cached_blood_volume
|
||||
/// how much blood we are capable of restoring, based on spell charges
|
||||
var/blood_bank = USES_TO_BLOOD * uses
|
||||
if(blood_bank < blood_needed)
|
||||
human_bloodbag.blood_volume += blood_bank
|
||||
human_bloodbag.adjust_blood_volume(blood_bank)
|
||||
to_chat(user,span_danger("You use the last of your blood rites to restore what blood you could!"))
|
||||
uses = 0
|
||||
return TRUE
|
||||
blood_donor = TRUE
|
||||
human_bloodbag.blood_volume = BLOOD_VOLUME_SAFE
|
||||
human_bloodbag.set_blood_volume(BLOOD_VOLUME_SAFE)
|
||||
uses -= round(blood_needed / USES_TO_BLOOD)
|
||||
to_chat(user,span_warning("Your blood rites have restored [human_bloodbag == user ? "your" : "[human_bloodbag.p_their()]"] blood to safe levels!"))
|
||||
|
||||
var/overall_damage = human_bloodbag.getBruteLoss() + human_bloodbag.getFireLoss() + human_bloodbag.getToxLoss() + human_bloodbag.getOxyLoss()
|
||||
var/overall_damage = human_bloodbag.get_brute_loss() + human_bloodbag.get_fire_loss() + human_bloodbag.get_tox_loss() + human_bloodbag.get_oxy_loss()
|
||||
if(overall_damage == 0)
|
||||
if(blood_donor)
|
||||
return TRUE
|
||||
@@ -846,10 +847,10 @@
|
||||
human_bloodbag.visible_message(span_warning("[human_bloodbag] is [uses == 0 ? "partially healed":"fully healed"] by [human_bloodbag == user ? "[human_bloodbag.p_their()]":"[human_bloodbag]'s"] blood magic!"))
|
||||
|
||||
var/need_mob_update = FALSE
|
||||
need_mob_update += human_bloodbag.adjustOxyLoss(damage_healed * (human_bloodbag.getOxyLoss() / overall_damage), updating_health = FALSE)
|
||||
need_mob_update += human_bloodbag.adjustToxLoss(damage_healed * (human_bloodbag.getToxLoss() / overall_damage), updating_health = FALSE)
|
||||
need_mob_update += human_bloodbag.adjustFireLoss(damage_healed * (human_bloodbag.getFireLoss() / overall_damage), updating_health = FALSE)
|
||||
need_mob_update += human_bloodbag.adjustBruteLoss(damage_healed * (human_bloodbag.getBruteLoss() / overall_damage), updating_health = FALSE)
|
||||
need_mob_update += human_bloodbag.adjust_oxy_loss(damage_healed * (human_bloodbag.get_oxy_loss() / overall_damage), updating_health = FALSE)
|
||||
need_mob_update += human_bloodbag.adjust_tox_loss(damage_healed * (human_bloodbag.get_tox_loss() / overall_damage), updating_health = FALSE)
|
||||
need_mob_update += human_bloodbag.adjust_fire_loss(damage_healed * (human_bloodbag.get_fire_loss() / overall_damage), updating_health = FALSE)
|
||||
need_mob_update += human_bloodbag.adjust_brute_loss(damage_healed * (human_bloodbag.get_brute_loss() / overall_damage), updating_health = FALSE)
|
||||
if(need_mob_update)
|
||||
human_bloodbag.updatehealth()
|
||||
playsound(get_turf(human_bloodbag), 'sound/effects/magic/staff_healing.ogg', 25)
|
||||
@@ -867,10 +868,10 @@
|
||||
if(human_bloodbag.has_status_effect(/datum/status_effect/speech/slurring/cult))
|
||||
to_chat(user,span_danger("[human_bloodbag.p_Their()] blood has been tainted by an even stronger form of blood magic, it's no use to us like this!"))
|
||||
return FALSE
|
||||
if(human_bloodbag.blood_volume <= BLOOD_VOLUME_SAFE)
|
||||
if(human_bloodbag.get_blood_volume() <= BLOOD_VOLUME_SAFE)
|
||||
to_chat(user,span_warning("[human_bloodbag.p_Theyre()] missing too much blood - you cannot drain [human_bloodbag.p_them()] further!"))
|
||||
return FALSE
|
||||
human_bloodbag.blood_volume -= BLOOD_DRAIN_GAIN * USES_TO_BLOOD
|
||||
human_bloodbag.adjust_blood_volume(-BLOOD_DRAIN_GAIN * USES_TO_BLOOD)
|
||||
uses += BLOOD_DRAIN_GAIN
|
||||
user.Beam(human_bloodbag, icon_state="drainbeam", time = 1 SECONDS)
|
||||
playsound(get_turf(human_bloodbag), 'sound/effects/magic/enter_blood.ogg', 50)
|
||||
|
||||
@@ -143,7 +143,7 @@ Striking a noncultist, however, will tear their flesh."}
|
||||
var/mob/living/carbon/human/miscreant = user
|
||||
miscreant.apply_damage(rand(force/2, force), BRUTE, pick(GLOB.arm_zones))
|
||||
else
|
||||
user.adjustBruteLoss(rand(force/2,force))
|
||||
user.adjust_brute_loss(rand(force/2,force))
|
||||
return
|
||||
..()
|
||||
|
||||
@@ -686,7 +686,7 @@ Striking a noncultist, however, will tear their flesh."}
|
||||
. = ..()
|
||||
if(!IS_CULTIST(user) && isliving(user))
|
||||
var/mob/living/living_user = user
|
||||
living_user.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5)
|
||||
living_user.adjust_organ_loss(ORGAN_SLOT_BRAIN, 5)
|
||||
. += span_danger("It hurts just to look at it. Better keep away.")
|
||||
else
|
||||
. += span_cult("It can be used to create a gateway to Nar'Sie's domain, which will summon weak, sentient constructs over time.")
|
||||
@@ -1069,7 +1069,7 @@ Striking a noncultist, however, will tear their flesh."}
|
||||
var/mob/living/L = target
|
||||
if(L.density)
|
||||
L.Paralyze(20)
|
||||
L.adjustBruteLoss(45)
|
||||
L.adjust_brute_loss(45)
|
||||
playsound(L, 'sound/effects/hallucinations/wail.ogg', 50, TRUE)
|
||||
L.emote("scream")
|
||||
user.Beam(temp_target, icon_state="blood_beam", time = 7, beam_type = /obj/effect/ebeam/blood)
|
||||
@@ -1098,46 +1098,45 @@ Striking a noncultist, however, will tear their flesh."}
|
||||
var/illusions = 2
|
||||
|
||||
/obj/item/shield/mirror/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK, damage_type = BRUTE)
|
||||
if(IS_CULTIST(owner))
|
||||
if(attack_type == PROJECTILE_ATTACK)
|
||||
if(damage_type == BRUTE || damage_type == BURN)
|
||||
if(damage >= 30)
|
||||
var/turf/T = get_turf(owner)
|
||||
T.visible_message(span_warning("The sheer force from [hitby] shatters the mirror shield!"))
|
||||
new /obj/effect/temp_visual/cult/sparks(T)
|
||||
playsound(T, 'sound/effects/glass/glassbr3.ogg', 100)
|
||||
owner.Paralyze(25)
|
||||
qdel(src)
|
||||
return FALSE
|
||||
var/obj/projectile/projectile = hitby
|
||||
if(projectile.reflectable)
|
||||
return FALSE //To avoid reflection chance double-dipping with block chance
|
||||
. = ..()
|
||||
if(.)
|
||||
if(illusions > 0)
|
||||
illusions--
|
||||
addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/item/shield/mirror, readd)), 45 SECONDS)
|
||||
if(prob(60))
|
||||
var/mob/living/simple_animal/hostile/illusion/M = new(owner.loc)
|
||||
M.faction = list(FACTION_CULT)
|
||||
M.Copy_Parent(owner, 70, 10, 5)
|
||||
M.move_to_delay = owner.cached_multiplicative_slowdown
|
||||
else
|
||||
var/mob/living/simple_animal/hostile/illusion/escape/E = new(owner.loc)
|
||||
E.Copy_Parent(owner, 70, 10)
|
||||
E.GiveTarget(owner)
|
||||
E.Goto(owner, owner.cached_multiplicative_slowdown, E.minimum_distance)
|
||||
return TRUE
|
||||
else
|
||||
if(!IS_CULTIST(owner))
|
||||
if(prob(50))
|
||||
var/mob/living/simple_animal/hostile/illusion/H = new(owner.loc)
|
||||
H.Copy_Parent(owner, 100, 20, 5)
|
||||
H.faction = list(FACTION_CULT)
|
||||
H.GiveTarget(owner)
|
||||
H.move_to_delay = owner.cached_multiplicative_slowdown
|
||||
to_chat(owner, span_danger("<b>[src] betrays you!</b>"))
|
||||
var/mob/living/basic/illusion/bizarro = new(owner.loc)
|
||||
bizarro.full_setup(owner, target_mob = owner, faction = list(FACTION_CULT), life = 10 SECONDS, damage = 20, replicate = 5)
|
||||
|
||||
to_chat(owner, span_bolddanger("You're betrayed by \"yourself\"!"))
|
||||
return FALSE
|
||||
|
||||
if(attack_type == PROJECTILE_ATTACK)
|
||||
if(damage_type == BRUTE || damage_type == BURN)
|
||||
if(damage >= 30)
|
||||
var/turf/T = get_turf(owner)
|
||||
T.visible_message(span_warning("The sheer force from [hitby] shatters the mirror shield!"))
|
||||
new /obj/effect/temp_visual/cult/sparks(T)
|
||||
playsound(T, 'sound/effects/glass/glassbr3.ogg', 100)
|
||||
owner.Paralyze(25)
|
||||
qdel(src)
|
||||
return FALSE
|
||||
var/obj/projectile/projectile = hitby
|
||||
if(projectile.reflectable)
|
||||
return FALSE //To avoid reflection chance double-dipping with block chance
|
||||
|
||||
. = ..()
|
||||
if(!.)
|
||||
return FALSE
|
||||
|
||||
if(illusions > 0)
|
||||
illusions--
|
||||
addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/item/shield/mirror, readd)), 45 SECONDS)
|
||||
if(prob(60)) // make a potentially slower, but replicable apparation
|
||||
var/mob/living/basic/illusion/apparation = new(owner.loc)
|
||||
apparation.full_setup(owner, target_mob = null, faction = list(FACTION_CULT), life = 7 SECONDS, damage = 10, replicate = 5)
|
||||
apparation.cached_multiplicative_slowdown = owner.cached_multiplicative_slowdown
|
||||
else // normal apparation designed to escape
|
||||
var/mob/living/basic/illusion/escape/decoy = new(owner.loc)
|
||||
decoy.full_setup(owner, target_mob = owner, faction = list(FACTION_CULT), life = 7 SECONDS, damage = 10) // Damage for retaliation
|
||||
return TRUE
|
||||
|
||||
|
||||
/obj/item/shield/mirror/proc/readd()
|
||||
illusions++
|
||||
if(illusions == initial(illusions) && isliving(loc))
|
||||
|
||||
@@ -289,11 +289,11 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
to_chat(invoker, span_warning("Something is shielding [convertee]'s mind!"))
|
||||
return FALSE
|
||||
|
||||
var/brutedamage = convertee.getBruteLoss()
|
||||
var/burndamage = convertee.getFireLoss()
|
||||
var/brutedamage = convertee.get_brute_loss()
|
||||
var/burndamage = convertee.get_fire_loss()
|
||||
if(brutedamage || burndamage)
|
||||
convertee.adjustBruteLoss(-(brutedamage * 0.75))
|
||||
convertee.adjustFireLoss(-(burndamage * 0.75))
|
||||
convertee.adjust_brute_loss(-(brutedamage * 0.75))
|
||||
convertee.adjust_fire_loss(-(burndamage * 0.75))
|
||||
|
||||
convertee.visible_message(
|
||||
span_warning("[convertee] writhes in pain [(brutedamage || burndamage) \
|
||||
@@ -952,7 +952,7 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0)
|
||||
color = "#FC9B54"
|
||||
set_light(6, 1, color)
|
||||
for(var/mob/living/target in viewers(T))
|
||||
if(!IS_CULTIST(target) && target.blood_volume)
|
||||
if(!IS_CULTIST(target) && CAN_HAVE_BLOOD(target))
|
||||
if(target.can_block_magic(charge_cost = 0))
|
||||
continue
|
||||
to_chat(target, span_cult_large("Your blood boils in your veins!"))
|
||||
@@ -977,7 +977,7 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0)
|
||||
/obj/effect/rune/blood_boil/proc/do_area_burn(turf/T, multiplier)
|
||||
set_light(6, 1, color)
|
||||
for(var/mob/living/target in viewers(T))
|
||||
if(!IS_CULTIST(target) && target.blood_volume)
|
||||
if(!IS_CULTIST(target) && target.get_blood_volume())
|
||||
if(target.can_block_magic(charge_cost = 0))
|
||||
continue
|
||||
target.take_overall_damage(tick_damage*multiplier, tick_damage*multiplier)
|
||||
|
||||
@@ -161,8 +161,8 @@
|
||||
return
|
||||
|
||||
. += span_userdanger("Your mind burns as you stare at the tear!")
|
||||
user.adjustOrganLoss(ORGAN_SLOT_BRAIN, 10, 190)
|
||||
//user.add_mood_event("gates_of_mansus", /datum/mood_event/gates_of_mansus) // BUBBER EDIT - Hugboxes
|
||||
user.adjust_organ_loss(ORGAN_SLOT_BRAIN, 10, 190)
|
||||
user.add_mood_event("gates_of_mansus", /datum/mood_event/gates_of_mansus)
|
||||
|
||||
/obj/effect/heretic_influence
|
||||
name = "reality smash"
|
||||
|
||||
@@ -123,7 +123,7 @@
|
||||
// Gives them some nutrition
|
||||
examiner.adjust_nutrition(50)
|
||||
to_chat(examiner, span_warning("You feel a searing pain in your stomach!"))
|
||||
examiner.adjustOrganLoss(ORGAN_SLOT_STOMACH, 5)
|
||||
examiner.adjust_organ_loss(ORGAN_SLOT_STOMACH, 5)
|
||||
to_chat(examiner, span_notice("You feel less hungry."))
|
||||
to_chat(examiner, span_warning("You should stockpile raw meat and organs, before you get hungry again."))
|
||||
examiner.add_mood_event("respite_eldritch_hunger", /datum/mood_event/eldritch_painting/desire_examine)
|
||||
|
||||
@@ -94,7 +94,7 @@
|
||||
return
|
||||
var/mob/living/carbon/human/human_user = user
|
||||
to_chat(human_user, span_userdanger("Your mind burns as you stare at the pages!"))
|
||||
human_user.adjustOrganLoss(ORGAN_SLOT_BRAIN, 10, 190)
|
||||
human_user.adjust_organ_loss(ORGAN_SLOT_BRAIN, 10, 190)
|
||||
human_user.add_mood_event("gates_of_mansus", /datum/mood_event/gates_of_mansus)
|
||||
|
||||
/obj/item/codex_cicatrix/morbus/examine_more(mob/user)
|
||||
|
||||
@@ -637,7 +637,7 @@
|
||||
return COMPONENT_IGNORE_CHANGE
|
||||
|
||||
/obj/item/clothing/suit/hooded/cultrobes/eldritch/moon/proc/handle_damage(mob/living/user, damage)
|
||||
user.adjustOrganLoss(ORGAN_SLOT_BRAIN, damage * damage_modifier)
|
||||
user.adjust_organ_loss(ORGAN_SLOT_BRAIN, damage * damage_modifier)
|
||||
check_braindeath(user)
|
||||
|
||||
/// Gives the health HUD to the wearer
|
||||
@@ -726,7 +726,7 @@
|
||||
if(!istype(wearer) || wearer.wear_suit != src || wearer.stat == DEAD)
|
||||
return ..()
|
||||
if(!IS_HERETIC_OR_MONSTER(wearer))
|
||||
wearer.adjustOrganLoss(ORGAN_SLOT_BRAIN, 20)
|
||||
wearer.adjust_organ_loss(ORGAN_SLOT_BRAIN, 20)
|
||||
var/brain_damage = wearer.get_organ_loss(ORGAN_SLOT_BRAIN)
|
||||
var/emote_rng = 0
|
||||
var/list/emote_list = list()
|
||||
@@ -762,7 +762,7 @@
|
||||
return
|
||||
|
||||
braindead = TRUE
|
||||
wearer.setOrganLoss(ORGAN_SLOT_BRAIN, INFINITY)
|
||||
wearer.set_organ_loss(ORGAN_SLOT_BRAIN, INFINITY)
|
||||
playsound(wearer, 'sound/effects/pope_entry.ogg', 50)
|
||||
to_chat(wearer, span_bold(span_hypnophrase("A terrible fate has befallen you.")))
|
||||
addtimer(CALLBACK(src, PROC_REF(kill_wearer), wearer), 5 SECONDS)
|
||||
|
||||
@@ -279,7 +279,7 @@
|
||||
else if(prob(15))
|
||||
to_chat(user, span_big(span_hypnophrase("LW'NAFH'NAHOR UH'ENAH'YMG EPGOKA AH NAFL MGEMPGAH'EHYE")))
|
||||
to_chat(user, span_danger("Horrible, unintelligible utterances flood your mind!"))
|
||||
user.adjustOrganLoss(ORGAN_SLOT_BRAIN, 15) // This can kill you if you ignore it
|
||||
user.adjust_organ_loss(ORGAN_SLOT_BRAIN, 15) // This can kill you if you ignore it
|
||||
return TRUE
|
||||
|
||||
/obj/item/melee/sickly_blade/cursed/equipped(mob/user, slot)
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
. = ..()
|
||||
if(!ishuman(exposed_mob))
|
||||
if(issilicon(exposed_mob) || ismecha(exposed_mob) || isbot(exposed_mob))
|
||||
exposed_mob.adjustBruteLoss(500)
|
||||
exposed_mob.adjust_brute_loss(500)
|
||||
return
|
||||
if(IS_HERETIC(exposed_mob))
|
||||
return
|
||||
|
||||
@@ -82,8 +82,8 @@
|
||||
return
|
||||
to_chat(user, span_danger("[src] explodes into a shower of gore and blood, drenching your arm. You can feel the blood seeping into your skin. You inmediately feel better, but soon, the feeling turns hollow as your veins itch."))
|
||||
new /obj/effect/gibspawner/generic(get_turf(src))
|
||||
var/heal_amt = user.adjustBruteLoss(-50)
|
||||
user.adjustFireLoss( -(50 - abs(heal_amt)) ) // no double dipping
|
||||
var/heal_amt = user.adjust_brute_loss(-50)
|
||||
user.adjust_fire_loss( -(50 - abs(heal_amt)) ) // no double dipping
|
||||
|
||||
// I want it to poison the user but I also think it'd be neat if they got their juice as well. But that cancels most of the damage out. So I dunno.
|
||||
user.reagents?.add_reagent(/datum/reagent/fuel/unholywater, rand(6, 10))
|
||||
@@ -232,7 +232,7 @@
|
||||
var/mob/living/living_target = target
|
||||
|
||||
if(!ishuman(target))
|
||||
living_target.adjustFireLoss(30)
|
||||
living_target.adjust_fire_loss(30)
|
||||
return TRUE
|
||||
var/mob/living/carbon/human/human_target = target
|
||||
if(IS_HERETIC_OR_MONSTER(human_target))
|
||||
@@ -240,7 +240,7 @@
|
||||
return FALSE
|
||||
if(human_target.has_status_effect(/datum/status_effect/moon_slept) || human_target.has_status_effect(/datum/status_effect/moon_converted))
|
||||
human_target.balloon_alert(living_user, "causing damage!")
|
||||
human_target.adjustOrganLoss(ORGAN_SLOT_BRAIN, 25)
|
||||
human_target.adjust_organ_loss(ORGAN_SLOT_BRAIN, 25)
|
||||
return FALSE
|
||||
if(human_target.can_block_magic(MAGIC_RESISTANCE_MOON))
|
||||
return FALSE
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/human_user = user
|
||||
to_chat(human_user, span_userdanger("Your mind burns as you stare deep into the book, a headache setting in like your brain is on fire!"))
|
||||
human_user.adjustOrganLoss(ORGAN_SLOT_BRAIN, 30, 190)
|
||||
human_user.adjust_organ_loss(ORGAN_SLOT_BRAIN, 30, 190)
|
||||
human_user.add_mood_event("gates_of_mansus", /datum/mood_event/gates_of_mansus)
|
||||
human_user.dropItemToGround(src)
|
||||
return ITEM_INTERACT_BLOCKING
|
||||
|
||||
@@ -68,9 +68,9 @@
|
||||
if(SPT_PROB(40, seconds_per_tick))
|
||||
human_in_range.set_jitter_if_lower(10 SECONDS)
|
||||
|
||||
if(human_in_range.getStaminaLoss() <= 85 && SPT_PROB(30, seconds_per_tick))
|
||||
if(human_in_range.get_stamina_loss() <= 85 && SPT_PROB(30, seconds_per_tick))
|
||||
human_in_range.emote(pick("giggle", "laugh"))
|
||||
human_in_range.adjustStaminaLoss(10)
|
||||
human_in_range.adjust_stamina_loss(10)
|
||||
|
||||
if(SPT_PROB(25, seconds_per_tick))
|
||||
human_in_range.set_dizzy_if_lower(10 SECONDS)
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
return
|
||||
|
||||
to_chat(wearer, span_warning("Laughter echoes in your mind...."))
|
||||
wearer.adjustOrganLoss(ORGAN_SLOT_BRAIN, 40)
|
||||
wearer.adjust_organ_loss(ORGAN_SLOT_BRAIN, 40)
|
||||
wearer.dropItemToGround(src, TRUE)
|
||||
wearer.gain_trauma(pick(brain_traumas), TRAUMA_RESILIENCE_MAGIC)
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
if(IS_HERETIC(user))
|
||||
return
|
||||
|
||||
user.adjustOrganLoss(ORGAN_SLOT_BRAIN, 10, 160)
|
||||
user.adjust_organ_loss(ORGAN_SLOT_BRAIN, 10, 160)
|
||||
user.adjust_temp_blindness(5 SECONDS)
|
||||
. += span_notice("It. It looked. IT WRAPS ITSELF AROUND ME.")
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
return
|
||||
|
||||
to_chat(target, span_danger("A bright green light burns your eyes horrifically!"))
|
||||
target.adjustOrganLoss(ORGAN_SLOT_EYES, 15)
|
||||
target.adjust_organ_loss(ORGAN_SLOT_EYES, 15)
|
||||
target.set_eye_blur_if_lower(20 SECONDS)
|
||||
|
||||
/datum/heretic_knowledge/limited_amount/starting/base_ash/trigger_mark(mob/living/source, mob/living/target)
|
||||
|
||||
@@ -161,7 +161,7 @@
|
||||
var/mob/living/second_target_resolved = second_target?.resolve()
|
||||
var/mob/living/third_target_resolved = third_target?.resolve()
|
||||
var/need_mob_update = FALSE
|
||||
need_mob_update += target.adjustFireLoss(5, updating_health = FALSE)
|
||||
need_mob_update += target.adjust_fire_loss(5, updating_health = FALSE)
|
||||
if(need_mob_update)
|
||||
target.updatehealth()
|
||||
if(target == second_target_resolved || target == third_target_resolved)
|
||||
@@ -173,14 +173,14 @@
|
||||
new /obj/effect/temp_visual/cosmic_explosion(get_turf(second_target_resolved))
|
||||
playsound(get_turf(second_target_resolved), 'sound/effects/magic/cosmic_energy.ogg', 25, FALSE)
|
||||
need_mob_update = FALSE
|
||||
need_mob_update += second_target_resolved.adjustFireLoss(14, updating_health = FALSE)
|
||||
need_mob_update += second_target_resolved.adjust_fire_loss(14, updating_health = FALSE)
|
||||
if(need_mob_update)
|
||||
second_target_resolved.updatehealth()
|
||||
if(third_target_resolved)
|
||||
new /obj/effect/temp_visual/cosmic_domain(get_turf(third_target_resolved))
|
||||
playsound(get_turf(third_target_resolved), 'sound/effects/magic/cosmic_energy.ogg', 50, FALSE)
|
||||
need_mob_update = FALSE
|
||||
need_mob_update += third_target_resolved.adjustFireLoss(28, updating_health = FALSE)
|
||||
need_mob_update += third_target_resolved.adjust_fire_loss(28, updating_health = FALSE)
|
||||
if(need_mob_update)
|
||||
third_target_resolved.updatehealth()
|
||||
if(combo_counter == 3)
|
||||
|
||||
@@ -164,9 +164,9 @@
|
||||
target.emote(pick("giggle", "laugh"))
|
||||
target.mob_mood?.adjust_sanity(-10)
|
||||
if(target.stat == CONSCIOUS && target.mob_mood?.sanity >= SANITY_NEUTRAL)
|
||||
target.adjustOrganLoss(ORGAN_SLOT_BRAIN, 10)
|
||||
target.adjust_organ_loss(ORGAN_SLOT_BRAIN, 10)
|
||||
return
|
||||
target.adjustOrganLoss(ORGAN_SLOT_BRAIN, 25)
|
||||
target.adjust_organ_loss(ORGAN_SLOT_BRAIN, 25)
|
||||
|
||||
/datum/heretic_knowledge/spell/moon_ringleader
|
||||
name = "Ringleaders Rise"
|
||||
|
||||
@@ -302,12 +302,13 @@
|
||||
|
||||
var/need_mob_update = FALSE
|
||||
var/base_heal_amt = 1 * DELTA_WORLD_TIME(SSmobs)
|
||||
need_mob_update += source.adjustBruteLoss(-base_heal_amt, updating_health = FALSE)
|
||||
need_mob_update += source.adjustFireLoss(-base_heal_amt, updating_health = FALSE)
|
||||
need_mob_update += source.adjustToxLoss(-base_heal_amt, updating_health = FALSE, forced = TRUE)
|
||||
need_mob_update += source.adjustOxyLoss(-base_heal_amt, updating_health = FALSE)
|
||||
need_mob_update += source.adjustStaminaLoss(-base_heal_amt * 4, updating_stamina = FALSE)
|
||||
if(source.blood_volume < BLOOD_VOLUME_NORMAL)
|
||||
source.blood_volume += base_heal_amt
|
||||
need_mob_update += source.adjust_brute_loss(-base_heal_amt, updating_health = FALSE)
|
||||
need_mob_update += source.adjust_fire_loss(-base_heal_amt, updating_health = FALSE)
|
||||
need_mob_update += source.adjust_tox_loss(-base_heal_amt, updating_health = FALSE, forced = TRUE)
|
||||
need_mob_update += source.adjust_oxy_loss(-base_heal_amt, updating_health = FALSE)
|
||||
need_mob_update += source.adjust_stamina_loss(-base_heal_amt * 4, updating_stamina = FALSE)
|
||||
|
||||
source.adjust_blood_volume(base_heal_amt, maximum = BLOOD_VOLUME_NORMAL)
|
||||
|
||||
if(need_mob_update)
|
||||
source.updatehealth()
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
|
||||
/datum/status_effect/unholy_determination/on_apply()
|
||||
owner.add_traits(list(TRAIT_COAGULATING, TRAIT_NOCRITDAMAGE, TRAIT_NOSOFTCRIT), TRAIT_STATUS_EFFECT(id))
|
||||
if(owner.blood_volume < BLOOD_VOLUME_OKAY)
|
||||
owner.blood_volume = BLOOD_VOLUME_OKAY
|
||||
if(owner.get_blood_volume() < BLOOD_VOLUME_OKAY)
|
||||
owner.set_blood_volume(BLOOD_VOLUME_OKAY)
|
||||
return TRUE
|
||||
|
||||
/datum/status_effect/unholy_determination/on_remove()
|
||||
@@ -66,10 +66,10 @@
|
||||
owner.losebreath = max(owner.losebreath - (0.5 * seconds_between_ticks), 0)
|
||||
|
||||
var/damage_healed = 0
|
||||
damage_healed += owner.adjustToxLoss(-amount, updating_health = FALSE, forced = TRUE)
|
||||
damage_healed += owner.adjustOxyLoss(-amount, updating_health = FALSE)
|
||||
damage_healed += owner.adjustBruteLoss(-amount, updating_health = FALSE)
|
||||
damage_healed += owner.adjustFireLoss(-amount, updating_health = FALSE)
|
||||
damage_healed += owner.adjust_tox_loss(-amount, updating_health = FALSE, forced = TRUE)
|
||||
damage_healed += owner.adjust_oxy_loss(-amount, updating_health = FALSE)
|
||||
damage_healed += owner.adjust_brute_loss(-amount, updating_health = FALSE)
|
||||
damage_healed += owner.adjust_fire_loss(-amount, updating_health = FALSE)
|
||||
if(damage_healed > 0)
|
||||
owner.updatehealth()
|
||||
|
||||
@@ -94,11 +94,10 @@
|
||||
* Slow and stop any blood loss the owner's experiencing.
|
||||
*/
|
||||
/datum/status_effect/unholy_determination/proc/adjust_bleed_wounds(seconds_between_ticks)
|
||||
if(!iscarbon(owner) || !owner.blood_volume)
|
||||
if(!iscarbon(owner) || !CAN_HAVE_BLOOD(owner))
|
||||
return
|
||||
|
||||
if(owner.blood_volume < BLOOD_VOLUME_NORMAL)
|
||||
owner.blood_volume = owner.blood_volume + (2 * seconds_between_ticks)
|
||||
owner.adjust_blood_volume(2 * seconds_between_ticks, maximum = BLOOD_VOLUME_NORMAL)
|
||||
|
||||
var/mob/living/carbon/carbon_owner = owner
|
||||
var/datum/wound/bloodiest_wound
|
||||
|
||||
+4
-4
@@ -352,7 +352,7 @@
|
||||
sac_target.equip_to_slot_or_del(new /obj/item/restraints/handcuffs/cult, ITEM_SLOT_HANDCUFFED, indirect_action = TRUE)
|
||||
sac_target.dropItemToGround(sac_target.legcuffed, TRUE)
|
||||
|
||||
sac_target.adjustOrganLoss(ORGAN_SLOT_BRAIN, 85, 150)
|
||||
sac_target.adjust_organ_loss(ORGAN_SLOT_BRAIN, 85, 150)
|
||||
sac_target.do_jitter_animation()
|
||||
log_combat(heretic_mind.current, sac_target, "sacrificed")
|
||||
|
||||
@@ -361,7 +361,7 @@
|
||||
|
||||
// If our target is dead, try to revive them
|
||||
// and if we fail to revive them, don't proceede the chain
|
||||
sac_target.adjustOxyLoss(-100, FALSE)
|
||||
sac_target.adjust_oxy_loss(-100, FALSE)
|
||||
if(!sac_target.heal_and_revive(50, span_danger("[sac_target]'s heart begins to beat with an unholy force as they return from death!")))
|
||||
return
|
||||
|
||||
@@ -406,7 +406,7 @@
|
||||
// If our target died during the (short) wait timer,
|
||||
// and we fail to revive them (using a lower number than before),
|
||||
// just disembowel them and stop the chain
|
||||
sac_target.adjustOxyLoss(-100, FALSE)
|
||||
sac_target.adjust_oxy_loss(-100, FALSE)
|
||||
if(!sac_target.heal_and_revive(60, span_danger("[sac_target]'s heart begins to beat with an unholy force as they return from death!")))
|
||||
disembowel_target(sac_target)
|
||||
return
|
||||
@@ -597,7 +597,7 @@
|
||||
sac_target.set_eye_blur_if_lower(100 SECONDS)
|
||||
sac_target.set_dizzy_if_lower(1 MINUTES)
|
||||
sac_target.AdjustKnockdown(80)
|
||||
sac_target.adjustStaminaLoss(120)
|
||||
sac_target.adjust_stamina_loss(120)
|
||||
|
||||
// Glad i'm outta there, though!
|
||||
sac_target.add_mood_event("shadow_realm_survived", /datum/mood_event/shadow_realm_live)
|
||||
|
||||
@@ -38,28 +38,6 @@ GLOBAL_LIST_EMPTY(heretic_sacrifice_landmarks)
|
||||
name = "lock heretic sacrifice landmark"
|
||||
for_heretic_path = PATH_LOCK
|
||||
|
||||
// A fluff signpost object that doesn't teleport you somewhere when you touch it.
|
||||
/obj/structure/no_effect_signpost
|
||||
name = "signpost"
|
||||
desc = "Won't somebody give me a sign?"
|
||||
icon = 'icons/obj/fluff/general.dmi'
|
||||
icon_state = "signpost"
|
||||
anchored = TRUE
|
||||
density = TRUE
|
||||
|
||||
/obj/structure/no_effect_signpost/void
|
||||
name = "signpost at the edge of the universe"
|
||||
desc = "A direction in the directionless void."
|
||||
density = FALSE
|
||||
/// Brightness of the signpost.
|
||||
var/range = 2
|
||||
/// Light power of the signpost.
|
||||
var/power = 0.8
|
||||
|
||||
/obj/structure/no_effect_signpost/void/Initialize(mapload)
|
||||
. = ..()
|
||||
set_light(range, power)
|
||||
|
||||
// Some VERY dim lights, used for the void sacrifice realm.
|
||||
/obj/machinery/light/very_dim
|
||||
nightshift_allowed = FALSE
|
||||
@@ -87,7 +65,7 @@ GLOBAL_LIST_EMPTY(heretic_sacrifice_landmarks)
|
||||
default_gravity = STANDARD_GRAVITY
|
||||
ambience_index = AMBIENCE_SPOOKY
|
||||
sound_environment = SOUND_ENVIRONMENT_CAVE
|
||||
area_flags = UNIQUE_AREA | NOTELEPORT | HIDDEN_AREA | BLOCK_SUICIDE | NO_BOH
|
||||
area_flags = NOTELEPORT | HIDDEN_AREA | BLOCK_SUICIDE | NO_BOH
|
||||
|
||||
/area/centcom/heretic_sacrifice/Initialize(mapload)
|
||||
if(!ambientsounds)
|
||||
|
||||
@@ -15,10 +15,9 @@
|
||||
|
||||
/datum/heretic_knowledge/unfathomable_curio
|
||||
name = "Unfathomable Curio"
|
||||
desc = "Allows you to transmute 3 rods, lungs and any belt into an Unfathomable Curio, \
|
||||
a belt that can hold blades and items for rituals. Whilst worn it will also \
|
||||
veil you, allowing you to take 5 hits without suffering damage, this veil will recharge very slowly \
|
||||
outside of combat."
|
||||
desc = "Allows you to transmute 3 rods, lungs, and any belt into an Unfathomable Curio - \
|
||||
a belt that can hold blades and items for rituals. Whilst worn it will veil you, \
|
||||
blocking one blow of incoming damage, at the cost of the veil. The veil will recharge itself out of combat."
|
||||
gain_text = "The mansus holds many a curio, some are not meant for the mortal eye."
|
||||
|
||||
required_atoms = list(
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
if(IS_HERETIC_OR_MONSTER(cast_on))
|
||||
return FALSE
|
||||
|
||||
if(!cast_on.blood_volume)
|
||||
if(!CAN_HAVE_BLOOD(cast_on))
|
||||
return FALSE
|
||||
|
||||
if(cast_on.can_block_magic(antimagic_flags))
|
||||
|
||||
@@ -154,7 +154,7 @@
|
||||
if((L in hit_list) || L == source)
|
||||
continue
|
||||
hit_list += L
|
||||
L.adjustFireLoss(20)
|
||||
L.adjust_fire_loss(20)
|
||||
to_chat(L, span_userdanger("You're hit by [source]'s eldritch flames!"))
|
||||
|
||||
new /obj/effect/hotspot(T)
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
return ..()
|
||||
|
||||
empowered_cast = TRUE
|
||||
human_owner.setStaminaLoss(0)
|
||||
human_owner.set_stamina_loss(0)
|
||||
human_owner.SetAllImmobility(0)
|
||||
var/mob/living/carbon/carbon_owner = owner
|
||||
carbon_owner.uncuff()
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
)
|
||||
continue
|
||||
|
||||
if(!victim.blood_volume)
|
||||
if(!CAN_HAVE_BLOOD(victim))
|
||||
continue
|
||||
|
||||
victim.visible_message(
|
||||
|
||||
@@ -40,15 +40,10 @@
|
||||
)
|
||||
|
||||
var/mob/living/living_owner = owner
|
||||
cast_on.adjustBruteLoss(20)
|
||||
living_owner.adjustBruteLoss(-20)
|
||||
cast_on.adjust_brute_loss(20)
|
||||
living_owner.adjust_brute_loss(-20)
|
||||
|
||||
if(!cast_on.blood_volume || !living_owner.blood_volume)
|
||||
return TRUE
|
||||
|
||||
cast_on.blood_volume -= 20
|
||||
if(living_owner.blood_volume < BLOOD_VOLUME_MAXIMUM) // we dont want to explode from casting
|
||||
living_owner.blood_volume += 20
|
||||
cast_on.transfer_blood_to(living_owner, 20, ignore_low_blood = TRUE, ignore_incompatibility = TRUE, transfer_viruses = FALSE)
|
||||
|
||||
if(!iscarbon(cast_on) || !iscarbon(owner))
|
||||
return TRUE
|
||||
|
||||
@@ -53,12 +53,9 @@
|
||||
)
|
||||
|
||||
victim.apply_damage(15, BRUTE, wound_bonus = CANT_WOUND)
|
||||
living_owner.adjustBruteLoss(-15)
|
||||
living_owner.adjust_brute_loss(-15)
|
||||
|
||||
if(victim.blood_volume)
|
||||
victim.blood_volume -= 15
|
||||
if(living_owner.blood_volume && living_owner.blood_volume < (BLOOD_VOLUME_MAXIMUM - 50))
|
||||
living_owner.blood_volume += 15
|
||||
victim.transfer_blood_to(living_owner, 15, ignore_low_blood = TRUE, ignore_incompatibility = TRUE, transfer_viruses = FALSE)
|
||||
|
||||
new /obj/effect/temp_visual/cleave(get_turf(victim))
|
||||
|
||||
|
||||
@@ -178,8 +178,8 @@
|
||||
return TRUE
|
||||
|
||||
/datum/status_effect/fire_blasted/tick(seconds_between_ticks)
|
||||
owner.adjustFireLoss(tick_damage * seconds_between_ticks)
|
||||
owner.adjustStaminaLoss(2 * tick_damage * seconds_between_ticks)
|
||||
owner.adjust_fire_loss(tick_damage * seconds_between_ticks)
|
||||
owner.adjust_stamina_loss(2 * tick_damage * seconds_between_ticks)
|
||||
|
||||
// The beam fireblast spits out, causes people to walk through it to be on fire
|
||||
/obj/effect/ebeam/reacting/fire
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
|
||||
carbon_hit.adjust_timed_status_effect(4 SECONDS, /datum/status_effect/speech/slurring/heretic)
|
||||
carbon_hit.AdjustKnockdown(5 SECONDS, daze_amount = 3 SECONDS)
|
||||
carbon_hit.adjustStaminaLoss(80)
|
||||
carbon_hit.adjust_stamina_loss(80)
|
||||
|
||||
return TRUE
|
||||
|
||||
@@ -127,7 +127,7 @@
|
||||
return FIRELOSS
|
||||
|
||||
if(prob(70))
|
||||
carbon_user.adjustFireLoss(20)
|
||||
carbon_user.adjust_fire_loss(20)
|
||||
playsound(carbon_user, 'sound/effects/wounds/sizzle1.ogg', 70, vary = TRUE)
|
||||
if(prob(50))
|
||||
carbon_user.emote("scream")
|
||||
|
||||
@@ -34,13 +34,13 @@
|
||||
return FALSE
|
||||
|
||||
var/mob/living/living_owner = owner
|
||||
living_owner.adjustOrganLoss(ORGAN_SLOT_BRAIN, 20, 140)
|
||||
living_owner.adjust_organ_loss(ORGAN_SLOT_BRAIN, 20, 140)
|
||||
|
||||
cast_on.adjust_confusion(10 SECONDS)
|
||||
cast_on.adjustOxyLoss(30)
|
||||
cast_on.adjust_oxy_loss(30)
|
||||
cast_on.cause_hallucination(get_random_valid_hallucination_subtype(/datum/hallucination/body), "Mind gate, cast by [owner]")
|
||||
cast_on.cause_hallucination(/datum/hallucination/delusion/preset/heretic/gate, "Caused by mindgate")
|
||||
cast_on.adjustOrganLoss(ORGAN_SLOT_BRAIN, 30)
|
||||
cast_on.adjust_organ_loss(ORGAN_SLOT_BRAIN, 30)
|
||||
|
||||
/// The duration of these effects are based on sanity, mainly for flavor but also to make it a weaker alpha strike
|
||||
var/maximum_duration = 15 SECONDS
|
||||
|
||||
@@ -42,12 +42,18 @@
|
||||
return stuff
|
||||
|
||||
/datum/action/cooldown/spell/aoe/moon_ringleader/cast_on_thing_in_aoe(mob/living/carbon/victim, mob/living/caster)
|
||||
var/mob/living/simple_animal/hostile/illusion/fake_clone = new(pick(RANGE_TURFS(2, victim)))
|
||||
fake_clone.faction = caster.faction.Copy()
|
||||
fake_clone.Copy_Parent(caster, 30 SECONDS, caster.health, 1, 0, "shove_mode")
|
||||
fake_clone.GiveTarget(victim)
|
||||
fake_clone.AddElement(/datum/element/relay_attackers)
|
||||
RegisterSignal(fake_clone, COMSIG_ATOM_WAS_ATTACKED, PROC_REF(on_attacked))
|
||||
var/mob/living/basic/illusion/shover/shove_clone = new(pick(RANGE_TURFS(2, victim)))
|
||||
shove_clone.full_setup(
|
||||
caster,
|
||||
target_mob = victim,
|
||||
faction = caster.faction,
|
||||
life = 30 SECONDS,
|
||||
hp = caster.health,
|
||||
damage = 1,
|
||||
replicate = 0,
|
||||
)
|
||||
shove_clone.AddElement(/datum/element/relay_attackers)
|
||||
RegisterSignal(shove_clone, COMSIG_ATOM_WAS_ATTACKED, PROC_REF(on_attacked))
|
||||
|
||||
/// Used by Ringleaders Rise, illusions created by this spell will explode when they are interacted with
|
||||
/datum/action/cooldown/spell/aoe/moon_ringleader/proc/on_attacked(mob/victim, atom/attacker)
|
||||
@@ -66,7 +72,7 @@
|
||||
continue
|
||||
|
||||
//If our moon heretic has their level 3 passive, we channel the amulet effect
|
||||
var/mob/living/simple_animal/hostile/illusion/fake_clone = victim
|
||||
var/mob/living/basic/illusion/fake_clone = victim
|
||||
var/mob/living/living_owner = fake_clone.parent_mob_ref.resolve()
|
||||
if(!living_owner)
|
||||
continue
|
||||
@@ -76,7 +82,7 @@
|
||||
|
||||
mob.AdjustStun(1 SECONDS)
|
||||
mob.AdjustKnockdown(1 SECONDS)
|
||||
mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, 50, 150)
|
||||
mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 50, 150)
|
||||
mob.mob_mood?.adjust_sanity(-50)
|
||||
|
||||
qdel(victim)
|
||||
|
||||
@@ -58,11 +58,11 @@
|
||||
|
||||
// Heal the caster for every victim damaged
|
||||
var/need_mob_update = FALSE
|
||||
need_mob_update += caster.adjustBruteLoss(-10, updating_health = FALSE)
|
||||
need_mob_update += caster.adjustFireLoss(-10, updating_health = FALSE)
|
||||
need_mob_update += caster.adjustToxLoss(-10, updating_health = FALSE, forced = TRUE)
|
||||
need_mob_update += caster.adjustOxyLoss(-10, updating_health = FALSE)
|
||||
need_mob_update += caster.adjustStaminaLoss(-10, updating_stamina = FALSE)
|
||||
need_mob_update += caster.adjust_brute_loss(-10, updating_health = FALSE)
|
||||
need_mob_update += caster.adjust_fire_loss(-10, updating_health = FALSE)
|
||||
need_mob_update += caster.adjust_tox_loss(-10, updating_health = FALSE, forced = TRUE)
|
||||
need_mob_update += caster.adjust_oxy_loss(-10, updating_health = FALSE)
|
||||
need_mob_update += caster.adjust_stamina_loss(-10, updating_stamina = FALSE)
|
||||
if(need_mob_update)
|
||||
caster.updatehealth()
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
owner.remove_filter(id)
|
||||
|
||||
/datum/status_effect/realignment/tick(seconds_between_ticks)
|
||||
owner.adjustStaminaLoss(-10)
|
||||
owner.adjust_stamina_loss(-10)
|
||||
owner.AdjustAllImmobility(-1 SECONDS)
|
||||
|
||||
/atom/movable/screen/alert/status_effect/realignment
|
||||
|
||||
@@ -100,8 +100,8 @@
|
||||
return
|
||||
var/mob/living/carbon/carbie = owner
|
||||
|
||||
carbie.adjustBruteLoss(-0.5 * seconds_between_ticks, updating_health = FALSE)
|
||||
carbie.adjustFireLoss(-0.5 * seconds_between_ticks, updating_health = FALSE)
|
||||
carbie.adjust_brute_loss(-0.5 * seconds_between_ticks, updating_health = FALSE)
|
||||
carbie.adjust_fire_loss(-0.5 * seconds_between_ticks, updating_health = FALSE)
|
||||
for(var/BP in carbie.bodyparts)
|
||||
var/obj/item/bodypart/part = BP
|
||||
for(var/W in part.wounds)
|
||||
@@ -117,10 +117,10 @@
|
||||
heal_amt = 6
|
||||
var/datum/wound_pregen_data/pregen_data = GLOB.all_wound_pregen_data[wound.type]
|
||||
if (pregen_data.wounding_types_valid(WOUND_BURN))
|
||||
carbie.adjustFireLoss(-heal_amt)
|
||||
carbie.adjust_fire_loss(-heal_amt)
|
||||
else
|
||||
carbie.adjustBruteLoss(-heal_amt)
|
||||
carbie.blood_volume += carbie.blood_volume >= BLOOD_VOLUME_NORMAL ? 0 : heal_amt*3
|
||||
carbie.adjust_brute_loss(-heal_amt)
|
||||
carbie.adjust_blood_volume(heal_amt * 3, maximum = BLOOD_VOLUME_NORMAL)
|
||||
|
||||
|
||||
/atom/movable/screen/alert/status_effect/crucible_soul
|
||||
|
||||
@@ -80,25 +80,25 @@
|
||||
human_owner.set_timed_status_effect(100 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
if(30 to 40)
|
||||
// Don't fully kill liver that's important
|
||||
human_owner.adjustOrganLoss(ORGAN_SLOT_LIVER, 10, 90)
|
||||
human_owner.adjust_organ_loss(ORGAN_SLOT_LIVER, 10, 90)
|
||||
if(40 to 50)
|
||||
// Don't fully kill heart that's important
|
||||
human_owner.adjustOrganLoss(ORGAN_SLOT_HEART, 10, 90)
|
||||
human_owner.adjust_organ_loss(ORGAN_SLOT_HEART, 10, 90)
|
||||
if(50 to 60)
|
||||
// You can fully kill the stomach that's not crucial
|
||||
human_owner.adjustOrganLoss(ORGAN_SLOT_STOMACH, 10)
|
||||
human_owner.adjust_organ_loss(ORGAN_SLOT_STOMACH, 10)
|
||||
if(60 to 70)
|
||||
// Same with eyes
|
||||
human_owner.adjustOrganLoss(ORGAN_SLOT_EYES, 5)
|
||||
human_owner.adjust_organ_loss(ORGAN_SLOT_EYES, 5)
|
||||
if(70 to 80)
|
||||
// And same with ears
|
||||
human_owner.adjustOrganLoss(ORGAN_SLOT_EARS, 10)
|
||||
human_owner.adjust_organ_loss(ORGAN_SLOT_EARS, 10)
|
||||
if(80 to 90)
|
||||
// But don't fully kill lungs that's usually important
|
||||
human_owner.adjustOrganLoss(ORGAN_SLOT_LUNGS, 10, 90)
|
||||
human_owner.adjust_organ_loss(ORGAN_SLOT_LUNGS, 10, 90)
|
||||
if(90 to 95)
|
||||
// And definitely don't fully kil brains
|
||||
human_owner.adjustOrganLoss(ORGAN_SLOT_BRAIN, 20, 190)
|
||||
human_owner.adjust_organ_loss(ORGAN_SLOT_BRAIN, 20, 190)
|
||||
if(95 to 100)
|
||||
human_owner.adjust_confusion_up_to(12 SECONDS, 24 SECONDS)
|
||||
|
||||
@@ -191,8 +191,8 @@
|
||||
/datum/status_effect/moon_converted/on_apply()
|
||||
RegisterSignal(owner, COMSIG_MOB_APPLY_DAMAGE, PROC_REF(on_damaged))
|
||||
// Heals them so people who are in crit can have this affect applied on them and still be of some use for the heretic
|
||||
owner.adjustBruteLoss(-150 + owner.mob_mood.sanity)
|
||||
owner.adjustFireLoss(-150 + owner.mob_mood.sanity)
|
||||
owner.adjust_brute_loss(-150 + owner.mob_mood.sanity)
|
||||
owner.adjust_fire_loss(-150 + owner.mob_mood.sanity)
|
||||
|
||||
to_chat(owner, span_hypnophrase(("THE MOON SHOWS YOU THE TRUTH AND THE LIARS WISH TO COVER IT, SLAY THEM ALL!!!</span>")))
|
||||
owner.balloon_alert(owner, "they lie..THEY ALL LIE!!!")
|
||||
|
||||
@@ -226,7 +226,7 @@
|
||||
. = ..()
|
||||
if(locate(/obj/effect/forcefield/cosmic_field) in get_turf(owner))
|
||||
var/delta_time = DELTA_WORLD_TIME(SSmobs) * 0.5 // SSmobs.wait is 2 secs, so this should be halved.
|
||||
owner.adjustStaminaLoss(-15 * delta_time, updating_stamina = FALSE)
|
||||
owner.adjust_stamina_loss(-15 * delta_time, updating_stamina = FALSE)
|
||||
|
||||
/**
|
||||
* Creates a cosmic field at a given loc
|
||||
@@ -301,10 +301,9 @@
|
||||
|
||||
/datum/status_effect/heretic_passive/flesh/proc/heal_glutton()
|
||||
var/healed_amount = owner.heal_overall_damage(2, 2, updating_health = FALSE)
|
||||
healed_amount += owner.adjustOxyLoss(-2, FALSE)
|
||||
healed_amount += owner.adjustToxLoss(-2, FALSE, TRUE)
|
||||
if(!HAS_TRAIT(owner, TRAIT_NOBLOOD))
|
||||
owner.blood_volume += 2.5
|
||||
healed_amount += owner.adjust_oxy_loss(-2, FALSE)
|
||||
healed_amount += owner.adjust_tox_loss(-2, FALSE, TRUE)
|
||||
owner.adjust_blood_volume(2.5)
|
||||
if(!iscarbon(owner))
|
||||
return
|
||||
var/mob/living/carbon/carbon_eater = owner
|
||||
@@ -433,7 +432,7 @@
|
||||
healing_amount = -15 * seconds_between_ticks
|
||||
if(!amulet_equipped)
|
||||
healing_amount *= 0.5 // Half healing if you dont have the moon amulet
|
||||
owner.adjustOrganLoss(ORGAN_SLOT_BRAIN, healing_amount)
|
||||
owner.adjust_organ_loss(ORGAN_SLOT_BRAIN, healing_amount)
|
||||
|
||||
var/obj/item/organ/brain/our_brain = owner.get_organ_slot(ORGAN_SLOT_BRAIN)
|
||||
if(!our_brain)
|
||||
@@ -526,9 +525,9 @@
|
||||
var/main_healing = 1 + 1 * passive_level * delta_time
|
||||
var/stam_healing = 5 + 5 * passive_level * delta_time
|
||||
need_mob_update += source.heal_overall_damage(-main_healing, -main_healing, updating_health = FALSE)
|
||||
need_mob_update += source.adjustStaminaLoss(-stam_healing, updating_stamina = FALSE)
|
||||
need_mob_update += source.adjustToxLoss(-main_healing, updating_health = FALSE, forced = TRUE) // Slimes are people too
|
||||
need_mob_update += source.adjustOxyLoss(-main_healing, updating_health = FALSE)
|
||||
need_mob_update += source.adjust_stamina_loss(-stam_healing, updating_stamina = FALSE)
|
||||
need_mob_update += source.adjust_tox_loss(-main_healing, updating_health = FALSE, forced = TRUE) // Slimes are people too
|
||||
need_mob_update += source.adjust_oxy_loss(-main_healing, updating_health = FALSE)
|
||||
if(need_mob_update)
|
||||
source.updatehealth()
|
||||
new /obj/effect/temp_visual/heal(get_turf(owner), COLOR_BROWN)
|
||||
@@ -536,8 +535,7 @@
|
||||
var/stun_reduction = 0.5 * passive_level * delta_time
|
||||
source.AdjustAllImmobility(-stun_reduction)
|
||||
// Heals blood loss
|
||||
if(source.blood_volume < BLOOD_VOLUME_NORMAL)
|
||||
source.blood_volume += 2.5 * delta_time
|
||||
source.adjust_blood_volume(2.5 * delta_time, maximum = BLOOD_VOLUME_NORMAL)
|
||||
for(var/datum/reagent/reagent as anything in source.reagents.reagent_list)
|
||||
source.reagents.remove_reagent(reagent.type, 2 * reagent.purge_multiplier * REM * seconds_per_tick)
|
||||
|
||||
|
||||
@@ -83,8 +83,8 @@
|
||||
/datum/status_effect/eldritch/ash/on_effect()
|
||||
if(iscarbon(owner))
|
||||
var/mob/living/carbon/carbon_owner = owner
|
||||
carbon_owner.adjustStaminaLoss(6 * repetitions) // first one = 30 stam
|
||||
carbon_owner.adjustFireLoss(3 * repetitions) // first one = 15 burn
|
||||
carbon_owner.adjust_stamina_loss(6 * repetitions) // first one = 30 stam
|
||||
carbon_owner.adjust_fire_loss(3 * repetitions) // first one = 15 burn
|
||||
for(var/mob/living/carbon/victim in shuffle(range(1, carbon_owner)))
|
||||
if(IS_HERETIC(victim) || victim == carbon_owner)
|
||||
continue
|
||||
@@ -285,7 +285,7 @@
|
||||
|
||||
/datum/status_effect/eldritch/moon/on_effect()
|
||||
owner.adjust_confusion(30 SECONDS)
|
||||
owner.adjustOrganLoss(ORGAN_SLOT_BRAIN, 25, 160)
|
||||
owner.adjust_organ_loss(ORGAN_SLOT_BRAIN, 25, 160)
|
||||
owner.emote(pick("giggle", "laugh"))
|
||||
owner.add_mood_event("Moon Insanity", /datum/mood_event/moon_insanity)
|
||||
return ..()
|
||||
|
||||
@@ -239,7 +239,7 @@
|
||||
if(!iscarbon(victim))
|
||||
return
|
||||
var/mob/living/carbon/carbon_victim = victim
|
||||
carbon_victim.adjustStaminaLoss(80)
|
||||
carbon_victim.adjust_stamina_loss(80)
|
||||
carbon_victim.adjust_silence(20 SECONDS)
|
||||
carbon_victim.adjust_stutter(1 MINUTES)
|
||||
carbon_victim.adjust_confusion(5 SECONDS)
|
||||
|
||||
@@ -112,7 +112,7 @@
|
||||
/obj/item/disk/nuclear/proc/manual_suicide(mob/living/user)
|
||||
user.remove_atom_colour(ADMIN_COLOUR_PRIORITY)
|
||||
user.visible_message(span_suicide("[user] is destroyed by the nuclear blast!"))
|
||||
user.adjustOxyLoss(200)
|
||||
user.adjust_oxy_loss(200)
|
||||
user.death(FALSE)
|
||||
|
||||
/obj/item/disk/nuclear/fake
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
you_are_text = "You are a space pirate."
|
||||
flavour_text = "The station refused to pay for your protection. Protect the ship, siphon the credits from the station, and raid it for even more loot."
|
||||
spawner_job_path = /datum/job/space_pirate
|
||||
allow_custom_character = GHOSTROLE_TAKE_PREFS_APPEARANCE
|
||||
///Rank of the pirate on the ship, it's used in generating pirate names!
|
||||
var/rank = "Deserter"
|
||||
///Path of the structure we spawn after creating a pirate.
|
||||
@@ -25,7 +26,7 @@
|
||||
///json key to pirate names, the last part ("fish" in "Cometfish")
|
||||
var/name_endings = "generic_endings"
|
||||
|
||||
/obj/effect/mob_spawn/ghost_role/human/pirate/special(mob/living/spawned_mob, mob/mob_possessor)
|
||||
/obj/effect/mob_spawn/ghost_role/human/pirate/special(mob/living/spawned_mob, mob/mob_possessor, apply_prefs)
|
||||
. = ..()
|
||||
spawned_mob.fully_replace_character_name(spawned_mob.real_name, generate_pirate_name(spawned_mob.gender))
|
||||
spawned_mob.mind.add_antag_datum(/datum/antagonist/pirate)
|
||||
@@ -35,7 +36,7 @@
|
||||
var/endings = strings(PIRATE_NAMES_FILE, name_endings)
|
||||
return "[rank ? rank + " " : ""][pick(beggings)][pick(endings)]"
|
||||
|
||||
/obj/effect/mob_spawn/ghost_role/human/pirate/create(mob/mob_possessor, newname)
|
||||
/obj/effect/mob_spawn/ghost_role/human/pirate/create(mob/mob_possessor, newname, apply_prefs)
|
||||
if(fluff_spawn)
|
||||
new fluff_spawn(drop_location())
|
||||
return ..()
|
||||
@@ -58,6 +59,7 @@
|
||||
outfit = /datum/outfit/pirate
|
||||
rank = "Mate"
|
||||
fluff_spawn = null
|
||||
allow_custom_character = NONE
|
||||
|
||||
/obj/effect/mob_spawn/ghost_role/human/pirate/skeleton/captain
|
||||
rank = "Captain"
|
||||
@@ -75,6 +77,7 @@
|
||||
mob_species = /datum/species/lizard/silverscale
|
||||
outfit = /datum/outfit/pirate/silverscale
|
||||
rank = "High-born"
|
||||
allow_custom_character = NONE
|
||||
|
||||
/obj/effect/mob_spawn/ghost_role/human/pirate/silverscale/generate_pirate_name(spawn_gender)
|
||||
var/first_name
|
||||
@@ -184,6 +187,7 @@
|
||||
mob_species = /datum/species/ethereal/lustrous
|
||||
outfit = /datum/outfit/pirate/lustrous
|
||||
rank = "Scintillant"
|
||||
allow_custom_character = NONE
|
||||
|
||||
/obj/effect/mob_spawn/ghost_role/human/pirate/lustrous/captain
|
||||
rank = "Radiant"
|
||||
@@ -205,7 +209,7 @@
|
||||
outfit = /datum/outfit/pirate/medieval
|
||||
rank = "Footsoldier"
|
||||
|
||||
/obj/effect/mob_spawn/ghost_role/human/pirate/medieval/special(mob/living/carbon/spawned_mob, mob/mob_possessor)
|
||||
/obj/effect/mob_spawn/ghost_role/human/pirate/medieval/special(mob/living/carbon/spawned_mob, mob/mob_possessor, apply_prefs)
|
||||
. = ..()
|
||||
if(rank == "Footsoldier")
|
||||
spawned_mob.add_traits(list(TRAIT_NOGUNS, TRAIT_TOSS_GUN_HARD), INNATE_TRAIT)
|
||||
@@ -217,7 +221,7 @@
|
||||
rank = "Warlord"
|
||||
outfit = /datum/outfit/pirate/medieval/warlord
|
||||
|
||||
/obj/effect/mob_spawn/ghost_role/human/pirate/medieval/warlord/special(mob/living/carbon/spawned_mob, mob/mob_possessor)
|
||||
/obj/effect/mob_spawn/ghost_role/human/pirate/medieval/warlord/special(mob/living/carbon/spawned_mob, mob/mob_possessor, apply_prefs)
|
||||
. = ..()
|
||||
spawned_mob.dna.add_mutation(/datum/mutation/hulk/superhuman, MUTATION_SOURCE_GHOST_ROLE)
|
||||
spawned_mob.dna.add_mutation(/datum/mutation/gigantism, MUTATION_SOURCE_GHOST_ROLE)
|
||||
|
||||
@@ -37,14 +37,14 @@
|
||||
if(SPT_PROB(1.5 * stage, seconds_per_tick))
|
||||
to_chat(affected_mob, span_revennotice("You suddenly feel [pick("sick and tired", "disoriented", "tired and confused", "nauseated", "faint", "dizzy")]..."))
|
||||
affected_mob.adjust_confusion(8 SECONDS)
|
||||
need_mob_update += affected_mob.adjustStaminaLoss(20, updating_stamina = FALSE)
|
||||
need_mob_update += affected_mob.adjust_stamina_loss(20, updating_stamina = FALSE)
|
||||
new /obj/effect/temp_visual/revenant(affected_mob.loc)
|
||||
if(stagedamage < stage)
|
||||
stagedamage++
|
||||
need_mob_update += affected_mob.adjustToxLoss(1 * stage * seconds_per_tick, updating_health = FALSE) //should, normally, do about 30 toxin damage.
|
||||
need_mob_update += affected_mob.adjust_tox_loss(1 * stage * seconds_per_tick, updating_health = FALSE) //should, normally, do about 30 toxin damage.
|
||||
new /obj/effect/temp_visual/revenant(affected_mob.loc)
|
||||
if(SPT_PROB(25, seconds_per_tick))
|
||||
need_mob_update += affected_mob.adjustStaminaLoss(stage, updating_stamina = FALSE)
|
||||
need_mob_update += affected_mob.adjust_stamina_loss(stage, updating_stamina = FALSE)
|
||||
if(need_mob_update)
|
||||
affected_mob.updatehealth()
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
if(!finalstage)
|
||||
finalstage = TRUE
|
||||
to_chat(affected_mob, span_revenbignotice("You feel like [pick("nothing's worth it anymore", "nobody ever needed your help", "nothing you did mattered", "everything you tried to do was worthless")]."))
|
||||
affected_mob.adjustStaminaLoss(22.5 * seconds_per_tick, updating_stamina = FALSE)
|
||||
affected_mob.adjust_stamina_loss(22.5 * seconds_per_tick, updating_stamina = FALSE)
|
||||
new /obj/effect/temp_visual/revenant(affected_mob.loc)
|
||||
if(affected_mob.dna && affected_mob.dna.species)
|
||||
affected_mob.set_haircolor("#1d2953", override = TRUE)
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
|
||||
/datum/action/cooldown/spell/pointed/unsettle/proc/spookify(mob/living/carbon/human/target)
|
||||
target.Paralyze(stun_time)
|
||||
target.adjustStaminaLoss(stamina_damage)
|
||||
target.adjust_stamina_loss(stamina_damage)
|
||||
target.apply_status_effect(/datum/status_effect/speech/slurring/generic)
|
||||
target.emote("scream")
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ GLOBAL_LIST_EMPTY(voidwalker_void)
|
||||
default_gravity = STANDARD_GRAVITY
|
||||
ambience_index = AMBIENCE_SPOOKY
|
||||
sound_environment = SOUND_ENVIRONMENT_CAVE
|
||||
area_flags = UNIQUE_AREA | NOTELEPORT | HIDDEN_AREA | BLOCK_SUICIDE
|
||||
area_flags = NOTELEPORT | HIDDEN_AREA | BLOCK_SUICIDE
|
||||
|
||||
/// Mini car where people drive around in in their mangled corpse to heal a bit before they get dumped back on station
|
||||
/obj/effect/wisp_mobile
|
||||
|
||||
@@ -83,6 +83,7 @@
|
||||
ADD_TRAIT(src, TRAIT_FREE_HYPERSPACE_MOVEMENT, INNATE_TRAIT) //Need to set before init cause if we init in hyperspace we get dragged before the trait can be added
|
||||
. = ..()
|
||||
|
||||
status_flags &= ~CANSTUN
|
||||
AddElement(/datum/element/simple_flying)
|
||||
AddElement(/datum/element/glass_pacifist)
|
||||
|
||||
@@ -262,7 +263,7 @@
|
||||
CRASH("[victim] was instantly dumped after being voidwalker kidnapped due to a missing landmark!")
|
||||
else
|
||||
victim.heal_and_revive(90)
|
||||
victim.adjustOxyLoss(-100, FALSE)
|
||||
victim.adjust_oxy_loss(-100, FALSE)
|
||||
|
||||
conversions_remaining++
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
alert_type = /atom/movable/screen/alert/status_effect/veryhighgravity
|
||||
|
||||
/datum/status_effect/planet_allergy/tick()
|
||||
owner.adjustBruteLoss(1)
|
||||
owner.adjust_brute_loss(1)
|
||||
|
||||
/atom/movable/screen/alert/status_effect/veryhighgravity
|
||||
name = "Crushing Gravity"
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
<b>[invoker] must die.</b>"))
|
||||
var/datum/brain_trauma/mild/hallucinations/added_trauma = new()
|
||||
added_trauma.resilience = TRAUMA_RESILIENCE_ABSOLUTE
|
||||
crewmate.adjustOrganLoss(ORGAN_SLOT_BRAIN, BRAIN_DAMAGE_DEATH - 25, BRAIN_DAMAGE_DEATH - 25) //you'd better hope chap didn't pick a hypertool
|
||||
crewmate.adjust_organ_loss(ORGAN_SLOT_BRAIN, BRAIN_DAMAGE_DEATH - 25, BRAIN_DAMAGE_DEATH - 25) //you'd better hope chap didn't pick a hypertool
|
||||
crewmate.gain_trauma(added_trauma)
|
||||
crewmate.add_mood_event("wizard_ritual_finale", /datum/mood_event/madness_despair)
|
||||
|
||||
|
||||
@@ -353,10 +353,10 @@
|
||||
/// Typepaths of mobs to create
|
||||
var/static/list/permitted_mobs = list(
|
||||
/mob/living/basic/carp,
|
||||
/mob/living/basic/illusion,
|
||||
/mob/living/basic/killer_tomato,
|
||||
/mob/living/basic/skeleton,
|
||||
/mob/living/basic/wumborian_fugu,
|
||||
/mob/living/simple_animal/hostile/illusion,
|
||||
/mob/living/simple_animal/hostile/ooze,
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user