hunger 0.1
@@ -152,3 +152,8 @@
|
|||||||
dview_mob.loc = center; \
|
dview_mob.loc = center; \
|
||||||
dview_mob.see_invisible = invis_flags; \
|
dview_mob.see_invisible = invis_flags; \
|
||||||
for(type in view(range, dview_mob))
|
for(type in view(range, dview_mob))
|
||||||
|
|
||||||
|
//HARDCORE MODE STUFF (mainly hunger)
|
||||||
|
|
||||||
|
#define hardcore_mode_on ((ticker) && (ticker.hardcore_mode))
|
||||||
|
#define eligible_for_hardcore_mode(M) (M.ckey && M.client)
|
||||||
|
|||||||
@@ -27,6 +27,9 @@ var/global/datum/controller/gameticker/ticker
|
|||||||
|
|
||||||
var/random_players = 0 // if set to nonzero, ALL players who latejoin or declare-ready join will have random appearances/genders
|
var/random_players = 0 // if set to nonzero, ALL players who latejoin or declare-ready join will have random appearances/genders
|
||||||
|
|
||||||
|
var/hardcore_mode = 0 //If set to nonzero, hardcore mode is enabled (current hardcore mode features: damage from hunger)
|
||||||
|
//Use the hardcore_mode_on macro - if(hardcore_mode_on) to_chat(user,"You're hardcore!")
|
||||||
|
|
||||||
var/list/syndicate_coalition = list() // list of traitor-compatible factions
|
var/list/syndicate_coalition = list() // list of traitor-compatible factions
|
||||||
var/list/factions = list() // list of all factions
|
var/list/factions = list() // list of all factions
|
||||||
var/list/availablefactions = list() // list of factions with openings
|
var/list/availablefactions = list() // list of factions with openings
|
||||||
@@ -66,15 +69,15 @@ var/global/datum/controller/gameticker/ticker
|
|||||||
do
|
do
|
||||||
var/delay_timetotal = 3000 //actually 5 minutes or incase this is changed from 3000, (time_in_seconds * 10)
|
var/delay_timetotal = 3000 //actually 5 minutes or incase this is changed from 3000, (time_in_seconds * 10)
|
||||||
pregame_timeleft = world.timeofday + delay_timetotal
|
pregame_timeleft = world.timeofday + delay_timetotal
|
||||||
to_chat(world, "<B><FONT color='blue'>Welcome to the pre-game lobby!</FONT></B>")
|
to_chat(world, "<B><FONT color='blue'>Welcome to the pre-game lobby!</FONT></B>")
|
||||||
to_chat(world, "Please, setup your character and select ready. Game will start in [(pregame_timeleft - world.timeofday) / 10] seconds")
|
to_chat(world, "Please, setup your character and select ready. Game will start in [(pregame_timeleft - world.timeofday) / 10] seconds")
|
||||||
while(current_state <= GAME_STATE_PREGAME)
|
while(current_state <= GAME_STATE_PREGAME)
|
||||||
for(var/i=0, i<10, i++)
|
for(var/i=0, i<10, i++)
|
||||||
sleep(1)
|
sleep(1)
|
||||||
vote.process()
|
vote.process()
|
||||||
watchdog.check_for_update()
|
watchdog.check_for_update()
|
||||||
//if(watchdog.waiting)
|
//if(watchdog.waiting)
|
||||||
// to_chat(world, "<span class='notice'>Server update detected, restarting momentarily.</span>")
|
// to_chat(world, "<span class='notice'>Server update detected, restarting momentarily.</span>")
|
||||||
//watchdog.signal_ready()
|
//watchdog.signal_ready()
|
||||||
//return
|
//return
|
||||||
if (world.timeofday < (863800 - delay_timetotal) && pregame_timeleft > 863950) // having a remaining time > the max of time of day is bad....
|
if (world.timeofday < (863800 - delay_timetotal) && pregame_timeleft > 863950) // having a remaining time > the max of time of day is bad....
|
||||||
@@ -114,7 +117,7 @@ var/global/datum/controller/gameticker/ticker
|
|||||||
runnable_modes = config.get_runnable_modes()
|
runnable_modes = config.get_runnable_modes()
|
||||||
if (runnable_modes.len==0)
|
if (runnable_modes.len==0)
|
||||||
current_state = GAME_STATE_PREGAME
|
current_state = GAME_STATE_PREGAME
|
||||||
to_chat(world, "<B>Unable to choose playable game mode.</B> Reverting to pre-game lobby.")
|
to_chat(world, "<B>Unable to choose playable game mode.</B> Reverting to pre-game lobby.")
|
||||||
return 0
|
return 0
|
||||||
if(secret_force_mode != "secret")
|
if(secret_force_mode != "secret")
|
||||||
var/datum/game_mode/M = config.pick_mode(secret_force_mode)
|
var/datum/game_mode/M = config.pick_mode(secret_force_mode)
|
||||||
@@ -129,7 +132,7 @@ var/global/datum/controller/gameticker/ticker
|
|||||||
else
|
else
|
||||||
src.mode = config.pick_mode(master_mode)
|
src.mode = config.pick_mode(master_mode)
|
||||||
if (!src.mode.can_start())
|
if (!src.mode.can_start())
|
||||||
to_chat(world, "<B>Unable to start [mode.name].</B> Not enough players, [mode.required_players] players needed. Reverting to pre-game lobby.")
|
to_chat(world, "<B>Unable to start [mode.name].</B> Not enough players, [mode.required_players] players needed. Reverting to pre-game lobby.")
|
||||||
del(mode)
|
del(mode)
|
||||||
current_state = GAME_STATE_PREGAME
|
current_state = GAME_STATE_PREGAME
|
||||||
job_master.ResetOccupations()
|
job_master.ResetOccupations()
|
||||||
@@ -140,7 +143,7 @@ var/global/datum/controller/gameticker/ticker
|
|||||||
var/can_continue = src.mode.pre_setup()//Setup special modes
|
var/can_continue = src.mode.pre_setup()//Setup special modes
|
||||||
if(!can_continue)
|
if(!can_continue)
|
||||||
current_state = GAME_STATE_PREGAME
|
current_state = GAME_STATE_PREGAME
|
||||||
to_chat(world, "<B>Error setting up [master_mode].</B> Reverting to pre-game lobby.")
|
to_chat(world, "<B>Error setting up [master_mode].</B> Reverting to pre-game lobby.")
|
||||||
log_admin("The gamemode setup for [mode.name] errored out.")
|
log_admin("The gamemode setup for [mode.name] errored out.")
|
||||||
world.log << "The gamemode setup for [mode.name] errored out."
|
world.log << "The gamemode setup for [mode.name] errored out."
|
||||||
del(mode)
|
del(mode)
|
||||||
@@ -152,8 +155,8 @@ var/global/datum/controller/gameticker/ticker
|
|||||||
for (var/datum/game_mode/M in runnable_modes)
|
for (var/datum/game_mode/M in runnable_modes)
|
||||||
modes+=M.name
|
modes+=M.name
|
||||||
modes = sortList(modes)
|
modes = sortList(modes)
|
||||||
to_chat(world, "<B>The current game mode is - Secret!</B>")
|
to_chat(world, "<B>The current game mode is - Secret!</B>")
|
||||||
to_chat(world, "<B>Possibilities:</B> [english_list(modes)]")
|
to_chat(world, "<B>Possibilities:</B> [english_list(modes)]")
|
||||||
else
|
else
|
||||||
src.mode.announce()
|
src.mode.announce()
|
||||||
|
|
||||||
@@ -183,9 +186,9 @@ var/global/datum/controller/gameticker/ticker
|
|||||||
for(var/obj in L)
|
for(var/obj in L)
|
||||||
if(istype(obj, /obj/effect/landmark/spacepod/random))
|
if(istype(obj, /obj/effect/landmark/spacepod/random))
|
||||||
qdel(obj)
|
qdel(obj)
|
||||||
to_chat(world, "<FONT color='blue'><B>Enjoy the game!</B></FONT>")
|
to_chat(world, "<FONT color='blue'><B>Enjoy the game!</B></FONT>")
|
||||||
// to_chat(world, sound('sound/AI/welcome.ogg'))// Skie //Out with the old, in with the new. - N3X15
|
// to_chat(world, sound('sound/AI/welcome.ogg'))// Skie //Out with the old, in with the new. - N3X15
|
||||||
|
|
||||||
var/welcome_sentence=list('sound/AI/vox_login.ogg')
|
var/welcome_sentence=list('sound/AI/vox_login.ogg')
|
||||||
welcome_sentence += pick(
|
welcome_sentence += pick(
|
||||||
'sound/AI/vox_reminder1.ogg',
|
'sound/AI/vox_reminder1.ogg',
|
||||||
@@ -274,19 +277,19 @@ var/global/datum/controller/gameticker/ticker
|
|||||||
if("nuclear emergency") //Nuke wasn't on station when it blew up
|
if("nuclear emergency") //Nuke wasn't on station when it blew up
|
||||||
flick("intro_nuke",cinematic)
|
flick("intro_nuke",cinematic)
|
||||||
sleep(35)
|
sleep(35)
|
||||||
world << sound('sound/effects/explosionfar.ogg')
|
world << sound('sound/effects/explosionfar.ogg')
|
||||||
flick("station_intact_fade_red",cinematic)
|
flick("station_intact_fade_red",cinematic)
|
||||||
cinematic.icon_state = "summary_nukefail"
|
cinematic.icon_state = "summary_nukefail"
|
||||||
else
|
else
|
||||||
flick("intro_nuke",cinematic)
|
flick("intro_nuke",cinematic)
|
||||||
sleep(35)
|
sleep(35)
|
||||||
world << sound('sound/effects/explosionfar.ogg')
|
world << sound('sound/effects/explosionfar.ogg')
|
||||||
//flick("end",cinematic)
|
//flick("end",cinematic)
|
||||||
|
|
||||||
|
|
||||||
if(2) //nuke was nowhere nearby //TODO: a really distant explosion animation
|
if(2) //nuke was nowhere nearby //TODO: a really distant explosion animation
|
||||||
sleep(50)
|
sleep(50)
|
||||||
world << sound('sound/effects/explosionfar.ogg')
|
world << sound('sound/effects/explosionfar.ogg')
|
||||||
|
|
||||||
|
|
||||||
else //station was destroyed
|
else //station was destroyed
|
||||||
@@ -297,19 +300,19 @@ var/global/datum/controller/gameticker/ticker
|
|||||||
flick("intro_nuke",cinematic)
|
flick("intro_nuke",cinematic)
|
||||||
sleep(35)
|
sleep(35)
|
||||||
flick("station_explode_fade_red",cinematic)
|
flick("station_explode_fade_red",cinematic)
|
||||||
world << sound('sound/effects/explosionfar.ogg')
|
world << sound('sound/effects/explosionfar.ogg')
|
||||||
cinematic.icon_state = "summary_nukewin"
|
cinematic.icon_state = "summary_nukewin"
|
||||||
if("AI malfunction") //Malf (screen,explosion,summary)
|
if("AI malfunction") //Malf (screen,explosion,summary)
|
||||||
flick("intro_malf",cinematic)
|
flick("intro_malf",cinematic)
|
||||||
sleep(76)
|
sleep(76)
|
||||||
flick("station_explode_fade_red",cinematic)
|
flick("station_explode_fade_red",cinematic)
|
||||||
world << sound('sound/effects/explosionfar.ogg')
|
world << sound('sound/effects/explosionfar.ogg')
|
||||||
cinematic.icon_state = "summary_malf"
|
cinematic.icon_state = "summary_malf"
|
||||||
else //Station nuked (nuke,explosion,summary)
|
else //Station nuked (nuke,explosion,summary)
|
||||||
flick("intro_nuke",cinematic)
|
flick("intro_nuke",cinematic)
|
||||||
sleep(35)
|
sleep(35)
|
||||||
flick("station_explode_fade_red", cinematic)
|
flick("station_explode_fade_red", cinematic)
|
||||||
world << sound('sound/effects/explosionfar.ogg')
|
world << sound('sound/effects/explosionfar.ogg')
|
||||||
cinematic.icon_state = "summary_selfdes"
|
cinematic.icon_state = "summary_selfdes"
|
||||||
for(var/mob/living/M in living_mob_list)
|
for(var/mob/living/M in living_mob_list)
|
||||||
if(M)
|
if(M)
|
||||||
@@ -357,7 +360,7 @@ var/global/datum/controller/gameticker/ticker
|
|||||||
if(captainless)
|
if(captainless)
|
||||||
for(var/mob/M in player_list)
|
for(var/mob/M in player_list)
|
||||||
if(!istype(M,/mob/new_player))
|
if(!istype(M,/mob/new_player))
|
||||||
to_chat(M, "Captainship not forced on anyone.")
|
to_chat(M, "Captainship not forced on anyone.")
|
||||||
|
|
||||||
for(var/mob/M in player_list)
|
for(var/mob/M in player_list)
|
||||||
if(!istype(M,/mob/new_player))
|
if(!istype(M,/mob/new_player))
|
||||||
@@ -398,11 +401,11 @@ var/global/datum/controller/gameticker/ticker
|
|||||||
if (mode.station_was_nuked)
|
if (mode.station_was_nuked)
|
||||||
feedback_set_details("end_proper","nuke")
|
feedback_set_details("end_proper","nuke")
|
||||||
if(!delay_end && !watchdog.waiting)
|
if(!delay_end && !watchdog.waiting)
|
||||||
to_chat(world, "<span class='notice'><B>Rebooting due to destruction of station in [restart_timeout/10] seconds</B></span>")
|
to_chat(world, "<span class='notice'><B>Rebooting due to destruction of station in [restart_timeout/10] seconds</B></span>")
|
||||||
else
|
else
|
||||||
feedback_set_details("end_proper","\proper completion")
|
feedback_set_details("end_proper","\proper completion")
|
||||||
if(!delay_end && !watchdog.waiting)
|
if(!delay_end && !watchdog.waiting)
|
||||||
to_chat(world, "<span class='notice'><B>Restarting in [restart_timeout/10] seconds</B></span>")
|
to_chat(world, "<span class='notice'><B>Restarting in [restart_timeout/10] seconds</B></span>")
|
||||||
|
|
||||||
if(blackbox)
|
if(blackbox)
|
||||||
if(config.map_voting)
|
if(config.map_voting)
|
||||||
@@ -412,13 +415,13 @@ var/global/datum/controller/gameticker/ticker
|
|||||||
blackbox.save_all_data_to_sql()
|
blackbox.save_all_data_to_sql()
|
||||||
|
|
||||||
if (watchdog.waiting)
|
if (watchdog.waiting)
|
||||||
to_chat(world, "<span class='notice'><B>Server will shut down for an automatic update in [config.map_voting ? "[(restart_timeout/10)] seconds." : "a few seconds."]</B></span>")
|
to_chat(world, "<span class='notice'><B>Server will shut down for an automatic update in [config.map_voting ? "[(restart_timeout/10)] seconds." : "a few seconds."]</B></span>")
|
||||||
if(config.map_voting)
|
if(config.map_voting)
|
||||||
sleep(restart_timeout) //waiting for a mapvote to end
|
sleep(restart_timeout) //waiting for a mapvote to end
|
||||||
if(!delay_end)
|
if(!delay_end)
|
||||||
watchdog.signal_ready()
|
watchdog.signal_ready()
|
||||||
else
|
else
|
||||||
to_chat(world, "<span class='notice'><B>An admin has delayed the round end</B></span>")
|
to_chat(world, "<span class='notice'><B>An admin has delayed the round end</B></span>")
|
||||||
delay_end = 2
|
delay_end = 2
|
||||||
else if(!delay_end)
|
else if(!delay_end)
|
||||||
sleep(restart_timeout)
|
sleep(restart_timeout)
|
||||||
@@ -426,10 +429,10 @@ var/global/datum/controller/gameticker/ticker
|
|||||||
CallHook("Reboot",list())
|
CallHook("Reboot",list())
|
||||||
world.Reboot()
|
world.Reboot()
|
||||||
else
|
else
|
||||||
to_chat(world, "<span class='notice'><B>An admin has delayed the round end</B></span>")
|
to_chat(world, "<span class='notice'><B>An admin has delayed the round end</B></span>")
|
||||||
delay_end = 2
|
delay_end = 2
|
||||||
else
|
else
|
||||||
to_chat(world, "<span class='notice'><B>An admin has delayed the round end</B></span>")
|
to_chat(world, "<span class='notice'><B>An admin has delayed the round end</B></span>")
|
||||||
delay_end = 2
|
delay_end = 2
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
|
|||||||
@@ -179,8 +179,14 @@ Subject's pulse: ??? BPM"})
|
|||||||
if(M.status_flags & FAKEDEATH)
|
if(M.status_flags & FAKEDEATH)
|
||||||
OX = fake_oxy > 50 ? "<font color='blue'><b>Severe oxygen deprivation detected</b></font>" : "Subject bloodstream oxygen level normal"
|
OX = fake_oxy > 50 ? "<font color='blue'><b>Severe oxygen deprivation detected</b></font>" : "Subject bloodstream oxygen level normal"
|
||||||
message += ("<br>[OX] | [TX] | [BU] | [BR]")
|
message += ("<br>[OX] | [TX] | [BU] | [BR]")
|
||||||
|
|
||||||
if(M.reagents.total_volume)
|
if(M.reagents.total_volume)
|
||||||
message += "<br><span class='warning'>Warning: Unknown substance detected in subject's blood.</span>"
|
message += "<br><span class='warning'>Warning: Unknown substance detected in subject's blood.</span>"
|
||||||
|
if(hardcore_mode_on && ishuman(M) && eligible_for_hardcore_mode(M))
|
||||||
|
var/mob/living/carbon/human/H = M
|
||||||
|
if(H.nutrition < STARVATION_MIN)
|
||||||
|
message += "<br><span class='danger'>Warning: Severe lack of essential nutriments detected in subject's blood.</span>"
|
||||||
|
|
||||||
if(iscarbon(M))
|
if(iscarbon(M))
|
||||||
var/mob/living/carbon/C = M
|
var/mob/living/carbon/C = M
|
||||||
if(C.virus2.len)
|
if(C.virus2.len)
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ var/global/floorIsLava = 0
|
|||||||
log_adminwarn(msg)
|
log_adminwarn(msg)
|
||||||
for(var/client/C in admins)
|
for(var/client/C in admins)
|
||||||
if(R_ADMIN & C.holder.rights)
|
if(R_ADMIN & C.holder.rights)
|
||||||
to_chat(C, msg)
|
to_chat(C, msg)
|
||||||
|
|
||||||
/proc/msg_admin_attack(var/text) //Toggleable Attack Messages
|
/proc/msg_admin_attack(var/text) //Toggleable Attack Messages
|
||||||
var/rendered = "<span class=\"admin\"><span class=\"prefix\">ADMIN LOG:</span> <span class=\"message\">[text]</span></span>"
|
var/rendered = "<span class=\"admin\"><span class=\"prefix\">ADMIN LOG:</span> <span class=\"message\">[text]</span></span>"
|
||||||
@@ -18,7 +18,7 @@ var/global/floorIsLava = 0
|
|||||||
if(R_ADMIN & C.holder.rights)
|
if(R_ADMIN & C.holder.rights)
|
||||||
if(C.prefs.toggles & CHAT_ATTACKLOGS)
|
if(C.prefs.toggles & CHAT_ATTACKLOGS)
|
||||||
var/msg = rendered
|
var/msg = rendered
|
||||||
to_chat(C, msg)
|
to_chat(C, msg)
|
||||||
|
|
||||||
// Not happening.
|
// Not happening.
|
||||||
// Yes I could do a +PERMISSIONS check but I'm both too lazy and worried admins might do it on accident.
|
// Yes I could do a +PERMISSIONS check but I'm both too lazy and worried admins might do it on accident.
|
||||||
@@ -33,12 +33,12 @@ var/global/floorIsLava = 0
|
|||||||
set desc="Edit player (respawn, ban, heal, etc)"
|
set desc="Edit player (respawn, ban, heal, etc)"
|
||||||
|
|
||||||
if(!M)
|
if(!M)
|
||||||
to_chat(usr, "You seem to be selecting a mob that doesn't exist anymore.")
|
to_chat(usr, "You seem to be selecting a mob that doesn't exist anymore.")
|
||||||
return
|
return
|
||||||
if (!istype(src,/datum/admins))
|
if (!istype(src,/datum/admins))
|
||||||
src = usr.client.holder
|
src = usr.client.holder
|
||||||
if (!istype(src,/datum/admins))
|
if (!istype(src,/datum/admins))
|
||||||
to_chat(usr, "Error: you are not an admin!")
|
to_chat(usr, "Error: you are not an admin!")
|
||||||
return
|
return
|
||||||
|
|
||||||
checkSessionKey()
|
checkSessionKey()
|
||||||
@@ -245,7 +245,7 @@ var/global/floorIsLava = 0
|
|||||||
if (!istype(src,/datum/admins))
|
if (!istype(src,/datum/admins))
|
||||||
src = usr.client.holder
|
src = usr.client.holder
|
||||||
if (!istype(src,/datum/admins))
|
if (!istype(src,/datum/admins))
|
||||||
to_chat(usr, "Error: you are not an admin!")
|
to_chat(usr, "Error: you are not an admin!")
|
||||||
return
|
return
|
||||||
PlayerNotesPage(1)
|
PlayerNotesPage(1)
|
||||||
|
|
||||||
@@ -258,13 +258,13 @@ var/global/floorIsLava = 0
|
|||||||
if (!istype(src,/datum/admins))
|
if (!istype(src,/datum/admins))
|
||||||
src = usr.client.holder
|
src = usr.client.holder
|
||||||
if (!istype(src,/datum/admins))
|
if (!istype(src,/datum/admins))
|
||||||
to_chat(usr, "Error: you are not an admin!")
|
to_chat(usr, "Error: you are not an admin!")
|
||||||
return
|
return
|
||||||
checkSessionKey()
|
checkSessionKey()
|
||||||
var/cid = input("Type computer ID", "CID", 0) as num | null
|
var/cid = input("Type computer ID", "CID", 0) as num | null
|
||||||
if(cid)
|
if(cid)
|
||||||
usr << link(getVGPanel("rapsheet", admin = 1, query = list("cid" = cid)))
|
usr << link(getVGPanel("rapsheet", admin = 1, query = list("cid" = cid)))
|
||||||
// to_chat(usr, link("[config.vgws_base_url]/index.php/rapsheet/?s=[sessKey]&cid=[cid]"))
|
// to_chat(usr, link("[config.vgws_base_url]/index.php/rapsheet/?s=[sessKey]&cid=[cid]"))
|
||||||
return
|
return
|
||||||
|
|
||||||
/datum/admins/proc/checkCKEY()
|
/datum/admins/proc/checkCKEY()
|
||||||
@@ -276,12 +276,12 @@ var/global/floorIsLava = 0
|
|||||||
if (!istype(src,/datum/admins))
|
if (!istype(src,/datum/admins))
|
||||||
src = usr.client.holder
|
src = usr.client.holder
|
||||||
if (!istype(src,/datum/admins))
|
if (!istype(src,/datum/admins))
|
||||||
to_chat(usr, "Error: you are not an admin!")
|
to_chat(usr, "Error: you are not an admin!")
|
||||||
return
|
return
|
||||||
checkSessionKey()
|
checkSessionKey()
|
||||||
var/ckey = lowertext(input("Type player ckey", "ckey", null) as text | null)
|
var/ckey = lowertext(input("Type player ckey", "ckey", null) as text | null)
|
||||||
usr << link(getVGPanel("rapsheet", admin = 1, query = list("ckey" = ckey)))
|
usr << link(getVGPanel("rapsheet", admin = 1, query = list("ckey" = ckey)))
|
||||||
// usr << link("[config.vgws_base_url]/index.php/rapsheet/?s=[sessKey]&ckey=[ckey]")
|
// usr << link("[config.vgws_base_url]/index.php/rapsheet/?s=[sessKey]&ckey=[ckey]")
|
||||||
return
|
return
|
||||||
|
|
||||||
/datum/admins/proc/PlayerNotesPage(page)
|
/datum/admins/proc/PlayerNotesPage(page)
|
||||||
@@ -362,7 +362,7 @@ var/global/floorIsLava = 0
|
|||||||
if (!istype(src,/datum/admins))
|
if (!istype(src,/datum/admins))
|
||||||
src = usr.client.holder
|
src = usr.client.holder
|
||||||
if (!istype(src,/datum/admins))
|
if (!istype(src,/datum/admins))
|
||||||
to_chat(usr, "Error: you are not an admin!")
|
to_chat(usr, "Error: you are not an admin!")
|
||||||
return
|
return
|
||||||
|
|
||||||
// AUTOFIXED BY fix_string_idiocy.py
|
// AUTOFIXED BY fix_string_idiocy.py
|
||||||
@@ -390,7 +390,7 @@ var/global/floorIsLava = 0
|
|||||||
if(I.author == usr.key || check_rights(R_PERMISSIONS, show_msg = 0))
|
if(I.author == usr.key || check_rights(R_PERMISSIONS, show_msg = 0))
|
||||||
dat += "<A href='?src=\ref[src];remove_player_info=[key];remove_index=[i]'>Remove</A>"
|
dat += "<A href='?src=\ref[src];remove_player_info=[key];remove_index=[i]'>Remove</A>"
|
||||||
dat += "<br><br>"
|
dat += "<br><br>"
|
||||||
if(update_file) to_chat(info, infos)
|
if(update_file) to_chat(info, infos)
|
||||||
|
|
||||||
|
|
||||||
// AUTOFIXED BY fix_string_idiocy.py
|
// AUTOFIXED BY fix_string_idiocy.py
|
||||||
@@ -411,7 +411,7 @@ var/global/floorIsLava = 0
|
|||||||
if (!istype(src,/datum/admins))
|
if (!istype(src,/datum/admins))
|
||||||
src = usr.client.holder
|
src = usr.client.holder
|
||||||
if (!istype(src,/datum/admins))
|
if (!istype(src,/datum/admins))
|
||||||
to_chat(usr, "Error: you are not an admin!")
|
to_chat(usr, "Error: you are not an admin!")
|
||||||
return
|
return
|
||||||
var/dat
|
var/dat
|
||||||
dat = text("<HEAD><TITLE>Admin Newscaster</TITLE></HEAD><H3>Admin Newscaster Unit</H3>")
|
dat = text("<HEAD><TITLE>Admin Newscaster</TITLE></HEAD><H3>Admin Newscaster Unit</H3>")
|
||||||
@@ -642,8 +642,8 @@ var/global/floorIsLava = 0
|
|||||||
else
|
else
|
||||||
dat+="I'm sorry to break your immersion. This shit's bugged. Report this bug to Agouri, polyxenitopalidou@gmail.com"
|
dat+="I'm sorry to break your immersion. This shit's bugged. Report this bug to Agouri, polyxenitopalidou@gmail.com"
|
||||||
|
|
||||||
// to_chat(world, "Channelname: [src.admincaster_feed_channel.channel_name] [src.admincaster_feed_channel.author]")
|
// to_chat(world, "Channelname: [src.admincaster_feed_channel.channel_name] [src.admincaster_feed_channel.author]")
|
||||||
// to_chat(world, "Msg: [src.admincaster_feed_message.author] [src.admincaster_feed_message.body]")
|
// to_chat(world, "Msg: [src.admincaster_feed_message.author] [src.admincaster_feed_message.body]")
|
||||||
usr << browse(dat, "window=admincaster_main;size=400x600")
|
usr << browse(dat, "window=admincaster_main;size=400x600")
|
||||||
onclose(usr, "admincaster_main")
|
onclose(usr, "admincaster_main")
|
||||||
|
|
||||||
@@ -757,6 +757,7 @@ var/global/floorIsLava = 0
|
|||||||
<BR>
|
<BR>
|
||||||
<B>Fun Secrets</B><BR>
|
<B>Fun Secrets</B><BR>
|
||||||
<BR>
|
<BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=hardcore_mode'>[ticker&&ticker.hardcore_mode ? "Disable" : "Enable"] hardcore mode (makes starvation kill!)</A><BR>
|
||||||
<A href='?src=\ref[src];secretsfun=sec_clothes'>Remove 'internal' clothing</A><BR>
|
<A href='?src=\ref[src];secretsfun=sec_clothes'>Remove 'internal' clothing</A><BR>
|
||||||
<A href='?src=\ref[src];secretsfun=sec_all_clothes'>Remove ALL clothing</A><BR>
|
<A href='?src=\ref[src];secretsfun=sec_all_clothes'>Remove ALL clothing</A><BR>
|
||||||
<A href='?src=\ref[src];secretsfun=monkey'>Turn all humans into monkeys</A><BR>
|
<A href='?src=\ref[src];secretsfun=monkey'>Turn all humans into monkeys</A><BR>
|
||||||
@@ -883,7 +884,7 @@ var/global/floorIsLava = 0
|
|||||||
if(confirm == "Cancel")
|
if(confirm == "Cancel")
|
||||||
return
|
return
|
||||||
if(confirm == "Yes")
|
if(confirm == "Yes")
|
||||||
to_chat(world, "<span class='warning'><b>Restarting world!</b> <span class='notice'>Initiated by [usr.client.holder.fakekey ? "Admin" : usr.key]!</span>")
|
to_chat(world, "<span class='warning'><b>Restarting world!</b> <span class='notice'>Initiated by [usr.client.holder.fakekey ? "Admin" : usr.key]!</span>")
|
||||||
log_admin("[key_name(usr)] initiated a reboot.")
|
log_admin("[key_name(usr)] initiated a reboot.")
|
||||||
|
|
||||||
feedback_set_details("end_error","admin reboot - by [usr.key] [usr.client.holder.fakekey ? "(stealth)" : ""]")
|
feedback_set_details("end_error","admin reboot - by [usr.key] [usr.client.holder.fakekey ? "(stealth)" : ""]")
|
||||||
@@ -895,7 +896,7 @@ var/global/floorIsLava = 0
|
|||||||
CallHook("Reboot",list())
|
CallHook("Reboot",list())
|
||||||
|
|
||||||
if (watchdog.waiting)
|
if (watchdog.waiting)
|
||||||
to_chat(world, "<span class='notice'><B>Server will shut down for an automatic update in a few seconds.</B></span>")
|
to_chat(world, "<span class='notice'><B>Server will shut down for an automatic update in a few seconds.</B></span>")
|
||||||
watchdog.signal_ready()
|
watchdog.signal_ready()
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -914,7 +915,7 @@ var/global/floorIsLava = 0
|
|||||||
if(message)
|
if(message)
|
||||||
if(!check_rights(R_SERVER,0))
|
if(!check_rights(R_SERVER,0))
|
||||||
message = adminscrub(message,500)
|
message = adminscrub(message,500)
|
||||||
to_chat(world, "<span class='notice'><b>[usr.client.holder.fakekey ? "Administrator" : usr.key] Announces:</b>\n \t [message]</span>")
|
to_chat(world, "<span class='notice'><b>[usr.client.holder.fakekey ? "Administrator" : usr.key] Announces:</b>\n \t [message]</span>")
|
||||||
log_admin("Announce: [key_name(usr)] : [message]")
|
log_admin("Announce: [key_name(usr)] : [message]")
|
||||||
feedback_add_details("admin_verb","A") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
feedback_add_details("admin_verb","A") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||||
|
|
||||||
@@ -925,9 +926,9 @@ var/global/floorIsLava = 0
|
|||||||
|
|
||||||
ooc_allowed = !( ooc_allowed )
|
ooc_allowed = !( ooc_allowed )
|
||||||
if (ooc_allowed)
|
if (ooc_allowed)
|
||||||
to_chat(world, "<B>The OOC channel has been globally enabled!</B>")
|
to_chat(world, "<B>The OOC channel has been globally enabled!</B>")
|
||||||
else
|
else
|
||||||
to_chat(world, "<B>The OOC channel has been globally disabled!</B>")
|
to_chat(world, "<B>The OOC channel has been globally disabled!</B>")
|
||||||
log_admin("[key_name(usr)] toggled OOC.")
|
log_admin("[key_name(usr)] toggled OOC.")
|
||||||
message_admins("[key_name_admin(usr)] toggled OOC.", 1)
|
message_admins("[key_name_admin(usr)] toggled OOC.", 1)
|
||||||
feedback_add_details("admin_verb","TOOC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
feedback_add_details("admin_verb","TOOC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||||
@@ -968,7 +969,7 @@ var/global/floorIsLava = 0
|
|||||||
feedback_add_details("admin_verb","SN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
feedback_add_details("admin_verb","SN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||||
return 1
|
return 1
|
||||||
else
|
else
|
||||||
to_chat(usr, "<font color='red'>Error: Start Now: Game has already started.</font>")
|
to_chat(usr, "<font color='red'>Error: Start Now: Game has already started.</font>")
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
/datum/admins/proc/toggleenter()
|
/datum/admins/proc/toggleenter()
|
||||||
@@ -978,9 +979,9 @@ var/global/floorIsLava = 0
|
|||||||
|
|
||||||
enter_allowed = !( enter_allowed )
|
enter_allowed = !( enter_allowed )
|
||||||
if (!( enter_allowed ))
|
if (!( enter_allowed ))
|
||||||
to_chat(world, "<B>New players may no longer enter the game.</B>")
|
to_chat(world, "<B>New players may no longer enter the game.</B>")
|
||||||
else
|
else
|
||||||
to_chat(world, "<B>New players may now enter the game.</B>")
|
to_chat(world, "<B>New players may now enter the game.</B>")
|
||||||
log_admin("[key_name(usr)] toggled new player game entering.")
|
log_admin("[key_name(usr)] toggled new player game entering.")
|
||||||
message_admins("<span class='notice'>[key_name_admin(usr)] toggled new player game entering.</span>", 1)
|
message_admins("<span class='notice'>[key_name_admin(usr)] toggled new player game entering.</span>", 1)
|
||||||
world.update_status()
|
world.update_status()
|
||||||
@@ -993,9 +994,9 @@ var/global/floorIsLava = 0
|
|||||||
|
|
||||||
config.allow_ai = !( config.allow_ai )
|
config.allow_ai = !( config.allow_ai )
|
||||||
if (!( config.allow_ai ))
|
if (!( config.allow_ai ))
|
||||||
to_chat(world, "<B>The AI job is no longer chooseable.</B>")
|
to_chat(world, "<B>The AI job is no longer chooseable.</B>")
|
||||||
else
|
else
|
||||||
to_chat(world, "<B>The AI job is chooseable now.</B>")
|
to_chat(world, "<B>The AI job is chooseable now.</B>")
|
||||||
log_admin("[key_name(usr)] toggled AI allowed.")
|
log_admin("[key_name(usr)] toggled AI allowed.")
|
||||||
world.update_status()
|
world.update_status()
|
||||||
feedback_add_details("admin_verb","TAI") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
feedback_add_details("admin_verb","TAI") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||||
@@ -1007,9 +1008,9 @@ var/global/floorIsLava = 0
|
|||||||
|
|
||||||
abandon_allowed = !( abandon_allowed )
|
abandon_allowed = !( abandon_allowed )
|
||||||
if (abandon_allowed)
|
if (abandon_allowed)
|
||||||
to_chat(world, "<B>You may now respawn.</B>")
|
to_chat(world, "<B>You may now respawn.</B>")
|
||||||
else
|
else
|
||||||
to_chat(world, "<B>You may no longer respawn :(</B>")
|
to_chat(world, "<B>You may no longer respawn :(</B>")
|
||||||
message_admins("<span class='notice'>[key_name_admin(usr)] toggled respawn to [abandon_allowed ? "On" : "Off"].</span>", 1)
|
message_admins("<span class='notice'>[key_name_admin(usr)] toggled respawn to [abandon_allowed ? "On" : "Off"].</span>", 1)
|
||||||
log_admin("[key_name(usr)] toggled respawn to [abandon_allowed ? "On" : "Off"].")
|
log_admin("[key_name(usr)] toggled respawn to [abandon_allowed ? "On" : "Off"].")
|
||||||
world.update_status()
|
world.update_status()
|
||||||
@@ -1035,7 +1036,7 @@ var/global/floorIsLava = 0
|
|||||||
if(!check_rights(R_ADMIN)) return
|
if(!check_rights(R_ADMIN)) return
|
||||||
if (!ticker || ticker.current_state != GAME_STATE_PREGAME)
|
if (!ticker || ticker.current_state != GAME_STATE_PREGAME)
|
||||||
if(ticker.delay_end == 2)
|
if(ticker.delay_end == 2)
|
||||||
to_chat(world, "<font size=4><span class='danger'>World Reboot triggered by [key_name(usr)]!</font></span>")
|
to_chat(world, "<font size=4><span class='danger'>World Reboot triggered by [key_name(usr)]!</font></span>")
|
||||||
log_admin("<font size=4><span class='danger'>World Reboot triggered by [key_name(usr)]!</font></span>")
|
log_admin("<font size=4><span class='danger'>World Reboot triggered by [key_name(usr)]!</font></span>")
|
||||||
if(watchdog.waiting)
|
if(watchdog.waiting)
|
||||||
watchdog.signal_ready()
|
watchdog.signal_ready()
|
||||||
@@ -1049,11 +1050,11 @@ var/global/floorIsLava = 0
|
|||||||
if (!( going ))
|
if (!( going ))
|
||||||
going = LOBBY_TICKING_RESTARTED
|
going = LOBBY_TICKING_RESTARTED
|
||||||
ticker.pregame_timeleft = world.timeofday + ticker.remaining_time
|
ticker.pregame_timeleft = world.timeofday + ticker.remaining_time
|
||||||
to_chat(world, "<b>The game will start soon.</b>")
|
to_chat(world, "<b>The game will start soon.</b>")
|
||||||
log_admin("[key_name(usr)] removed the delay.")
|
log_admin("[key_name(usr)] removed the delay.")
|
||||||
else
|
else
|
||||||
going = LOBBY_TICKING_STOPPED
|
going = LOBBY_TICKING_STOPPED
|
||||||
to_chat(world, "<b>The game start has been delayed.</b>")
|
to_chat(world, "<b>The game start has been delayed.</b>")
|
||||||
log_admin("[key_name(usr)] delayed the game.")
|
log_admin("[key_name(usr)] delayed the game.")
|
||||||
feedback_add_details("admin_verb","DELAY") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
feedback_add_details("admin_verb","DELAY") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||||
#undef LOBBY_TICKING_STOPPED
|
#undef LOBBY_TICKING_STOPPED
|
||||||
@@ -1093,7 +1094,7 @@ var/global/floorIsLava = 0
|
|||||||
if(!usr.client.holder) return
|
if(!usr.client.holder) return
|
||||||
if( alert("Reboot server?",,"Yes","No") == "No")
|
if( alert("Reboot server?",,"Yes","No") == "No")
|
||||||
return
|
return
|
||||||
to_chat(world, "<span class='warning'><b>Rebooting world!</b> <span class='notice'>Initiated by [usr.client.holder.fakekey ? "Admin" : usr.key]!</span>")
|
to_chat(world, "<span class='warning'><b>Rebooting world!</b> <span class='notice'>Initiated by [usr.client.holder.fakekey ? "Admin" : usr.key]!</span>")
|
||||||
log_admin("[key_name(usr)] initiated an immediate reboot.")
|
log_admin("[key_name(usr)] initiated an immediate reboot.")
|
||||||
|
|
||||||
feedback_set_details("end_error","immediate admin reboot - by [usr.key] [usr.client.holder.fakekey ? "(stealth)" : ""]")
|
feedback_set_details("end_error","immediate admin reboot - by [usr.key] [usr.client.holder.fakekey ? "(stealth)" : ""]")
|
||||||
@@ -1105,7 +1106,7 @@ var/global/floorIsLava = 0
|
|||||||
CallHook("Reboot",list())
|
CallHook("Reboot",list())
|
||||||
|
|
||||||
if (watchdog.waiting)
|
if (watchdog.waiting)
|
||||||
to_chat(world, "<span class='notice'><B>Server will shut down for an automatic update in a few seconds.</B></span>")
|
to_chat(world, "<span class='notice'><B>Server will shut down for an automatic update in a few seconds.</B></span>")
|
||||||
watchdog.signal_ready()
|
watchdog.signal_ready()
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -1231,10 +1232,10 @@ var/global/floorIsLava = 0
|
|||||||
set name = "Show Traitor Panel"
|
set name = "Show Traitor Panel"
|
||||||
|
|
||||||
if(!istype(M))
|
if(!istype(M))
|
||||||
to_chat(usr, "This can only be used on instances of type /mob")
|
to_chat(usr, "This can only be used on instances of type /mob")
|
||||||
return
|
return
|
||||||
if(!M.mind)
|
if(!M.mind)
|
||||||
to_chat(usr, "This mob has no mind!")
|
to_chat(usr, "This mob has no mind!")
|
||||||
return
|
return
|
||||||
|
|
||||||
M.mind.edit_memory()
|
M.mind.edit_memory()
|
||||||
@@ -1248,9 +1249,9 @@ var/global/floorIsLava = 0
|
|||||||
|
|
||||||
tinted_weldhelh = !( tinted_weldhelh )
|
tinted_weldhelh = !( tinted_weldhelh )
|
||||||
if (tinted_weldhelh)
|
if (tinted_weldhelh)
|
||||||
to_chat(world, "<B>The tinted_weldhelh has been enabled!</B>")
|
to_chat(world, "<B>The tinted_weldhelh has been enabled!</B>")
|
||||||
else
|
else
|
||||||
to_chat(world, "<B>The tinted_weldhelh has been disabled!</B>")
|
to_chat(world, "<B>The tinted_weldhelh has been disabled!</B>")
|
||||||
log_admin("[key_name(usr)] toggled tinted_weldhelh.")
|
log_admin("[key_name(usr)] toggled tinted_weldhelh.")
|
||||||
message_admins("[key_name_admin(usr)] toggled tinted_weldhelh.", 1)
|
message_admins("[key_name_admin(usr)] toggled tinted_weldhelh.", 1)
|
||||||
feedback_add_details("admin_verb","TTWH") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
feedback_add_details("admin_verb","TTWH") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||||
@@ -1262,9 +1263,9 @@ var/global/floorIsLava = 0
|
|||||||
|
|
||||||
guests_allowed = !( guests_allowed )
|
guests_allowed = !( guests_allowed )
|
||||||
if (!( guests_allowed ))
|
if (!( guests_allowed ))
|
||||||
to_chat(world, "<B>Guests may no longer enter the game.</B>")
|
to_chat(world, "<B>Guests may no longer enter the game.</B>")
|
||||||
else
|
else
|
||||||
to_chat(world, "<B>Guests may now enter the game.</B>")
|
to_chat(world, "<B>Guests may now enter the game.</B>")
|
||||||
log_admin("[key_name(usr)] toggled guests game entering [guests_allowed?"":"dis"]allowed.")
|
log_admin("[key_name(usr)] toggled guests game entering [guests_allowed?"":"dis"]allowed.")
|
||||||
message_admins("<span class='notice'>[key_name_admin(usr)] toggled guests game entering [guests_allowed?"":"dis"]allowed.</span>", 1)
|
message_admins("<span class='notice'>[key_name_admin(usr)] toggled guests game entering [guests_allowed?"":"dis"]allowed.</span>", 1)
|
||||||
feedback_add_details("admin_verb","TGU") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
feedback_add_details("admin_verb","TGU") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||||
@@ -1282,27 +1283,27 @@ var/global/floorIsLava = 0
|
|||||||
for(var/mob/living/silicon/S in mob_list)
|
for(var/mob/living/silicon/S in mob_list)
|
||||||
ai_number++
|
ai_number++
|
||||||
if(isAI(S))
|
if(isAI(S))
|
||||||
to_chat(usr, "<b>AI [key_name(S, usr)]'s laws:</b>")
|
to_chat(usr, "<b>AI [key_name(S, usr)]'s laws:</b>")
|
||||||
else if(isrobot(S))
|
else if(isrobot(S))
|
||||||
var/mob/living/silicon/robot/R = S
|
var/mob/living/silicon/robot/R = S
|
||||||
to_chat(usr, "<b>CYBORG [key_name(S, usr)] [R.connected_ai?"(Slaved to: [R.connected_ai])":"(Independant)"]: laws:</b>")
|
to_chat(usr, "<b>CYBORG [key_name(S, usr)] [R.connected_ai?"(Slaved to: [R.connected_ai])":"(Independant)"]: laws:</b>")
|
||||||
else if (ispAI(S))
|
else if (ispAI(S))
|
||||||
var/mob/living/silicon/pai/pAI = S
|
var/mob/living/silicon/pai/pAI = S
|
||||||
to_chat(usr, "<b>pAI [key_name(S, usr)]'s laws (master: [pAI.master] ):</b>")
|
to_chat(usr, "<b>pAI [key_name(S, usr)]'s laws (master: [pAI.master] ):</b>")
|
||||||
else
|
else
|
||||||
to_chat(usr, "<b>SOMETHING SILICON [key_name(S, usr)]'s laws:</b>")
|
to_chat(usr, "<b>SOMETHING SILICON [key_name(S, usr)]'s laws:</b>")
|
||||||
|
|
||||||
if(ispAI(S))
|
if(ispAI(S))
|
||||||
var/mob/living/silicon/pai/pAI = S
|
var/mob/living/silicon/pai/pAI = S
|
||||||
pAI.show_directives(usr)
|
pAI.show_directives(usr)
|
||||||
else if (S.laws == null)
|
else if (S.laws == null)
|
||||||
to_chat(usr, "[key_name(S, usr)]'s laws are null?? Contact a coder.")
|
to_chat(usr, "[key_name(S, usr)]'s laws are null?? Contact a coder.")
|
||||||
else
|
else
|
||||||
S.laws.show_laws(usr)
|
S.laws.show_laws(usr)
|
||||||
|
|
||||||
if(!ai_number)
|
if(!ai_number)
|
||||||
to_chat(usr, "<b>No AIs located</b>")//Just so you know the thing is actually working and not just ignoring you.
|
to_chat(usr, "<b>No AIs located</b>")//Just so you know the thing is actually working and not just ignoring you.
|
||||||
|
|
||||||
|
|
||||||
/client/proc/update_mob_sprite(mob/living/carbon/human/H as mob in mob_list)
|
/client/proc/update_mob_sprite(mob/living/carbon/human/H as mob in mob_list)
|
||||||
set category = "Admin"
|
set category = "Admin"
|
||||||
@@ -1310,7 +1311,7 @@ var/global/floorIsLava = 0
|
|||||||
set desc = "Should fix any mob sprite update errors."
|
set desc = "Should fix any mob sprite update errors."
|
||||||
|
|
||||||
if (!holder)
|
if (!holder)
|
||||||
to_chat(src, "Only administrators may use this command.")
|
to_chat(src, "Only administrators may use this command.")
|
||||||
return
|
return
|
||||||
|
|
||||||
if(istype(H))
|
if(istype(H))
|
||||||
|
|||||||
@@ -218,14 +218,17 @@
|
|||||||
if(!user) return
|
if(!user) return
|
||||||
if(distance <= 1 && user.stat != 1)
|
if(distance <= 1 && user.stat != 1)
|
||||||
if(pulse == PULSE_NONE || (status_flags & FAKEDEATH))
|
if(pulse == PULSE_NONE || (status_flags & FAKEDEATH))
|
||||||
to_chat(user, "<span class='deadsay'>[t_He] has no pulse[src.client ? "" : " and [t_his] soul has departed"]...</span>")
|
to_chat(user, "<span class='deadsay'>[t_He] has no pulse[src.client ? "" : " and [t_his] soul has departed"]...</span>")
|
||||||
else
|
else
|
||||||
to_chat(user, "<span class='deadsay'>[t_He] has a pulse!</span>")
|
to_chat(user, "<span class='deadsay'>[t_He] has a pulse!</span>")
|
||||||
|
|
||||||
msg += "<span class='warning'>"
|
msg += "<span class='warning'>"
|
||||||
|
|
||||||
if(nutrition < 100)
|
if(nutrition < 100)
|
||||||
msg += "[t_He] [t_is] severely malnourished.\n"
|
if(hardcore_mode_on && eligible_for_hardcore_mode(src))
|
||||||
|
msg += "<span class='danger'>[t_He] [t_is] severely malnourished.</span>\n"
|
||||||
|
else
|
||||||
|
msg += "[t_He] [t_is] severely malnourished.\n"
|
||||||
else if(nutrition >= 500)
|
else if(nutrition >= 500)
|
||||||
if(user.nutrition < 100)
|
if(user.nutrition < 100)
|
||||||
msg += "[t_He] [t_is] plump and delicious looking - Like a fat little piggy. A tasty piggy.\n"
|
msg += "[t_He] [t_is] plump and delicious looking - Like a fat little piggy. A tasty piggy.\n"
|
||||||
@@ -477,7 +480,7 @@
|
|||||||
pose = addtext(pose,".") //Makes sure all emotes end with a period.
|
pose = addtext(pose,".") //Makes sure all emotes end with a period.
|
||||||
msg += "\n[t_He] is [pose]"
|
msg += "\n[t_He] is [pose]"
|
||||||
|
|
||||||
to_chat(user, msg)
|
to_chat(user, msg)
|
||||||
|
|
||||||
//Helper procedure. Called by /mob/living/carbon/human/examine() and /mob/living/carbon/human/Topic() to determine HUD access to security and medical records.
|
//Helper procedure. Called by /mob/living/carbon/human/examine() and /mob/living/carbon/human/Topic() to determine HUD access to security and medical records.
|
||||||
/proc/hasHUD(mob/M as mob, hudtype)
|
/proc/hasHUD(mob/M as mob, hudtype)
|
||||||
|
|||||||
@@ -132,6 +132,15 @@
|
|||||||
if(!delay_ready_dna)
|
if(!delay_ready_dna)
|
||||||
dna.ready_dna(src)
|
dna.ready_dna(src)
|
||||||
|
|
||||||
|
if(hardcore_mode_on)
|
||||||
|
spawn(2 SECONDS)
|
||||||
|
//Hardcore mode stuff
|
||||||
|
//Warn the player that not eating will lead to his death
|
||||||
|
if(eligible_for_hardcore_mode(src))
|
||||||
|
to_chat(src, "<h5><span class='notice'>Hardcode mode is enabled!</span></h5>")
|
||||||
|
to_chat(src, "<b>You must eat to survive. Starvation for extended periods of time will kill you!</b>")
|
||||||
|
to_chat(src, "<b>Keep an eye out on the hunger indicator on the right of your screen; it will start flashing red and black when you're close to starvation.</b>")
|
||||||
|
|
||||||
/mob/living/carbon/human/player_panel_controls()
|
/mob/living/carbon/human/player_panel_controls()
|
||||||
var/html=""
|
var/html=""
|
||||||
|
|
||||||
|
|||||||
@@ -78,7 +78,13 @@
|
|||||||
|
|
||||||
//Nutrition decrease
|
//Nutrition decrease
|
||||||
if(nutrition > 0 && stat != 2)
|
if(nutrition > 0 && stat != 2)
|
||||||
nutrition = max (0, nutrition - HUNGER_FACTOR)
|
//Nutrition decreases slower when you're sleeping
|
||||||
|
var/reduce_nutrition_by = HUNGER_FACTOR
|
||||||
|
|
||||||
|
if(sleeping)
|
||||||
|
reduce_nutrition_by *= 0.25 //Reduce hunger factor by 75%
|
||||||
|
|
||||||
|
nutrition = max (0, nutrition - reduce_nutrition_by)
|
||||||
|
|
||||||
if(nutrition > 450)
|
if(nutrition > 450)
|
||||||
if(overeatduration < 600) //capped so people don't take forever to unfat
|
if(overeatduration < 600) //capped so people don't take forever to unfat
|
||||||
|
|||||||
@@ -195,6 +195,10 @@
|
|||||||
if(150 to 250) nutrition_icon.icon_state = "nutrition3"
|
if(150 to 250) nutrition_icon.icon_state = "nutrition3"
|
||||||
else nutrition_icon.icon_state = "nutrition4"
|
else nutrition_icon.icon_state = "nutrition4"
|
||||||
|
|
||||||
|
if(ticker && ticker.hardcore_mode) //Hardcore mode: flashing nutrition indicator when starving!
|
||||||
|
if(nutrition < STARVATION_MIN)
|
||||||
|
nutrition_icon.icon_state = "nutrition5"
|
||||||
|
|
||||||
if(pressure)
|
if(pressure)
|
||||||
pressure.icon_state = "pressure[pressure_alert]"
|
pressure.icon_state = "pressure[pressure_alert]"
|
||||||
|
|
||||||
|
|||||||
@@ -17,3 +17,71 @@
|
|||||||
if(!(M.status_flags & GODMODE))
|
if(!(M.status_flags & GODMODE))
|
||||||
M.adjustBruteLoss(5)
|
M.adjustBruteLoss(5)
|
||||||
nutrition += 10
|
nutrition += 10
|
||||||
|
|
||||||
|
//I put the nutriment stuff here
|
||||||
|
|
||||||
|
if(!hardcore_mode_on) return //If hardcore mode isn't on, return
|
||||||
|
if(!eligible_for_hardcore_mode(src)) return //If our mob isn't affected by hardcore mode (like it isn't player controlled), return
|
||||||
|
if(src.isDead()) return //Don't affect dead dudes
|
||||||
|
|
||||||
|
if(nutrition < 100) //Nutrition is below 100 = starvation
|
||||||
|
|
||||||
|
var/list/hunger_phrases = list(
|
||||||
|
"You feel weak and malnourished. You must find something to eat now!",
|
||||||
|
"You haven't eaten in ages, and your body feels weak! It's time to eat something.",
|
||||||
|
"You can barely remember the last time you had a proper, nutritional meal. Your body will shut down soon if you don't eat something!",
|
||||||
|
"Your body is running out of essential nutrients! You have to eat something soon.",
|
||||||
|
"If you don't eat something very soon, you're going to starve to death."
|
||||||
|
)
|
||||||
|
|
||||||
|
//When you're starving, the rate at which oxygen damage is healed is reduced by 80% (you only restore 1 oxygen damage per life tick, instead of 5)
|
||||||
|
|
||||||
|
switch(nutrition)
|
||||||
|
if(STARVATION_NOTICE to STARVATION_MIN) //60-80
|
||||||
|
if(sleeping) return
|
||||||
|
|
||||||
|
if(prob(2))
|
||||||
|
to_chat(src, "<span class='notice'>[pick("You're very hungry.","You really could use a meal right now.")]</span>")
|
||||||
|
|
||||||
|
if(STARVATION_WEAKNESS to STARVATION_NOTICE) //30-60
|
||||||
|
if(sleeping) return
|
||||||
|
|
||||||
|
if(prob(3)) //3% chance of a tiny amount of oxygen damage (1-10)
|
||||||
|
|
||||||
|
adjustOxyLoss(rand(1,10))
|
||||||
|
to_chat(src, "<span class='danger'>[pick(hunger_phrases)]</span>")
|
||||||
|
|
||||||
|
else if(prob(5)) //5% chance of being weakened
|
||||||
|
|
||||||
|
eye_blurry += 10
|
||||||
|
Weaken(10)
|
||||||
|
adjustOxyLoss(rand(1,15))
|
||||||
|
to_chat(src, "<span class='danger'>You're starving! The lack of strength makes you black out for a few moments...</span>")
|
||||||
|
|
||||||
|
if(STARVATION_NEARDEATH to STARVATION_WEAKNESS) //5-30, 5% chance of weakening and 1-230 oxygen damage. 5% chance of a seizure. 10% chance of dropping item
|
||||||
|
if(sleeping) return
|
||||||
|
|
||||||
|
if(prob(5))
|
||||||
|
|
||||||
|
adjustOxyLoss(rand(1,20))
|
||||||
|
to_chat(src, "<span class='danger'>You're starving. You feel your life force slowly leaving your body...</span>")
|
||||||
|
eye_blurry += 20
|
||||||
|
if(weakened < 1) Weaken(20)
|
||||||
|
|
||||||
|
else if(paralysis<1 && prob(5)) //Mini seizure (25% duration and strength of a normal seizure)
|
||||||
|
|
||||||
|
visible_message("<span class='danger'>\The [src] starts having a seizure!</span>", \
|
||||||
|
"<span class='warning'>You have a seizure!</span>")
|
||||||
|
Paralyse(2.5)
|
||||||
|
Jitter(250)
|
||||||
|
adjustOxyLoss(rand(1,25))
|
||||||
|
eye_blurry += 20
|
||||||
|
|
||||||
|
if(-INFINITY to STARVATION_NEARDEATH) //Fuck the whole body up at this point
|
||||||
|
to_chat(src, "<span class='danger'>You are dying from starvation!</span>")
|
||||||
|
adjustToxLoss(STARVATION_TOX_DAMAGE)
|
||||||
|
adjustOxyLoss(STARVATION_OXY_DAMAGE)
|
||||||
|
adjustBrainLoss(STARVATION_BRAIN_DAMAGE)
|
||||||
|
|
||||||
|
if(prob(10))
|
||||||
|
Weaken(15)
|
||||||
|
|||||||
@@ -225,7 +225,14 @@ var/global/list/whitelisted_species = list("Human")
|
|||||||
|
|
||||||
else // We're in safe limits
|
else // We're in safe limits
|
||||||
H.failed_last_breath = 0
|
H.failed_last_breath = 0
|
||||||
H.adjustOxyLoss(-5)
|
|
||||||
|
var/oxy_restored = 5
|
||||||
|
|
||||||
|
if(hardcore_mode_on && eligible_for_hardcore_mode(H)) //HARDCORE MODE stuff
|
||||||
|
if(H.nutrition < STARVATION_MIN) //Starvation makes oxygen damage heal at a slower rate!
|
||||||
|
oxy_restored = STARVATION_OXY_HEAL_RATE //Defined as 1
|
||||||
|
|
||||||
|
H.adjustOxyLoss(-oxy_restored)
|
||||||
oxygen_used = breath.oxygen/6
|
oxygen_used = breath.oxygen/6
|
||||||
H.oxygen_alert = 0
|
H.oxygen_alert = 0
|
||||||
|
|
||||||
|
|||||||
@@ -1343,3 +1343,21 @@ var/proccalls = 1
|
|||||||
#define MODE_CHANGELING "changeling"
|
#define MODE_CHANGELING "changeling"
|
||||||
#define MODE_CULTCHAT "cultchat"
|
#define MODE_CULTCHAT "cultchat"
|
||||||
#define MODE_ANCIENT "ancientchat"
|
#define MODE_ANCIENT "ancientchat"
|
||||||
|
|
||||||
|
//Hardcore mode stuff
|
||||||
|
|
||||||
|
#define STARVATION_MIN 60 //If you have less nutrition than this value, the hunger indicator starts flashing
|
||||||
|
|
||||||
|
#define STARVATION_NOTICE 45 //If you have more nutrition than this value, you get an occasional message reminding you that you're going to starve soon
|
||||||
|
|
||||||
|
#define STARVATION_WEAKNESS 20 //Otherwise, if you have more nutrition than this value, you occasionally become weak and receive minor damage
|
||||||
|
|
||||||
|
#define STARVATION_NEARDEATH 5 //Otherwise, if you have more nutrition than this value, you have seizures and occasionally receive damage
|
||||||
|
|
||||||
|
//If you have less nutrition than STARVATION_NEARDEATH, you start getting damage
|
||||||
|
|
||||||
|
#define STARVATION_OXY_DAMAGE 2.5
|
||||||
|
#define STARVATION_TOX_DAMAGE 2.5
|
||||||
|
#define STARVATION_BRAIN_DAMAGE 2.5
|
||||||
|
|
||||||
|
#define STARVATION_OXY_HEAL_RATE 1 //While starving, THIS much oxygen damage is restored per life tick (instead of the default 5)
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 154 KiB After Width: | Height: | Size: 155 KiB |
|
Before Width: | Height: | Size: 141 KiB After Width: | Height: | Size: 141 KiB |
|
Before Width: | Height: | Size: 140 KiB After Width: | Height: | Size: 140 KiB |
|
Before Width: | Height: | Size: 130 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 114 KiB After Width: | Height: | Size: 114 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 28 KiB |