mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-20 20:45:28 +01:00
Merge branch 'master' of https://github.com/tgstation/-tg-station into action_action_action_action_action
Conflicts: icons/mob/actions.dmi
This commit is contained in:
@@ -385,6 +385,11 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
if(href_list["reenter"])
|
||||
reenter_corpse()
|
||||
|
||||
//We don't want to update the current var
|
||||
//But we will still carry a mind.
|
||||
/mob/dead/observer/mind_initialize()
|
||||
return
|
||||
|
||||
/mob/dead/observer/verb/toggle_ghosthud()
|
||||
set name = "Toggle Ghost HUD"
|
||||
set desc = "Toggles your ghost's on-screen HUD"
|
||||
|
||||
@@ -67,7 +67,7 @@ var/const/ALIEN_AFK_BRACKET = 450 // 45 seconds
|
||||
|
||||
/obj/item/organ/internal/body_egg/alien_embryo/proc/AttemptGrow(gib_on_success = 1)
|
||||
if(!owner) return
|
||||
var/list/candidates = get_candidates(BE_ALIEN, ALIEN_AFK_BRACKET, "alien candidate")
|
||||
var/list/candidates = get_candidates(ROLE_ALIEN, ALIEN_AFK_BRACKET, "alien candidate")
|
||||
var/client/C = null
|
||||
|
||||
// To stop clientless larva, we will check that our host has a client
|
||||
|
||||
@@ -72,6 +72,13 @@
|
||||
m_type = 2
|
||||
|
||||
if ("custom")
|
||||
if(jobban_isbanned(src, "emote"))
|
||||
src << "You cannot send custom emotes (banned)"
|
||||
return
|
||||
if(src.client)
|
||||
if(client.prefs.muted & MUTE_IC)
|
||||
src << "You cannot send IC messages (muted)."
|
||||
return
|
||||
var/input = copytext(sanitize(input("Choose an emote to display.") as text|null),1,MAX_MESSAGE_LEN)
|
||||
if (!input)
|
||||
return
|
||||
|
||||
@@ -337,7 +337,7 @@ datum/species/human/spec_death(gibbed, mob/living/carbon/human/H)
|
||||
speedmod = 3
|
||||
armor = 55
|
||||
punchmod = 5
|
||||
no_equip = list(slot_wear_mask, slot_wear_suit, slot_gloves, slot_shoes, slot_head, slot_w_uniform)
|
||||
no_equip = list(slot_wear_mask, slot_wear_suit, slot_gloves, slot_shoes, slot_w_uniform)
|
||||
nojumpsuit = 1
|
||||
meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/golem
|
||||
|
||||
|
||||
@@ -144,6 +144,9 @@
|
||||
m_type = 1
|
||||
|
||||
if ("me")
|
||||
if(jobban_isbanned(src, "emote"))
|
||||
src << "You cannot send custom emotes (banned)"
|
||||
return
|
||||
if (src.client)
|
||||
if(client.prefs.muted & MUTE_IC)
|
||||
src << "You cannot send IC messages (muted)."
|
||||
|
||||
@@ -42,7 +42,6 @@
|
||||
var/metabolism_efficiency = 1 //more or less efficiency to metabolize helpful/harmful reagents and regulate body temperature..
|
||||
var/list/image/staticOverlays = list()
|
||||
var/has_limbs = 0 //does the mob have distinct limbs?(arms,legs, chest,head)
|
||||
var/list/datum/action/actions = list()
|
||||
|
||||
var/list/pipes_shown = list()
|
||||
var/last_played_vent
|
||||
|
||||
@@ -5,4 +5,5 @@
|
||||
ticker.mode.remove_gangster(mind, remove_bosses=1)
|
||||
ticker.mode.remove_thrall(mind,0)
|
||||
ticker.mode.remove_shadowling(mind)
|
||||
ticker.mode.remove_hog_follower(mind,0)
|
||||
..()
|
||||
@@ -9,7 +9,6 @@
|
||||
/mob/living/silicon/pai/var/list/available_software = list(
|
||||
"crew manifest" = 5,
|
||||
"digital messenger" = 5,
|
||||
"chatroom client" = 5,
|
||||
"medical records" = 15,
|
||||
"security records" = 15,
|
||||
//"camera jack" = 10,
|
||||
@@ -67,8 +66,6 @@
|
||||
left_part = src.softwareCamera()
|
||||
if("signaller")
|
||||
left_part = src.softwareSignal()
|
||||
if("chatroom")
|
||||
src.chatroom() //snowflake? maybe, but it's less effort this way
|
||||
|
||||
//usr << browse_rsc('windowbak.png') // This has been moved to the mob's Login() proc
|
||||
|
||||
@@ -287,8 +284,6 @@
|
||||
for(var/s in src.software)
|
||||
if(s == "digital messenger")
|
||||
dat += "<a href='byond://?src=\ref[src];software=pdamessage;sub=0'>Digital Messenger</a> <br>"
|
||||
if(s == "chatroom client")
|
||||
dat += "<a href='byond://?src=\ref[src];software=chatroom;sub=0'>Chatroom Client</a> <br>"
|
||||
if(s == "crew manifest")
|
||||
dat += "<a href='byond://?src=\ref[src];software=manifest;sub=0'>Crew Manifest</a> <br>"
|
||||
if(s == "medical records")
|
||||
@@ -645,7 +640,3 @@
|
||||
dat += "<br><br>"
|
||||
dat += "Messages: <hr> [pda.tnote]"
|
||||
return dat
|
||||
|
||||
/mob/living/silicon/pai/proc/chatroom()
|
||||
pda.mode = 5
|
||||
pda.attack_self(src)
|
||||
|
||||
@@ -79,6 +79,13 @@
|
||||
m_type = 2
|
||||
|
||||
if ("custom")
|
||||
if(jobban_isbanned(src, "emote"))
|
||||
src << "You cannot send custom emotes (banned)"
|
||||
return
|
||||
if(src.client)
|
||||
if(client.prefs.muted & MUTE_IC)
|
||||
src << "You cannot send IC messages (muted)."
|
||||
return
|
||||
var/input = copytext(sanitize(input("Choose an emote to display.") as text|null),1,MAX_MESSAGE_LEN)
|
||||
if (!input)
|
||||
return
|
||||
|
||||
@@ -3,10 +3,12 @@
|
||||
..()
|
||||
regenerate_icons()
|
||||
show_laws(0)
|
||||
if(mind) ticker.mode.remove_revolutionary(mind)
|
||||
if(mind) ticker.mode.remove_gangster(mind,1,remove_bosses=1)
|
||||
if(mind) ticker.mode.remove_thrall(mind,0)
|
||||
if(mind) ticker.mode.remove_shadowling(mind)
|
||||
if(mind)
|
||||
ticker.mode.remove_revolutionary(mind)
|
||||
ticker.mode.remove_gangster(mind,1,remove_bosses=1)
|
||||
ticker.mode.remove_thrall(mind,0)
|
||||
ticker.mode.remove_shadowling(mind)
|
||||
ticker.mode.remove_hog_follower(mind, 0)
|
||||
|
||||
/mob/living/silicon/robot/update_hotkey_mode()
|
||||
winset(src, null, "mainwindow.macro=borghotkeymode hotkey_toggle.is-checked=true mapwindow.map.focus=true input.background-color=#F0F0F0")
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
/mob/living/simple_animal/hostile/retaliate/goat/Destroy()
|
||||
qdel(udder)
|
||||
udder = null
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/goat/Life()
|
||||
. = ..()
|
||||
@@ -107,7 +107,7 @@
|
||||
/mob/living/simple_animal/cow/Destroy()
|
||||
qdel(udder)
|
||||
udder = null
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/cow/attackby(obj/item/O, mob/user, params)
|
||||
if(stat == CONSCIOUS && istype(O, /obj/item/weapon/reagent_containers/glass))
|
||||
@@ -292,4 +292,4 @@ var/global/chicken_count = 0
|
||||
|
||||
/obj/udder/Destroy()
|
||||
qdel(reagents)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
@@ -554,7 +554,7 @@
|
||||
return
|
||||
used = TRUE
|
||||
user << "[use_message]"
|
||||
var/list/mob/dead/observer/candidates = pollCandidates("Do you want to play as the [mob_name] of [user.real_name]?", "pAI", null, FALSE, 100)
|
||||
var/list/mob/dead/observer/candidates = pollCandidates("Do you want to play as the [mob_name] of [user.real_name]?", ROLE_PAI, null, FALSE, 100)
|
||||
var/mob/dead/observer/theghost = null
|
||||
|
||||
if(candidates.len)
|
||||
|
||||
@@ -193,7 +193,7 @@
|
||||
/datum/round_event/morph/proc/get_morph(end_if_fail = 0)
|
||||
key_of_morph = null
|
||||
if(!key_of_morph)
|
||||
var/list/candidates = get_candidates(BE_ALIEN)
|
||||
var/list/candidates = get_candidates(ROLE_ALIEN)
|
||||
if(!candidates.len)
|
||||
if(end_if_fail)
|
||||
return 0
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
invisibility = INVISIBILITY_REVENANT
|
||||
health = INFINITY //Revenants don't use health, they use essence instead
|
||||
maxHealth = INFINITY
|
||||
alpha = 160
|
||||
layer = 5
|
||||
healable = 0
|
||||
see_invisible = SEE_INVISIBLE_MINIMUM
|
||||
@@ -61,7 +60,6 @@
|
||||
unreveal_time = 0
|
||||
revealed = 0
|
||||
invisibility = INVISIBILITY_REVENANT
|
||||
alpha = 160
|
||||
src << "<span class='revenboldnotice'>You are once more concealed.</span>"
|
||||
if(unstun_time && world.time >= unstun_time)
|
||||
unstun_time = 0
|
||||
@@ -69,6 +67,7 @@
|
||||
src << "<span class='revenboldnotice'>You can move again!</span>"
|
||||
if(essence_regenerating && !inhibited && essence < essence_regen_cap) //While inhibited, essence will not regenerate
|
||||
essence = min(essence_regen_cap, essence+essence_regen_amount)
|
||||
update_spooky_icon()
|
||||
..()
|
||||
|
||||
|
||||
@@ -79,12 +78,13 @@
|
||||
return
|
||||
revealed = 1
|
||||
invisibility = 0
|
||||
alpha = 255
|
||||
if(!unreveal_time)
|
||||
src << "<span class='revendanger'>You have been revealed!</span>"
|
||||
unreveal_time = world.time + time
|
||||
else
|
||||
src << "<span class='revenwarning'>You have been revealed!</span>"
|
||||
unreveal_time = world.time + time
|
||||
unreveal_time = unreveal_time + time
|
||||
update_spooky_icon()
|
||||
|
||||
/mob/living/simple_animal/revenant/proc/stun(time)
|
||||
if(!src)
|
||||
@@ -94,9 +94,23 @@
|
||||
notransform = 1
|
||||
if(!unstun_time)
|
||||
src << "<span class='revendanger'>You cannot move!</span>"
|
||||
unstun_time = world.time + time
|
||||
else
|
||||
src << "<span class='revenwarning'>You cannot move!</span>"
|
||||
unstun_time = world.time + time
|
||||
unstun_time = unstun_time + time
|
||||
update_spooky_icon()
|
||||
|
||||
/mob/living/simple_animal/revenant/proc/update_spooky_icon()
|
||||
if(unreveal_time)
|
||||
if(draining)
|
||||
icon_state = "revenant_draining"
|
||||
return
|
||||
if(unstun_time)
|
||||
icon_state = "revenant_stun"
|
||||
return
|
||||
icon_state = "revenant_revealed"
|
||||
return
|
||||
icon_state = "revenant_idle"
|
||||
|
||||
/mob/living/simple_animal/revenant/ex_act(severity, target)
|
||||
return 1 //Immune to the effects of explosions.
|
||||
@@ -185,12 +199,15 @@
|
||||
drained_mobs.Add(target)
|
||||
target.death(0)
|
||||
else
|
||||
src << "<span class='revenwarning'>[target] has been drawn out of your grasp. The link has been broken.</span>"
|
||||
target.visible_message("<span class='warning'>[target] slumps onto the ground.</span>", \
|
||||
"<span class='revenwarning'>Violets lights, dancing in your vision, receding--</span>")
|
||||
icon_state = "revenant_idle"
|
||||
src << "<span class='revenwarning'>[target ? "[target] has":"They have"] been drawn out of your grasp. The link has been broken.</span>"
|
||||
draining = 0
|
||||
essence_drained = 0
|
||||
if(target) //Wait, target is WHERE NOW?
|
||||
target.visible_message("<span class='warning'>[target] slumps onto the ground.</span>", \
|
||||
"<span class='revenwarning'>Violets lights, dancing in your vision, receding--</span>")
|
||||
return
|
||||
else
|
||||
src << "<span class='revenwarning'>You are not close enough to siphon [target]'s soul. The link has been broken.</span>"
|
||||
src << "<span class='revenwarning'>You are not close enough to siphon [target ? "[target]'s":"their"] soul. The link has been broken.</span>"
|
||||
draining = 0
|
||||
essence_drained = 0
|
||||
return
|
||||
@@ -402,7 +419,7 @@
|
||||
key_of_revenant = client_to_revive.key
|
||||
if(!key_of_revenant)
|
||||
message_admins("The new revenant's old client either could not be found or is in a new, living mob - grabbing a random candidate instead...")
|
||||
var/list/candidates = get_candidates(BE_REVENANT)
|
||||
var/list/candidates = get_candidates(ROLE_REVENANT)
|
||||
if(!candidates.len)
|
||||
qdel(R)
|
||||
message_admins("No candidates were found for the new revenant. Oh well!")
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
desc = "Directs a large amount of essence into nearby electrical lights, causing lights to shock those nearby."
|
||||
charge_max = 200
|
||||
range = 5
|
||||
stun = 35
|
||||
stun = 30
|
||||
cast_amount = 45
|
||||
var/shock_range = 2
|
||||
var/shock_damage = 18
|
||||
@@ -116,7 +116,6 @@
|
||||
desc = "Twists and corrupts the nearby area as well as dispelling holy auras on floors."
|
||||
charge_max = 150
|
||||
range = 3
|
||||
stun = 25
|
||||
unlock_amount = 75
|
||||
cast_amount = 40
|
||||
action_icon_state = "defile"
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
return
|
||||
key_of_revenant = null
|
||||
if(!key_of_revenant)
|
||||
var/list/candidates = get_candidates(BE_REVENANT)
|
||||
var/list/candidates = get_candidates(ROLE_REVENANT)
|
||||
if(!candidates.len)
|
||||
if(end_if_fail)
|
||||
return 0
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
/datum/round_event/slaughter/proc/get_slaughter(end_if_fail = 0)
|
||||
key_of_slaughter = null
|
||||
if(!key_of_slaughter)
|
||||
var/list/candidates = get_candidates(BE_ALIEN)
|
||||
var/list/candidates = get_candidates(ROLE_ALIEN)
|
||||
if(!candidates.len)
|
||||
if(end_if_fail)
|
||||
return 0
|
||||
|
||||
@@ -57,6 +57,8 @@
|
||||
|
||||
add_click_catcher()
|
||||
|
||||
sync_mind()
|
||||
|
||||
// Calling update_interface() in /mob/Login() causes the Cyborg to immediately be ghosted; because of winget().
|
||||
// Calling it in the overriden Login, such as /mob/living/Login() doesn't cause this.
|
||||
/mob/proc/update_interface()
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
hud_possible = list(ANTAG_HUD)
|
||||
pressure_resistance = 8
|
||||
var/datum/mind/mind
|
||||
var/list/datum/action/actions = list()
|
||||
|
||||
var/stat = 0 //Whether a mob is alive or dead. TODO: Move this to living - Nodrak
|
||||
|
||||
|
||||
@@ -433,6 +433,23 @@
|
||||
gib(src)
|
||||
|
||||
|
||||
/mob/proc/become_god(var/side_colour)
|
||||
var/mob/camera/god/G = new /mob/camera/god(loc)
|
||||
G.side = side_colour
|
||||
G.invisibility = 40
|
||||
if(mind)
|
||||
mind.transfer_to(G)
|
||||
else
|
||||
G.key = key
|
||||
|
||||
G.job = "Deity"
|
||||
G.rename_self("deity", 0)
|
||||
G.update_icons()
|
||||
|
||||
. = G
|
||||
qdel(src)
|
||||
|
||||
|
||||
|
||||
/mob/living/carbon/human/proc/corgize()
|
||||
if (notransform)
|
||||
|
||||
Reference in New Issue
Block a user