Vampire commit 2

This commit is contained in:
ZomgPonies
2013-12-14 05:19:54 -05:00
parent 353fd8cd46
commit 87c56b4b23
12 changed files with 162 additions and 30 deletions
+5 -1
View File
@@ -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
View File
@@ -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
+9
View File
@@ -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)
+34 -2
View File
@@ -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)
+68 -3
View File
@@ -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)
+10 -12
View File
@@ -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
+6
View File
@@ -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()
+9 -10
View File
@@ -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 .
+1
View File
@@ -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
View File
@@ -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