Ditto
This commit is contained in:
@@ -262,7 +262,6 @@ datum/antagonist/bloodsucker/proc/RankUp()
|
||||
set waitfor = FALSE
|
||||
if (!owner || !owner.current)
|
||||
return
|
||||
|
||||
vamplevel_unspent ++
|
||||
// Spend Rank Immediately?
|
||||
if (istype(owner.current.loc, /obj/structure/closet/crate/coffin))
|
||||
@@ -272,7 +271,6 @@ datum/antagonist/bloodsucker/proc/RankUp()
|
||||
if (vamplevel_unspent >= 2)
|
||||
to_chat(owner, "<span class='announce'>Bloodsucker Tip: If you cannot find or steal a coffin to use, they can be built from wooden planks.</span><br>")
|
||||
|
||||
|
||||
datum/antagonist/bloodsucker/proc/LevelUpPowers()
|
||||
for(var/datum/action/bloodsucker/power in powers)
|
||||
power.level_current ++
|
||||
@@ -281,10 +279,9 @@ datum/antagonist/bloodsucker/proc/SpendRank()
|
||||
set waitfor = FALSE
|
||||
if (vamplevel_unspent <= 0 || !owner || !owner.current || !owner.current.client)
|
||||
return
|
||||
|
||||
/////////
|
||||
// Powers
|
||||
|
||||
//TODO: Make this into a radial
|
||||
// Purchase Power Prompt
|
||||
var/list/options = list() // Taken from gasmask.dm, for Clown Masks.
|
||||
for(var/pickedpower in typesof(/datum/action/bloodsucker))
|
||||
@@ -293,7 +290,6 @@ datum/antagonist/bloodsucker/proc/SpendRank()
|
||||
if (!(locate(power) in powers) && initial(power.bloodsucker_can_buy))
|
||||
options[initial(power.name)] = power // TESTING: After working with TGUI, it seems you can use initial() to view the variables inside a path?
|
||||
options["\[ Not Now \]"] = null
|
||||
|
||||
// Abort?
|
||||
if (options.len > 1)
|
||||
var/choice = input(owner.current, "You have the opportunity to grow more ancient. Select a power to advance your Rank.", "Your Blood Thickens...") in options
|
||||
@@ -312,12 +308,10 @@ datum/antagonist/bloodsucker/proc/SpendRank()
|
||||
to_chat(owner.current, "<span class='notice'>You have learned [initial(P.name)]!</span>")
|
||||
else
|
||||
to_chat(owner.current, "<span class='notice'>You grow more ancient by the night!</span>")
|
||||
|
||||
/////////
|
||||
// Advance Powers (including new)
|
||||
LevelUpPowers()
|
||||
|
||||
/////////
|
||||
////////
|
||||
// Advance Stats
|
||||
if (ishuman(owner.current))
|
||||
var/mob/living/carbon/human/H = owner.current
|
||||
@@ -332,34 +326,21 @@ datum/antagonist/bloodsucker/proc/SpendRank()
|
||||
regenRate += 0.05 // Points of brute healed (starts at 0.3)
|
||||
feedAmount += 2 // Increase how quickly I munch down vics (15)
|
||||
maxBloodVolume += 50 // Increase my max blood (600)
|
||||
|
||||
|
||||
/////////
|
||||
|
||||
vamplevel ++
|
||||
vamplevel_unspent --
|
||||
|
||||
// Assign True Reputation
|
||||
if (vamplevel == 4)
|
||||
SelectReputation(am_fledgling=FALSE, forced=TRUE)
|
||||
|
||||
to_chat(owner.current, "<span class='notice'>You are now a rank [vamplevel] Bloodsucker. Your strength, resistence, health, feed rate, regen rate, and maximum blood have all increased!</span>")
|
||||
to_chat(owner.current, "<span class='notice'>Your existing powers have all ranked up as well!</span>")
|
||||
to_chat(owner.current, "<span class='warning'>However, your weakness to fire and sunlight have also increased!</span>")
|
||||
|
||||
update_hud(TRUE)
|
||||
|
||||
owner.current.playsound_local(null, 'sound/effects/pope_entry.ogg', 25, 1) // Play THIS sound for user only. The "null" is where turf would go if a location was needed. Null puts it right in their head.
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
//This handles the application of antag huds/special abilities
|
||||
/datum/antagonist/bloodsucker/apply_innate_effects(mob/living/mob_override)
|
||||
return
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
must_be_capacitated = TRUE
|
||||
can_be_immobilized = TRUE
|
||||
|
||||
|
||||
/datum/action/bloodsucker/gohome/CheckCanUse(display_error)
|
||||
. = ..()
|
||||
if(!.)
|
||||
@@ -28,52 +27,32 @@
|
||||
if (display_error)
|
||||
to_chat(owner, "<span class='warning'>Your coffin has been destroyed!</span>")
|
||||
return FALSE
|
||||
|
||||
return TRUE
|
||||
|
||||
|
||||
|
||||
/datum/action/bloodsucker/gohome/ActivatePower()
|
||||
|
||||
var/mob/living/carbon/user = owner
|
||||
var/datum/antagonist/bloodsucker/bloodsuckerdatum = owner.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER)
|
||||
|
||||
|
||||
// IMPORTANT: Check for lair at every step! It might get destroyed.
|
||||
|
||||
to_chat(user, "<span class='notice'>You focus on separating your consciousness from your physical form...</span>")
|
||||
|
||||
|
||||
// STEP ONE: Flicker Lights
|
||||
|
||||
// From statue.dm
|
||||
for(var/obj/machinery/light/L in view(3, get_turf(owner))) // /obj/machinery/light/proc/flicker(var/amount = rand(10, 20))
|
||||
L.flicker(5)
|
||||
playsound(get_turf(owner), 'sound/effects/singlebeat.ogg', 20, 1)
|
||||
|
||||
sleep(50)
|
||||
|
||||
for(var/obj/machinery/light/L in view(3, get_turf(owner))) // /obj/machinery/light/proc/flicker(var/amount = rand(10, 20))
|
||||
L.flicker(5)
|
||||
playsound(get_turf(owner), 'sound/effects/singlebeat.ogg', 40, 1)
|
||||
|
||||
sleep(50)
|
||||
|
||||
for(var/obj/machinery/light/L in view(6, get_turf(owner))) // /obj/machinery/light/proc/flicker(var/amount = rand(10, 20))
|
||||
L.flicker(5)
|
||||
playsound(get_turf(owner), 'sound/effects/singlebeat.ogg', 60, 1)
|
||||
|
||||
|
||||
// ( STEP TWO: Lights OFF? )
|
||||
|
||||
// CHECK: Still have Coffin?
|
||||
if (!istype(bloodsuckerdatum) || !bloodsuckerdatum.coffin)
|
||||
to_chat(user, "<span class='warning'>Your coffin has been destroyed! You no longer have a destination.</span>")
|
||||
return FALSE
|
||||
|
||||
if (!owner)
|
||||
return
|
||||
|
||||
// SEEN?: (effects ONLY if there are witnesses! Otherwise you just POOF)
|
||||
// NOTE: Stolen directly from statue.dm, thanks guys!
|
||||
var/am_seen = FALSE // Do Effects (seen by anyone)
|
||||
@@ -89,7 +68,6 @@
|
||||
if (!M.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER))
|
||||
drop_item = TRUE
|
||||
break
|
||||
|
||||
// LOSE CUFFS
|
||||
if(user.handcuffed)
|
||||
var/obj/O = user.handcuffed
|
||||
@@ -97,7 +75,6 @@
|
||||
if(user.legcuffed)
|
||||
var/obj/O = user.legcuffed
|
||||
user.dropItemToGround(O)
|
||||
|
||||
// SEEN!
|
||||
if (drop_item)
|
||||
// DROP: Clothes, held items, and cuffs etc
|
||||
@@ -116,7 +93,6 @@
|
||||
puff.effect_type = /obj/effect/particle_effect/smoke/vampsmoke
|
||||
puff.set_up(3, 0, get_turf(owner))
|
||||
puff.start()
|
||||
|
||||
// TELEPORT: Move to Coffin & Close it!
|
||||
do_teleport(owner, bloodsuckerdatum.coffin, no_effects=TRUE) // in teleport.dm?
|
||||
// SLEEP
|
||||
@@ -134,8 +110,6 @@
|
||||
bloodsuckerdatum.coffin.update_icon()
|
||||
// Lock Coffin
|
||||
bloodsuckerdatum.coffin.LockMe(owner)
|
||||
|
||||
|
||||
// ( STEP FIVE: Create animal at prev location? )
|
||||
//var/mob/living/simple_animal/SA = /mob/living/simple_animal/hostile/retaliate/bat // pick(/mob/living/simple_animal/mouse,/mob/living/simple_animal/mouse,/mob/living/simple_animal/mouse, /mob/living/simple_animal/hostile/retaliate/bat) //prob(300) /mob/living/simple_animal/mouse,
|
||||
//new SA (owner.loc)
|
||||
|
||||
@@ -14,10 +14,6 @@
|
||||
message_Trigger = ""//"Whom will you subvert to your will?"
|
||||
bloodsucker_can_buy = TRUE
|
||||
must_be_capacitated = TRUE
|
||||
//var/datum/martial_art/vamphaste/haste_cqc // Assign this when
|
||||
|
||||
|
||||
|
||||
|
||||
/datum/action/bloodsucker/targeted/haste/CheckCanUse(display_error)
|
||||
. = ..()
|
||||
@@ -30,11 +26,9 @@
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
|
||||
/datum/action/bloodsucker/targeted/haste/CheckValidTarget(atom/A)
|
||||
return isturf(A) || A.loc != owner.loc // Anything will do, if it's not me or my square
|
||||
|
||||
|
||||
/datum/action/bloodsucker/targeted/haste/CheckCanTarget(atom/A, display_error)
|
||||
// DEFAULT CHECKS (Distance)
|
||||
if (!..())
|
||||
@@ -44,8 +38,6 @@
|
||||
// return FALSE
|
||||
return TRUE
|
||||
|
||||
|
||||
|
||||
/datum/action/bloodsucker/targeted/haste/FireTargetedPower(atom/A)
|
||||
// set waitfor = FALSE <---- DONT DO THIS!We WANT this power to hold up ClickWithPower(), so that we can unlock the power when it's done.
|
||||
var/mob/living/user = owner
|
||||
@@ -59,7 +51,6 @@
|
||||
while(get_turf(owner) != T && safety > 0 && !(isliving(target) && target.Adjacent(owner)))
|
||||
user.canmove = FALSE //Dont move while doing the thing, or itll break
|
||||
safety --
|
||||
|
||||
// Did I get knocked down?
|
||||
if (owner && owner.incapacitated(ignore_restraints=TRUE,ignore_grab=TRUE))// owner.incapacitated())
|
||||
// We're gonna cancel. But am I on the ground? Spin me!
|
||||
@@ -68,7 +59,6 @@
|
||||
new /datum/forced_movement(owner, get_ranged_target_turf(owner, send_dir, 1), 1, FALSE)
|
||||
owner.spin(10)
|
||||
break
|
||||
|
||||
// Spin/Stun people we pass.
|
||||
//var/mob/living/newtarget = locate(/mob/living) in oview(1, owner)
|
||||
var/list/mob/living/foundtargets = list()
|
||||
@@ -87,7 +77,6 @@
|
||||
if (user)
|
||||
user.update_canmove() //Let the poor guy move again
|
||||
|
||||
|
||||
/datum/action/bloodsucker/targeted/haste/DeactivatePower(mob/living/user = owner, mob/living/target)
|
||||
..() // activate = FALSE
|
||||
user.update_canmove()
|
||||
|
||||
@@ -30,7 +30,6 @@
|
||||
|
||||
// NOTE: Firing off vulgar powers disables your Masquerade!
|
||||
|
||||
|
||||
/*/datum/action/bloodsucker/masquerade/CheckCanUse(display_error)
|
||||
if(!..(display_error))// DEFAULT CHECKS
|
||||
return FALSE
|
||||
|
||||
@@ -24,8 +24,11 @@
|
||||
var/prev_hair_color
|
||||
var/prev_facial_hair_color
|
||||
var/prev_underwear
|
||||
var/prev_undie_color
|
||||
var/prev_undershirt
|
||||
var/prev_shirt_color
|
||||
var/prev_socks
|
||||
var/prev_socks_color
|
||||
var/prev_disfigured
|
||||
var/list/prev_features // For lizards and such
|
||||
|
||||
@@ -72,13 +75,16 @@
|
||||
prev_hair_color = H.hair_color
|
||||
prev_facial_hair_color = H.facial_hair_color
|
||||
prev_underwear = H.underwear
|
||||
prev_undie_color = H.undie_color
|
||||
prev_undershirt = H.undershirt
|
||||
prev_shirt_color = H.shirt_color
|
||||
prev_socks = H.socks
|
||||
prev_socks_color = H.socks_color
|
||||
//prev_eye_color
|
||||
prev_disfigured = HAS_TRAIT(H, TRAIT_DISFIGURED) // I was disfigured! //prev_disabilities = H.disabilities
|
||||
prev_features = H.dna.features
|
||||
|
||||
// Change Appearance
|
||||
// Change Appearance, not randomizing clothes colour, itll just be janky
|
||||
H.gender = pick(MALE, FEMALE)
|
||||
H.skin_tone = random_skin_tone()
|
||||
H.hair_style = random_hair_style(H.gender)
|
||||
@@ -127,8 +133,11 @@
|
||||
H.hair_color = prev_hair_color
|
||||
H.facial_hair_color = prev_facial_hair_color
|
||||
H.underwear = prev_underwear
|
||||
H.undie_color = prev_undie_color
|
||||
H.undershirt = prev_undershirt
|
||||
H.shirt_color = prev_shirt_color
|
||||
H.socks = prev_socks
|
||||
H.socks_color = prev_socks_color
|
||||
|
||||
//H.disabilities = prev_disabilities // Restore HUSK, CLUMSY, etc.
|
||||
if (prev_disfigured)
|
||||
|
||||
@@ -1,7 +1,3 @@
|
||||
|
||||
|
||||
|
||||
|
||||
/datum/action/bloodsucker/vassal/recuperate
|
||||
name = "Sanguine Recuperation"
|
||||
desc = "Slowly heal brute damage while active. This process is exhausting, and requires some of your tainted blood."
|
||||
@@ -9,9 +5,6 @@
|
||||
amToggle = TRUE
|
||||
bloodcost = 5
|
||||
cooldown = 100
|
||||
|
||||
|
||||
|
||||
// Deal STAMINA damage over time, trickle down blood, and heal wounds.
|
||||
|
||||
/datum/action/bloodsucker/vassal/recuperate/CheckCanUse(display_error)
|
||||
|
||||
Reference in New Issue
Block a user