mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-22 12:29:46 +01:00
Vampire Progression
Implements the power datums and adds vampire progression. Balancing needs to be done later in the game.
This commit is contained in:
@@ -1,4 +1,88 @@
|
||||
var/list/datum/power/vampire/vampirepowers = typesof(/datum/power/vampire) - /datum/power/vampire
|
||||
|
||||
/datum/power/vampire
|
||||
var/total_cost = 0
|
||||
var/blood_cost = 0
|
||||
|
||||
/datum/power/vampire/drain_blood
|
||||
name = "Drain Blood"
|
||||
desc = "Feed on the blood of a humanoid creature in order to gain further power."
|
||||
blood_cost = 0
|
||||
verbpath = /mob/living/carbon/human/proc/vampire_drain_blood
|
||||
|
||||
/datum/power/vampire/blood_heal
|
||||
name = "Blood Heal"
|
||||
desc = "At the cost of time and blood, heal any injuries you have sustained."
|
||||
helptext = "You must remain uninterrupted in order to heal yourself."
|
||||
blood_cost = 0
|
||||
verbpath = /mob/living/carbon/human/proc/vampire_bloodheal
|
||||
|
||||
/datum/power/vampire/glare
|
||||
name = "Glare"
|
||||
desc = "Through blood magic, you stun those who are not wearing eye protection and are in your immediate proximity."
|
||||
blood_cost = 0
|
||||
verbpath = /mob/living/carbon/human/proc/vampire_glare
|
||||
|
||||
/datum/power/vampire/hypnotise
|
||||
name = "Hypnotise"
|
||||
desc = "You overwhelm the mind of your victim, rendering them unable to act for a short period of time."
|
||||
helptext = "Requires that both you and your victim stay still for a short duration."
|
||||
blood_cost = 0
|
||||
verbpath = /mob/living/carbon/human/proc/vampire_hypnotise
|
||||
|
||||
/datum/power/vampire/presence
|
||||
name = "Presence"
|
||||
desc = "Passively influence mortals around you, making them more open towards your presence."
|
||||
helptext = "While active, people around will receive social cues to be friendlier towards your character."
|
||||
blood_cost = 50
|
||||
verbpath = /mob/living/carbon/human/proc/vampire_presence
|
||||
|
||||
/datum/power/vampire/veil_step
|
||||
name = "Veil Step"
|
||||
desc = "Enter the Veil for a moment, and skip to a shadow of your choosing."
|
||||
helptext = "Right click on any tile to activate. If the tile is covered in shadows to any measure, you will teleport there."
|
||||
blood_cost = 100
|
||||
verbpath = /mob/living/carbon/human/proc/vampire_veilstep
|
||||
|
||||
/datum/power/vampire/diseased_touch
|
||||
name = "Diseased Touch"
|
||||
desc = "Infect a victim with corruption from the Veil, causing their organs to fail in a short amount of time."
|
||||
blood_cost = 200
|
||||
verbpath = /mob/living/carbon/human/proc/vampire_diseasedtouch
|
||||
|
||||
/datum/power/vampire/dominate
|
||||
name = "Dominate"
|
||||
desc = "Influence those weak of mind to follow your instructions."
|
||||
helptext = "You and your target must remain stationary for a short period of time for this to work. You can then issue a command to your victim that they must follow in the short term."
|
||||
blood_cost = 150
|
||||
verbpath = /mob/living/carbon/human/proc/vampire_dominate
|
||||
|
||||
/datum/power/vampire/bats
|
||||
name = "Summon Bats"
|
||||
desc = "Tear open the Veil for a moment, and summon forth familiars to assist you in abttle."
|
||||
blood_cost = 200
|
||||
verbpath = /mob/living/carbon/human/proc/vampire_bats
|
||||
|
||||
/datum/power/vampire/screech
|
||||
name = "Chiropteran Screech"
|
||||
desc = "Emit a powerful screech which shatters glass within a large radius, and stuns those who hear it."
|
||||
blood_cost = 200
|
||||
verbpath = /mob/living/carbon/human/proc/vampire_screech
|
||||
|
||||
/datum/power/vampire/veil_walk
|
||||
name = "Veil Walking"
|
||||
desc = "You can enter the Veil for a long duration of time, leaving behind only an incorporeal manifestation of yourself."
|
||||
helptext = "While veil walking, you can walk through all solid objects and people. Others can see you, but they cannot interact with you. As you stay in this form, you will keep draining your blood."
|
||||
blood_cost = 250
|
||||
verbpath = /mob/living/carbon/human/proc/vampire_veilwalk
|
||||
|
||||
/datum/power/vampire/enthrall
|
||||
name = "Enthrall"
|
||||
desc = "Invoke a bloodbond between yourself and a mortal soul. They will then become your slave, required to execute your every command. They will be dependant on your blood."
|
||||
blood_cost = 300
|
||||
verbpath = /mob/living/carbon/human/proc/vampire_enthrall
|
||||
|
||||
/datum/power/vampire/embrace
|
||||
name = "The Embrace"
|
||||
desc = "Corrupt another innocent soul with the power of the Veil. They will become your kin: a vampire."
|
||||
blood_cost = 500
|
||||
verbpath = /mob/living/carbon/human/proc/vampire_embrace
|
||||
|
||||
@@ -19,4 +19,20 @@
|
||||
is_thrall = 1
|
||||
|
||||
/datum/vampire/proc/add_power(var/datum/mind/vampire, var/datum/power/vampire/power, var/announce = 0)
|
||||
return
|
||||
if (!vampire || !power)
|
||||
return
|
||||
|
||||
if (power in purchased_powers)
|
||||
return
|
||||
|
||||
purchased_powers += power
|
||||
|
||||
if (power.isVerb && power.verbpath)
|
||||
vampire.current.verbs += power.verbpath
|
||||
|
||||
if (announce)
|
||||
vampire.current << "<span class='notice'><b>You have unlocked a new power:</b> [power.name].</span>"
|
||||
vampire.current << "<span class='notice'>[power.desc]</span>"
|
||||
|
||||
if (power.helptext)
|
||||
vampire.current << "<font color='green'>[power.helptext]</font>"
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
mind.vampire = new /datum/vampire()
|
||||
|
||||
for (var/datum/power/vampire/P in vampirepowers)
|
||||
if (!P.total_cost)
|
||||
if (!P.blood_cost)
|
||||
if (!(P in mind.vampire.purchased_powers))
|
||||
mind.vampire.add_power(mind, P, 0)
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
var/datum/vampire/vampire = mind.vampire
|
||||
|
||||
for (var/datum/power/vampire/P in vampirepowers)
|
||||
if (P.total_cost <= vampire.blood_total)
|
||||
if (P.blood_cost <= vampire.blood_total)
|
||||
if (!(P in vampire.purchased_powers))
|
||||
vampire.add_power(mind, P, 1)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user