mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-09 16:14:13 +00:00
* seer propension * text * colors * implant distinction * debug HUD * revert * language fixes
This commit is contained in:
@@ -175,6 +175,13 @@
|
||||
#define CONVERSION_NOCHOICE 0
|
||||
#define CONVERSION_ACCEPT 1
|
||||
|
||||
#define CONVERTIBLE_ALWAYS 1
|
||||
#define CONVERTIBLE_CHOICE 2
|
||||
#define CONVERTIBLE_NEVER 3
|
||||
#define CONVERTIBLE_NOMIND 4
|
||||
#define CONVERTIBLE_ALREADY 5
|
||||
#define CONVERTIBLE_IMPLANT 6
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// -- Objectives flags
|
||||
|
||||
@@ -906,6 +906,7 @@ SEE_PIXELS 256
|
||||
#define DIAG_HEALTH_HUD "diag_health" // Diagnostic HUD - health bar
|
||||
#define DIAG_CELL_HUD "diag_cell" // Diagnostic HUD - power cell status for cyborgs, mechs
|
||||
#define CONSTRUCT_HUD "const_health" // Artificer HUD
|
||||
#define CONVERSION_HUD "convertibility" // Convertibility HUD
|
||||
|
||||
// Hypothermia - using the swiss staging system. - called by the proc undergoing_hypothermia() in handle_hypothermia.dm
|
||||
#define NO_HYPOTHERMIA 0 // >35C - Fine
|
||||
|
||||
@@ -917,6 +917,71 @@ var/static/list/valid_cultpower_slots = list(
|
||||
|
||||
return power
|
||||
|
||||
/mob/proc/get_convertibility()
|
||||
if (!mind || isDead())
|
||||
return CONVERTIBLE_NOMIND
|
||||
|
||||
if (iscultist(src))
|
||||
return CONVERTIBLE_ALREADY
|
||||
|
||||
return 0
|
||||
|
||||
/mob/living/carbon/get_convertibility()
|
||||
var/convertibility = ..()
|
||||
|
||||
if (!convertibility)
|
||||
//TODO: chaplain stuff
|
||||
//this'll do in the meantime
|
||||
if (mind.assigned_role == "Chaplain")
|
||||
return CONVERTIBLE_NEVER
|
||||
|
||||
var/acceptance = "Never"
|
||||
if (client)
|
||||
acceptance = get_role_desire_str(client.prefs.roles[CULTIST])
|
||||
|
||||
if (jobban_isbanned(src, CULTIST) || isantagbanned(src) || (acceptance == "Never"))
|
||||
return CONVERTIBLE_NEVER
|
||||
|
||||
for(var/obj/item/weapon/implant/loyalty/I in src)
|
||||
if(I.implanted)
|
||||
return CONVERTIBLE_IMPLANT
|
||||
|
||||
if (acceptance == "Always" || acceptance == "Yes")
|
||||
return CONVERTIBLE_ALWAYS
|
||||
|
||||
return CONVERTIBLE_CHOICE
|
||||
|
||||
return convertibility//no mind, dead, or already a cultist
|
||||
|
||||
/mob/living/carbon/proc/update_convertibility()
|
||||
var/convertibility = get_convertibility()
|
||||
var/image/I = image('icons/mob/hud.dmi', src, "hudblank")
|
||||
switch(convertibility)
|
||||
if (CONVERTIBLE_ALWAYS)
|
||||
I.icon_state = "convertible"
|
||||
if (CONVERTIBLE_CHOICE)
|
||||
I.icon_state = "maybeconvertible"
|
||||
if (CONVERTIBLE_IMPLANT)
|
||||
I.icon_state = "unconvertible"
|
||||
if (CONVERTIBLE_NEVER)
|
||||
I.icon_state = "unconvertible2"
|
||||
|
||||
I.pixel_y = 16 * PIXEL_MULTIPLIER
|
||||
I.plane = ANTAG_HUD_PLANE
|
||||
|
||||
//inspired from the rune color matrix because boy am I proud of it
|
||||
animate(I, color = list(2,0.67,0.27,0,0.27,2,0.67,0,0.67,0.27,2,0,0,0,0,1,0,0,0,0), time = 2)//9
|
||||
animate(color = list(1.875,0.56,0.19,0,0.19,1.875,0.56,0,0.56,0.19,1.875,0,0,0,0,1,0,0,0,0), time = 1.7)//8
|
||||
animate(color = list(1.75,0.45,0.12,0,0.12,1.75,0.45,0,0.45,0.12,1.75,0,0,0,0,1,0,0,0,0), time = 1.4)//7
|
||||
animate(color = list(1.625,0.35,0.06,0,0.06,1.625,0.35,0,0.35,0.06,1.625,0,0,0,0,1,0,0,0,0), time = 1.1)//6
|
||||
animate(color = list(1.5,0.27,0,0,0,1.5,0.27,0,0.27,0,1.5,0,0,0,0,1,0,0,0,0), time = 0.8)//5
|
||||
animate(color = list(1.375,0.19,0,0,0,1.375,0.19,0,0.19,0,1.375,0,0,0,0,1,0,0,0,0), time = 0.5)//4
|
||||
animate(color = list(1.25,0.12,0,0,0,1.25,0.12,0,0.12,0,1.25,0,0,0,0,1,0,0,0,0), time = 0.2)//3
|
||||
animate(color = list(1.125,0.06,0,0,0,1.125,0.06,0,0.06,0,1.125,0,0,0,0,1,0,0,0,0), time = 0.1)//2
|
||||
animate(color = list(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0), time = 5)//1
|
||||
|
||||
hud_list[CONVERSION_HUD] = I
|
||||
|
||||
//WARNING: setting to "3" will trigger the rise of bloodstones.
|
||||
/client/proc/set_veil_thickness()
|
||||
set category = "Special Verbs"
|
||||
|
||||
@@ -1709,8 +1709,8 @@ var/list/blind_victims = list()
|
||||
//RUNE XI
|
||||
/datum/rune_spell/blood_cult/seer
|
||||
name = "Seer"
|
||||
desc = "See the invisible, the dead, the concealed. If you give them a writing sheet, they may relay a message to you."
|
||||
desc_talisman = "For a few seconds, you may see the invisible, the dead, the concealed. If you give them a writing sheet, they may relay a message to you."
|
||||
desc = "See the invisible, the dead, the concealed, and the propensity of the living to serve our agenda."
|
||||
desc_talisman = "For a whole minute, you may see the invisible, the dead, the concealed, and the propensity of the living to serve our agenda."
|
||||
Act_restriction = CULT_ACT_I
|
||||
invocation = "Rash'tla sektath mal'zua. Zasan therium viortia."
|
||||
rune_flags = RUNE_STAND
|
||||
@@ -1718,14 +1718,14 @@ var/list/blind_victims = list()
|
||||
word1 = /datum/runeword/blood_cult/see
|
||||
word2 = /datum/runeword/blood_cult/hell
|
||||
word3 = /datum/runeword/blood_cult/join
|
||||
page = "This rune grants you the ability to see the invisible, including observers and concealed runes and structures. The talisman version has 5 uses, which grant you the ability for 8 seconds each. Remember that runes can still be activated while they are concealed! "
|
||||
page = "This rune grants the ability to see invisible ghosts, runes, and structures. It also reveals the willingness of crew members to accept conversion. You can activate runes while they are concealed. In talisman form, it has five uses and lasts for a minute each. Activate the talisman before moving into a public area."
|
||||
cost_invoke = 5
|
||||
var/obj/effect/cult_ritual/seer/seer_ritual = null
|
||||
var/talisman_duration = 80 //tenths of a second
|
||||
var/talisman_duration = 60 SECONDS
|
||||
|
||||
/datum/rune_spell/blood_cult/seer/Destroy()
|
||||
destroying_self = 1
|
||||
if (seer_ritual)
|
||||
if (seer_ritual && !seer_ritual.talisman)
|
||||
qdel(seer_ritual)
|
||||
seer_ritual = null
|
||||
..()
|
||||
@@ -1743,12 +1743,10 @@ var/list/blind_victims = list()
|
||||
var/mob/living/M = activator
|
||||
M.see_invisible_override = SEE_INVISIBLE_OBSERVER
|
||||
M.apply_vision_overrides()
|
||||
to_chat(M, "<span class='notice'>As the talisman disappears into dust, you find yourself able to see through the gaps in the veil. You can see and interact with the other side, for a few seconds.</span>")
|
||||
anim(target = M, a_icon = 'icons/effects/160x160.dmi', a_icon_state = "rune_seer", lay = ABOVE_OBJ_LAYER, offX = -WORLD_ICON_SIZE*2, offY = -WORLD_ICON_SIZE*2, plane = OBJ_PLANE, invis = INVISIBILITY_OBSERVER, alph = 200, sleeptime = talisman_duration)
|
||||
var/obj/effect/cult_ritual/seer/ritual = new (activator,activator,null,TRUE)
|
||||
spawn(talisman_duration)
|
||||
M.see_invisible_override = 0
|
||||
M.apply_vision_overrides()
|
||||
to_chat(M, "<span class='notice'>You can no longer discern through the veil.</span>")
|
||||
qdel(ritual)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/cult_ritual/seer
|
||||
@@ -1765,10 +1763,13 @@ var/list/blind_victims = list()
|
||||
flags = PROXMOVE
|
||||
var/mob/living/caster = null
|
||||
var/datum/rune_spell/blood_cult/seer/source = null
|
||||
var/list/propension = list()
|
||||
var/talisman = FALSE
|
||||
|
||||
|
||||
/obj/effect/cult_ritual/seer/New(var/turf/loc, var/mob/living/user, var/datum/rune_spell/blood_cult/seer/runespell)
|
||||
/obj/effect/cult_ritual/seer/New(var/turf/loc, var/mob/living/user, var/datum/rune_spell/blood_cult/seer/runespell,var/talisman_ritual = FALSE)
|
||||
..()
|
||||
processing_objects.Add(src)
|
||||
talisman = talisman_ritual
|
||||
caster = user
|
||||
source = runespell
|
||||
if (!caster)
|
||||
@@ -1778,10 +1779,12 @@ var/list/blind_victims = list()
|
||||
return
|
||||
caster.see_invisible_override = SEE_INVISIBLE_OBSERVER
|
||||
caster.apply_vision_overrides()
|
||||
to_chat(caster, "<span class='notice'>You find yourself able to see through the gaps in the veil. You can see and interact with the other side.</span>")
|
||||
to_chat(caster, "<span class='notice'>You find yourself able to see through the gaps in the veil. You can see and interact with the other side, and also find out the crew's propensity to be successfully converted, whether they are <b><font color='green'>Willing</font></b>, <b><font color='orange'>Uncertain</font></b>, or <b><font color='red'>Unconvertible</font></b>.</span>")
|
||||
|
||||
/obj/effect/cult_ritual/seer/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
if (caster)
|
||||
caster.client.images -= propension
|
||||
caster.see_invisible_override = 0
|
||||
caster.apply_vision_overrides()
|
||||
to_chat(caster, "<span class='notice'>You can no longer discern through the veil.</span>")
|
||||
@@ -1792,8 +1795,20 @@ var/list/blind_victims = list()
|
||||
..()
|
||||
|
||||
/obj/effect/cult_ritual/seer/HasProximity(var/atom/movable/AM)
|
||||
if (!caster || caster.loc != loc)
|
||||
qdel(src)
|
||||
if (!talisman)
|
||||
if (!caster || caster.loc != loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/cult_ritual/seer/process()
|
||||
if (caster && caster.client)
|
||||
caster.client.images -= propension
|
||||
propension.len = 0
|
||||
|
||||
for(var/mob/living/carbon/C in dview(world.view, get_turf(src), INVISIBILITY_MAXIMUM))
|
||||
C.update_convertibility()
|
||||
propension += C.hud_list[CONVERSION_HUD]
|
||||
|
||||
caster.client.images += propension
|
||||
|
||||
|
||||
//RUNE XII
|
||||
|
||||
@@ -196,6 +196,7 @@ var/list/admin_verbs_debug = list(
|
||||
/client/proc/cure_disease,
|
||||
/client/proc/check_bomb,
|
||||
/client/proc/check_convertables,
|
||||
/client/proc/toggle_convertibles,
|
||||
/client/proc/check_spiral,
|
||||
/client/proc/check_striketeams,
|
||||
/client/proc/cmd_admin_find_bad_blood_tracks,
|
||||
|
||||
@@ -1217,6 +1217,24 @@ client/proc/check_convertables()
|
||||
|
||||
to_chat(usr, dat)
|
||||
|
||||
|
||||
client/proc/toggle_convertibles()
|
||||
set name = "Toggle Convertibles HUD (Cult 3.0+)"
|
||||
set category = "Debug"
|
||||
set desc = "Displays a marker over crew members showing their propension to get converted."
|
||||
|
||||
var/mob/dead/observer/adminmob = mob
|
||||
if (!isobserver(adminmob))
|
||||
alert("Only observers can use this functionality")
|
||||
return
|
||||
|
||||
if(adminmob.conversionHUD)
|
||||
adminmob.conversionHUD = 0
|
||||
to_chat(src, "<span class='notice'><B>conversionHUD Disabled</B></span>")
|
||||
else
|
||||
adminmob.conversionHUD = 1
|
||||
to_chat(src, "<span class='notice'><B>conversionHUD Enabled</B></span>")
|
||||
|
||||
/client/proc/spawn_datum(var/object as text)
|
||||
set category = "Debug"
|
||||
set desc = "(datum path) Spawn a datum (turfs NOT supported)"
|
||||
|
||||
@@ -39,6 +39,7 @@ var/creating_arena = FALSE
|
||||
var/selectedHUD = HUD_NONE // HUD_NONE, HUD_MEDICAL or HUD_SECURITY
|
||||
var/diagHUD = FALSE
|
||||
var/antagHUD = 0
|
||||
var/conversionHUD = 0
|
||||
incorporeal_move = INCORPOREAL_GHOST
|
||||
var/movespeed = 0.75
|
||||
var/lastchairspin
|
||||
@@ -231,13 +232,29 @@ Works together with spawning an observer, noted above.
|
||||
return 0
|
||||
|
||||
regular_hud_updates()
|
||||
|
||||
//cleaning up antagHUD and conversionHUD icons
|
||||
if(client)
|
||||
for(var/image/hud in client.images)
|
||||
if(findtext(hud.icon_state, "convertible") || findtext(hud.icon_state, "-logo"))
|
||||
client.images -= hud
|
||||
|
||||
if(antagHUD)
|
||||
var/list/target_list = list()
|
||||
for(var/mob/living/target in oview(src))
|
||||
if( target.mind&&(target.mind.antag_roles.len > 0 || issilicon(target) || target.hud_list[SPECIALROLE_HUD]) )
|
||||
target_list += target
|
||||
if(target_list.len)
|
||||
assess_targets(target_list, src)
|
||||
assess_antagHUD(target_list, src)
|
||||
|
||||
if(conversionHUD)
|
||||
var/list/target_list = list()
|
||||
for(var/mob/living/carbon/target in oview(src))
|
||||
if(target.mind && target.hud_list[CONVERSION_HUD])
|
||||
target_list += target
|
||||
if(target_list.len)
|
||||
assess_conversionHUD(target_list, src)
|
||||
|
||||
if(selectedHUD == HUD_MEDICAL)
|
||||
process_medHUD(src)
|
||||
else if(selectedHUD == HUD_SECURITY)
|
||||
@@ -348,7 +365,7 @@ Works together with spawning an observer, noted above.
|
||||
holder.icon_state = "hudhealthy"
|
||||
C.images += holder
|
||||
|
||||
/mob/dead/proc/assess_targets(list/target_list, mob/dead/observer/U)
|
||||
/mob/dead/proc/assess_antagHUD(list/target_list, mob/dead/observer/U)
|
||||
for(var/mob/living/target in target_list)
|
||||
if(target.mind)
|
||||
var/image/I
|
||||
@@ -378,7 +395,13 @@ Works together with spawning an observer, noted above.
|
||||
U.client.images += image('icons/mob/hud.dmi',silicon_target,"hudmalborg")
|
||||
else
|
||||
U.client.images += image('icons/mob/hud.dmi',silicon_target,"hudmalai")
|
||||
return 1
|
||||
|
||||
/mob/dead/proc/assess_conversionHUD(list/target_list, mob/dead/observer/U)
|
||||
for(var/mob/living/carbon/target in target_list)
|
||||
if(target.mind)
|
||||
U.client.images -= target.hud_list[CONVERSION_HUD]
|
||||
target.update_convertibility()
|
||||
U.client.images += target.hud_list[CONVERSION_HUD]
|
||||
|
||||
/mob/proc/ghostize(var/flags = GHOST_CAN_REENTER,var/deafmute = 0)
|
||||
if(key && !(copytext(key,1,2)=="@"))
|
||||
|
||||
@@ -27,6 +27,10 @@
|
||||
status_flags = CANSTUN|CANKNOCKDOWN|CANPARALYSE|CANPUSH
|
||||
var/obj/item/device/station_map/displayed_holomap = null
|
||||
|
||||
/mob/living/carbon/New(var/new_loc, var/new_species_name = null, var/delay_ready_dna=0)
|
||||
..()
|
||||
hud_list[CONVERSION_HUD] = image('icons/mob/hud.dmi', src, "hudblank")
|
||||
|
||||
/mob/living/carbon/Destroy()
|
||||
if (mutual_handcuffs && mutual_handcuffed_to)
|
||||
mutual_handcuffs.remove_mutual_cuff_events(mutual_handcuffed_to)
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 8.3 KiB After Width: | Height: | Size: 9.6 KiB |
Reference in New Issue
Block a user