Merge remote-tracking branch 'refs/remotes/ParadiseSS13/master' into freegolems

This commit is contained in:
datlo
2019-02-03 06:41:02 +00:00
68 changed files with 3222 additions and 3057 deletions
+1 -1
View File
@@ -62,7 +62,7 @@ var/global/nologevent = 0
if(M.client)
body += " played by <b>[M.client]</b> "
body += "\[<A href='?_src_=holder;editrights=rank;ckey=[M.ckey]'>[M.client.holder ? M.client.holder.rank : "Player"]</A>\] "
body += "\[<A href='?_src_=holder;getplaytimewindow=[M.UID()]'>" + M.client.get_exp_living() + "</a>\]"
body += "\[<A href='?_src_=holder;getplaytimewindow=[M.UID()]'>" + M.client.get_exp_type(EXP_TYPE_CREW) + " as [EXP_TYPE_CREW]</a>\]"
if(istype(M, /mob/new_player))
body += " <B>Hasn't Entered Game</B> "
+2 -2
View File
@@ -106,8 +106,8 @@ var/global/sent_honksquad = 0
equip_to_slot_or_del(new /obj/item/storage/backpack/clown(src), slot_back)
equip_to_slot_or_del(new /obj/item/storage/box/survival(src), slot_in_backpack)
if(src.gender == FEMALE)
equip_to_slot_or_del(new /obj/item/clothing/mask/gas/sexyclown(src), slot_wear_mask)
equip_to_slot_or_del(new /obj/item/clothing/under/sexyclown(src), slot_w_uniform)
equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat/sexy(src), slot_wear_mask)
equip_to_slot_or_del(new /obj/item/clothing/under/rank/clown/sexy(src), slot_w_uniform)
else
equip_to_slot_or_del(new /obj/item/clothing/under/rank/clown(src), slot_w_uniform)
equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(src), slot_wear_mask)
+22 -30
View File
@@ -373,15 +373,7 @@
if(prefs.lastchangelog != changelog_hash) //bolds the changelog button on the interface so we know there are updates. -CP
if(establish_db_connection())
to_chat(src, "<span class='info'>Changelog has changed since your last visit.</span>")
winset(src, "rpane.changelog", "background-color=#bb7700;font-color=#FFFFFF;font-style=bold")
else
if(establish_db_connection())
if(prefs.toggles & UI_DARKMODE)
winset(src, "rpane.changelog", "background-color=#bb7700;font-color=#FFFFFF;font-style=bold") // makes changelog dark if its been set
else
winset(src, "rpane.changelog", "background-color=#ffffff;font-color=#000000") // makes changelog normal if it hasnt been set
else
winset(src, "rpane.changelog", "background-color=#ffffff;font-color=#000000") // makes changelog normal if DB isnt connected
winset(src, "rpane.changelog", "background-color=#bb7700;text-color=#FFFFFF;font-style=bold")
if(!void)
void = new()
@@ -714,33 +706,33 @@
/client/proc/deactivate_darkmode()
///// BUTTONS /////
/* Rpane */
winset(src, "rpane.textb", "background-color=#ffffff;text-color=#000000")
winset(src, "rpane.infob", "background-color=#ffffff;text-color=#000000")
winset(src, "rpane.wikib", "background-color=#ffffff;text-color=#000000")
winset(src, "rpane.forumb", "background-color=#ffffff;text-color=#000000")
winset(src, "rpane.rulesb", "background-color=#ffffff;text-color=#000000")
winset(src, "rpane.githubb", "background-color=#ffffff;text-color=#000000")
winset(src, "rpane.textb", "background-color=none;text-color=#000000")
winset(src, "rpane.infob", "background-color=none;text-color=#000000")
winset(src, "rpane.wikib", "background-color=none;text-color=#000000")
winset(src, "rpane.forumb", "background-color=none;text-color=#000000")
winset(src, "rpane.rulesb", "background-color=none;text-color=#000000")
winset(src, "rpane.githubb", "background-color=none;text-color=#000000")
/* Mainwindow */
winset(src, "mainwindow.saybutton", "background-color=#ffffff;text-color=#000000")
winset(src, "mainwindow.mebutton", "background-color=#ffffff;text-color=#000000")
winset(src, "mainwindow.hotkey_toggle", "background-color=#ffffff;text-color=#000000")
winset(src, "mainwindow.saybutton", "background-color=none;text-color=#000000")
winset(src, "mainwindow.mebutton", "background-color=none;text-color=#000000")
winset(src, "mainwindow.hotkey_toggle", "background-color=none;text-color=#000000")
///// UI ELEMENTS /////
/* Mainwindow */
winset(src, "mainwindow", "background-color=#ffffff")
winset(src, "mainwindow.mainvsplit", "background-color=#ffffff")
winset(src, "mainwindow.tooltip", "background-color=#ffffff")
winset(src, "mainwindow", "background-color=none")
winset(src, "mainwindow.mainvsplit", "background-color=none")
winset(src, "mainwindow.tooltip", "background-color=none")
/* Outputwindow */
winset(src, "outputwindow.outputwindow", "background-color=#ffffff")
winset(src, "outputwindow.browseroutput", "background-color=#ffffff")
winset(src, "outputwindow.outputwindow", "background-color=none")
winset(src, "outputwindow.browseroutput", "background-color=none")
/* Rpane */
winset(src, "rpane", "background-color=#ffffff")
winset(src, "rpane.rpane", "background-color=#ffffff")
winset(src, "rpane.rpanewindow", "background-color=#ffffff")
winset(src, "rpane", "background-color=none")
winset(src, "rpane.rpane", "background-color=none")
winset(src, "rpane.rpanewindow", "background-color=none")
/* Browserwindow */
winset(src, "browserwindow", "background-color=#ffffff")
winset(src, "browserwindow.browser", "background-color=#ffffff")
winset(src, "browserwindow", "background-color=none")
winset(src, "browserwindow.browser", "background-color=none")
/* Infowindow */
winset(src, "infowindow", "background-color=#ffffff;text-color=#000000")
winset(src, "infowindow.info", "background-color=#ffffff;text-color=#000000;highlight-color=#007700;tab-text-color=#000000;tab-background-color=#ffffff")
winset(src, "infowindow", "background-color=none;text-color=#000000")
winset(src, "infowindow.info", "background-color=none;text-color=#000000;highlight-color=#007700;tab-text-color=#000000;tab-background-color=none")
///// NOTIFY USER /////
to_chat(src, "<span class='notice'>Darkmode Disabled</span>") // what a sick fuck
@@ -482,7 +482,10 @@
/datum/preferences/proc/SetChangelog(client/C,hash)
lastchangelog=hash
winset(C, "rpane.changelog", "background-color=none;font-style=")
if(preferences_datums[C.ckey].toggles & UI_DARKMODE)
winset(C, "rpane.changelog", "background-color=#40628a;font-color=#ffffff;font-style=none")
else
winset(C, "rpane.changelog", "background-color=none;font-style=none")
var/DBQuery/query = dbcon.NewQuery("UPDATE [format_table_name("player")] SET lastchangelog='[lastchangelog]' WHERE ckey='[C.ckey]'")
if(!query.Execute())
var/err = query.ErrorMsg()
@@ -491,3 +494,9 @@
to_chat(C, "Couldn't update your last seen changelog, please try again later.")
return
return 1
/datum/preferences/proc/UpdateChangelogButton(client/C)
if(preferences_datums[C.ckey].toggles & UI_DARKMODE)
winset(C, "rpane.changelog", "background-color=#40628a;text-color=#ffffff;font-style=none")
else
winset(C, "rpane.changelog", "background-color=none;text-color=#000000;font-style=none")
+8 -1
View File
@@ -5,7 +5,7 @@
icon_state = "hardhat0_yellow"
item_state = "hardhat0_yellow"
var/brightness_on = 4 //luminosity when on
var/on = 0
var/on = FALSE
item_color = "yellow" //Determines used sprites: hardhat[on]_[color] and hardhat[on]_[color]2 (lying down sprite)
armor = list(melee = 15, bullet = 5, laser = 20, energy = 10, bomb = 20, bio = 10, rad = 20)
flags_inv = 0
@@ -29,6 +29,13 @@
var/datum/action/A = X
A.UpdateButtonIcon()
/obj/item/clothing/head/hardhat/extinguish_light()
if(on)
on = FALSE
set_light(0)
icon_state = "hardhat0_[item_color]"
item_state = "hardhat0_[item_color]"
visible_message("<span class='danger'>[src]'s light fades and turns off.</span>")
/obj/item/clothing/head/hardhat/orange
icon_state = "hardhat0_orange"
+6 -7
View File
@@ -119,6 +119,12 @@
to_chat(M, "Your Clown Mask has now morphed into [choice], all praise the Honk Mother!")
return 1
/obj/item/clothing/mask/gas/clown_hat/sexy
name = "sexy-clown wig and mask"
desc = "A feminine clown mask for the dabbling crossdressers or female entertainers."
icon_state = "sexyclown"
item_state = "sexyclown"
/obj/item/clothing/mask/gas/clownwiz
name = "wizard clown wig and mask"
desc = "Some pranksters are truly magical."
@@ -135,13 +141,6 @@
item_state = "clown_hat"
flags = NODROP
/obj/item/clothing/mask/gas/sexyclown
name = "sexy-clown wig and mask"
desc = "A feminine clown mask for the dabbling crossdressers or female entertainers."
icon_state = "sexyclown"
item_state = "sexyclown"
burn_state = FLAMMABLE
/obj/item/clothing/mask/gas/mime
name = "mime mask"
desc = "The traditional mime's mask. It has an eerie facial posture."
@@ -57,6 +57,11 @@
var/datum/action/A = X
A.UpdateButtonIcon()
/obj/item/clothing/head/helmet/space/hardsuit/extinguish_light()
if(on)
toggle_light()
visible_message("<span class='danger'>[src]'s light fades and turns off.</span>")
/obj/item/clothing/head/helmet/space/hardsuit/item_action_slot_check(slot)
if(slot == slot_head)
return 1
@@ -102,6 +102,11 @@
var/datum/action/A = X
A.UpdateButtonIcon()
/obj/item/clothing/head/helmet/space/eva/plasmaman/extinguish_light()
if(on)
toggle_light()
visible_message("<span class='danger'>[src]'s light fades and turns off.</span>")
// ENGINEERING
/obj/item/clothing/suit/space/eva/plasmaman/atmostech
name = "plasmaman atmospheric suit"
@@ -81,6 +81,13 @@
score_clownabuse++
return ..()
/obj/item/clothing/under/rank/clown/sexy
name = "sexy-clown suit"
desc = "It makes you look HONKable!"
icon_state = "sexyclown"
item_state = "sexyclown"
item_color = "sexyclown"
/obj/item/clothing/under/rank/head_of_personnel
desc = "It's a jumpsuit worn by someone who works in the position of \"Head of Personnel\"."
name = "head of personnel's jumpsuit"
@@ -53,13 +53,6 @@
item_state = "b_suit"
item_color = "mailman"
/obj/item/clothing/under/sexyclown
name = "sexy-clown suit"
desc = "It makes you look HONKable!"
icon_state = "sexyclown"
item_state = "sexyclown"
item_color = "sexyclown"
/obj/item/clothing/under/rank/vice
name = "vice officer's jumpsuit"
desc = "It's the standard issue pretty-boy outfit, as seen on Holo-Vision."
+37
View File
@@ -1627,3 +1627,40 @@
icon = 'icons/obj/custom_items.dmi'
icon_state = "ps_bunny"
/obj/item/clothing/under/fluff/kiaoutfit //FullOfSkittles: Kiachi
name = "Suspicious Outfit"
desc = "A very expensive top with intricate details tailored to fit a vox and paired with a glittery blue skirt, probably illegal."
icon = 'icons/obj/custom_items.dmi'
lefthand_file = 'icons/mob/inhands/fluff_lefthand.dmi'
righthand_file = 'icons/mob/inhands/fluff_righthand.dmi'
species_fit = list("Vox")
sprite_sheets = list("Vox" = 'icons/mob/species/vox/uniform.dmi')
icon_state = "kiaoutfit"
item_state = "kiaoutfit"
item_color = "kiaoutfit"
displays_id = FALSE
species_restricted = list("Vox")
/obj/item/clothing/head/fluff/kiahat //FullOfSkittles: Kiachi
name = "Suspicious Witch Hat"
desc = "A black witch hat with a blue sash decorated with tiny glimmering stars and a gold squid-like medallion, probably possessed."
icon = 'icons/obj/custom_items.dmi'
lefthand_file = 'icons/mob/inhands/fluff_lefthand.dmi'
righthand_file = 'icons/mob/inhands/fluff_righthand.dmi'
icon_state = "kiahat"
item_state = "kiahat"
item_color = "kiahat"
/obj/item/clothing/mask/gas/fluff/kiamask //FullOfSkittles: Kiachi
name = "Suspicious Mask"
desc = "A sleek mask that blends in with the owner's existing quills using strange technology. It might even be magic..."
icon = 'icons/obj/custom_items.dmi'
lefthand_file = 'icons/mob/inhands/fluff_lefthand.dmi'
righthand_file = 'icons/mob/inhands/fluff_righthand.dmi'
species_fit = list("Vox")
sprite_sheets = list("Vox" = 'icons/mob/species/vox/mask.dmi')
icon_state = "kiamask"
item_state = "kiamask"
item_color = "kiamask"
species_restricted = list("Vox")
+3
View File
@@ -40,6 +40,9 @@
else
light = new /datum/light_source(src, .)
/atom/proc/extinguish_light()
return
/atom/Destroy()
if(light)
light.destroy()
@@ -1992,3 +1992,12 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
dna.SetSEState(block, FALSE, TRUE)
genemutcheck(src, block, null, MUTCHK_FORCED)
dna.UpdateSE()
/mob/living/carbon/human/extinguish_light()
// Parent function handles stuff the human may be holding
..()
var/obj/item/organ/internal/lantern/O = get_int_organ(/obj/item/organ/internal/lantern)
if(O && O.glowing)
O.toggle_biolum(TRUE)
visible_message("<span class='danger'>[src] is engulfed in shadows and fades into the darkness.</span>", "<span class='danger'>A sense of dread washes over you as you suddenly dim dark.</span>")
@@ -91,6 +91,9 @@
var/obj/item/organ/internal/L = get_organ_slot("lungs")
if((breathes && !L) || breathes && L && (L.status & ORGAN_DEAD))
return FALSE
if(oxyloss > 10 || losebreath >= 4)
emote("gasp")
return FALSE
if(mind)
return !mind.miming
return TRUE
+16
View File
@@ -80,6 +80,10 @@
if(moving_diagonally) //no mob swap during diagonal moves.
return 1
if(a_intent == INTENT_HELP) // Help intent doesn't mob swap a mob pulling a structure
if(isstructure(M.pulling) || isstructure(pulling))
return 1
if(!M.buckled && !M.has_buckled_mobs())
var/mob_swap
//the puller can always swap with it's victim if on grab intent
@@ -128,6 +132,13 @@
//Called when we want to push an atom/movable
/mob/living/proc/PushAM(atom/movable/AM, force = move_force)
if(isstructure(AM) && AM.pulledby)
if(a_intent == INTENT_HELP && AM.pulledby != src) // Help intent doesn't push other peoples pulled structures
return FALSE
if(get_dist(get_step(AM, get_dir(src, AM)), AM.pulledby)>1)//Release pulled structures beyond 1 distance
AM.pulledby.stop_pulling()
if(now_pushing)
return TRUE
if(moving_diagonally) // no pushing during diagonal moves
@@ -976,3 +987,8 @@
/mob/living/proc/fakefire()
return
/mob/living/extinguish_light()
for(var/atom/A in src)
if(A.light_range > 0)
A.extinguish_light()
@@ -79,6 +79,7 @@
var/obj/item/integrated_radio/signal/sradio // AI's signaller
var/translator_on = 0 // keeps track of the translator module
var/flashlight_on = FALSE //keeps track of the flashlight module
var/current_pda_messaging = null
var/custom_sprite = 0
@@ -607,3 +608,8 @@
else //something went very wrong.
CRASH("pAI without card")
loc = card
/mob/living/silicon/pai/extinguish_light()
flashlight_on = FALSE
set_light(0)
card.set_light(0)
@@ -609,3 +609,20 @@
data["holder"] = 0
return data
/datum/pai_software/flashlight
name = "Flashlight"
ram_cost = 5
id = "flashlight"
/datum/pai_software/flashlight/toggle(mob/living/silicon/pai/user)
var/atom/movable/actual_location = istype(user.loc, /obj/item/paicard) ? user.loc : user
if(user.flashlight_on)
actual_location.set_light(2)
user.card.set_light(2)
return
actual_location.set_light(2)
user.card.set_light(0)
/datum/pai_software/flashlight/is_active(mob/living/silicon/pai/user)
return user.flashlight_on
@@ -1382,6 +1382,9 @@ var/list/robot_verbs_default = list(
if(2)
disable_component("comms", 60)
/mob/living/silicon/robot/extinguish_light()
update_headlamp(1, 150)
/mob/living/silicon/robot/rejuvenate()
..()
var/brute = 1000
+1
View File
@@ -3,6 +3,7 @@
layer = 4.0
animate_movement = 2
pressure_resistance = 8
dont_save = TRUE //to avoid it messing up in buildmode saving
var/datum/mind/mind
var/stat = 0 //Whether a mob is alive or dead. TODO: Move this to living - Nodrak
+1
View File
@@ -536,6 +536,7 @@ var/list/intents = list(INTENT_HELP,INTENT_DISARM,INTENT_GRAB,INTENT_HARM)
if(ID.registered_name == oldname)
ID.registered_name = newname
ID.name = "[newname]'s ID Card ([ID.assignment])"
ID.RebuildHTML()
if(!search_pda) break
search_id = 0
+14
View File
@@ -0,0 +1,14 @@
/*
This checks that the user is a ghost or alternatively an admin. Used for the mob spawner.
We don't want any living people somehow getting the menu open and reincarnating while alive
*/
/var/global/datum/topic_state/ghost_state/ghost_state = new()
/datum/topic_state/ghost_state/can_use_topic(var/src_object, var/mob/user)
if(user.stat == DEAD)
return STATUS_INTERACTIVE
if(check_rights(R_ADMIN, 0, src))
return STATUS_INTERACTIVE
return STATUS_CLOSE
+5
View File
@@ -511,3 +511,8 @@ var/global/list/obj/item/pda/PDAs = list()
/obj/item/pda/process()
if(current_app)
current_app.program_process()
/obj/item/pda/extinguish_light()
var/datum/data/pda/utility/flashlight/FL = find_program(/datum/data/pda/utility/flashlight)
if(FL && FL.fon)
FL.start()
+11 -7
View File
@@ -137,7 +137,7 @@
idle_power_usage = 2
active_power_usage = 20
power_channel = LIGHT //Lights are calc'd via area so they dont need to be in the machine list
var/on = 0 // 1 if on, 0 if off
var/on = FALSE // 1 if on, 0 if off
var/on_gs = 0
var/static_power_used = 0
var/brightness_range = 8 // luminosity when on, also used in power calculation
@@ -159,7 +159,6 @@
var/nightshift_light_power = 0.45
var/nightshift_light_color = "#FFDDCC"
// the smaller bulb light fixture
/obj/machinery/light/small
@@ -213,7 +212,7 @@
/obj/machinery/light/Destroy()
var/area/A = get_area(src)
if(A)
on = 0
on = FALSE
// A.update_lights()
return ..()
@@ -224,13 +223,13 @@
icon_state = "[base_state][on]"
if(LIGHT_EMPTY)
icon_state = "[base_state]-empty"
on = 0
on = FALSE
if(LIGHT_BURNED)
icon_state = "[base_state]-burned"
on = 0
on = FALSE
if(LIGHT_BROKEN)
icon_state = "[base_state]-broken"
on = 0
on = FALSE
return
// update the icon_state and luminosity of the light depending on its state
@@ -255,7 +254,7 @@
if(status == LIGHT_OK && trigger)
status = LIGHT_BURNED
icon_state = "[base_state]-burned"
on = 0
on = FALSE
set_light(0)
else
use_power = ACTIVE_POWER_USE
@@ -730,3 +729,8 @@
if(limb)
limb.droplimb(0, DROPLIMB_BURN)
return FIRELOSS
/obj/machinery/light/extinguish_light()
on = FALSE
visible_message("<span class='danger'>[src] flickers and falls dark.</span>")
update(0)
+5
View File
@@ -305,6 +305,11 @@ obj/item/gun/proc/newshot()
var/datum/action/A = X
A.UpdateButtonIcon()
/obj/item/gun/extinguish_light()
if(gun_light.on)
toggle_gunlight()
visible_message("<span class='danger'>[src]'s light fades and turns off.</span>")
/obj/item/gun/pickup(mob/user)
..()
if(azoom)
@@ -430,7 +430,6 @@
update_flags |= M.adjustOxyLoss(-25*REAGENTS_EFFECT_MULTIPLIER, FALSE)
if(volume >= 4)
M.LoseBreath(6)
M.Silence(6)
if(prob(33))
update_flags |= M.adjustBruteLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
update_flags |= M.adjustFireLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+1 -1
View File
@@ -189,7 +189,7 @@
for(var/mob/living/carbon/human/H in view(2, E.loc))//germs from people
if(AStar(E.loc, H.loc, /turf/proc/Distance, 2, simulated_only = 0))
if((!(BREATHLESS in H.mutations) || !(NO_BREATHE in H.dna.species.species_traits)) && !H.wear_mask) //wearing a mask helps preventing people from breathing cooties into open incisions
if(!((BREATHLESS in H.mutations) || (NO_BREATHE in H.dna.species.species_traits)) && !H.wear_mask) //wearing a mask helps preventing people from breathing cooties into open incisions
germs += H.germ_level * 0.25
for(var/obj/effect/decal/cleanable/M in view(2, E.loc))//germs from messes