changes vampire hypnotize to be a sleep stun but makes it cost blood or something i guess this is supposed to be better since its prebase code (#9955)

* goddammit

* Update vampire_powers.dm

* decrease yee yee range to 3

* fixes plus makes hypnotize a do_mob so it has a progress bar

* Update vampire_powers.dm

* Update vampire_powers.dm

* Update vampire_powers.dm
This commit is contained in:
Theos
2020-10-16 09:24:02 -04:00
committed by GitHub
parent 0f0c1a049b
commit 54fe18bb84
7 changed files with 123 additions and 28 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 614 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 435 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

View File

@@ -98,8 +98,8 @@ h1.alert, h2.alert {color: #000000;}
.holoparasite {color: #35333a;} .holoparasite {color: #35333a;}
.surrender { .surrender {
color: #1235d1; color: #1235d1;
font-weight: bold; font-weight: bold;
font-size: 3; font-size: 3;
animation: surrender 1s ease-in-out infinite alternate; animation: surrender 1s ease-in-out infinite alternate;
transform-origin: 0 0; transform-origin: 0 0;
display: inline-block; display: inline-block;

View File

@@ -25,7 +25,8 @@
var/list/upgrade_tiers = list( var/list/upgrade_tiers = list(
/obj/effect/proc_holder/spell/self/vampire_help = 0, /obj/effect/proc_holder/spell/self/vampire_help = 0,
/obj/effect/proc_holder/spell/self/rejuvenate = 0, /obj/effect/proc_holder/spell/self/rejuvenate = 0,
/obj/effect/proc_holder/spell/targeted/hypnotise = 0, /obj/effect/proc_holder/spell/pointed/gaze = 0,
/obj/effect/proc_holder/spell/pointed/hypno = 0,
/datum/vampire_passive/vision = 75, /datum/vampire_passive/vision = 75,
/obj/effect/proc_holder/spell/self/shapeshift = 75, /obj/effect/proc_holder/spell/self/shapeshift = 75,
/obj/effect/proc_holder/spell/self/cloak = 100, /obj/effect/proc_holder/spell/self/cloak = 100,

View File

@@ -49,7 +49,7 @@
/obj/effect/proc_holder/spell/can_target(mob/living/target) /obj/effect/proc_holder/spell/can_target(mob/living/target)
. = ..() . = ..()
if(vamp_req && is_vampire(target)) if(!istype(target) || (vamp_req && is_vampire(target)))
return FALSE return FALSE
/datum/vampire_passive /datum/vampire_passive
var/gain_desc var/gain_desc
@@ -79,14 +79,14 @@
name = "How to suck blood 101" name = "How to suck blood 101"
desc = "Explains how the vampire blood sucking system works." desc = "Explains how the vampire blood sucking system works."
action_icon_state = "bloodymaryglass" action_icon_state = "bloodymaryglass"
icon = 'icons/obj/drinks.dmi' action_icon = 'icons/obj/drinks.dmi'
action_background_icon_state = "bg_demon" action_background_icon_state = "bg_demon"
charge_max = 0 charge_max = 0
vamp_req = TRUE //YES YOU NEED TO BE A VAMPIRE TO KNOW HOW TO BE A VAMPIRE SHOCKING vamp_req = TRUE //YES YOU NEED TO BE A VAMPIRE TO KNOW HOW TO BE A VAMPIRE SHOCKING
/obj/effect/proc_holder/spell/self/vampire_help/cast(list/targets, mob/user = usr) /obj/effect/proc_holder/spell/self/vampire_help/cast(list/targets, mob/user = usr)
to_chat(user, "<span class='notice'>You can consume blood from living, humanoid life by <b>punching their head while on the harm intent</b>. This <i>WILL</i> alert everyone who can see it as well as make a noise, which is generally hearable about <b>three meters away</b>. Note that you cannot draw blood from <b>catatonics or corpses</b>.\n\ to_chat(user, "<span class='notice'>You can consume blood from living, humanoid life by <b>punching their head while on the harm intent</b>. This <i>WILL</i> alert everyone who can see it as well as make a noise, which is generally hearable about <b>three meters away</b>. Note that you <b>cannot</b> draw blood from <b>catatonics or corpses</b>.\n\
Your bloodsucking speed depends on grab strength, you can <i>stealhily</i> extract blood by initiating without a grab, and can suck more blood per cycle by <b>having a neck grab or stronger</b>. Both of these modify the amount of blood taken by 50%; less for stealth, more for strong grabs.</span>") Your bloodsucking speed depends on grab strength, you can <i>stealthily</i> extract blood by initiating without a grab, and can suck more blood per cycle by <b>having a neck grab or stronger</b>. Both of these modify the amount of blood taken by 50%; less for stealth, more for strong grabs.</span>")
/obj/effect/proc_holder/spell/self/rejuvenate /obj/effect/proc_holder/spell/self/rejuvenate
name = "Rejuvenate" name = "Rejuvenate"
@@ -115,32 +115,126 @@
sleep(7.5) sleep(7.5)
/obj/effect/proc_holder/spell/targeted/hypnotise /obj/effect/proc_holder/spell/pointed/gaze
name = "Hypnotize" name = "Vampiric Gaze"
desc= "A piercing stare that incapacitates your victim for a good length of time." desc = "Paralyze your target with fear."
action_icon_state = "hypnotize" charge_max = 300
blood_used = 0 action_icon_state = "gaze"
charge_max = 1500 active_msg = "You prepare your vampiric gaze.</span>"
range = 2 deactive_msg = "You stop preparing your vampiric gaze.</span>"
vamp_req = TRUE
ranged_mousepointer = 'icons/effects/mouse_pointers/gaze_target.dmi'
action_icon = 'yogstation/icons/mob/vampire.dmi' action_icon = 'yogstation/icons/mob/vampire.dmi'
action_background_icon_state = "bg_demon" action_background_icon_state = "bg_demon"
/obj/effect/proc_holder/spell/pointed/gaze/can_target(atom/target, mob/user, silent)
. = ..()
if(!.)
return FALSE
if(!ishuman(target))
to_chat(user, "<span class='warning'>Gaze will not work on this being.</span>")
return FALSE
var/mob/living/carbon/human/T = target
if(T.stat == DEAD)
to_chat(user,"<span class='warning'>You cannot gaze at corpses... \
or maybe you could if you really wanted to.</span>")
return FALSE
/obj/effect/proc_holder/spell/pointed/gaze/cast(list/targets, mob/user)
var/mob/living/target = targets[1]
var/mob/living/carbon/human/T = target
user.visible_message("<span class='warning'>[user]'s eyes flash red.</span>",\
"<span class='warning'>[user]'s eyes flash red.</span>")
if(ishuman(target))
var/obj/item/clothing/glasses/G = T.glasses
if(G)
if(G.flash_protect)
to_chat(user,"<span class='warning'>[T] has protective sunglasses on!</span>")
to_chat(target, "<span class='warning'>[user]'s paralyzing gaze is blocked by your [G]!</span>")
return
var/obj/item/clothing/mask/M = T.wear_mask
if(M)
if(M.flash_protect)
to_chat(user,"<span class='warning'>[T]'s mask is covering their eyes!</span>")
to_chat(target,"<span class='warning'>[user]'s paralyzing gaze is blocked by your [M]!</span>")
return
var/obj/item/clothing/head/H = T.head
if(H)
if(H.flash_protect)
to_chat(user, "<span class='vampirewarning'>[T]'s helmet is covering their eyes!</span>")
to_chat(target, "<span class='warning'>[user]'s paralyzing gaze is blocked by [H]!</span>")
return
to_chat(target,"<span class='warning'>You are paralyzed with fear!</span>")
to_chat(user,"<span class='notice'>You paralyze [T].</span>")
T.Stun(50)
/obj/effect/proc_holder/spell/pointed/hypno
name = "Hypnotize"
desc = "Knock out your target."
charge_max = 300
blood_used = 20
action_icon_state = "hypnotize"
active_msg = "<span class='warning'>You prepare your hypnosis technique.</span>"
deactive_msg = "<span class='warning'>You stop preparing your hypnosis.</span>"
vamp_req = TRUE vamp_req = TRUE
ranged_mousepointer = 'icons/effects/mouse_pointers/hypnotize_target.dmi'
action_icon = 'yogstation/icons/mob/vampire.dmi'
action_background_icon_state = "bg_demon"
/obj/effect/proc_holder/spell/targeted/hypnotise/cast(list/targets, mob/user = usr) /obj/effect/proc_holder/spell/pointed/hypno/Click()
for(var/mob/living/carbon/target in targets) if(!active)
user.visible_message("<span class='warning'>[user]'s eyes flash briefly as [user.p_they()] stares into [target]'s eyes</span>") usr.visible_message("<span class='warning'>[usr] twirls their finger in a circlular motion.</span>",\
target.silent = 2 //this is actually roughly 4 seconds due to how silent works "<span class='warning'>You twirl your finger in a circular motion.</span>")
if(target.flash_act(1)) ..()
target.adjustStaminaLoss(40) //minor slowdown if they aren't protected
if(do_mob(user, target, 30, TRUE) && (target in view(user))) //effect stops working if the target escapes line of sight /obj/effect/proc_holder/spell/pointed/hypno/can_target(atom/target, mob/user, silent)
to_chat(user, "<span class='warning'>Your piercing gaze knocks out [target].</span>") if(!..())
to_chat(target, "<span class='warning'>You find yourself unable to move or speak.</span>") return
target.Paralyze(150) if(!ishuman(target))
target.silent = 10 //finally makes this stupid spell USEFUL to_chat(user, "<span class='warning'>Hypnotize will not work on this being.</span>")
return FALSE
var/mob/living/carbon/human/T = target
if(T.IsSleeping())
to_chat(user, "<span class='warning'>[T] is already asleep!.</span>")
return FALSE
return TRUE
/obj/effect/proc_holder/spell/pointed/hypno/cast(list/targets, mob/user)
var/mob/living/target = targets[1]
var/mob/living/carbon/human/T = target
user.visible_message("<span class='warning'>[user]'s eyes flash red.</span>",\
"<span class='warning'>[user]'s eyes flash red.</span>")
if(T)
var/obj/item/clothing/glasses/G = T.glasses
if(G)
if(G.flash_protect)
to_chat(user, "<span class='warning'>[T] has protective sunglasses on!</span>")
to_chat(target, "<span class='warning'>[user]'s paralyzing gaze is blocked by [G]!</span>")
return
var/obj/item/clothing/mask/M = T.wear_mask
if(M)
if(M.flash_protect)
to_chat(user, "<span class='vampirewarning'>[T]'s mask is covering their eyes!</span>")
to_chat(target, "<span class='warning'>[user]'s paralyzing gaze is blocked by [M]!</span>")
return
var/obj/item/clothing/head/H = T.head
if(H)
if(H.flash_protect)
to_chat(user, "<span class='vampirewarning'>[T]'s helmet is covering their eyes!</span>")
to_chat(target, "<span class='warning'>[user]'s paralyzing gaze is blocked by [H]!</span>")
return
to_chat(target, "<span class='boldwarning'>Your knees suddenly feel heavy. Your body begins to sink to the floor.</span>")
to_chat(user, "<span class='notice'>[target] is now under your spell. In four seconds they will be rendered unconscious as long as they are within close range.</span>")
if(do_mob(user, target, 40, TRUE)) // 4 seconds...
if(get_dist(user, T) <= 3) // 7 range
flash_color(T, flash_color="#472040", flash_time=30) // it's the vampires color!
T.SetSleeping(300)
to_chat(user, "<span class='warning'>[T] has fallen asleep!</span>")
else else
revert_cast(usr) to_chat(T, "<span class='notice'>You feel a whole lot better now.</span>")
to_chat(usr, "<span class='warning'>You broke your gaze.</span>")
/obj/effect/proc_holder/spell/self/shapeshift /obj/effect/proc_holder/spell/self/shapeshift
name = "Shapeshift (50)" name = "Shapeshift (50)"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB