mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 02:09:41 +00:00
Shadekin nerfs (again) (#7705)
This commit is contained in:
@@ -472,32 +472,32 @@
|
|||||||
|
|
||||||
switch(eyecolor_type)
|
switch(eyecolor_type)
|
||||||
if(BLUE_EYES)
|
if(BLUE_EYES)
|
||||||
total_health = 100
|
total_health = 75 //ChompEDIT - balance tweaks
|
||||||
energy_light = 0.5
|
energy_light = 0.5
|
||||||
energy_dark = 0.5
|
energy_dark = 0.5
|
||||||
nutrition_conversion_scaling = 0.5 //CHOMPEdit - Add nutrition <-> dark energy conversion
|
nutrition_conversion_scaling = 0.5 //CHOMPEdit - Add nutrition <-> dark energy conversion
|
||||||
if(RED_EYES)
|
if(RED_EYES)
|
||||||
total_health = 200
|
total_health = 150 //ChompEDIT - balance tweaks
|
||||||
energy_light = -1
|
energy_light = -1
|
||||||
energy_dark = 0.1
|
energy_dark = 0.1
|
||||||
nutrition_conversion_scaling = 2 //CHOMPEdit - Add nutrition <-> dark energy conversion
|
nutrition_conversion_scaling = 2 //CHOMPEdit - Add nutrition <-> dark energy conversion
|
||||||
if(PURPLE_EYES)
|
if(PURPLE_EYES)
|
||||||
total_health = 150
|
total_health = 100 //ChompEDIT - balance tweaks
|
||||||
energy_light = -0.5
|
energy_light = -0.5
|
||||||
energy_dark = 1
|
energy_dark = 1
|
||||||
nutrition_conversion_scaling = 1 //CHOMPEdit - Add nutrition <-> dark energy conversion
|
nutrition_conversion_scaling = 1 //CHOMPEdit - Add nutrition <-> dark energy conversion
|
||||||
if(YELLOW_EYES)
|
if(YELLOW_EYES)
|
||||||
total_health = 100
|
total_health = 50 //ChompEDIT - balance tweaks
|
||||||
energy_light = -2
|
energy_light = -2
|
||||||
energy_dark = 3
|
energy_dark = 3
|
||||||
nutrition_conversion_scaling = 0.5 //CHOMPEdit - Add nutrition <-> dark energy conversion
|
nutrition_conversion_scaling = 0.5 //CHOMPEdit - Add nutrition <-> dark energy conversion
|
||||||
if(GREEN_EYES)
|
if(GREEN_EYES)
|
||||||
total_health = 100
|
total_health = 100 //ChompEDIT - balance tweaks
|
||||||
energy_light = 0.125
|
energy_light = 0.125
|
||||||
energy_dark = 2
|
energy_dark = 2
|
||||||
nutrition_conversion_scaling = 0.5 //CHOMPEdit - Add nutrition <-> dark energy conversion
|
nutrition_conversion_scaling = 0.5 //CHOMPEdit - Add nutrition <-> dark energy conversion
|
||||||
if(ORANGE_EYES)
|
if(ORANGE_EYES)
|
||||||
total_health = 175
|
total_health = 125 //ChompEDIT - balance tweaks
|
||||||
energy_light = -0.5
|
energy_light = -0.5
|
||||||
energy_dark = 0.25
|
energy_dark = 0.25
|
||||||
nutrition_conversion_scaling = 1.5 //CHOMPEdit - Add nutrition <-> dark energy conversion
|
nutrition_conversion_scaling = 1.5 //CHOMPEdit - Add nutrition <-> dark energy conversion
|
||||||
|
|||||||
@@ -41,6 +41,7 @@
|
|||||||
verbpath = /mob/living/carbon/human/proc/phase_shift
|
verbpath = /mob/living/carbon/human/proc/phase_shift
|
||||||
ability_icon_state = "tech_passwall"
|
ability_icon_state = "tech_passwall"
|
||||||
|
|
||||||
|
/* //ChompEDIT - Moved to modular_chomp
|
||||||
/mob/living/carbon/human/proc/phase_shift()
|
/mob/living/carbon/human/proc/phase_shift()
|
||||||
set name = "Phase Shift (100)"
|
set name = "Phase Shift (100)"
|
||||||
set desc = "Shift yourself out of alignment with realspace to travel quickly to different areas."
|
set desc = "Shift yourself out of alignment with realspace to travel quickly to different areas."
|
||||||
@@ -264,26 +265,7 @@
|
|||||||
force_max_speed = TRUE
|
force_max_speed = TRUE
|
||||||
ability_flags &= ~AB_PHASE_SHIFTING
|
ability_flags &= ~AB_PHASE_SHIFTING
|
||||||
SK.doing_phase = FALSE //CHOMPEdit - Prevent bugs when spamming phase button
|
SK.doing_phase = FALSE //CHOMPEdit - Prevent bugs when spamming phase button
|
||||||
|
*/ //ChompEDIT END - moved to modular_chomp
|
||||||
//CHOMPEdit start - gentle phasing for carbonkin
|
|
||||||
//toggle proc for toggling gentle/normal phasing
|
|
||||||
/mob/living/carbon/human/proc/phase_strength_toggle()
|
|
||||||
set name = "Toggle Phase Strength"
|
|
||||||
set desc = "Toggle strength of phase. Gentle but slower, or faster but destructive to lights."
|
|
||||||
set category = "Shadekin"
|
|
||||||
|
|
||||||
var/datum/species/shadekin/SK = species
|
|
||||||
if(!istype(SK))
|
|
||||||
to_chat(src, "<span class='warning'>Only a shadekin can use that!</span>")
|
|
||||||
return FALSE
|
|
||||||
|
|
||||||
if(SK.phase_gentle)
|
|
||||||
to_chat(src, "<span class='notice'>Phasing toggled to Normal. You may damage lights.</span>")
|
|
||||||
SK.phase_gentle = 0
|
|
||||||
else
|
|
||||||
to_chat(src, "<span class='notice'>Phasing toggled to Gentle. You won't damage lights, but concentrating on that incurs a short stun.</span>")
|
|
||||||
SK.phase_gentle = 1
|
|
||||||
//CHOMPEdit End
|
|
||||||
|
|
||||||
//CHOMPEdit Start - Toggle to Nutrition conversion
|
//CHOMPEdit Start - Toggle to Nutrition conversion
|
||||||
/mob/living/carbon/human/proc/nutrition_conversion_toggle()
|
/mob/living/carbon/human/proc/nutrition_conversion_toggle()
|
||||||
|
|||||||
@@ -35,6 +35,7 @@
|
|||||||
s.start()
|
s.start()
|
||||||
if(isliving(hit_atom))
|
if(isliving(hit_atom))
|
||||||
blink_mob(hit_atom)
|
blink_mob(hit_atom)
|
||||||
|
dephase_shadekin() //ChompEDIT - mess with shadekins
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
// Artifical bluespace crystal, doesn't give you much research.
|
// Artifical bluespace crystal, doesn't give you much research.
|
||||||
|
|||||||
@@ -0,0 +1,292 @@
|
|||||||
|
/mob/living/carbon/human/proc/phase_shift()
|
||||||
|
set name = "Phase Shift (100)"
|
||||||
|
set desc = "Shift yourself out of alignment with realspace to travel quickly to different areas."
|
||||||
|
set category = "Shadekin"
|
||||||
|
|
||||||
|
var/ability_cost = 100
|
||||||
|
|
||||||
|
var/darkness = 1
|
||||||
|
var/turf/T = get_turf(src)
|
||||||
|
if(!T)
|
||||||
|
to_chat(src,"<span class='warning'>You can't use that here!</span>")
|
||||||
|
return FALSE
|
||||||
|
if((get_area(src).flags & PHASE_SHIELDED)) //CHOMPAdd - Mapping tools to control phasing
|
||||||
|
to_chat(src,"<span class='warning'>This area is preventing you from phasing!</span>")
|
||||||
|
return FALSE
|
||||||
|
|
||||||
|
if(ability_flags & AB_PHASE_SHIFTING)
|
||||||
|
return FALSE
|
||||||
|
|
||||||
|
var/brightness = T.get_lumcount() //Brightness in 0.0 to 1.0
|
||||||
|
darkness = 1-brightness //Invert
|
||||||
|
|
||||||
|
var/watcher = 0
|
||||||
|
//Chompedit start - Nerf to phasing
|
||||||
|
for(var/thing in orange(7, src))
|
||||||
|
if(istype(thing, /mob/living/carbon/human))
|
||||||
|
var/mob/living/carbon/human/watchers = thing
|
||||||
|
if(watchers in oviewers(7,src) && watchers.species != SPECIES_SHADEKIN) // And they can see us... //CHOMPEDIT - (And aren't themselves a shadekin)
|
||||||
|
if(!(watchers.stat) && !isbelly(watchers.loc) && !istype(watchers.loc, /obj/item/weapon/holder)) // And they are alive and not being held by someone...
|
||||||
|
watcher++ // They are watching us!
|
||||||
|
else if(istype(thing, /mob/living/silicon/robot))
|
||||||
|
var/mob/living/silicon/robot/watchers = thing
|
||||||
|
if(watchers in oviewers(7,src))
|
||||||
|
if(!watchers.stat && !isbelly(watchers.loc))
|
||||||
|
watcher++ //The robot is watching us!
|
||||||
|
else if(istype(thing, /obj/machinery/camera))
|
||||||
|
var/obj/machinery/camera/watchers = thing
|
||||||
|
if(watchers.can_use())
|
||||||
|
if(src in watchers.can_see())
|
||||||
|
watcher++ //The camera is watching us!
|
||||||
|
//CHOMPedit end
|
||||||
|
|
||||||
|
|
||||||
|
ability_cost = CLAMP(ability_cost/(0.01+darkness*2),50, 80)//This allows for 1 watcher in full light
|
||||||
|
if(watcher>0)
|
||||||
|
ability_cost = ability_cost + ( 15 * watcher )
|
||||||
|
if(!(ability_flags & AB_PHASE_SHIFTED))
|
||||||
|
log_debug("[src] attempted to shift with [watcher] observers with a cost of [ability_cost] in a darkness level of [darkness]")
|
||||||
|
//CHOMPEdit start - inform about the observers affecting phasing
|
||||||
|
if(darkness<=0.4 && watcher>=2)
|
||||||
|
to_chat(src, "<span class='warning'>You have a few observers in a well-lit area! This may prevent phasing. (Working cameras count towards observers)</span>")
|
||||||
|
else if(watcher>=3)
|
||||||
|
to_chat(src, "<span class='warning'>You have a large number of observers! This may prevent phasing. (Working cameras count towards observers)</span>")
|
||||||
|
//CHOMPEdit end
|
||||||
|
|
||||||
|
|
||||||
|
var/datum/species/shadekin/SK = species
|
||||||
|
/* CHOMPEdit start - general shadekin ability check
|
||||||
|
if(!istype(SK))
|
||||||
|
to_chat(src, "<span class='warning'>Only a shadekin can use that!</span>")
|
||||||
|
return FALSE
|
||||||
|
else if(stat)
|
||||||
|
to_chat(src, "<span class='warning'>Can't use that ability in your state!</span>")
|
||||||
|
return FALSE
|
||||||
|
//CHOMPEdit Start - Dark Respite
|
||||||
|
else if((ability_flags & AB_DARK_RESPITE || has_modifier_of_type(/datum/modifier/dark_respite)) && !(ability_flags & AB_PHASE_SHIFTED))
|
||||||
|
to_chat(src, "<span class='warning'>You can't use that so soon after an emergency warp!</span>")
|
||||||
|
return FALSE
|
||||||
|
*/
|
||||||
|
if(!shadekin_ability_check())
|
||||||
|
return FALSE
|
||||||
|
//CHOMPEdit End
|
||||||
|
//CHOMPEdit Start - Prevent bugs when spamming phase button
|
||||||
|
else if(SK.doing_phase)
|
||||||
|
to_chat(src, "<span class='warning'>You are already trying to phase!</span>")
|
||||||
|
return FALSE
|
||||||
|
//CHOMPEdit End
|
||||||
|
|
||||||
|
else if(shadekin_get_energy() < ability_cost && !(ability_flags & AB_PHASE_SHIFTED))
|
||||||
|
to_chat(src, "<span class='warning'>Not enough energy for that ability!</span>")
|
||||||
|
return FALSE
|
||||||
|
|
||||||
|
if(!(ability_flags & AB_PHASE_SHIFTED))
|
||||||
|
shadekin_adjust_energy(-ability_cost)
|
||||||
|
playsound(src, 'sound/effects/stealthoff.ogg', 75, 1)
|
||||||
|
|
||||||
|
if(!T.CanPass(src,T) || loc != T)
|
||||||
|
to_chat(src,"<span class='warning'>You can't use that here!</span>")
|
||||||
|
return FALSE
|
||||||
|
|
||||||
|
|
||||||
|
SK.doing_phase = TRUE //CHOMPEdit - Prevent bugs when spamming phase button
|
||||||
|
//Shifting in
|
||||||
|
if(ability_flags & AB_PHASE_SHIFTED)
|
||||||
|
phase_in(T)
|
||||||
|
//Shifting out
|
||||||
|
else
|
||||||
|
phase_out(T)
|
||||||
|
SK.doing_phase = FALSE //CHOMPEdit - Prevent bugs when spamming phase button
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/mob/living/carbon/human/proc/phase_in(var/turf/T)
|
||||||
|
if(ability_flags & AB_PHASE_SHIFTED)
|
||||||
|
var/datum/species/shadekin/SK = species
|
||||||
|
|
||||||
|
// pre-change
|
||||||
|
forceMove(T)
|
||||||
|
var/original_canmove = canmove
|
||||||
|
SetStunned(0)
|
||||||
|
SetWeakened(0)
|
||||||
|
if(buckled)
|
||||||
|
buckled.unbuckle_mob()
|
||||||
|
if(pulledby)
|
||||||
|
pulledby.stop_pulling()
|
||||||
|
stop_pulling()
|
||||||
|
canmove = FALSE
|
||||||
|
|
||||||
|
// change
|
||||||
|
ability_flags &= ~AB_PHASE_SHIFTED
|
||||||
|
ability_flags |= AB_PHASE_SHIFTING
|
||||||
|
mouse_opacity = 1
|
||||||
|
name = get_visible_name()
|
||||||
|
for(var/obj/belly/B as anything in vore_organs)
|
||||||
|
B.escapable = initial(B.escapable)
|
||||||
|
|
||||||
|
//cut_overlays()
|
||||||
|
invisibility = initial(invisibility)
|
||||||
|
see_invisible = initial(see_invisible)
|
||||||
|
see_invisible_default = initial(see_invisible_default) // CHOMPEdit - Allow seeing phased entities while phased.
|
||||||
|
incorporeal_move = initial(incorporeal_move)
|
||||||
|
density = initial(density)
|
||||||
|
force_max_speed = initial(force_max_speed)
|
||||||
|
//CHOMPEdit begin - resetting pull ability after phasing back in
|
||||||
|
can_pull_size = initial(can_pull_size)
|
||||||
|
can_pull_mobs = initial(can_pull_mobs)
|
||||||
|
hovering = initial(hovering)
|
||||||
|
//CHOMPEdit end
|
||||||
|
update_icon()
|
||||||
|
|
||||||
|
//Cosmetics mostly
|
||||||
|
var/obj/effect/temp_visual/shadekin/phase_in/phaseanim = new /obj/effect/temp_visual/shadekin/phase_in(src.loc)
|
||||||
|
phaseanim.dir = dir
|
||||||
|
alpha = 0
|
||||||
|
custom_emote(1,"phases in!")
|
||||||
|
sleep(5) //The duration of the TP animation
|
||||||
|
canmove = original_canmove
|
||||||
|
alpha = initial(alpha)
|
||||||
|
remove_modifiers_of_type(/datum/modifier/shadekin_phase_vision)
|
||||||
|
remove_modifiers_of_type(/datum/modifier/shadekin_phase) //CHOMPEdit - Shadekin probably shouldn't be hit while phasing
|
||||||
|
|
||||||
|
//Potential phase-in vore
|
||||||
|
if(can_be_drop_pred || can_be_drop_prey) //Toggleable in vore panel
|
||||||
|
var/list/potentials = living_mobs(0)
|
||||||
|
if(potentials.len)
|
||||||
|
var/mob/living/target = pick(potentials)
|
||||||
|
if(can_be_drop_pred && istype(target) && target.devourable && target.can_be_drop_prey && target.phase_vore && vore_selected && phase_vore)
|
||||||
|
target.forceMove(vore_selected)
|
||||||
|
to_chat(target, "<span class='vwarning'>\The [src] phases in around you, [vore_selected.vore_verb]ing you into their [vore_selected.name]!</span>")
|
||||||
|
to_chat(src, "<span class='vwarning'>You phase around [target], [vore_selected.vore_verb]ing them into your [vore_selected.name]!</span>")
|
||||||
|
else if(can_be_drop_prey && istype(target) && devourable && target.can_be_drop_pred && target.phase_vore && target.vore_selected && phase_vore)
|
||||||
|
forceMove(target.vore_selected)
|
||||||
|
to_chat(target, "<span class='vwarning'>\The [src] phases into you, [target.vore_selected.vore_verb]ing them into your [target.vore_selected.name]!</span>")
|
||||||
|
to_chat(src, "<span class='vwarning'>You phase into [target], having them [target.vore_selected.vore_verb] you into their [target.vore_selected.name]!</span>")
|
||||||
|
|
||||||
|
ability_flags &= ~AB_PHASE_SHIFTING
|
||||||
|
|
||||||
|
//Affect nearby lights
|
||||||
|
var/destroy_lights = 0
|
||||||
|
|
||||||
|
//CHOMPEdit start - Add back light destruction
|
||||||
|
if(SK.get_shadekin_eyecolor(src) == RED_EYES)
|
||||||
|
destroy_lights = 80
|
||||||
|
else if(SK.get_shadekin_eyecolor(src) == PURPLE_EYES)
|
||||||
|
destroy_lights = 25
|
||||||
|
//CHOMPEdit end
|
||||||
|
|
||||||
|
//CHOMPEdit start - Add gentle phasing
|
||||||
|
if(SK.phase_gentle) // gentle case: No light destruction. Flicker in 4 tile radius once.
|
||||||
|
for(var/obj/machinery/light/L in machines)
|
||||||
|
if(L.z != z || get_dist(src,L) > 4)
|
||||||
|
continue
|
||||||
|
L.flicker(1)
|
||||||
|
src.Stun(1)
|
||||||
|
else
|
||||||
|
//CHOMPEdit end
|
||||||
|
for(var/obj/machinery/light/L in machines)
|
||||||
|
if(L.z != z || get_dist(src,L) > 10)
|
||||||
|
continue
|
||||||
|
|
||||||
|
if(prob(destroy_lights))
|
||||||
|
spawn(rand(5,25))
|
||||||
|
L.broken()
|
||||||
|
else
|
||||||
|
L.flicker(10)
|
||||||
|
|
||||||
|
/mob/living/carbon/human/proc/phase_out(var/turf/T)
|
||||||
|
if(!(ability_flags & AB_PHASE_SHIFTED))
|
||||||
|
// pre-change
|
||||||
|
forceMove(T)
|
||||||
|
var/original_canmove = canmove
|
||||||
|
SetStunned(0)
|
||||||
|
SetWeakened(0)
|
||||||
|
if(buckled)
|
||||||
|
buckled.unbuckle_mob()
|
||||||
|
if(pulledby)
|
||||||
|
pulledby.stop_pulling()
|
||||||
|
stop_pulling()
|
||||||
|
canmove = FALSE
|
||||||
|
|
||||||
|
// change
|
||||||
|
ability_flags |= AB_PHASE_SHIFTED
|
||||||
|
ability_flags |= AB_PHASE_SHIFTING
|
||||||
|
mouse_opacity = 0
|
||||||
|
custom_emote(1,"phases out!")
|
||||||
|
name = get_visible_name()
|
||||||
|
|
||||||
|
//CHOMPEdit begin - Unequipping slots when phasing in, and preventing pulling stuff while phased.
|
||||||
|
if(l_hand)
|
||||||
|
unEquip(l_hand)
|
||||||
|
if(r_hand)
|
||||||
|
unEquip(r_hand)
|
||||||
|
if(back)
|
||||||
|
unEquip(back)
|
||||||
|
|
||||||
|
can_pull_size = 0
|
||||||
|
can_pull_mobs = MOB_PULL_NONE
|
||||||
|
hovering = TRUE
|
||||||
|
//CHOMPEdit end
|
||||||
|
|
||||||
|
for(var/obj/belly/B as anything in vore_organs)
|
||||||
|
B.escapable = FALSE
|
||||||
|
|
||||||
|
var/obj/effect/temp_visual/shadekin/phase_out/phaseanim = new /obj/effect/temp_visual/shadekin/phase_out(src.loc)
|
||||||
|
phaseanim.dir = dir
|
||||||
|
alpha = 0
|
||||||
|
add_modifier(/datum/modifier/shadekin_phase_vision)
|
||||||
|
add_modifier(/datum/modifier/shadekin_phase) //CHOMPEdit - Shadekin probably shouldn't be hit while phasing
|
||||||
|
sleep(5)
|
||||||
|
invisibility = INVISIBILITY_SHADEKIN
|
||||||
|
see_invisible = INVISIBILITY_SHADEKIN
|
||||||
|
see_invisible_default = INVISIBILITY_SHADEKIN // CHOMPEdit - Allow seeing phased entities while phased.
|
||||||
|
//cut_overlays()
|
||||||
|
update_icon()
|
||||||
|
alpha = 127
|
||||||
|
|
||||||
|
canmove = original_canmove
|
||||||
|
incorporeal_move = TRUE
|
||||||
|
density = FALSE
|
||||||
|
force_max_speed = TRUE
|
||||||
|
ability_flags &= ~AB_PHASE_SHIFTING
|
||||||
|
|
||||||
|
//CHOMPEdit start - force dephase proc, to be called by other procs to dephase the shadekin. T is the target to force dephase them to.
|
||||||
|
/mob/living/carbon/human/proc/attack_dephase(var/turf/T = null, atom/dephaser)
|
||||||
|
var/datum/species/shadekin/SK = species
|
||||||
|
|
||||||
|
// no assigned dephase-target, just use our own
|
||||||
|
if(!T)
|
||||||
|
T = get_turf(src)
|
||||||
|
|
||||||
|
// make sure it's possible to be dephased (and we're in phase)
|
||||||
|
if(!istype(SK) || SK.doing_phase || !T.CanPass(src,T) || loc != T || !(ability_flags & AB_PHASE_SHIFTED) )
|
||||||
|
return FALSE
|
||||||
|
|
||||||
|
|
||||||
|
log_admin("[key_name_admin(src)] was stunned out of phase at [T.x],[T.y],[T.z] by [dephaser.name], last touched by [dephaser.fingerprintslast].")
|
||||||
|
message_admins("[key_name_admin(src)] was stunned out of phase at [T.x],[T.y],[T.z] by [dephaser.name], last touched by [dephaser.fingerprintslast]. (<A HREF='?_src_=holder;[HrefToken()];adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>JMP</a>)", 1)
|
||||||
|
// start the dephase
|
||||||
|
phase_in(T)
|
||||||
|
shadekin_adjust_energy(-20) // loss of energy for the interception
|
||||||
|
// apply a little extra stun for good measure
|
||||||
|
src.Weaken(3)
|
||||||
|
|
||||||
|
//CHOMPEdit start - gentle phasing for carbonkin
|
||||||
|
//toggle proc for toggling gentle/normal phasing
|
||||||
|
/mob/living/carbon/human/proc/phase_strength_toggle()
|
||||||
|
set name = "Toggle Phase Strength"
|
||||||
|
set desc = "Toggle strength of phase. Gentle but slower, or faster but destructive to lights."
|
||||||
|
set category = "Shadekin"
|
||||||
|
|
||||||
|
var/datum/species/shadekin/SK = species
|
||||||
|
if(!istype(SK))
|
||||||
|
to_chat(src, "<span class='warning'>Only a shadekin can use that!</span>")
|
||||||
|
return FALSE
|
||||||
|
|
||||||
|
if(SK.phase_gentle)
|
||||||
|
to_chat(src, "<span class='notice'>Phasing toggled to Normal. You may damage lights.</span>")
|
||||||
|
SK.phase_gentle = 0
|
||||||
|
else
|
||||||
|
to_chat(src, "<span class='notice'>Phasing toggled to Gentle. You won't damage lights, but concentrating on that incurs a short stun.</span>")
|
||||||
|
SK.phase_gentle = 1
|
||||||
|
//CHOMPEdit End
|
||||||
24
modular_chomp/code/modules/telesci/bscrystal.dm
Normal file
24
modular_chomp/code/modules/telesci/bscrystal.dm
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
// This proc turns the BSC or arti-BSC into a phased-creature mine.
|
||||||
|
/obj/item/weapon/bluespace_crystal/Crossed(atom/movable/M)
|
||||||
|
. = ..()
|
||||||
|
if(istype(M, /mob/living/carbon/human))
|
||||||
|
var/mob/living/carbon/human/H = M
|
||||||
|
if(H.get_species() == SPECIES_SHADEKIN && (H.ability_flags & AB_PHASE_SHIFTED))
|
||||||
|
var/turf/T = get_turf(src)
|
||||||
|
visible_message("<span class='notice'>[src] fizzles and disappears as something interacts with it!</span>")
|
||||||
|
playsound(src, pick('sound/effects/Glassbr1.ogg', 'sound/effects/Glassbr2.ogg', 'sound/effects/Glassbr3.ogg'), 50, 1)
|
||||||
|
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread()
|
||||||
|
s.set_up(5, 1, T)
|
||||||
|
s.start()
|
||||||
|
H.attack_dephase(T, src)
|
||||||
|
qdel(src)
|
||||||
|
|
||||||
|
|
||||||
|
// This proc is the 'Dephase grenade' check. range is changeable. 0=self, 1=3x3, 2=5x5, 3=7x7...
|
||||||
|
/obj/item/weapon/bluespace_crystal/proc/dephase_shadekin()
|
||||||
|
var/turf/T = get_turf(src)
|
||||||
|
for(var/thing in range(3, T))
|
||||||
|
if(istype(thing, /mob/living/carbon/human))
|
||||||
|
var/mob/living/carbon/human/H = thing
|
||||||
|
if(H.get_species() == SPECIES_SHADEKIN && (H.ability_flags & AB_PHASE_SHIFTED))
|
||||||
|
H.attack_dephase(null, src)
|
||||||
@@ -4766,6 +4766,7 @@
|
|||||||
#include "modular_chomp\code\modules\mob\living\carbon\human\species\species.dm"
|
#include "modular_chomp\code\modules\mob\living\carbon\human\species\species.dm"
|
||||||
#include "modular_chomp\code\modules\mob\living\carbon\human\species\species_shapeshift_ch.dm"
|
#include "modular_chomp\code\modules\mob\living\carbon\human\species\species_shapeshift_ch.dm"
|
||||||
#include "modular_chomp\code\modules\mob\living\carbon\human\species\outsider\vox.dm"
|
#include "modular_chomp\code\modules\mob\living\carbon\human\species\outsider\vox.dm"
|
||||||
|
#include "modular_chomp\code\modules\mob\living\carbon\human\species\shadekin\shadekin_abilities.dm"
|
||||||
#include "modular_chomp\code\modules\mob\living\carbon\human\species\station\prommie_blob.dm"
|
#include "modular_chomp\code\modules\mob\living\carbon\human\species\station\prommie_blob.dm"
|
||||||
#include "modular_chomp\code\modules\mob\living\carbon\human\species\station\station.dm"
|
#include "modular_chomp\code\modules\mob\living\carbon\human\species\station\station.dm"
|
||||||
#include "modular_chomp\code\modules\mob\living\carbon\human\species\station\station_ch.dm"
|
#include "modular_chomp\code\modules\mob\living\carbon\human\species\station\station_ch.dm"
|
||||||
@@ -4925,6 +4926,7 @@
|
|||||||
#include "modular_chomp\code\modules\shieldgen\shield_capacitor.dm"
|
#include "modular_chomp\code\modules\shieldgen\shield_capacitor.dm"
|
||||||
#include "modular_chomp\code\modules\shieldgen\shield_gen.dm"
|
#include "modular_chomp\code\modules\shieldgen\shield_gen.dm"
|
||||||
#include "modular_chomp\code\modules\spells\spells.dm"
|
#include "modular_chomp\code\modules\spells\spells.dm"
|
||||||
|
#include "modular_chomp\code\modules\telesci\bscrystal.dm"
|
||||||
#include "modular_chomp\code\modules\tgui\feedback.dm"
|
#include "modular_chomp\code\modules\tgui\feedback.dm"
|
||||||
#include "modular_chomp\code\modules\tgui\states\ticket.dm"
|
#include "modular_chomp\code\modules\tgui\states\ticket.dm"
|
||||||
#include "modular_chomp\code\modules\tickets\procs.dm"
|
#include "modular_chomp\code\modules\tickets\procs.dm"
|
||||||
|
|||||||
Reference in New Issue
Block a user