From 91db04eb3f04bf86e9411e972b048bd0dd49138e Mon Sep 17 00:00:00 2001 From: skull132 Date: Thu, 5 May 2016 23:10:15 +0300 Subject: [PATCH] Vampire Progression Implements the power datums and adds vampire progression. Balancing needs to be done later in the game. --- .../game/gamemodes/vampire/modular_vampire.dm | 86 ++++++++++++++++++- code/game/gamemodes/vampire/vampire_datum.dm | 18 +++- .../game/gamemodes/vampire/vampire_helpers.dm | 4 +- 3 files changed, 104 insertions(+), 4 deletions(-) diff --git a/code/game/gamemodes/vampire/modular_vampire.dm b/code/game/gamemodes/vampire/modular_vampire.dm index e755ff6abcd..ff946acea87 100644 --- a/code/game/gamemodes/vampire/modular_vampire.dm +++ b/code/game/gamemodes/vampire/modular_vampire.dm @@ -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 diff --git a/code/game/gamemodes/vampire/vampire_datum.dm b/code/game/gamemodes/vampire/vampire_datum.dm index 92d9c69acc0..0cf87db5c6d 100644 --- a/code/game/gamemodes/vampire/vampire_datum.dm +++ b/code/game/gamemodes/vampire/vampire_datum.dm @@ -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 << "You have unlocked a new power: [power.name]." + vampire.current << "[power.desc]" + + if (power.helptext) + vampire.current << "[power.helptext]" diff --git a/code/game/gamemodes/vampire/vampire_helpers.dm b/code/game/gamemodes/vampire/vampire_helpers.dm index cedb803a165..125d9c346bf 100644 --- a/code/game/gamemodes/vampire/vampire_helpers.dm +++ b/code/game/gamemodes/vampire/vampire_helpers.dm @@ -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)