This commit is contained in:
Artur
2019-12-01 00:07:07 +02:00
parent a6e6274039
commit 9b20879ba5
8 changed files with 28 additions and 81 deletions
@@ -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)