-
-
Notifications
You must be signed in to change notification settings - Fork 444
/
Copy pathmasquerade.dm
135 lines (128 loc) · 6.33 KB
/
masquerade.dm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/**
* # WITHOUT THIS POWER:
*
* - Mid-Blood: SHOW AS PALE
* - Low-Blood: SHOW AS DEAD
* - No Heartbeat
* - Examine shows actual blood
* - Thermal homeostasis (ColdBlooded)
* WITH THIS POWER:
* - Normal body temp -- remove Cold Blooded (return on deactivate)
*/
/datum/action/cooldown/bloodsucker/masquerade
name = "Masquerade"
desc = "Feign the vital signs of a mortal, and escape both casual and medical notice as the monster you truly are."
button_icon_state = "power_human"
power_explanation = "Masquerade:\n\
Activating Masquerade will forge your identity to be practically identical to that of a human;\n\
- You lose nearly all Bloodsucker benefits, including healing, sleep, radiation, crit, virus and cold immunity.\n\
- Your eyes turn to that of a regular human as your heart begins to beat.\n\
- You gain a Genetic sequence, and appear to have 100% blood when scanned by a Health Analyzer.\n\
- You will not appear as Pale when examined. Anything further than Pale, however, will not be hidden.\n\
At the end of a Masquerade, you will re-gain your Vampiric abilities, as well as lose any Disease & Gene you might have."
power_flags = BP_AM_TOGGLE|BP_AM_STATIC_COOLDOWN
check_flags = BP_CANT_USE_IN_FRENZY|BP_AM_COSTLESS_UNCONSCIOUS
purchase_flags = BLOODSUCKER_CAN_BUY|BLOODSUCKER_DEFAULT_POWER
bloodcost = 10
cooldown_time = 5 SECONDS
constant_bloodcost = 0.1
var/list/theqdeld = list()
/datum/action/cooldown/bloodsucker/masquerade/ActivatePower()
. = ..()
var/mob/living/carbon/user = owner
to_chat(user, span_notice("Your heart beats falsely within your lifeless chest. You may yet pass for a mortal."))
to_chat(user, span_warning("Your vampiric healing is halted while imitating life."))
// Remove Clan-specific stuff
var/datum/antagonist/bloodsucker/bloodsuckerdatum = user.mind.has_antag_datum(/datum/antagonist/bloodsucker)
if(bloodsuckerdatum.my_clan)
switch(bloodsuckerdatum.my_clan.get_clan())
if(CLAN_TZIMISCE)
bloodsuckerdatum.antag_hud_name = "bloodsucker"
if(CLAN_GANGREL)
if(bloodsuckerdatum.clanprogress >= 1) // change this if we get more stuff to include other clans
var/obj/item/clothing/neck/neckdrip = user.get_item_by_slot(ITEM_SLOT_NECK)
if(istype(neckdrip, /obj/item/clothing/neck/wolfcollar))
theqdeld += neckdrip
if(bloodsuckerdatum.clanprogress >= 2)
var/obj/item/earsdrip = user.get_item_by_slot(ITEM_SLOT_EARS)
if(istype(earsdrip, /obj/item/radio/headset/wolfears))
theqdeld += earsdrip
if(bloodsuckerdatum.clanprogress >= 3)
var/obj/item/clothing/gloves/glovesdrip = user.get_item_by_slot(ITEM_SLOT_GLOVES)
if(istype(glovesdrip, /obj/item/clothing/gloves/wolfclaws))
theqdeld += glovesdrip
if(bloodsuckerdatum.clanprogress >= 4)
var/obj/item/clothing/shoes/shoesdrip = user.get_item_by_slot(ITEM_SLOT_FEET)
if(istype(shoesdrip , /obj/item/clothing/shoes/wolflegs))
theqdeld += shoesdrip
QDEL_LIST(theqdeld)
// Remove Bloodsucker traits
user.remove_traits(bloodsuckerdatum_power.bloodsucker_traits, BLOODSUCKER_TRAIT)
// Falsifies Health & Genetic Analyzers
ADD_TRAIT(user, TRAIT_MASQUERADE, BLOODSUCKER_TRAIT)
// Organs
var/obj/item/organ/eyes/eyes = user.getorganslot(ORGAN_SLOT_EYES)
eyes.flash_protect = initial(eyes.flash_protect)
var/obj/item/organ/heart/vampheart = user.getorganslot(ORGAN_SLOT_HEART)
vampheart.beating = TRUE
user.apply_status_effect(STATUS_EFFECT_MASQUERADE)
/datum/action/cooldown/bloodsucker/masquerade/DeactivatePower()
. = ..() // activate = FALSE
var/mob/living/carbon/user = owner
user.remove_status_effect(STATUS_EFFECT_MASQUERADE)
user.add_traits(bloodsuckerdatum_power.bloodsucker_traits, BLOODSUCKER_TRAIT)
REMOVE_TRAIT(user, TRAIT_MASQUERADE, BLOODSUCKER_TRAIT)
// Remove genes, then make unable to get new ones.
user.dna.remove_all_mutations()
// Organs
var/obj/item/organ/heart/vampheart = user.getorganslot(ORGAN_SLOT_HEART)
vampheart.beating = FALSE
var/obj/item/organ/eyes/eyes = user.getorganslot(ORGAN_SLOT_EYES)
if(eyes)
eyes.flash_protect = max(initial(eyes.flash_protect) - 1, - 1)
// Remove all diseases
for(var/thing in user.diseases)
var/datum/disease/disease = thing
disease.cure()
// Adds Clan-specific stuff
var/datum/antagonist/bloodsucker/bloodsuckerdatum = user.mind.has_antag_datum(/datum/antagonist/bloodsucker)
if(bloodsuckerdatum.my_clan)
switch(bloodsuckerdatum.my_clan.get_clan())
if(CLAN_TZIMISCE)
bloodsuckerdatum.antag_hud_name = "tzimisce"
if(CLAN_GANGREL)
if(bloodsuckerdatum.clanprogress >= 1) // change this if we get more stuff to include other clans
var/obj/item/clothing/neck/previousdrip = user.get_item_by_slot(ITEM_SLOT_NECK)
user.dropItemToGround(previousdrip)
user.equip_to_slot_or_del(new /obj/item/clothing/neck/wolfcollar(user), ITEM_SLOT_NECK)
if(bloodsuckerdatum.clanprogress >= 2)
var/obj/item/clothing/ears/previousdrip = user.get_item_by_slot(ITEM_SLOT_EARS)
user.dropItemToGround(previousdrip)
user.equip_to_slot_or_del(new /obj/item/radio/headset/wolfears(user), ITEM_SLOT_EARS)
if(bloodsuckerdatum.clanprogress >= 3)
var/obj/item/clothing/gloves/previousdrip = user.get_item_by_slot(ITEM_SLOT_GLOVES)
user.dropItemToGround(previousdrip)
user.equip_to_slot_or_del(new /obj/item/clothing/gloves/wolfclaws(user), ITEM_SLOT_GLOVES)
if(bloodsuckerdatum.clanprogress >= 4)
var/obj/item/clothing/shoes/previousdrip = user.get_item_by_slot(ITEM_SLOT_FEET)
user.dropItemToGround(previousdrip)
user.equip_to_slot_or_del(new /obj/item/clothing/shoes/wolflegs(user), ITEM_SLOT_FEET)
to_chat(user, span_notice("Your heart beats one final time, while your skin dries out and your icy pallor returns."))
/**
* # Status effect
*
* This is what the Masquerade power gives, handles their bonuses and gives them a neat icon to tell them they're on Masquerade.
*/
/datum/status_effect/masquerade
id = "masquerade"
duration = -1
tick_interval = -1
alert_type = /atom/movable/screen/alert/status_effect/masquerade
/atom/movable/screen/alert/status_effect/masquerade
name = "Masquerade"
desc = "You are currently hiding your identity using the Masquerade power. This halts Vampiric healing."
icon = 'icons/mob/actions/actions_bloodsucker.dmi'
icon_state = "power_human"
/atom/movable/screen/alert/status_effect/masquerade/MouseEntered(location,control,params)
desc = initial(desc)
return ..()