mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-29 23:17:02 +01:00
Vampire commit 2
This commit is contained in:
@@ -96,6 +96,7 @@ var/datum/global_hud/global_hud = new()
|
||||
var/obj/screen/lingchemdisplay
|
||||
var/obj/screen/blobpwrdisplay
|
||||
var/obj/screen/blobhealthdisplay
|
||||
var/obj/screen/vampire_blood_display
|
||||
var/obj/screen/alien_plasma_display
|
||||
var/obj/screen/r_hand_hud_object
|
||||
var/obj/screen/l_hand_hud_object
|
||||
@@ -188,7 +189,10 @@ datum/hud/New(mob/owner)
|
||||
robot_hud()
|
||||
else if(isobserver(mymob))
|
||||
ghost_hud()
|
||||
|
||||
else if(isovermind(mymob))
|
||||
blob_hud()
|
||||
else if(mymob.mind && mymob.mind.vampire)
|
||||
vampire_hud()
|
||||
|
||||
//Triggered when F12 is pressed (Unless someone changed something in the DMF)
|
||||
/mob/verb/button_pressed_F12()
|
||||
|
||||
+4
-1
@@ -71,6 +71,8 @@ datum/mind
|
||||
if(changeling)
|
||||
current.remove_changeling_powers()
|
||||
current.verbs -= /datum/changeling/proc/EvolutionMenu
|
||||
if(vampire)
|
||||
current.remove_vampire_powers()
|
||||
current.mind = null
|
||||
|
||||
nanomanager.user_transferred(current, new_character)
|
||||
@@ -82,7 +84,8 @@ datum/mind
|
||||
|
||||
if(changeling)
|
||||
new_character.make_changeling()
|
||||
|
||||
if(vampire)
|
||||
new_character.make_vampire()
|
||||
if(active)
|
||||
new_character.key = key //now transfer the key to link the client to our new body
|
||||
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
/datum/hud/proc/vampire_hud(ui_style = 'icons/mob/screen1_Midnight.dmi')
|
||||
|
||||
vampire_blood_display = new /obj/screen()
|
||||
vampire_blood_display.name = "Vampire Blood"
|
||||
vampire_blood_display.icon_state = "dark128"
|
||||
vampire_blood_display.screen_loc = "14:28,9:15"
|
||||
vampire_blood_display.layer = 20
|
||||
|
||||
mymob.client.screen += list(vampire_blood_display)
|
||||
@@ -224,8 +224,32 @@ You are weak to holy things and starlight. Don't go into space and avoid the Cha
|
||||
if(findtext("[handler]","vampire_"))
|
||||
verbs += handler*/
|
||||
for(var/i = 1; i <= 3; i++) // CHANGE TO 3 RATHER THAN 12 AFTER TESTING IS DONE
|
||||
mind.vampire.powers.Add(i)
|
||||
if(!(i in mind.vampire.powers))
|
||||
mind.vampire.powers.Add(i)
|
||||
|
||||
|
||||
for(var/n in mind.vampire.powers)
|
||||
switch(n)
|
||||
if(VAMP_SHAPE)
|
||||
verbs += /client/proc/vampire_shapeshift
|
||||
if(VAMP_VISION)
|
||||
continue
|
||||
if(VAMP_DISEASE)
|
||||
verbs += /client/proc/vampire_disease
|
||||
if(VAMP_CLOAK)
|
||||
verbs += /client/proc/vampire_cloak
|
||||
if(VAMP_BATS)
|
||||
verbs += /client/proc/vampire_bats
|
||||
if(VAMP_SCREAM)
|
||||
verbs += /client/proc/vampire_screech
|
||||
if(VAMP_JAUNT)
|
||||
verbs += /client/proc/vampire_jaunt
|
||||
if(VAMP_BLINK)
|
||||
verbs += /client/proc/vampire_shadowstep
|
||||
if(VAMP_SLAVE)
|
||||
verbs += /client/proc/vampire_enthrall
|
||||
if(VAMP_FULL)
|
||||
continue
|
||||
/mob/proc/remove_vampire_powers()
|
||||
for(var/handler in typesof(/client/proc))
|
||||
if(findtext("[handler]","vampire_"))
|
||||
@@ -301,6 +325,11 @@ You are weak to holy things and starlight. Don't go into space and avoid the Cha
|
||||
// Commented out until we can figured out a way to stop this from spamming.
|
||||
//src << "\blue Your rejuvination abilities have improved and will now heal you over time when used."
|
||||
|
||||
// TIER 3.5 (/vg/)
|
||||
if(vamp.bloodtotal >= 250)
|
||||
if(!(VAMP_BLINK in vamp.powers))
|
||||
vamp.powers.Add(VAMP_BLINK)
|
||||
|
||||
// TIER 4
|
||||
if(vamp.bloodtotal >= 300)
|
||||
if(!(VAMP_JAUNT in vamp.powers))
|
||||
@@ -343,8 +372,11 @@ You are weak to holy things and starlight. Don't go into space and avoid the Cha
|
||||
if(VAMP_SLAVE)
|
||||
src << "\blue You have gained the Enthrall ability which at a heavy blood cost allows you to enslave a human that is not loyal to any other for a random period of time."
|
||||
verbs += /client/proc/vampire_enthrall
|
||||
if(VAMP_BLINK)
|
||||
src << "\blue You have gained the ability to shadowstep, which makes you disappear into nearby shadows at the cost of blood."
|
||||
verbs += /client/proc/vampire_shadowstep
|
||||
if(VAMP_FULL)
|
||||
src << "\blue You have reached your full potential and are no longer weak to the effects of anything holy and your vision has been improved greatyl."
|
||||
src << "\blue You have reached your full potential and are no longer weak to the effects of anything holy and your vision has been improved greatly."
|
||||
//no verb
|
||||
//prepare for copypaste
|
||||
/datum/game_mode/proc/update_vampire_icons_added(datum/mind/vampire_mind)
|
||||
|
||||
@@ -20,7 +20,11 @@
|
||||
if(vampire.bloodusable < required_blood)
|
||||
src << "<span class='warning'>You require at least [required_blood] units of usable blood to do that!</span>"
|
||||
return 0
|
||||
|
||||
//chapel check
|
||||
if(istype(loc.loc, /area/chapel))
|
||||
if(!(VAMP_FULL in vampire.powers))
|
||||
src << "<span class='warning'>Your powers are useless on this holy ground.</span>"
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/mob/proc/vampire_can_reach(mob/M as mob, active_range = 1)
|
||||
@@ -124,7 +128,9 @@
|
||||
shutdown.spreadtype = "None"
|
||||
shutdown.uniqueID = rand(0,10000)
|
||||
shutdown.effects += holder
|
||||
shutdown.speed = 10
|
||||
shutdown.speed = 1
|
||||
shutdown.stage = 2
|
||||
shutdown.clicks = 185
|
||||
infect_virus2(C,shutdown,0)
|
||||
M.current.remove_vampire_blood(100)
|
||||
M.current.verbs -= /client/proc/vampire_disease
|
||||
@@ -254,7 +260,7 @@
|
||||
if(!C.mind)
|
||||
src << "\red [C.name]'s mind is not there for you to enthrall."
|
||||
return 0
|
||||
if(/obj/item/weapon/implant/traitor in C.contents || /obj/item/weapon/implant/loyalty in C.contents || C.mind in ticker.mode.vampires || C.mind.vampire || C.mind in ticker.mode.enthralled)
|
||||
if((/obj/item/weapon/implant/traitor in C.contents) || (/obj/item/weapon/implant/loyalty in C.contents )||( C.mind in ticker.mode.vampires )||( C.mind.vampire )||( C.mind in ticker.mode.enthralled ))
|
||||
C.visible_message("[C] seems to resist the takeover!", "You feel a familiar sensation in your skull that quickly dissipates.")
|
||||
return 0
|
||||
if(!ishuman(C))
|
||||
@@ -269,6 +275,8 @@
|
||||
var/ref = "\ref[src.mind]"
|
||||
if(!(ref in ticker.mode.thralls))
|
||||
ticker.mode.thralls[ref] = list(H.mind)
|
||||
else
|
||||
ticker.mode.thralls[ref] += H.mind
|
||||
ticker.mode.enthralled.Add(H.mind)
|
||||
ticker.mode.enthralled[H.mind] = src.mind
|
||||
H.mind.special_role = "VampThrall"
|
||||
@@ -360,6 +368,63 @@
|
||||
M.current.verbs -= /client/proc/vampire_jaunt
|
||||
spawn(600) M.current.verbs += /client/proc/vampire_jaunt
|
||||
|
||||
// Blink for vamps
|
||||
// Less smoke spam.
|
||||
/client/proc/vampire_shadowstep()
|
||||
set category = "Vampire"
|
||||
set name = "Shadowstep (30)"
|
||||
set desc = "Vanish into the shadows."
|
||||
var/datum/mind/M = usr.mind
|
||||
if(!M) return
|
||||
|
||||
// Teleport radii
|
||||
var/inner_tele_radius = 0
|
||||
var/outer_tele_radius = 6
|
||||
|
||||
// Maximum lighting_lumcount.
|
||||
var/max_lum = 1
|
||||
|
||||
if(M.current.vampire_power(30, 0))
|
||||
if(M.current.buckled) M.current.buckled.unbuckle()
|
||||
spawn(0)
|
||||
var/list/turfs = new/list()
|
||||
for(var/turf/T in range(usr,outer_tele_radius))
|
||||
if(T in range(usr,inner_tele_radius)) continue
|
||||
if(istype(T,/turf/space)) continue
|
||||
if(T.density) continue
|
||||
if(T.x>world.maxx-outer_tele_radius || T.x<outer_tele_radius) continue //putting them at the edge is dumb
|
||||
if(T.y>world.maxy-outer_tele_radius || T.y<outer_tele_radius) continue
|
||||
|
||||
// LIGHTING CHECK
|
||||
if(T.lighting_lumcount > max_lum) continue
|
||||
turfs += T
|
||||
|
||||
if(!turfs.len)
|
||||
usr << "\red You cannot find darkness to step to."
|
||||
return
|
||||
|
||||
var/turf/picked = pick(turfs)
|
||||
|
||||
if(!picked || !isturf(picked))
|
||||
return
|
||||
M.current.ExtinguishMob()
|
||||
if(M.current.buckled)
|
||||
M.current.buckled.unbuckle()
|
||||
var/atom/movable/overlay/animation = new /atom/movable/overlay( get_turf(usr) )
|
||||
animation.name = usr.name
|
||||
animation.density = 0
|
||||
animation.anchored = 1
|
||||
animation.icon = usr.icon
|
||||
animation.alpha = 127
|
||||
animation.layer = 5
|
||||
//animation.master = src
|
||||
usr.loc = picked
|
||||
spawn(10)
|
||||
del(animation)
|
||||
M.current.verbs -= /client/proc/vampire_shadowstep
|
||||
spawn(20)
|
||||
M.current.verbs += /client/proc/vampire_shadowstep
|
||||
|
||||
/mob/proc/remove_vampire_blood(amount = 0)
|
||||
var/bloodold
|
||||
if(!mind || !mind.vampire)
|
||||
|
||||
@@ -166,19 +166,17 @@
|
||||
|
||||
// -- Mode/mind specific stuff goes here
|
||||
|
||||
switch(ticker.mode.name)
|
||||
if("revolution")
|
||||
if((H.mind in ticker.mode:revolutionaries) || (H.mind in ticker.mode:head_revolutionaries))
|
||||
ticker.mode.update_all_rev_icons() //So the icon actually appears
|
||||
if("nuclear emergency")
|
||||
if(H.mind in ticker.mode.syndicates)
|
||||
ticker.mode.update_all_synd_icons()
|
||||
if("cult")
|
||||
if (H.mind in ticker.mode.cult)
|
||||
ticker.mode.add_cultist(src.occupant.mind)
|
||||
ticker.mode.update_all_cult_icons() //So the icon actually appears
|
||||
if("\ref[H.mind]" in ticker.mode.implanter || H.mind in ticker.mode.implanted)
|
||||
if((H.mind in ticker.mode:revolutionaries) || (H.mind in ticker.mode:head_revolutionaries))
|
||||
ticker.mode.update_all_rev_icons() //So the icon actually appears
|
||||
if(H.mind in ticker.mode.syndicates)
|
||||
ticker.mode.update_all_synd_icons()
|
||||
if (H.mind in ticker.mode.cult)
|
||||
ticker.mode.add_cultist(src.occupant.mind)
|
||||
ticker.mode.update_all_cult_icons() //So the icon actually appears
|
||||
if(("\ref[H.mind]" in ticker.mode.implanter) || (H.mind in ticker.mode.implanted))
|
||||
ticker.mode.update_traitor_icons_added(H.mind) //So the icon actually appears
|
||||
if(("\ref[H.mind]" in ticker.mode.thralls) || (H.mind in ticker.mode.enthralled))
|
||||
ticker.mode.update_vampire_icons_added(H.mind)
|
||||
|
||||
// -- End mode specific stuff
|
||||
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
/mob/living/carbon/Login()
|
||||
..()
|
||||
update_hud()
|
||||
return
|
||||
|
||||
|
||||
/mob/living/carbon/Move(NewLoc, direct)
|
||||
. = ..()
|
||||
if(.)
|
||||
|
||||
@@ -126,6 +126,13 @@
|
||||
G.process()
|
||||
|
||||
if(mind && mind.vampire)
|
||||
if(hud_used)
|
||||
if(!hud_used.vampire_blood_display)
|
||||
hud_used.vampire_hud()
|
||||
//hud_used.human_hud(hud_used.ui_style)
|
||||
hud_used.vampire_blood_display.maptext_width = 64
|
||||
hud_used.vampire_blood_display.maptext_height = 26
|
||||
hud_used.vampire_blood_display.maptext = "<div align='left' valign='top' style='position:relative; top:0px; left:6px'> U:<font color='#33FF33' size='1'>[mind.vampire.bloodusable]</font><br> T:<font color='#FFFF00' size='1'>[mind.vampire.bloodtotal]</font></div>"
|
||||
handle_vampire_cloak()
|
||||
|
||||
|
||||
|
||||
@@ -6,21 +6,20 @@
|
||||
|
||||
//Round specific stuff like hud updates
|
||||
if(ticker && ticker.mode)
|
||||
switch(ticker.mode.name)
|
||||
if("revolution")
|
||||
if((mind in ticker.mode.revolutionaries) || (src.mind in ticker.mode:head_revolutionaries))
|
||||
ticker.mode.update_rev_icons_added(src.mind)
|
||||
if("cult")
|
||||
if(mind in ticker.mode:cult)
|
||||
ticker.mode.update_cult_icons_added(src.mind)
|
||||
if("nuclear emergency")
|
||||
if(mind in ticker.mode:syndicates)
|
||||
ticker.mode.update_all_synd_icons()
|
||||
if((mind in ticker.mode.revolutionaries) || (src.mind in ticker.mode:head_revolutionaries))
|
||||
ticker.mode.update_rev_icons_added(src.mind)
|
||||
if(mind in ticker.mode:cult)
|
||||
ticker.mode.update_cult_icons_added(src.mind)
|
||||
if(mind in ticker.mode:syndicates)
|
||||
ticker.mode.update_all_synd_icons()
|
||||
var/ref = "\ref[mind]"
|
||||
if(ref in ticker.mode.implanter)
|
||||
ticker.mode.update_traitor_icons_added(mind)
|
||||
if(mind in ticker.mode.implanted)
|
||||
ticker.mode.update_traitor_icons_added(mind)
|
||||
if((ref in ticker.mode.thralls) || (mind in ticker.mode.enthralled))
|
||||
ticker.mode.update_vampire_icons_added(mind)
|
||||
return
|
||||
return .
|
||||
|
||||
|
||||
|
||||
@@ -102,6 +102,7 @@
|
||||
disease.uniqueID = uniqueID
|
||||
disease.speed = speed
|
||||
disease.stage = stage
|
||||
disease.clicks = clicks
|
||||
for(var/datum/disease2/effectholder/holder in effects)
|
||||
var/datum/disease2/effectholder/newholder = new /datum/disease2/effectholder
|
||||
newholder.effect = new holder.effect.type
|
||||
|
||||
+2
-1
@@ -787,4 +787,5 @@ var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accesse
|
||||
#define VAMP_SCREAM 9
|
||||
#define VAMP_JAUNT 10
|
||||
#define VAMP_SLAVE 11
|
||||
#define VAMP_FULL 12
|
||||
#define VAMP_BLINK 12
|
||||
#define VAMP_FULL 13
|
||||
Reference in New Issue
Block a user