mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-26 21:48:21 +01:00
Merge remote-tracking branch 'upstream/master' into third_times_the_charm_questionmark
Conflicts: code/modules/mob/living/carbon/human/life.dm code/modules/mob/living/carbon/life.dm
This commit is contained in:
@@ -100,6 +100,7 @@
|
||||
<b>TDM</b><br>
|
||||
<A href='?src=\ref[src];secretsfun=traitor_all'>Everyone is the traitor</A>
|
||||
<A href='?src=\ref[src];secretsfun=onlyone'>There can only be one!</A>
|
||||
<A href='?src=\ref[src];secretsfun=onlyme'>There can only be me!</A>
|
||||
<A href='?src=\ref[src];secretsfun=onlyoneteam'>Dodgeball (TDM)!</A><BR>
|
||||
<b>Round-enders</b><br>
|
||||
<A href='?src=\ref[src];secretsfun=floorlava'>The floor is lava! (DANGEROUS: extremely lame)</A><BR>
|
||||
|
||||
@@ -2668,6 +2668,10 @@
|
||||
feedback_add_details("admin_secrets_fun_used","OO")
|
||||
usr.client.only_one()
|
||||
// message_admins("[key_name_admin(usr)] has triggered HIGHLANDER")
|
||||
if("onlyme")
|
||||
feedback_inc("admin_secrets_fun_used",1)
|
||||
feedback_add_details("admin_secrets_fun_used","OM")
|
||||
usr.client.only_me()
|
||||
if("onlyoneteam")
|
||||
feedback_inc("admin_secrets_fun_used",1)
|
||||
feedback_add_details("admin_secrets_fun_used","OOT")
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
|
||||
var/list/incompatible_species = list("Plasmaman")
|
||||
for(var/mob/living/carbon/human/H in player_list)
|
||||
if(H.stat == DEAD || !(H.client))
|
||||
if(H.stat == DEAD || !(H.client))
|
||||
continue
|
||||
if(is_special_character(H))
|
||||
if(is_special_character(H))
|
||||
continue
|
||||
if(H.species.name in incompatible_species)
|
||||
H.set_species("Human")
|
||||
@@ -55,3 +55,50 @@
|
||||
message_admins("[key_name_admin(usr)] used THERE CAN BE ONLY ONE! -NO ATTACK LOGS WILL BE SENT TO ADMINS FROM THIS POINT FORTH-", 1)
|
||||
log_admin("[key_name(usr)] used there can be only one.")
|
||||
nologevent = 1
|
||||
world << sound('sound/music/THUNDERDOME.ogg')
|
||||
|
||||
/client/proc/only_me()
|
||||
if(!ticker)
|
||||
alert("The game hasn't started yet!")
|
||||
return
|
||||
|
||||
for(var/mob/living/carbon/human/H in player_list)
|
||||
if(H.stat == 2 || !(H.client)) continue
|
||||
if(is_special_character(H)) continue
|
||||
|
||||
ticker.mode.traitors += H.mind
|
||||
H.mind.special_role = "[H.real_name] Prime"
|
||||
|
||||
var/datum/objective/hijackclone/hijack_objective = new /datum/objective/hijackclone
|
||||
hijack_objective.owner = H.mind
|
||||
H.mind.objectives += hijack_objective
|
||||
|
||||
H << "<B>You are the multiverse summoner. Activate your blade to summon copies of yourself from another universe to fight by your side.</B>"
|
||||
var/obj_count = 1
|
||||
for(var/datum/objective/OBJ in H.mind.objectives)
|
||||
H << "<B>Objective #[obj_count]</B>: [OBJ.explanation_text]"
|
||||
obj_count++
|
||||
|
||||
var/obj/item/slot_item_ID = H.get_item_by_slot(slot_wear_id)
|
||||
qdel(slot_item_ID)
|
||||
var/obj/item/slot_item_hand = H.get_item_by_slot(slot_r_hand)
|
||||
H.unEquip(slot_item_hand)
|
||||
|
||||
var /obj/item/weapon/multisword/pure_evil/multi = new(H)
|
||||
H.equip_to_slot_or_del(multi, slot_r_hand)
|
||||
|
||||
var/obj/item/weapon/card/id/W = new(H)
|
||||
W.icon_state = "centcom"
|
||||
W.access = get_all_accesses()
|
||||
W.access += get_all_centcom_access()
|
||||
W.assignment = "Multiverse Summoner"
|
||||
W.registered_name = H.real_name
|
||||
W.update_label(H.real_name)
|
||||
H.equip_to_slot_or_del(W, slot_wear_id)
|
||||
|
||||
H.update_icons()
|
||||
|
||||
message_admins("[key_name_admin(usr)] used THERE CAN BE ONLY ME! -NO ATTACK LOGS WILL BE SENT TO ADMINS FROM THIS POINT FORTH-", 1)
|
||||
log_admin("[key_name(usr)] used there can be only me.")
|
||||
nologevent = 1
|
||||
world << sound('sound/music/THUNDERDOME.ogg')
|
||||
@@ -905,7 +905,6 @@ datum/preferences
|
||||
proc/process_link(mob/user, list/href_list)
|
||||
if(!user) return
|
||||
|
||||
if(!istype(user, /mob/new_player)) return
|
||||
if(href_list["preference"] == "job")
|
||||
switch(href_list["task"])
|
||||
if("close")
|
||||
|
||||
@@ -178,7 +178,7 @@
|
||||
src << sound(null, repeat = 0, wait = 0, volume = 0, channel = 1)
|
||||
src << sound(null, repeat = 0, wait = 0, volume = 0, channel = 2)
|
||||
feedback_add_details("admin_verb","Thb") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
|
||||
// This needs a toggle because you people are awful and spammed terrible music
|
||||
/client/verb/toggle_instruments()
|
||||
set name = "Hear/Silence Instruments"
|
||||
@@ -192,56 +192,6 @@
|
||||
src << "You will no longer hear musical instruments."
|
||||
feedback_add_details("admin_verb","TInstru") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
//be special
|
||||
/client/verb/toggle_be_special(role in be_special_flags)
|
||||
set name = "Toggle Special Role Candidacy"
|
||||
set category = "Preferences"
|
||||
set desc = "Toggles which special roles you would like to be a candidate for, during events."
|
||||
var/role_flag = be_special_flags[role]
|
||||
if(!role_flag) return
|
||||
if(!player_old_enough_antag(src,be_special_flags[role]))
|
||||
var/available_in_days_antag = available_in_days_antag(src,be_special_flags[role])
|
||||
src << "<span class='warning'>This role is not yet available to you. You need to wait another [available_in_days_antag] days.</span>"
|
||||
return
|
||||
prefs.be_special ^= role_flag
|
||||
prefs.save_preferences(src)
|
||||
src << "You will [(prefs.be_special & role_flag) ? "now" : "no longer"] be considered for [role] events (where possible)."
|
||||
feedback_add_details("admin_verb","TBeSpecial") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/verb/change_ui()
|
||||
set name = "Change UI"
|
||||
set category = "Preferences"
|
||||
set desc = "Configure your user interface"
|
||||
|
||||
if(!ishuman(usr))
|
||||
usr << "This only for human"
|
||||
return
|
||||
|
||||
var/UI_style_new = input(usr, "Select a style, we recommend White for customization") in list("White", "Midnight", "Orange", "old")
|
||||
if(!UI_style_new) return
|
||||
|
||||
var/UI_style_alpha_new = input(usr, "Select a new alpha (transparency) parameter for UI, between 50 and 255") as num
|
||||
if(!UI_style_alpha_new | !(UI_style_alpha_new <= 255 && UI_style_alpha_new >= 50)) return
|
||||
|
||||
var/UI_style_color_new = input(usr, "Choose your UI color. Dark colors are not recommended!") as color|null
|
||||
if(!UI_style_color_new) return
|
||||
|
||||
//update UI
|
||||
var/list/icons = usr.hud_used.adding + usr.hud_used.other +usr.hud_used.hotkeybuttons
|
||||
icons.Add(usr.zone_sel)
|
||||
|
||||
for(var/obj/screen/I in icons)
|
||||
I.icon = ui_style2icon(UI_style_new)
|
||||
I.color = UI_style_color_new
|
||||
I.alpha = UI_style_alpha_new
|
||||
|
||||
if(alert("Like it? Save changes?",,"Yes", "No") == "Yes")
|
||||
prefs.UI_style = UI_style_new
|
||||
prefs.UI_style_alpha = UI_style_alpha_new
|
||||
prefs.UI_style_color = UI_style_color_new
|
||||
prefs.save_preferences(src)
|
||||
usr << "UI was saved"
|
||||
|
||||
/client/verb/toggle_media()
|
||||
set name = "Hear/Silence Streaming"
|
||||
set category = "Preferences"
|
||||
@@ -255,12 +205,10 @@
|
||||
media.update_music()
|
||||
else
|
||||
media.stop_music()
|
||||
|
||||
/client/verb/toggle_member_publicity()
|
||||
set name = "Toggle Membership Publicity"
|
||||
|
||||
/client/verb/setup_character()
|
||||
set name = "Game Preferences"
|
||||
set category = "Preferences"
|
||||
set desc = "Toggles whether other players can see that you are a BYOND member (OOC blag icon/colours)."
|
||||
|
||||
prefs.toggles ^= MEMBER_PUBLIC
|
||||
prefs.save_preferences(src)
|
||||
src << "Others can[(prefs.toggles & MEMBER_PUBLIC) ? "" : " not"] see whether you are a BYOND member."
|
||||
set desc = "Allows you to access the Setup Character screen. Changes to your character won't take effect until next round, but other changes will."
|
||||
prefs.current_tab = 1
|
||||
prefs.ShowChoices(usr)
|
||||
@@ -514,8 +514,8 @@
|
||||
health = 0
|
||||
dead = 0
|
||||
|
||||
nutrilevel = max(0,min(nutrilevel,10))
|
||||
waterlevel = max(0,min(waterlevel,100))
|
||||
nutrilevel = max(0,min(nutrilevel,maxnutri))
|
||||
waterlevel = max(0,min(waterlevel,maxwater))
|
||||
pestlevel = max(0,min(pestlevel,10))
|
||||
weedlevel = max(0,min(weedlevel,10))
|
||||
toxins = max(0,min(toxins,10))
|
||||
@@ -793,8 +793,8 @@
|
||||
if(!Adjacent(user))
|
||||
return
|
||||
|
||||
user << "Water: [round(waterlevel,0.1)]/100"
|
||||
user << "Nutrient: [round(nutrilevel,0.1)]/10"
|
||||
user << "Water: [round(waterlevel,0.1)]/[maxwater]"
|
||||
user << "Nutrient: [round(nutrilevel,0.1)]/[maxnutri]"
|
||||
|
||||
if(weedlevel >= 5)
|
||||
user << "\The [src] is <span class='danger'>infested with weeds</span>!"
|
||||
@@ -864,4 +864,4 @@
|
||||
if(istype(holding, /obj/item/weapon/tank))
|
||||
usr << "\blue You eject [holding.name] from [src]."
|
||||
holding.loc = loc
|
||||
holding = null
|
||||
holding = null
|
||||
@@ -85,7 +85,7 @@
|
||||
return
|
||||
health = maxHealth - getOxyLoss() - getFireLoss() - getBruteLoss() - getCloneLoss()
|
||||
|
||||
/mob/living/carbon/alien/proc/handle_environment(var/datum/gas_mixture/environment)
|
||||
/mob/living/carbon/alien/handle_environment(var/datum/gas_mixture/environment)
|
||||
|
||||
//If there are alien weeds on the ground then heal if needed or give some toxins
|
||||
if(locate(/obj/structure/alien/weeds) in loc)
|
||||
@@ -136,7 +136,7 @@
|
||||
fire_alert = max(fire_alert, 2)
|
||||
return
|
||||
|
||||
/mob/living/carbon/alien/proc/handle_mutations_and_radiation()
|
||||
/mob/living/carbon/alien/handle_mutations_and_radiation()
|
||||
if(getFireLoss())
|
||||
if((RESIST_HEAT in mutations) || prob(5))
|
||||
adjustFireLoss(-1)
|
||||
@@ -171,11 +171,6 @@
|
||||
bodytemperature += BODYTEMP_HEATING_MAX //If you're on fire, you heat up!
|
||||
return
|
||||
|
||||
/mob/living/carbon/alien/proc/handle_wetness()
|
||||
if(mob_master.current_cycle%20==2) //dry off a bit once every 20 ticks or so
|
||||
wetlevel = max(wetlevel - 1,0)
|
||||
return
|
||||
|
||||
/mob/living/carbon/alien/IsAdvancedToolUser()
|
||||
return has_fine_manipulation
|
||||
|
||||
|
||||
@@ -9,70 +9,12 @@
|
||||
|
||||
|
||||
/mob/living/carbon/alien/humanoid/Life()
|
||||
set invisibility = 0
|
||||
set background = BACKGROUND_ENABLED
|
||||
|
||||
..()
|
||||
|
||||
var/datum/gas_mixture/environment = loc.return_air()
|
||||
|
||||
if (stat != DEAD) //still breathing
|
||||
|
||||
//First, resolve location and get a breath
|
||||
|
||||
if(mob_master.current_cycle%4==2)
|
||||
//Only try to take a breath every 4 seconds, unless suffocating
|
||||
spawn(0) breathe()
|
||||
|
||||
else //Still give containing object the chance to interact
|
||||
if(istype(loc, /obj/))
|
||||
var/obj/location_as_object = loc
|
||||
location_as_object.handle_internal_lifeform(src, 0)
|
||||
|
||||
//Mutations and radiation
|
||||
handle_mutations_and_radiation()
|
||||
|
||||
//Chemicals in the body
|
||||
handle_chemicals_in_body()
|
||||
|
||||
//Disabilities
|
||||
handle_disabilities()
|
||||
|
||||
//Apparently, the person who wrote this code designed it so that
|
||||
//blinded get reset each cycle and then get activated later in the
|
||||
//code. Very ugly. I dont care. Moving this stuff here so its easy
|
||||
//to find it.
|
||||
blinded = null
|
||||
|
||||
//Handle temperature/pressure differences between body and environment
|
||||
handle_environment(environment)
|
||||
|
||||
//stuff in the stomach
|
||||
handle_stomach()
|
||||
|
||||
//Handle being on fire
|
||||
handle_fire()
|
||||
|
||||
//Decrease wetness over time
|
||||
handle_wetness()
|
||||
|
||||
//Status updates, death etc.
|
||||
handle_regular_status_updates()
|
||||
|
||||
handle_actions()
|
||||
|
||||
update_canmove()
|
||||
. = ..()
|
||||
update_icons()
|
||||
|
||||
// Grabbing
|
||||
for(var/obj/item/weapon/grab/G in src)
|
||||
G.process()
|
||||
|
||||
if(client)
|
||||
handle_regular_hud_updates()
|
||||
|
||||
|
||||
/mob/living/carbon/alien/humanoid/proc/handle_disabilities()
|
||||
/mob/living/carbon/alien/humanoid/handle_disabilities()
|
||||
if (disabilities & EPILEPSY)
|
||||
if ((prob(1) && paralysis < 10))
|
||||
src << "<span class='danger'>You have a seizure!</span>"
|
||||
@@ -110,7 +52,7 @@
|
||||
temp_change = (temperature - current)
|
||||
return temp_change
|
||||
|
||||
/mob/living/carbon/alien/humanoid/proc/handle_regular_status_updates()
|
||||
/mob/living/carbon/alien/humanoid/handle_regular_status_updates()
|
||||
updatehealth()
|
||||
|
||||
if(stat == DEAD) //DEAD. BROWN BREAD. SWIMMING WITH THE SPESS CARP
|
||||
@@ -191,7 +133,7 @@
|
||||
return 1
|
||||
|
||||
|
||||
/mob/living/carbon/alien/humanoid/proc/handle_regular_hud_updates()
|
||||
/mob/living/carbon/alien/humanoid/handle_regular_hud_updates()
|
||||
|
||||
if (stat == 2 || (XRAY in mutations))
|
||||
sight |= SEE_TURFS
|
||||
|
||||
@@ -3,61 +3,16 @@
|
||||
/mob/living/carbon/alien/larva
|
||||
var/temperature_alert = 0
|
||||
|
||||
|
||||
/mob/living/carbon/alien/larva/Life()
|
||||
set invisibility = 0
|
||||
set background = BACKGROUND_ENABLED
|
||||
|
||||
..()
|
||||
var/datum/gas_mixture/enviroment = loc.return_air()
|
||||
if (stat != DEAD) //still breathing
|
||||
|
||||
if(..()) //still breathing
|
||||
// GROW!
|
||||
if(amount_grown < max_grown)
|
||||
amount_grown++
|
||||
|
||||
//First, resolve location and get a breath
|
||||
if(mob_master.current_cycle%4==2)
|
||||
//Only try to take a breath every 4 seconds, unless suffocating
|
||||
spawn(0) breathe()
|
||||
else //Still give containing object the chance to interact
|
||||
if(istype(loc, /obj/))
|
||||
var/obj/location_as_object = loc
|
||||
location_as_object.handle_internal_lifeform(src, 0)
|
||||
//Mutations and radiation
|
||||
handle_mutations_and_radiation()
|
||||
|
||||
//Chemicals in the body
|
||||
handle_chemicals_in_body()
|
||||
|
||||
|
||||
//Apparently, the person who wrote this code designed it so that
|
||||
//blinded get reset each cycle and then get activated later in the
|
||||
//code. Very ugly. I dont care. Moving this stuff here so its easy
|
||||
//to find it.
|
||||
blinded = null
|
||||
|
||||
//Handle temperature/pressure differences between body and environment
|
||||
handle_environment(enviroment)
|
||||
|
||||
//stuff in the stomach
|
||||
//handle_stomach()
|
||||
|
||||
//Status updates, death etc.
|
||||
handle_regular_status_updates()
|
||||
update_canmove()
|
||||
|
||||
// Grabbing
|
||||
for(var/obj/item/weapon/grab/G in src)
|
||||
G.process()
|
||||
|
||||
//some kind of bug in canmove() isn't properly calling update_icons, so this is here as a placeholder
|
||||
update_icons()
|
||||
|
||||
if(client)
|
||||
handle_regular_hud_updates()
|
||||
|
||||
/mob/living/carbon/alien/larva/proc/handle_regular_status_updates()
|
||||
/mob/living/carbon/alien/larva/handle_regular_status_updates()
|
||||
updatehealth()
|
||||
|
||||
if(stat == DEAD) //DEAD. BROWN BREAD. SWIMMING WITH THE SPESS CARP
|
||||
@@ -133,7 +88,7 @@
|
||||
return 1
|
||||
|
||||
|
||||
/mob/living/carbon/alien/larva/proc/handle_regular_hud_updates()
|
||||
/mob/living/carbon/alien/larva/handle_regular_hud_updates()
|
||||
|
||||
if (stat == 2 || (XRAY in mutations))
|
||||
sight |= SEE_TURFS
|
||||
@@ -210,7 +165,4 @@
|
||||
if(!client.adminobs)
|
||||
reset_view(null)
|
||||
|
||||
return 1
|
||||
|
||||
/mob/living/carbon/alien/larva/proc/handle_random_events()
|
||||
return
|
||||
return 1
|
||||
@@ -1,4 +1,17 @@
|
||||
/mob/living/carbon/alien/proc/handle_chemicals_in_body()
|
||||
/mob/living/carbon/alien/Life()
|
||||
if(..())
|
||||
//First, resolve location and get a breath
|
||||
if(mob_master.current_cycle%4==2)
|
||||
//Only try to take a breath every 4 seconds, unless suffocating
|
||||
spawn(0) breathe()
|
||||
|
||||
else //Still give containing object the chance to interact
|
||||
if(istype(loc, /obj/))
|
||||
var/obj/location_as_object = loc
|
||||
location_as_object.handle_internal_lifeform(src, 0)
|
||||
return 1
|
||||
|
||||
/mob/living/carbon/alien/handle_chemicals_in_body()
|
||||
if(reagents)
|
||||
reagents.metabolize(src)
|
||||
|
||||
@@ -102,21 +115,4 @@
|
||||
|
||||
//Temporary fixes to the alerts.
|
||||
|
||||
return 1
|
||||
|
||||
/mob/living/carbon/alien/proc/handle_stomach()
|
||||
spawn(0)
|
||||
for(var/mob/living/M in stomach_contents)
|
||||
if(M.loc != src)
|
||||
stomach_contents.Remove(M)
|
||||
continue
|
||||
if(istype(M, /mob/living/carbon) && stat != 2)
|
||||
if(M.stat == 2)
|
||||
M.death(1)
|
||||
stomach_contents.Remove(M)
|
||||
qdel(M)
|
||||
continue
|
||||
if(mob_master.current_cycle%3==1)
|
||||
if(!(M.status_flags & GODMODE))
|
||||
M.adjustBruteLoss(5)
|
||||
nutrition += 10
|
||||
return 1
|
||||
@@ -1,39 +1,5 @@
|
||||
/mob/living/carbon/brain/Life()
|
||||
set invisibility = 0
|
||||
//set background = 1
|
||||
..()
|
||||
|
||||
if(stat != DEAD)
|
||||
//Mutations and radiation
|
||||
handle_mutations_and_radiation()
|
||||
|
||||
//Chemicals in the body
|
||||
handle_chemicals_in_body()
|
||||
|
||||
var/datum/gas_mixture/environment // Added to prevent null location errors-- TLE
|
||||
if(loc)
|
||||
environment = loc.return_air()
|
||||
|
||||
//Apparently, the person who wrote this code designed it so that
|
||||
//blinded get reset each cycle and then get activated later in the
|
||||
//code. Very ugly. I dont care. Moving this stuff here so its easy
|
||||
//to find it.
|
||||
blinded = null
|
||||
|
||||
//Handle temperature/pressure differences between body and environment
|
||||
if(environment) // More error checking -- TLE
|
||||
handle_environment(environment)
|
||||
|
||||
//Status updates, death etc.
|
||||
handle_regular_status_updates()
|
||||
update_canmove()
|
||||
|
||||
if(client)
|
||||
handle_regular_hud_updates()
|
||||
|
||||
|
||||
/mob/living/carbon/brain/
|
||||
proc/handle_mutations_and_radiation()
|
||||
handle_mutations_and_radiation()
|
||||
|
||||
if (radiation)
|
||||
if (radiation > 100)
|
||||
@@ -68,7 +34,7 @@
|
||||
adjustToxLoss(3)
|
||||
updatehealth()
|
||||
|
||||
proc/handle_environment(datum/gas_mixture/environment)
|
||||
handle_environment(datum/gas_mixture/environment)
|
||||
if(!environment)
|
||||
return
|
||||
var/environment_heat_capacity = environment.heat_capacity()
|
||||
@@ -104,7 +70,7 @@
|
||||
|
||||
|
||||
|
||||
proc/handle_chemicals_in_body()
|
||||
handle_chemicals_in_body()
|
||||
|
||||
if(reagents) reagents.metabolize(src)
|
||||
|
||||
@@ -120,7 +86,7 @@
|
||||
return //TODO: DEFERRED
|
||||
|
||||
|
||||
proc/handle_regular_status_updates() //TODO: comment out the unused bits >_>
|
||||
handle_regular_status_updates() //TODO: comment out the unused bits >_>
|
||||
updatehealth()
|
||||
|
||||
if(stat == DEAD) //DEAD. BROWN BREAD. SWIMMING WITH THE SPESS CARP
|
||||
@@ -191,7 +157,7 @@
|
||||
return 1
|
||||
|
||||
|
||||
proc/handle_regular_hud_updates()
|
||||
handle_regular_hud_updates()
|
||||
|
||||
if (stat == 2 || (XRAY in src.mutations))
|
||||
sight |= SEE_TURFS
|
||||
|
||||
@@ -84,6 +84,9 @@
|
||||
if(stat == DEAD) return
|
||||
if(healths) healths.icon_state = "health5"
|
||||
|
||||
if(!gibbed)
|
||||
emote("deathgasp") //let the world KNOW WE ARE DEAD
|
||||
|
||||
stat = DEAD
|
||||
dizziness = 0
|
||||
jitteriness = 0
|
||||
@@ -128,8 +131,6 @@
|
||||
H.mind.kills += "[name] ([ckey])"
|
||||
|
||||
if(!gibbed)
|
||||
emote("deathgasp") //let the world KNOW WE ARE DEAD
|
||||
|
||||
update_canmove()
|
||||
if(client) blind.layer = 0
|
||||
|
||||
@@ -179,4 +180,4 @@
|
||||
/mob/living/carbon/human/proc/Drain()
|
||||
ChangeToHusk()
|
||||
mutations |= NOCLONE
|
||||
return
|
||||
return
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
/mob/living/carbon/human/emote(var/act,var/m_type=1,var/message = null,var/force)
|
||||
|
||||
if (stat == DEAD)
|
||||
return // No screaming bodies
|
||||
|
||||
var/param = null
|
||||
if (findtext(act, "-", 1, null))
|
||||
var/t1 = findtext(act, "-", 1, null)
|
||||
@@ -814,4 +818,4 @@
|
||||
set desc = "Sets an extended description of your character's features."
|
||||
set category = "IC"
|
||||
|
||||
flavor_text = TextPreview(input(usr, "Please enter your new flavour text.", "Flavour text", null) as text)
|
||||
flavor_text = TextPreview(input(usr, "Please enter your new flavour text.", "Flavour text", null) as text)
|
||||
|
||||
@@ -73,6 +73,7 @@
|
||||
var/mob/remoteview_target = null
|
||||
var/meatleft = 3 //For chef item
|
||||
var/decaylevel = 0 // For rotting bodies
|
||||
var/max_blood = 560 // For stuff in the vessel
|
||||
var/slime_color = "blue" //For slime people this defines their color, it's blue by default to pay tribute to the old icons
|
||||
|
||||
var/check_mutations=0 // Check mutations on next life tick
|
||||
|
||||
@@ -43,27 +43,9 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
|
||||
var/tinttotal = 0 // Total level of visually impairing items
|
||||
|
||||
/mob/living/carbon/human/Life()
|
||||
set invisibility = 0
|
||||
//set background = 1
|
||||
|
||||
if (notransform) return
|
||||
if(!loc) return // Fixing a null error that occurs when the mob isn't found in the world -- TLE
|
||||
|
||||
..()
|
||||
|
||||
//Apparently, the person who wrote this code designed it so that
|
||||
//blinded get reset each cycle and then get activated later in the
|
||||
//code. Very ugly. I dont care. Moving this stuff here so its easy
|
||||
//to find it.
|
||||
blinded = null
|
||||
fire_alert = 0 //Reset this here, because both breathe() and handle_environment() have a chance to set it.
|
||||
tinttotal = tintcheck() //here as both hud updates and status updates call it
|
||||
|
||||
//TODO: seperate this out
|
||||
// update the current life tick, can be used to e.g. only do something every 4 ticks
|
||||
life_tick++
|
||||
|
||||
var/datum/gas_mixture/environment = loc.return_air()
|
||||
life_tick++
|
||||
|
||||
in_stasis = 0
|
||||
if(istype(loc, /obj/structure/closet/body_bag/cryobag))
|
||||
@@ -72,13 +54,12 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
|
||||
loc_as_cryobag.used++
|
||||
in_stasis = 1
|
||||
|
||||
if(life_tick % 30 == 15)
|
||||
if(mob_master.current_cycle % 30 == 15)
|
||||
hud_updateflag = 1022
|
||||
|
||||
voice = GetVoice()
|
||||
|
||||
//No need to update all of these procs if the guy is dead.
|
||||
if(stat != DEAD && !in_stasis)
|
||||
if(..() && !in_stasis)
|
||||
if(mob_master.current_cycle % 4 == 2 || failed_last_breath) //First, resolve location and get a breath
|
||||
breathe() //Only try to take a breath every 4 ticks, unless suffocating
|
||||
|
||||
@@ -88,43 +69,15 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
|
||||
location_as_object.handle_internal_lifeform(src, 0)
|
||||
|
||||
if(check_mutations)
|
||||
// testing("Updating [src.real_name]'s mutations: "+english_list(mutations))
|
||||
domutcheck(src,null)
|
||||
update_mutations()
|
||||
check_mutations=0
|
||||
|
||||
//Updates the number of stored chemicals for powers
|
||||
handle_changeling()
|
||||
|
||||
//Mutations and radiation
|
||||
handle_mutations_and_radiation()
|
||||
|
||||
//Chemicals in the body
|
||||
handle_chemicals_in_body()
|
||||
|
||||
//Disabilities
|
||||
handle_disabilities()
|
||||
|
||||
//Random events (vomiting etc)
|
||||
handle_random_events()
|
||||
|
||||
handle_virus_updates()
|
||||
|
||||
//Check if we're on fire
|
||||
handle_fire()
|
||||
|
||||
//Decrease wetness over time
|
||||
handle_wetness()
|
||||
|
||||
//stuff in the stomach
|
||||
handle_stomach()
|
||||
|
||||
handle_shock()
|
||||
|
||||
handle_pain()
|
||||
|
||||
handle_heartbeat()
|
||||
|
||||
handle_heartattack()
|
||||
|
||||
if(!client)
|
||||
@@ -138,28 +91,10 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
|
||||
if(life_tick > 5 && timeofdeath && (timeofdeath < 5 || world.time - timeofdeath > 6000)) //We are long dead, or we're junk mobs spawned like the clowns on the clown shuttle
|
||||
return //We go ahead and process them 5 times for HUD images and other stuff though.
|
||||
|
||||
|
||||
//Handle temperature/pressure differences between body and environment
|
||||
handle_environment(environment) //Optimized a good bit.
|
||||
|
||||
//Status updates, death etc.
|
||||
handle_regular_status_updates() //Optimized a bit
|
||||
|
||||
handle_actions()
|
||||
|
||||
update_canmove()
|
||||
|
||||
//Update our name based on whether our face is obscured/disfigured
|
||||
name = get_visible_name()
|
||||
|
||||
handle_regular_hud_updates()
|
||||
|
||||
pulse = handle_pulse()
|
||||
|
||||
// Grabbing
|
||||
for(var/obj/item/weapon/grab/G in src)
|
||||
G.process()
|
||||
|
||||
if(mind && mind.vampire)
|
||||
handle_vampire()
|
||||
if(life_tick == 1)
|
||||
@@ -181,7 +116,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
|
||||
return ONE_ATMOSPHERE - pressure_difference
|
||||
|
||||
|
||||
/mob/living/carbon/human/proc/handle_disabilities()
|
||||
/mob/living/carbon/human/handle_disabilities()
|
||||
if (disabilities & EPILEPSY)
|
||||
if ((prob(1) && paralysis < 1))
|
||||
visible_message("<span class='danger'>[src] starts having a seizure!</span>","<span class='alert'>You have a seizure!</span>")
|
||||
@@ -246,7 +181,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
|
||||
// as cloneloss
|
||||
adjustCloneLoss(0.1)
|
||||
|
||||
/mob/living/carbon/human/proc/handle_mutations_and_radiation()
|
||||
/mob/living/carbon/human/handle_mutations_and_radiation()
|
||||
if(getFireLoss())
|
||||
if((RESIST_HEAT in mutations) || (prob(1)))
|
||||
heal_organ_damage(0,1)
|
||||
@@ -469,7 +404,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
|
||||
|
||||
return species.handle_breath(breath, src)
|
||||
|
||||
/mob/living/carbon/human/proc/handle_environment(datum/gas_mixture/environment)
|
||||
/mob/living/carbon/human/handle_environment(datum/gas_mixture/environment)
|
||||
if(!environment)
|
||||
return
|
||||
|
||||
@@ -578,11 +513,6 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
|
||||
return
|
||||
//END FIRE CODE
|
||||
|
||||
/mob/living/carbon/human/proc/handle_wetness()
|
||||
if(mob_master.current_cycle%20==2) //dry off a bit once every 20 ticks or so
|
||||
wetlevel = max(wetlevel - 1,0)
|
||||
return
|
||||
|
||||
/*
|
||||
/mob/living/carbon/human/proc/adjust_body_temperature(current, loc_temp, boost)
|
||||
var/temperature = current
|
||||
@@ -755,7 +685,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
|
||||
|
||||
return covered
|
||||
|
||||
/mob/living/carbon/human/proc/handle_chemicals_in_body()
|
||||
/mob/living/carbon/human/handle_chemicals_in_body()
|
||||
|
||||
if(reagents)
|
||||
reagents.metabolize(src)
|
||||
@@ -869,7 +799,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
|
||||
|
||||
return //TODO: DEFERRED
|
||||
|
||||
/mob/living/carbon/human/proc/handle_regular_status_updates()
|
||||
/mob/living/carbon/human/handle_regular_status_updates()
|
||||
|
||||
if(status_flags & GODMODE) return 0
|
||||
|
||||
@@ -977,7 +907,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
|
||||
if(halloss > 0)
|
||||
adjustHalLoss(-1)
|
||||
|
||||
if(embedded_flag && !(life_tick % 10))
|
||||
if(embedded_flag && !(mob_master.current_cycle % 10))
|
||||
var/list/E
|
||||
E = get_visible_implants(0)
|
||||
if(!E.len)
|
||||
@@ -1081,7 +1011,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
|
||||
|
||||
return 1
|
||||
|
||||
/mob/living/carbon/human/proc/handle_regular_hud_updates()
|
||||
/mob/living/carbon/human/handle_regular_hud_updates()
|
||||
if(hud_updateflag)
|
||||
handle_hud_list()
|
||||
|
||||
@@ -1433,7 +1363,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
|
||||
reset_view(null)
|
||||
return 1
|
||||
|
||||
/mob/living/carbon/human/proc/handle_random_events()
|
||||
/mob/living/carbon/human/handle_random_events()
|
||||
// Puke if toxloss is too high
|
||||
if(!stat)
|
||||
if (getToxLoss() >= 45 && nutrition > 20)
|
||||
@@ -1478,7 +1408,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
|
||||
for (var/ID in virus2)
|
||||
var/datum/disease2/disease/V = virus2[ID]
|
||||
V.cure(src)
|
||||
if(life_tick % 3) //don't spam checks over all objects in view every tick.
|
||||
if(mob_master.current_cycle % 3) //don't spam checks over all objects in view every tick.
|
||||
for(var/obj/effect/decal/cleanable/O in view(1,src))
|
||||
if(istype(O,/obj/effect/decal/cleanable/blood))
|
||||
var/obj/effect/decal/cleanable/blood/B = O
|
||||
@@ -1509,24 +1439,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
|
||||
V.dead = 1
|
||||
return
|
||||
|
||||
/mob/living/carbon/human/proc/handle_stomach()
|
||||
spawn(0)
|
||||
for(var/mob/living/M in stomach_contents)
|
||||
if(M.loc != src)
|
||||
stomach_contents.Remove(M)
|
||||
continue
|
||||
if(isliving(M) && stat != 2)
|
||||
if(M.stat == 2)
|
||||
M.death(1)
|
||||
stomach_contents.Remove(M)
|
||||
qdel(M)
|
||||
continue
|
||||
if(mob_master.current_cycle%3==1)
|
||||
if(!(M.status_flags & GODMODE))
|
||||
M.adjustBruteLoss(5)
|
||||
nutrition += 10
|
||||
|
||||
/mob/living/carbon/human/proc/handle_changeling()
|
||||
/mob/living/carbon/human/handle_changeling()
|
||||
if(mind && mind.changeling)
|
||||
mind.changeling.regenerate()
|
||||
|
||||
@@ -1582,7 +1495,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
|
||||
|
||||
/mob/living/carbon/human/proc/handle_pulse()
|
||||
|
||||
if(life_tick % 5) return pulse //update pulse every 5 life ticks (~1 tick/sec, depending on server load)
|
||||
if(mob_master.current_cycle % 5) return pulse //update pulse every 5 life ticks (~1 tick/sec, depending on server load)
|
||||
|
||||
if(species && species.flags & NO_BLOOD) return PULSE_NONE //No blood, no pulse.
|
||||
|
||||
|
||||
@@ -11,4 +11,115 @@
|
||||
else
|
||||
if (internals)
|
||||
internals.icon_state = "internal0"
|
||||
return null
|
||||
return
|
||||
|
||||
/mob/living/carbon/Life()
|
||||
set invisibility = 0
|
||||
set background = BACKGROUND_ENABLED
|
||||
|
||||
if(notransform)
|
||||
return
|
||||
if(!loc)
|
||||
return
|
||||
var/datum/gas_mixture/environment = loc.return_air()
|
||||
|
||||
//Handle temperature/pressure differences between body and environment
|
||||
handle_environment(environment)
|
||||
|
||||
//Apparently, the person who wrote this code designed it so that
|
||||
//blinded get reset each cycle and then get activated later in the
|
||||
//code. Very ugly. I dont care. Moving this stuff here so its easy
|
||||
//to find it.
|
||||
blinded = null
|
||||
|
||||
handle_regular_status_updates() // Status updates, death etc.
|
||||
|
||||
if(stat != DEAD)
|
||||
|
||||
//Updates the number of stored chemicals for powers
|
||||
handle_changeling()
|
||||
|
||||
//Mutations and radiation
|
||||
handle_mutations_and_radiation()
|
||||
|
||||
//Chemicals in the body
|
||||
handle_chemicals_in_body()
|
||||
|
||||
//Disabilities
|
||||
handle_disabilities()
|
||||
|
||||
//Random events (vomiting etc)
|
||||
handle_random_events()
|
||||
|
||||
. = 1
|
||||
|
||||
handle_fire()
|
||||
|
||||
//Decrease wetness over time
|
||||
handle_wetness()
|
||||
|
||||
//stuff in the stomach
|
||||
handle_stomach()
|
||||
|
||||
update_canmove()
|
||||
|
||||
update_gravity(mob_has_gravity())
|
||||
|
||||
for(var/obj/item/weapon/grab/G in src)
|
||||
G.process()
|
||||
|
||||
handle_actions()
|
||||
|
||||
if(client)
|
||||
handle_regular_hud_updates()
|
||||
|
||||
return .
|
||||
|
||||
|
||||
|
||||
//remember to remove the "proc" of the child procs of these.
|
||||
|
||||
/mob/living/carbon/proc/handle_changeling()
|
||||
return
|
||||
|
||||
/mob/living/carbon/proc/handle_mutations_and_radiation()
|
||||
return
|
||||
|
||||
/mob/living/carbon/proc/handle_chemicals_in_body()
|
||||
return
|
||||
|
||||
/mob/living/carbon/proc/handle_disabilities()
|
||||
return
|
||||
|
||||
/mob/living/carbon/proc/handle_random_events()
|
||||
return
|
||||
|
||||
/mob/living/carbon/proc/handle_environment(var/datum/gas_mixture/environment)
|
||||
return
|
||||
|
||||
/mob/living/carbon/proc/handle_regular_status_updates()
|
||||
return
|
||||
|
||||
/mob/living/carbon/proc/handle_wetness()
|
||||
if(mob_master.current_cycle%20==2) //dry off a bit once every 20 ticks or so
|
||||
wetlevel = max(wetlevel - 1,0)
|
||||
|
||||
/mob/living/carbon/proc/handle_stomach()
|
||||
spawn(0)
|
||||
for(var/mob/living/M in stomach_contents)
|
||||
if(M.loc != src)
|
||||
stomach_contents.Remove(M)
|
||||
continue
|
||||
if(istype(M, /mob/living/carbon) && stat != 2)
|
||||
if(M.stat == 2)
|
||||
M.death(1)
|
||||
stomach_contents.Remove(M)
|
||||
qdel(M)
|
||||
continue
|
||||
if(mob_master.current_cycle%3==1)
|
||||
if(!(M.status_flags & GODMODE))
|
||||
M.adjustBruteLoss(5)
|
||||
nutrition += 10
|
||||
|
||||
/mob/living/carbon/proc/handle_regular_hud_updates()
|
||||
return
|
||||
|
||||
@@ -6,46 +6,12 @@
|
||||
var/SStun = 0 // stun variable
|
||||
|
||||
/mob/living/carbon/slime/Life()
|
||||
set invisibility = 0
|
||||
//set background = 1
|
||||
|
||||
if (src.notransform)
|
||||
return
|
||||
|
||||
..()
|
||||
|
||||
if(stat != DEAD)
|
||||
//Chemicals in the body
|
||||
handle_chemicals_in_body()
|
||||
|
||||
if(..())
|
||||
handle_nutrition()
|
||||
|
||||
handle_targets()
|
||||
|
||||
if (!ckey)
|
||||
handle_speech_and_mood()
|
||||
|
||||
var/datum/gas_mixture/environment
|
||||
if(src.loc)
|
||||
environment = loc.return_air()
|
||||
|
||||
//Apparently, the person who wrote this code designed it so that
|
||||
//blinded get reset each cycle and then get activated later in the
|
||||
//code. Very ugly. I dont care. Moving this stuff here so its easy
|
||||
//to find it.
|
||||
src.blinded = null
|
||||
|
||||
regular_hud_updates() // Basically just deletes any screen objects :<
|
||||
|
||||
if(environment)
|
||||
handle_environment(environment) // Handle temperature/pressure differences between body and environment
|
||||
|
||||
handle_regular_status_updates() // Status updates, death etc.
|
||||
|
||||
handle_actions()
|
||||
|
||||
handle_wetness()
|
||||
|
||||
/mob/living/carbon/slime/proc/AIprocess() // the master AI process
|
||||
|
||||
if(AIproc || stat == DEAD || client) return
|
||||
@@ -126,7 +92,7 @@
|
||||
|
||||
AIproc = 0
|
||||
|
||||
/mob/living/carbon/slime/proc/handle_environment(datum/gas_mixture/environment)
|
||||
/mob/living/carbon/slime/handle_environment(datum/gas_mixture/environment)
|
||||
if(!environment)
|
||||
adjustToxLoss(rand(10,20))
|
||||
return
|
||||
@@ -141,7 +107,7 @@
|
||||
loc_temp = loc:air_contents.temperature
|
||||
else
|
||||
loc_temp = environment.temperature
|
||||
|
||||
|
||||
//Account for massive pressure differences
|
||||
if(bodytemperature < (T0C + 5)) // start calculating temperature damage etc
|
||||
if(bodytemperature <= (T0C - 40)) // stun temperature
|
||||
@@ -154,7 +120,7 @@
|
||||
adjustToxLoss(round(sqrt(bodytemperature)) * 2)
|
||||
else
|
||||
Tempstun = 0
|
||||
|
||||
|
||||
|
||||
/*moved after the temperature damage code so freeze beams can instantly kill slimes -Deity Link*/
|
||||
if(loc_temp < 310.15) // a cold place
|
||||
@@ -183,7 +149,7 @@
|
||||
temp_change = (temperature - current)
|
||||
return temp_change
|
||||
|
||||
/mob/living/carbon/slime/proc/handle_chemicals_in_body()
|
||||
/mob/living/carbon/slime/handle_chemicals_in_body()
|
||||
|
||||
if(reagents) reagents.metabolize(src)
|
||||
if (reagents.get_reagent_amount("plasma")>=5)
|
||||
@@ -196,7 +162,7 @@
|
||||
|
||||
return //TODO: DEFERRED
|
||||
|
||||
/mob/living/carbon/slime/proc/handle_regular_status_updates()
|
||||
/mob/living/carbon/slime/handle_regular_status_updates()
|
||||
|
||||
if(is_adult)
|
||||
health = 200 - (getOxyLoss() + getToxLoss() + getFireLoss() + getBruteLoss() + getCloneLoss())
|
||||
@@ -289,10 +255,6 @@
|
||||
else
|
||||
Evolve()
|
||||
|
||||
/mob/living/carbon/slime/proc/handle_wetness()
|
||||
if(mob_master.current_cycle%20==2) //dry off a bit once every 20 ticks or so
|
||||
wetlevel = max(wetlevel - 1,0)
|
||||
return
|
||||
|
||||
/mob/living/carbon/slime/proc/handle_targets()
|
||||
if(Tempstun)
|
||||
|
||||
@@ -890,11 +890,15 @@
|
||||
/mob/living/proc/float(on)
|
||||
if(throwing)
|
||||
return
|
||||
if(on && !floating)
|
||||
animate(src, pixel_y = 2, time = 10, loop = -1)
|
||||
var/fixed = 0
|
||||
if(anchored || (buckled && buckled.anchored))
|
||||
fixed = 1
|
||||
if(on && !floating && !fixed)
|
||||
animate(src, pixel_y = pixel_y + 2, time = 10, loop = -1)
|
||||
floating = 1
|
||||
else if(!on && floating)
|
||||
animate(src, pixel_y = initial(pixel_y), time = 10)
|
||||
else if(((!on || fixed) && floating))
|
||||
var/final_pixel_y = get_standard_pixel_y_offset(lying)
|
||||
animate(src, pixel_y = final_pixel_y, time = 10)
|
||||
floating = 0
|
||||
|
||||
/mob/living/proc/can_use_vents()
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
|
||||
src.updatehealth()
|
||||
|
||||
update_gravity(mob_has_gravity())
|
||||
|
||||
if (src.malfhack)
|
||||
if (src.malfhack.aidisabled)
|
||||
src << "\red ERROR: APC access disabled, hack attempt canceled."
|
||||
@@ -174,7 +176,7 @@
|
||||
sleep(50)
|
||||
theAPC = null
|
||||
|
||||
process_queued_alarms()
|
||||
process_queued_alarms()
|
||||
regular_hud_updates()
|
||||
switch(src.sensor_mode)
|
||||
if (SEC_HUD)
|
||||
@@ -191,12 +193,12 @@
|
||||
health = 100 - getOxyLoss() - getToxLoss() - getBruteLoss()
|
||||
else
|
||||
health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss()
|
||||
|
||||
|
||||
/mob/living/silicon/ai/proc/lacks_power()
|
||||
var/turf/T = get_turf(src)
|
||||
var/area/A = get_area(src)
|
||||
return ((!A.power_equip) && A.requires_power == 1 || istype(T, /turf/space)) && !istype(src.loc,/obj/item)
|
||||
|
||||
|
||||
/mob/living/silicon/ai/rejuvenate()
|
||||
..()
|
||||
add_ai_verbs(src)
|
||||
@@ -88,10 +88,9 @@
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/Life()
|
||||
if(paralysis || stunned || weakened || buckled || resting)
|
||||
canmove = 0
|
||||
else
|
||||
canmove = 1
|
||||
|
||||
update_gravity(mob_has_gravity())
|
||||
update_canmove()
|
||||
|
||||
//Health
|
||||
if(stat == DEAD)
|
||||
@@ -554,4 +553,28 @@
|
||||
if(speak_emote.len)
|
||||
verb = pick(speak_emote)
|
||||
|
||||
return verb
|
||||
return verb
|
||||
|
||||
/mob/living/simple_animal/update_canmove()
|
||||
if(paralysis || stunned || weakened || stat || resting)
|
||||
drop_r_hand()
|
||||
drop_l_hand()
|
||||
canmove = 0
|
||||
else if(buckled)
|
||||
canmove = 0
|
||||
else
|
||||
canmove = 1
|
||||
update_transform()
|
||||
return canmove
|
||||
|
||||
/mob/living/simple_animal/update_transform()
|
||||
var/matrix/ntransform = matrix(transform) //aka transform.Copy()
|
||||
var/changed = 0
|
||||
|
||||
if(resize != RESIZE_DEFAULT_SIZE)
|
||||
changed++
|
||||
ntransform.Scale(resize)
|
||||
resize = RESIZE_DEFAULT_SIZE
|
||||
|
||||
if(changed)
|
||||
animate(src, transform = ntransform, time = 2, easing = EASE_IN|EASE_OUT)
|
||||
@@ -781,6 +781,36 @@
|
||||
icon_state = "vox_keetquills"
|
||||
species_allowed = list("Vox")
|
||||
|
||||
vox_quills_kingly
|
||||
name = "Kingly Vox Quills"
|
||||
icon_state = "vox_kingly"
|
||||
species_allowed = list("Vox")
|
||||
|
||||
vox_quills_fluff
|
||||
name = "Fluffy Quills"
|
||||
icon_state = "vox_afro"
|
||||
species_allowed = list("Vox")
|
||||
|
||||
vox_quills_mohawk
|
||||
name = "Quill Mohawk"
|
||||
icon_state = "vox_mohawk"
|
||||
species_allowed = list("Vox")
|
||||
|
||||
vox_quills_long
|
||||
name = "Long Vox Quills"
|
||||
icon_state = "vox_yasu"
|
||||
species_allowed = list("Vox")
|
||||
|
||||
vox_horns
|
||||
name = "Vox Spikes"
|
||||
icon_state = "vox_horns"
|
||||
species_allowed = list("Vox")
|
||||
|
||||
vox_nights
|
||||
name = "Vox Pigtails"
|
||||
icon_state = "vox_nights"
|
||||
species_allowed = list("Vox")
|
||||
|
||||
// Apollo-specific
|
||||
|
||||
//Wryn antennae
|
||||
@@ -855,10 +885,31 @@
|
||||
species_allowed = list("Tajaran")
|
||||
|
||||
taj_smallstache
|
||||
name = "Tajara Smallsatche"
|
||||
name = "Tajara Smallstache"
|
||||
icon_state = "facial_smallstache"
|
||||
species_allowed = list("Tajaran")
|
||||
|
||||
vox_colonel
|
||||
name = "Vox Colonel Beard"
|
||||
icon_state = "vox_colonel"
|
||||
species_allowed = list("Vox")
|
||||
|
||||
vox_long
|
||||
name = "Long Mustache"
|
||||
icon_state = "vox_fu"
|
||||
species_allowed = list("Vox")
|
||||
|
||||
vox_neck
|
||||
name = "Neck Quills"
|
||||
icon_state = "vox_neck"
|
||||
species_allowed = list("Vox")
|
||||
|
||||
vox_beard
|
||||
name = "Vox Quill Beard"
|
||||
icon_state = "vox_beard"
|
||||
species_allowed = list("Vox")
|
||||
|
||||
|
||||
//Vulpkanin
|
||||
|
||||
vulp_blaze
|
||||
|
||||
@@ -98,6 +98,9 @@ About the Holder:
|
||||
Returns the amount of the matching reagent inside the
|
||||
holder. Returns 0 if the reagent is missing.
|
||||
|
||||
overdose_list()
|
||||
Returns a list of all the chemical IDs in the reagent holder that are overdosing
|
||||
|
||||
Important variables:
|
||||
|
||||
total_volume
|
||||
|
||||
@@ -82,6 +82,14 @@ datum/reagents/proc/metabolize(var/mob/M)
|
||||
addiction_tick++
|
||||
update_total()
|
||||
|
||||
/datum/reagents/proc/overdose_list()
|
||||
var/od_chems[0]
|
||||
for(var/datum/reagent/R in reagent_list)
|
||||
if(R.overdosed)
|
||||
od_chems.Add(R.id)
|
||||
return od_chems
|
||||
|
||||
|
||||
datum/reagents/proc/reagent_on_tick()
|
||||
for(var/datum/reagent/R in reagent_list)
|
||||
R.on_tick()
|
||||
|
||||
Reference in New Issue
Block a user