Merge remote-tracking branch 'upstream/master' into hereticadjustments
This commit is contained in:
@@ -571,6 +571,26 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
message_admins("[key_name_admin(src)] has created a command report")
|
||||
SSblackbox.record_feedback("tally", "admin_verb", 1, "Create Command Report") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/cmd_admin_make_priority_announcement()
|
||||
set category = "Admin.Events"
|
||||
set name = "Make Priority Announcement"
|
||||
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
var/input = input(usr, "Enter a priority announcement. Ensure it makes sense IC.", "What?", "") as message|null
|
||||
if(!input)
|
||||
return
|
||||
|
||||
var/title = input(src, "What should the title be?", "What?","") as text|null
|
||||
|
||||
var/special_name = input(src, "Who is making the announcement?", "Who?", "") as text|null
|
||||
priority_announce(input, title, sender_override = special_name)
|
||||
|
||||
log_admin("[key_name(src)] has sent a priority announcement: [input]")
|
||||
message_admins("[key_name_admin(src)] has made a priority announcement")
|
||||
SSblackbox.record_feedback("tally", "admin_verb", 1, "Make Priority Announcement") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/cmd_change_command_name()
|
||||
set category = "Admin.Events"
|
||||
set name = "Change Command Name"
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
skewee.visible_message("<span class='warning'>[skewee] painfully slides back down [src].</span>")
|
||||
if(skewee.stat >= UNCONSCIOUS)
|
||||
return //by ratvar, no more spamming my deadchat, holy fuck
|
||||
skewee.say("Oof, ouch owwie!!", forced = "fail brass skewer removal")
|
||||
skewee.emote("pain")
|
||||
return
|
||||
skewee.visible_message("<span class='danger'>[skewee] comes free of [src] with a squelching pop!</span>", \
|
||||
"<span class='boldannounce'>You come free of [src]!</span>")
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
return FALSE
|
||||
|
||||
/turf/proc/ImmediateCalculateAdjacentTurfs()
|
||||
var/canpass = CANATMOSPASS(src, src)
|
||||
var/canpass = CANATMOSPASS(src, src)
|
||||
var/canvpass = CANVERTICALATMOSPASS(src, src)
|
||||
for(var/direction in GLOB.cardinals_multiz)
|
||||
var/turf/T = get_step_multiz(src, direction)
|
||||
@@ -79,31 +79,27 @@
|
||||
if (atmos_adjacent_turfs)
|
||||
adjacent_turfs = atmos_adjacent_turfs.Copy()
|
||||
else
|
||||
adjacent_turfs = list()
|
||||
return list() // don't bother checking diagonals, diagonals are going to be cardinal checks anyways.
|
||||
|
||||
if (!alldir)
|
||||
return adjacent_turfs
|
||||
|
||||
var/turf/curloc = src
|
||||
|
||||
for (var/direction in GLOB.diagonals_multiz)
|
||||
var/matchingDirections = 0
|
||||
var/turf/S = get_step_multiz(curloc, direction)
|
||||
if(!S)
|
||||
var/turf/other
|
||||
var/turf/mid
|
||||
for (var/d in GLOB.diagonals)
|
||||
other = get_step(src, d)
|
||||
if(!other)
|
||||
continue
|
||||
// NS step
|
||||
mid = get_step(src, NSCOMPONENT(d))
|
||||
if((mid in adjacent_turfs) && (get_step(mid, EWCOMPONENT(d)) in adjacent_turfs))
|
||||
adjacent_turfs += other
|
||||
continue
|
||||
// EW step
|
||||
mid = get_step(src, EWCOMPONENT(d))
|
||||
if((mid in adjacent_turfs) && (get_step(mid, NSCOMPONENT(d)) in adjacent_turfs))
|
||||
adjacent_turfs += other
|
||||
continue
|
||||
|
||||
for (var/checkDirection in GLOB.cardinals_multiz)
|
||||
var/turf/checkTurf = get_step(S, checkDirection)
|
||||
if(!S.atmos_adjacent_turfs || !S.atmos_adjacent_turfs[checkTurf])
|
||||
continue
|
||||
|
||||
if (adjacent_turfs[checkTurf])
|
||||
matchingDirections++
|
||||
|
||||
if (matchingDirections >= 2)
|
||||
adjacent_turfs += S
|
||||
break
|
||||
|
||||
return adjacent_turfs
|
||||
|
||||
/atom/proc/air_update_turf(command = 0)
|
||||
|
||||
@@ -240,7 +240,6 @@
|
||||
desc = "Hey kid.. c'mere. Boss says we need to offload these, to any buyer, no questions asked. You pay us, we give you three of these guns, no strings attached. Locks are to ensure they get to PAYING customers."
|
||||
cost = 2000
|
||||
contraband = TRUE
|
||||
can_private_buy = TRUE
|
||||
contains = list(/obj/item/storage/fancy/cigarettes/derringer/smuggled,
|
||||
/obj/item/storage/fancy/cigarettes/derringer/smuggled,
|
||||
/obj/item/storage/fancy/cigarettes/derringer/smuggled,
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
// You do not need to raise this if you are adding new values that have sane defaults.
|
||||
// Only raise this value when changing the meaning/format/name/layout of an existing value
|
||||
// where you would want the updater procs below to run
|
||||
#define SAVEFILE_VERSION_MAX 50
|
||||
#define SAVEFILE_VERSION_MAX 51
|
||||
|
||||
/*
|
||||
SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn
|
||||
@@ -295,6 +295,10 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
L -= ROLE_SYNDICATE
|
||||
S["be_special"] << L
|
||||
|
||||
if(current_version < 51) //humans can have digi legs now, make sure they dont default to them or human players will murder me in my sleep
|
||||
if(S["species"] == SPECIES_HUMAN)
|
||||
features["legs"] = "Plantigrade"
|
||||
|
||||
/datum/preferences/proc/load_path(ckey,filename="preferences.sav")
|
||||
if(!ckey)
|
||||
return
|
||||
|
||||
@@ -89,10 +89,8 @@
|
||||
/datum/outfit/pirate/space
|
||||
suit = /obj/item/clothing/suit/space/pirate
|
||||
head = /obj/item/clothing/head/helmet/space/pirate/bandana
|
||||
mask = /obj/item/clothing/mask/breath
|
||||
suit_store = /obj/item/tank/internals/oxygen
|
||||
ears = /obj/item/radio/headset/syndicate
|
||||
id = /obj/item/card/id
|
||||
id = /obj/item/card/id/pirate
|
||||
|
||||
/datum/outfit/pirate/space/captain
|
||||
head = /obj/item/clothing/head/helmet/space/pirate
|
||||
|
||||
@@ -206,6 +206,7 @@
|
||||
icon_screen = "syndishuttle"
|
||||
icon_keyboard = "syndie_key"
|
||||
light_color = LIGHT_COLOR_RED
|
||||
req_access = list(ACCESS_SYNDICATE)
|
||||
possible_destinations = "pirateship_away;pirateship_home;pirateship_custom"
|
||||
|
||||
/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/pirate
|
||||
@@ -214,8 +215,8 @@
|
||||
shuttleId = "pirateship"
|
||||
lock_override = CAMERA_LOCK_STATION
|
||||
shuttlePortId = "pirateship_custom"
|
||||
x_offset = 9
|
||||
y_offset = 0
|
||||
x_offset = 11
|
||||
y_offset = 1
|
||||
see_hidden = FALSE
|
||||
|
||||
/obj/docking_port/mobile/pirate
|
||||
@@ -224,11 +225,7 @@
|
||||
rechargeTime = 3 MINUTES
|
||||
|
||||
/obj/machinery/suit_storage_unit/pirate
|
||||
suit_type = /obj/item/clothing/suit/space
|
||||
helmet_type = /obj/item/clothing/head/helmet/space
|
||||
mask_type = /obj/item/clothing/mask/breath
|
||||
storage_type = /obj/item/tank/jetpack/void
|
||||
// storage_type = /obj/item/tank/internals/oxygen
|
||||
storage_type = /obj/item/tank/jetpack/carbondioxide
|
||||
|
||||
/obj/machinery/loot_locator
|
||||
name = "Booty Locator"
|
||||
|
||||
@@ -17,24 +17,29 @@
|
||||
announceWhen = rand(4, 60)
|
||||
supernova = new
|
||||
SSsun.suns += supernova
|
||||
if(prob(20))
|
||||
power = rand(5,100) / 100
|
||||
else
|
||||
power = rand(5,5000) / 100
|
||||
switch(rand(1,5))
|
||||
if(1)
|
||||
power = rand(5,100) / 100
|
||||
if(2)
|
||||
power = rand(5,500) / 100
|
||||
if(3)
|
||||
power = rand(5,1000) / 100
|
||||
if(4, 5)
|
||||
power = rand(5,5000) / 100
|
||||
supernova.azimuth = rand(0, 359)
|
||||
supernova.power_mod = 0
|
||||
|
||||
/datum/round_event/supernova/announce()
|
||||
var/message = "Our tachyon-doppler array has detected a supernova in your vicinity. Peak flux from the supernova estimated to be [round(power,0.1)] times current solar flux. [power > 1 ? "Short burts of radiation may be possible, so please prepare accordingly." : ""]"
|
||||
var/message = "[station_name()]: Our tachyon-doppler array has detected a supernova in your vicinity. Peak flux from the supernova estimated to be [round(power,0.1)] times current solar flux; if the supernova is close to your sun in the sky, your solars may receive this as a power boost.[power > 1 ? " Short burts of radiation may be possible, so please prepare accordingly." : ""] We hope you enjoy the light."
|
||||
if(prob(power * 25))
|
||||
priority_announce(message)
|
||||
priority_announce(message, sender_override = "Nanotrasen Meteorology Division")
|
||||
else
|
||||
print_command_report(message)
|
||||
|
||||
|
||||
/datum/round_event/supernova/start()
|
||||
supernova.power_mod = 0.001 * power
|
||||
var/explosion_size = rand(1000000000, 999999999)
|
||||
var/explosion_size = rand(1000000000, 10000000000)
|
||||
var/turf/epicenter = get_turf_in_angle(supernova.azimuth, SSmapping.get_station_center(), round(world.maxx * 0.45))
|
||||
for(var/array in GLOB.doppler_arrays)
|
||||
var/obj/machinery/doppler_array/A = array
|
||||
@@ -51,13 +56,15 @@
|
||||
supernova.power_mod = min(supernova.power_mod*1.2, power)
|
||||
if(activeFor > endWhen-10)
|
||||
supernova.power_mod /= 4
|
||||
if(prob(round(supernova.power_mod)) && prob(5) && storm_count < 5 && !SSweather.get_weather_by_type(/datum/weather/rad_storm))
|
||||
if(prob(round(supernova.power_mod*2)) && prob(3) && storm_count < 5 && !SSweather.get_weather_by_type(/datum/weather/rad_storm))
|
||||
SSweather.run_weather(/datum/weather/rad_storm/supernova)
|
||||
storm_count++
|
||||
|
||||
/datum/round_event/supernova/end()
|
||||
SSsun.suns -= supernova
|
||||
qdel(supernova)
|
||||
priority_announce("The supernova's flux is now negligible. Radiation storms have ceased. Have a pleasant shift, [station_name()], and thank you for bearing with nature.",
|
||||
sender_override = "Nanotrasen Meteorology Division")
|
||||
|
||||
/datum/weather/rad_storm/supernova
|
||||
weather_duration_lower = 50
|
||||
|
||||
@@ -26,6 +26,17 @@
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/flatdough/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/kitchen/unrollingpin))
|
||||
if(isturf(loc))
|
||||
new /obj/item/reagent_containers/food/snacks/dough(loc)
|
||||
to_chat(user, "<span class='notice'>You unflatten [src].</span>")
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need to put [src] on a surface to undo the rolling!</span>")
|
||||
else
|
||||
..()
|
||||
|
||||
|
||||
// sliceable into 3xdoughslices
|
||||
/obj/item/reagent_containers/food/snacks/flatdough
|
||||
@@ -98,6 +109,17 @@
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/piedough/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/kitchen/unrollingpin))
|
||||
if(isturf(loc))
|
||||
new /obj/item/reagent_containers/food/snacks/cakebatter(loc)
|
||||
to_chat(user, "<span class='notice'>You unflatten [src].</span>")
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need to put [src] on a surface to undo the rolling!</span>")
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/piedough
|
||||
name = "pie dough"
|
||||
desc = "Cook it to get a pie."
|
||||
|
||||
@@ -152,7 +152,7 @@
|
||||
var/newcolor = copytext_char(hash, 1, 7)
|
||||
add_atom_colour("#[newcolor]", FIXED_COLOUR_PRIORITY)
|
||||
light_color = "#[newcolor]"
|
||||
set_light(1)
|
||||
set_light(0.3)
|
||||
|
||||
/obj/structure/chisel_message/proc/pack()
|
||||
var/list/data = list()
|
||||
|
||||
@@ -13,13 +13,15 @@
|
||||
var/offset
|
||||
while((offset = SSmapping.level_trait(other_z, ZTRAIT_DOWN)))
|
||||
other_z += offset
|
||||
if(other_z in .)
|
||||
break // no infinite loops
|
||||
. += other_z
|
||||
other_z = center_z
|
||||
while((offset = SSmapping.level_trait(other_z, ZTRAIT_UP)))
|
||||
other_z += offset
|
||||
if(other_z in .)
|
||||
break // no infinite loops
|
||||
. += other_z
|
||||
return .
|
||||
|
||||
|
||||
/proc/get_dir_multiz(turf/us, turf/them)
|
||||
us = get_turf(us)
|
||||
@@ -46,4 +48,4 @@
|
||||
|
||||
/turf/proc/below()
|
||||
return get_step_multiz(src, DOWN)
|
||||
|
||||
|
||||
|
||||
@@ -1083,6 +1083,17 @@
|
||||
. = ..()
|
||||
set_species(race)
|
||||
|
||||
/mob/living/carbon/human/get_tooltip_data()
|
||||
var/t_He = p_they(TRUE)
|
||||
var/t_is = p_are()
|
||||
. = list()
|
||||
var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE))
|
||||
if(skipface || get_visible_name() == "Unknown")
|
||||
. += "You can't make out what species they are."
|
||||
else
|
||||
. += "[t_He] [t_is] a [dna.custom_species ? dna.custom_species : dna.species.name]"
|
||||
SEND_SIGNAL(src, COMSIG_PARENT_EXAMINE, usr, .)
|
||||
|
||||
/mob/living/carbon/human/species/abductor
|
||||
race = /datum/species/abductor
|
||||
|
||||
|
||||
@@ -77,6 +77,8 @@
|
||||
var/last_fire_update
|
||||
var/hardcore_survival_score = 0
|
||||
|
||||
tooltips = TRUE
|
||||
|
||||
/// Unarmed parry data for human
|
||||
/datum/block_parry_data/unarmed/human
|
||||
parry_respect_clickdelay = TRUE
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
default_color = "FFFFFF"
|
||||
|
||||
species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,MUTCOLORS_PARTSONLY,WINGCOLOR,HAS_FLESH,HAS_BONE)
|
||||
mutant_bodyparts = list("mcolor" = "FFFFFF", "mcolor2" = "FFFFFF","mcolor3" = "FFFFFF","tail_human" = "None", "ears" = "None", "taur" = "None", "deco_wings" = "None")
|
||||
mutant_bodyparts = list("mcolor" = "FFFFFF", "mcolor2" = "FFFFFF","mcolor3" = "FFFFFF","tail_human" = "None", "ears" = "None", "taur" = "None", "deco_wings" = "None", "legs" = "Plantigrade")
|
||||
use_skintones = USE_SKINTONES_GRAYSCALE_CUSTOM
|
||||
skinned_type = /obj/item/stack/sheet/animalhide/human
|
||||
disliked_food = GROSS | RAW
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
/mob/living/silicon/examine(mob/user) //Displays a silicon's laws to ghosts
|
||||
. = ..()
|
||||
if(laws && isobserver(user))
|
||||
. += "<b>[src] has the following laws:</b>"
|
||||
for(var/law in laws.get_law_list(include_zeroth = TRUE))
|
||||
|
||||
@@ -48,6 +48,9 @@
|
||||
. += "<span class='warning'>It doesn't seem to be responding.</span>"
|
||||
if(DEAD)
|
||||
. += "<span class='deadsay'>It looks like its system is corrupted and requires a reset.</span>"
|
||||
|
||||
SEND_SIGNAL(src, COMSIG_PARENT_EXAMINE, usr, .)
|
||||
|
||||
. += "*---------*</span>"
|
||||
|
||||
. += ..()
|
||||
|
||||
@@ -1326,3 +1326,18 @@
|
||||
var/datum/computer_file/program/robotact/program = modularInterface.get_robotact()
|
||||
if(program)
|
||||
program.force_full_update()
|
||||
|
||||
/mob/living/silicon/robot/get_tooltip_data()
|
||||
var/t_He = p_they(TRUE)
|
||||
var/t_is = p_are()
|
||||
. = list()
|
||||
var/borg_type = module ? module : "Default"
|
||||
//This isn't even used normally, but if that ever changes, just uncomment this
|
||||
/* var/obj/item/borg_chameleon/chameleon = locate() in src
|
||||
if(!chameleon)
|
||||
chameleon = locate() in src.module
|
||||
if(chameleon?.active)
|
||||
borg_type = "Engineering"
|
||||
*/
|
||||
. += "[t_He] [t_is] a [borg_type] unit"
|
||||
SEND_SIGNAL(src, COMSIG_PARENT_EXAMINE, usr, .)
|
||||
|
||||
@@ -125,3 +125,5 @@
|
||||
var/sleeper_g
|
||||
var/sleeper_r
|
||||
var/sleeper_nv
|
||||
|
||||
tooltips = TRUE
|
||||
|
||||
@@ -59,8 +59,8 @@
|
||||
|
||||
/mob/living/silicon/ComponentInitialize()
|
||||
. = ..()
|
||||
AddElement(/datum/element/flavor_text, _name = "Silicon Flavor Text", _save_key = "silicon_flavor_text")
|
||||
AddElement(/datum/element/flavor_text, "", "Temporary Flavor Text", "This should be used only for things pertaining to the current round!")
|
||||
AddElement(/datum/element/flavor_text, _name = "Silicon Flavor Text", _always_show = TRUE, _save_key = "silicon_flavor_text")
|
||||
AddElement(/datum/element/flavor_text, "", "Temporary Flavor Text", "This should be used only for things pertaining to the current round!", _always_show = TRUE)
|
||||
AddElement(/datum/element/flavor_text, _name = "OOC Notes", _addendum = "Put information on ERP/vore/lewd-related preferences here. THIS SHOULD NOT CONTAIN REGULAR FLAVORTEXT!!", _always_show = TRUE, _save_key = "ooc_notes", _examine_no_preview = TRUE)
|
||||
|
||||
/mob/living/silicon/med_hud_set_health()
|
||||
|
||||
@@ -130,11 +130,11 @@
|
||||
QDEL_NULL(sord)
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/melee/bullet_act(obj/item/projectile/Proj)
|
||||
if(prob(25))
|
||||
return ..()
|
||||
visible_message("<span class='danger'>[src] blocks [Proj] with its shield!</span>")
|
||||
return BULLET_ACT_BLOCK
|
||||
/mob/living/simple_animal/hostile/syndicate/melee/sword/bullet_act(obj/item/projectile/Proj)
|
||||
if(prob(50))
|
||||
visible_message("<span class='danger'>[src] blocks [Proj] with its shield!</span>")
|
||||
return BULLET_ACT_BLOCK
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/melee/sword/space
|
||||
icon_state = "syndicate_space_sword"
|
||||
|
||||
@@ -152,7 +152,7 @@
|
||||
else
|
||||
//dot product of sun and panel -- Lambert's Cosine Law
|
||||
cur_pow = cos(azimuth_current - sun_azimuth) * sun.power_mod
|
||||
cur_pow = clamp(round(cur_pow, 0.01), 0, 1)
|
||||
cur_pow = clamp(round(cur_pow, 0.01), 0, sun.power_mod)
|
||||
total_flux += cur_pow
|
||||
|
||||
/obj/machinery/power/solar/process()
|
||||
|
||||
@@ -60,6 +60,13 @@
|
||||
desc = "Designed to quickly reload revolvers. These rounds are manufactured within extremely tight tolerances, making them easy to show off trickshots with."
|
||||
ammo_type = /obj/item/ammo_casing/c38/match
|
||||
|
||||
/obj/item/ammo_box/g4570
|
||||
name = "ammo box (.45-70 GOVT)"
|
||||
desc = "Brought to you at great expense,this box contains 10 more .45-70 GOVT bullets."
|
||||
ammo_type = /obj/item/ammo_casing/g4570
|
||||
icon_state = "45box"
|
||||
max_ammo = 10
|
||||
|
||||
/obj/item/ammo_box/c9mm
|
||||
name = "ammo box (9mm)"
|
||||
icon_state = "9mmbox"
|
||||
|
||||
@@ -3,28 +3,17 @@
|
||||
ammo_type = /obj/item/ammo_casing/c38
|
||||
caliber = "38"
|
||||
max_ammo = 2
|
||||
multiload = FALSE
|
||||
|
||||
/obj/item/ammo_box/magazine/internal/derringer/ammo_count(countempties = 1)
|
||||
if (!countempties)
|
||||
var/boolets = 0
|
||||
for(var/obj/item/ammo_casing/bullet in stored_ammo)
|
||||
if(bullet.BB)
|
||||
boolets++
|
||||
return boolets
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/ammo_box/magazine/internal/derringer/a357
|
||||
name = "\improper derringer muzzle"
|
||||
ammo_type = /obj/item/ammo_casing/a357
|
||||
caliber = "357"
|
||||
max_ammo = 2
|
||||
multiload = FALSE
|
||||
multiload = 0
|
||||
|
||||
/obj/item/ammo_box/magazine/internal/derringer/g4570
|
||||
name = "\improper derringer muzzle"
|
||||
ammo_type = /obj/item/ammo_casing/g4570
|
||||
caliber = "45-70g"
|
||||
max_ammo = 2
|
||||
multiload = FALSE
|
||||
multiload = 0
|
||||
|
||||
@@ -3,16 +3,14 @@
|
||||
desc = "A easily concealable derringer. Uses .38 ammo"
|
||||
icon = 'icons/obj/guns/projectile.dmi'
|
||||
icon_state = "derringer"
|
||||
flags_1 = CONDUCT_1
|
||||
mag_type = /obj/item/ammo_box/magazine/internal/derringer
|
||||
fire_delay = 5
|
||||
obj_flags = UNIQUE_RENAME
|
||||
fire_sound = 'sound/weapons/revolvershot.ogg'
|
||||
casing_ejector = FALSE
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
|
||||
/obj/item/gun/ballistic/derringer/Initialize()
|
||||
..()
|
||||
transform *= 0.8 //Spriter too lazy to make icons smaller than default revolvers, local coder hacks in solution.
|
||||
|
||||
/obj/item/gun/ballistic/derringer/get_ammo(countchambered = FALSE, countempties = TRUE)
|
||||
var/boolets = 0 //legacy var name maturity
|
||||
if (chambered && countchambered)
|
||||
@@ -27,7 +25,7 @@
|
||||
return
|
||||
var/num_loaded = magazine.attackby(A, user, params, 1)
|
||||
if(num_loaded)
|
||||
to_chat(user, "<span class='notice'>You load [num_loaded] shell\s into \the [src].</span>")
|
||||
to_chat(user, "<span class='notice'>You load [num_loaded] bullet\s into \the [src].</span>")
|
||||
playsound(user, 'sound/weapons/bulletinsert.ogg', 60, 1)
|
||||
A.update_icon()
|
||||
update_icon()
|
||||
|
||||
@@ -210,7 +210,7 @@
|
||||
to_chat(usr, "<span class='warning'>ERROR: Cannot replicate virus strain.</span>")
|
||||
return
|
||||
A = A.Copy()
|
||||
var/list/data = list("viruses" = list(A))
|
||||
var/list/data = list("donor"=null,"viruses"=list(A),"blood_DNA"="REPLICATED", "bloodcolor" = BLOOD_COLOR_SYNTHETIC, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
|
||||
var/obj/item/reagent_containers/glass/bottle/B = new(drop_location())
|
||||
B.name = "[A.name] culture bottle"
|
||||
B.desc = "A small bottle. Contains [A.agent] culture in synthblood medium."
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
create_reagents(volume, reagent_flags, reagent_value)
|
||||
if(spawned_disease)
|
||||
var/datum/disease/F = new spawned_disease()
|
||||
var/list/data = list("blood_DNA" = "UNKNOWN DNA", "blood_type" = "SY","viruses"= list(F))
|
||||
var/list/data = list("donor"=null,"viruses"=list(F),"blood_DNA"="REPLICATED", "bloodcolor" = BLOOD_COLOR_SYNTHETIC, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
|
||||
reagents.add_reagent(/datum/reagent/blood, disease_amount, data)
|
||||
add_initial_reagents()
|
||||
|
||||
|
||||
@@ -44,6 +44,26 @@
|
||||
desc = "A small bottle. Contains epinephrine - used to stabilize patients."
|
||||
list_reagents = list(/datum/reagent/medicine/epinephrine = 30)
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/bicaridine
|
||||
name = "bicaridine bottle"
|
||||
desc = "A small bottle. Contains bicaridine - used to treat brute damage."
|
||||
list_reagents = list(/datum/reagent/medicine/bicaridine = 30)
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/kelotane
|
||||
name = "kelotane bottle"
|
||||
desc = "A small bottle. Contains kelotane - used to treat burn damage."
|
||||
list_reagents = list(/datum/reagent/medicine/kelotane = 30)
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/antitoxin
|
||||
name = "anti-toxin bottle"
|
||||
desc = "A small bottle. Contains anti-toxin - used to treat minor poisoning."
|
||||
list_reagents = list(/datum/reagent/medicine/antitoxin = 30)
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/dexalin
|
||||
name = "dexalin bottle"
|
||||
desc = "A small bottle. Contains dexalin - used to treat minor suffocation."
|
||||
list_reagents = list(/datum/reagent/medicine/dexalin = 30)
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/toxin
|
||||
name = "toxin bottle"
|
||||
desc = "A small bottle of toxins. Do not drink, it is poisonous."
|
||||
|
||||
@@ -56,9 +56,9 @@
|
||||
/obj/effect/dummy/phased_mob/shadow/proc/check_light_level()
|
||||
var/turf/T = get_turf(src)
|
||||
var/light_amount = T.get_lumcount()
|
||||
if(light_amount > 0.2) // jaunt ends
|
||||
if(light_amount > 0.4) // jaunt ends
|
||||
end_jaunt(TRUE)
|
||||
else if (light_amount < 0.2 && (!QDELETED(jaunter))) //heal in the dark
|
||||
else if (light_amount < 0.4 && (!QDELETED(jaunter))) //heal in the dark
|
||||
jaunter.heal_overall_damage(1,1)
|
||||
|
||||
/obj/effect/dummy/phased_mob/shadow/proc/end_jaunt(forced = FALSE)
|
||||
|
||||
@@ -51,7 +51,7 @@ Notes:
|
||||
|
||||
/datum/tooltip/proc/show(atom/movable/thing, params = null, title = null, content = null, theme = "default", special = "none")
|
||||
if (!thing || !params || (!title && !content) || !owner || !isnum(world.icon_size))
|
||||
return 0
|
||||
return FALSE
|
||||
if (!init)
|
||||
//Initialize some vars
|
||||
init = 1
|
||||
@@ -83,7 +83,7 @@ Notes:
|
||||
if (queueHide)
|
||||
hide()
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
|
||||
/datum/tooltip/proc/hide()
|
||||
@@ -122,4 +122,33 @@ Notes:
|
||||
if(user.client && user.client.tooltips)
|
||||
user.client.tooltips.hide()
|
||||
|
||||
/**
|
||||
* # `get_tooltip_data()`
|
||||
*
|
||||
* If set, will return a list for the tooltip (that will also be put together in a `Join()`)
|
||||
* However, if returning `null`, falls back to default behavior, which is `examine(src)`, and it will definitely include
|
||||
* images since it is the default behavior
|
||||
*
|
||||
* Though no tooltips will be created for atoms that have `tooltips = FALSE`
|
||||
*/
|
||||
/atom/movable/proc/get_tooltip_data()
|
||||
return
|
||||
|
||||
/atom/movable/MouseEntered(location, control, params)
|
||||
. = ..()
|
||||
if(tooltips)
|
||||
if(!QDELETED(src))
|
||||
var/list/examine_list = examine(src)
|
||||
var/get_tooltip_data = get_tooltip_data()
|
||||
if(length(get_tooltip_data))
|
||||
examine_list = get_tooltip_data
|
||||
var/examine_data = examine_list.Join("<br />")
|
||||
openToolTip(usr, src, params, title = name, content = examine_data)
|
||||
|
||||
/atom/movable/MouseExited(location, control, params)
|
||||
. = ..()
|
||||
closeToolTip(usr)
|
||||
|
||||
/client/MouseDown(object, location, control, params)
|
||||
closeToolTip(usr)
|
||||
. = ..()
|
||||
|
||||
@@ -65,12 +65,12 @@
|
||||
|
||||
.hisgrace .wrap {border-color: #7C1414;}
|
||||
.hisgrace .content {color: #15D512; border-color: #9D1414; background-color: #861414;}
|
||||
|
||||
|
||||
/* TG: Themes */
|
||||
/* ScreenUI */
|
||||
.midnight .wrap {border-color: #2B2B33;}
|
||||
.midnight .content {color: #6087A0; border-color: #2B2B33; background-color: #36363C;}
|
||||
|
||||
|
||||
.plasmafire .wrap {border-color: #21213D;}
|
||||
.plasmafire .content {color: #FFA800 ; border-color: #21213D; background-color:#1D1D36;}
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
|
||||
.clockwork .wrap {border-color: #170800;}
|
||||
.clockwork .content {color: #B18B25; border-color: #000000; background-color: #5F380E;}
|
||||
|
||||
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
||||
@@ -7,6 +7,13 @@
|
||||
|
||||
// Ammunition
|
||||
|
||||
/datum/uplink_item/ammo/derringer
|
||||
name = "Ammo Box - .45-70 GOVT"
|
||||
desc = "Contains 10 additional .45-70 GOVT rounds. Caliber is exceedingly rare, and thus, comes at a premium."
|
||||
item = /obj/item/ammo_box/g4570
|
||||
cost = 5
|
||||
include_modes = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/ammo/pistol
|
||||
name = "10mm Handgun Magazine"
|
||||
desc = "An additional 8-round 10mm magazine; compatible with the Stechkin Pistol. These rounds \
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
but you never know. Contents are sorted to always be worth 50 TC."
|
||||
item = /obj/structure/closet/crate
|
||||
cost = 20
|
||||
player_minimum = 25
|
||||
player_minimum = 20
|
||||
exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops, /datum/game_mode/traitor/internal_affairs)
|
||||
cant_discount = TRUE
|
||||
var/starting_crate_value = 50
|
||||
@@ -145,7 +145,7 @@
|
||||
desc = "A dusty SUPER-SIZED from the back of the Syndicate warehouse. Rumored to contain a valuable assortment of items, \
|
||||
but you never know. Contents are sorted to always be worth 125 TC."
|
||||
cost = 40
|
||||
player_minimum = 40
|
||||
player_minimum = 30
|
||||
starting_crate_value = 125
|
||||
|
||||
/datum/uplink_item/bundles_TC/surplus/purchase(mob/user, datum/component/uplink/U)
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
name = "Compact Derringer"
|
||||
desc = "An easily concealable handgun capable of firing .357 rounds. Comes in an inconspicuious packet of cigarettes with additional munitions."
|
||||
item = /obj/item/storage/fancy/cigarettes/derringer
|
||||
cost = 8
|
||||
cost = 6
|
||||
surplus = 30
|
||||
|
||||
/datum/uplink_item/stealthy_weapons/derringerpack/purchase(mob/user, datum/component/uplink/U)
|
||||
@@ -57,7 +57,7 @@
|
||||
item = /obj/item/storage/fancy/cigarettes/derringer/gold
|
||||
..()
|
||||
|
||||
/datum/uplink_item/stalthy_weapons/derringerpack_nukie
|
||||
/datum/uplink_item/stealthy_weapons/derringerpack_nukie
|
||||
name = "Antique Derringer"
|
||||
desc = "An easy to conceal, yet extremely deadly handgun, capable of firing .45-70 Govt rounds. Comes in a unique pack of cigarettes with additional munitions."
|
||||
item = /obj/item/storage/fancy/cigarettes/derringer/midworld
|
||||
|
||||
@@ -55,7 +55,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
armor = list("melee" = 20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 70)
|
||||
circuit = /obj/item/circuitboard/machine/vendor
|
||||
payment_department = ACCOUNT_SRV
|
||||
light_power = 0.5
|
||||
light_power = 0.3
|
||||
light_range = MINIMUM_USEFUL_LIGHT_RANGE
|
||||
/// Is the machine active (No sales pitches if off)!
|
||||
var/active = TRUE
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
/obj/item/kitchen/fork = 6,
|
||||
/obj/item/kitchen/knife = 6,
|
||||
/obj/item/kitchen/rollingpin = 4,
|
||||
/obj/item/kitchen/unrollingpin = 4,
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass = 8,
|
||||
/obj/item/clothing/suit/apron/chef = 2,
|
||||
/obj/item/storage/box/cups = 2,
|
||||
|
||||
Reference in New Issue
Block a user