Tg 2 11 sync (#215)

* first series of updates

* datums

* games folder

* admin and atmosia stuffs

* moar

* mob updates borg riding

* sprites and stuff

* fixes for various things

* oops. some missed fixes
This commit is contained in:
Poojawa
2017-02-12 03:56:14 -06:00
committed by GitHub
parent 30b3dff395
commit 6674f9fc15
153 changed files with 1651 additions and 1368 deletions
+15 -13
View File
@@ -104,9 +104,9 @@ list(name = "- Carbon Dioxide", desc = " This informational poster teaches the v
icon = 'icons/obj/contraband.dmi'
force = 0
resistance_flags = FLAMMABLE
var/serial_number = 0
var/serial = 0
var/obj/structure/sign/poster/resulting_poster = null //The poster that will be created is initialised and stored through contraband/poster's constructor
var/official = 0
var/rolled_official = 0
/obj/item/weapon/poster/contraband
@@ -118,20 +118,20 @@ list(name = "- Carbon Dioxide", desc = " This informational poster teaches the v
name = "motivational poster"
icon_state = "rolled_legit"
desc = "An official Nanotrasen-issued poster to foster a compliant and obedient workforce. It comes with state-of-the-art adhesive backing, for easy pinning to any vertical surface."
official = 1
rolled_official = 1
/obj/item/weapon/poster/New(turf/loc, given_serial = 0)
if(given_serial == 0)
if(!official)
serial_number = rand(1, NUM_OF_POSTER_DESIGNS)
resulting_poster = new(serial_number,official)
if(!rolled_official)
serial = rand(1, NUM_OF_POSTER_DESIGNS)
resulting_poster = new(serial,rolled_official)
else
serial_number = rand(1, NUM_OF_POSTER_DESIGNS_LEGIT)
resulting_poster = new(serial_number,official)
serial = rand(1, NUM_OF_POSTER_DESIGNS_LEGIT)
resulting_poster = new(serial,rolled_official)
else
serial_number = given_serial
serial = given_serial
//We don't give it a resulting_poster because if we called it with a given_serial it means that we're rerolling an already used poster.
name += " - No. [serial_number]"
name += " - No. [serial]"
..(loc)
@@ -182,8 +182,10 @@ list(name = "- Carbon Dioxide", desc = " This informational poster teaches the v
var/placespeed = 37 // don't change this, otherwise the animation will not sync to the progress bar
/obj/structure/sign/poster/New(serial,rolled_official)
serial_number = serial
official = rolled_official
if (!serial_number)
serial_number = serial
if(!official)
official = rolled_official
if(serial_number == loc)
if(!official)
serial_number = rand(1, NUM_OF_POSTER_DESIGNS) //This is for the mappers that want individual posters without having to use rolled posters.
@@ -259,7 +261,7 @@ list(name = "- Carbon Dioxide", desc = " This informational poster teaches the v
var/temp_loc = get_turf(user)
flick("poster_being_set",D)
D.loc = src
D.official = P.official
D.official = P.rolled_official
qdel(P) //delete it now to cut down on sanity checks afterwards. Agouri's code supports rerolling it anyway
playsound(D.loc, 'sound/items/poster_being_created.ogg', 100, 1)
+4 -2
View File
@@ -234,7 +234,8 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s
var/obj/item/weapon/storage/S = loc
S.remove_from_storage(src, user.loc)
throwing = 0
if(throwing)
throwing.finalize(FALSE)
if(loc == user)
if(!user.dropItemToGround(src))
return
@@ -255,7 +256,8 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s
var/obj/item/weapon/storage/S = loc
S.remove_from_storage(src, user.loc)
throwing = 0
if(throwing)
throwing.finalize(FALSE)
if(loc == user)
if(!user.dropItemToGround(src))
return
+5 -1
View File
@@ -1,3 +1,5 @@
#define STATION_RENAME_TIME_LIMIT 3000
/obj/item/station_charter
name = "station charter"
icon = 'icons/obj/wizard.dmi'
@@ -33,7 +35,7 @@
if(used)
user << "This charter has already been used to name the station."
return
if(!ignores_timeout && (world.time-round_start_time > CHALLENGE_TIME_LIMIT)) //5 minutes
if(!ignores_timeout && (world.time-round_start_time > STATION_RENAME_TIME_LIMIT)) //5 minutes
user << "The crew has already settled into the shift. \
It probably wouldn't be good to rename the station right now."
return
@@ -93,3 +95,5 @@
if(!unlimited_uses)
used = TRUE
#undef STATION_RENAME_TIME_LIMIT
@@ -7,7 +7,6 @@
w_class = WEIGHT_CLASS_TINY
origin_tech = "engineering=2;bluespace=1"
var/translate_binary = 0
var/translate_hive = 0
var/syndie = 0
var/centcom = 0
var/list/channels = list()
@@ -273,9 +273,6 @@
if(keyslot2.translate_binary)
src.translate_binary = 1
if(keyslot2.translate_hive)
src.translate_hive = 1
if(keyslot2.syndie)
src.syndie = 1
@@ -17,7 +17,6 @@
var/broadcasting = 0
var/listening = 1
var/translate_binary = 0
var/translate_hive = 0
var/freerange = 0 // 0 - Sanitize frequencies, 1 - Full range
var/list/channels = list() //see communications.dm for full list. First channes is a "default" for :h
var/obj/item/device/encryptionkey/keyslot //To allow the radio to accept encryption keys.
@@ -58,7 +57,6 @@
/obj/item/device/radio/proc/recalculateChannels()
channels = list()
translate_binary = 0
translate_hive = 0
syndie = 0
centcom = 0
@@ -72,9 +70,6 @@
if(keyslot.translate_binary)
translate_binary = 1
if(keyslot.translate_hive)
translate_hive = 1
if(keyslot.syndie)
syndie = 1
@@ -272,12 +272,17 @@
/obj/item/device/tape/attackby(obj/item/I, mob/user, params)
if(ruined && istype(I, /obj/item/weapon/screwdriver))
user << "<span class='notice'>You start winding the tape back in...</span>"
if(do_after(user, 120*I.toolspeed, target = src))
user << "<span class='notice'>You wound the tape back in.</span>"
fix()
if(ruined)
var/delay = -1
if (istype(I, /obj/item/weapon/screwdriver))
delay = 120*I.toolspeed
else if(istype(I, /obj/item/weapon/pen))
delay = 120*1.5
if (delay != -1)
user << "<span class='notice'>You start winding the tape back in...</span>"
if(do_after(user, delay, target = src))
user << "<span class='notice'>You wound the tape back in.</span>"
fix()
//Random colour tapes
/obj/item/device/tape/random/New()
+1 -1
View File
@@ -251,7 +251,7 @@
//get amount from user
var/min = 0
var/max = src.get_amount()
var/stackmaterial = input(user,"How many sheets do you wish to take out of this stack? (Maximum [max]") as num
var/stackmaterial = round(input(user,"How many sheets do you wish to take out of this stack? (Maximum [max]") as num)
if(stackmaterial == null || stackmaterial <= min || stackmaterial >= src.get_amount())
return
else
+20 -27
View File
@@ -522,43 +522,39 @@ var/global/list/RPD_recipes=list(
if(!user.IsAdvancedToolUser() || istype(A,/turf/open/space/transit))
return ..()
//make sure what we're clicking is valid for the current mode
var/is_paintable = (p_class == PAINT_MODE && istype(A, /obj/machinery/atmospherics/pipe))
var/is_consumable = (p_class == EATING_MODE && (istype(A, /obj/item/pipe) || istype(A, /obj/item/pipe_meter) || istype(A, /obj/structure/disposalconstruct)))
var/can_make_pipe = ((p_class == ATMOS_MODE || p_class == METER_MODE || p_class == DISPOSALS_MODE) && isturf(A))
if(!is_paintable && !is_consumable && !can_make_pipe)
return ..()
//So that changing the menu settings doesn't affect the pipes already being built.
var/queued_p_type = p_type
var/queued_p_dir = p_dir
var/queued_p_flipped = p_flipped
. = FALSE
switch(p_class)
if(PAINT_MODE) // Paint pipes
if(!istype(A,/obj/machinery/atmospherics/pipe))
// Avoid spewing errors about invalid mode -2 when clicking on stuff that aren't pipes.
user << "<span class='warning'>\The [src]'s error light flickers! Perhaps you need to only use it on pipes and pipe meters?</span>"
return
switch(p_class) //if we've gotten this var, the target is valid
if(PAINT_MODE) //Paint pipes
var/obj/machinery/atmospherics/pipe/P = A
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
P.add_atom_colour(paint_colors[paint_color], FIXED_COLOUR_PRIORITY)
P.pipe_color = paint_colors[paint_color]
user.visible_message("<span class='notice'>[user] paints \the [P] [paint_color].</span>","<span class='notice'>You paint \the [P] [paint_color].</span>")
//P.update_icon()
P.update_node_icon()
return
if(EATING_MODE) // Eating pipes
// Must click on an actual pipe or meter.
if(!(istype(A,/obj/item/pipe) || istype(A,/obj/item/pipe_meter) || istype(A,/obj/structure/disposalconstruct)))
// Avoid spewing errors about invalid mode -1 when clicking on stuff that aren't pipes.
user << "<span class='warning'>The [src]'s error light flickers! Perhaps you need to only use it on pipes and pipe meters?</span>"
return
user << "<span class='notice'>You start destroying pipe...</span>"
if(EATING_MODE) //Eating pipes
user << "<span class='notice'>You start destroying a pipe...</span>"
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
if(do_after(user, 2, target = A))
activate()
qdel(A)
if(ATMOS_MODE)
if(!isturf(A))
user << "<span class='warning'>The [src]'s error light flickers!</span>"
return
user << "<span class='notice'>You start building pipes...</span>"
if(ATMOS_MODE) //Making pipes
user << "<span class='notice'>You start building a pipe...</span>"
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
if(do_after(user, 2, target = A))
activate()
@@ -567,21 +563,18 @@ var/global/list/RPD_recipes=list(
P.update()
P.add_fingerprint(usr)
if(METER_MODE)
if(!isturf(A))
user << "<span class='warning'>The [src]'s error light flickers!</span>"
return 0
if(METER_MODE) //Making pipe meters
user << "<span class='notice'>You start building a meter...</span>"
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
if(do_after(user, 2, target = A))
activate()
new /obj/item/pipe_meter(A)
if(DISPOSALS_MODE)
if(!isturf(A) || is_anchored_dense_turf(A))
user << "<span class='warning'>The [src]'s error light flickers!</span>"
if(DISPOSALS_MODE) //Making disposals pipes
if(!is_anchored_dense_turf(A))
user << "<span class='warning'>The [src]'s error light flickers; there's something in the way!</span>"
return
user << "<span class='notice'>You start building pipes...</span>"
user << "<span class='notice'>You start building a disposals pipe...</span>"
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
if(do_after(user, 20, target = A))
var/obj/structure/disposalconstruct/C = new (A, queued_p_type ,queued_p_dir)
+1 -1
View File
@@ -172,7 +172,7 @@
user.visible_message("[user] has thrown [src]. It lands on [result]. [comment]", \
"<span class='notice'>You throw [src]. It lands on [result]. [comment]</span>", \
"<span class='italics'>You hear [src] rolling, it sounds like a [fake_result].</span>")
else if(src.throwing == 0) //Dice was thrown and is coming to rest
else if(!src.throwing) //Dice was thrown and is coming to rest
visible_message("<span class='notice'>[src] rolls to a stop, landing on [result]. [comment]</span>")
/obj/item/weapon/dice/d4/Crossed(mob/living/carbon/human/H)
@@ -37,12 +37,11 @@
//What does the implant do upon injection?
//return 1 if the implant injects
//return -1 if the implant fails to inject
//return 0 if there is no room for implant
//return 0 if there is no room for implant / it fails
/obj/item/weapon/implant/proc/implant(mob/living/target, mob/user, silent = 0)
LAZYINITLIST(target.implants)
if(!target.can_be_implanted() || !can_be_implanted_in(target))
return -1
return 0
for(var/X in target.implants)
if(istype(X, type))
var/obj/item/weapon/implant/imp_e = X
@@ -43,7 +43,7 @@
target.visible_message("<span class='warning'>[target] seems to resist the implant!</span>", "<span class='warning'>You feel the influence of your enemies try to invade your mind!</span>")
qdel(src)
return -1
return 0
/obj/item/weapon/implanter/gang
name = "implanter (gang)"
@@ -24,14 +24,14 @@
target.visible_message("<span class='warning'>[target] seems to resist the implant!</span>", "<span class='warning'>You feel something interfering with your mental conditioning, but you resist it!</span>")
removed(target, 1)
qdel(src)
return -1
return 0
if(target.mind in ticker.mode.get_gangsters())
ticker.mode.remove_gangster(target.mind)
if(!silent)
target.visible_message("<span class='warning'>[src] was destroyed in the process!</span>", "<span class='notice'>You feel a sense of peace and security. You are now protected from brainwashing.</span>")
removed(target, 1)
qdel(src)
return -1
return 0
if(target.mind in ticker.mode.revolutionaries)
ticker.mode.remove_revolutionary(target.mind)
if(!silent)
@@ -38,6 +38,8 @@
M.visible_message("[user] has implanted [M].", "<span class='notice'>[user] implants you.</span>")
imp = null
update_icon()
else
user << "<span class='warning'>[src] fails to implant [M].</span>"
/obj/item/weapon/implanter/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/weapon/pen))
@@ -574,7 +574,6 @@
user.changeNext_move(CLICK_CD_MELEE)
playsound(loc, "rustle", 50, 1, -5)
user.visible_message("<span class='notice'>[user] hugs \the [src].</span>","<span class='notice'>You hug \the [src].</span>")
return
/obj/item/weapon/storage/box/hug/medical/New()
..()
@@ -34,6 +34,10 @@
new /obj/item/device/flashlight/flare(src)
new /obj/item/device/radio/off(src)
/obj/item/weapon/storage/toolbox/emergency/old
name = "rusty red toolbox"
item_state = "toolbox_red_old"
/obj/item/weapon/storage/toolbox/mechanical
name = "mechanical toolbox"
icon_state = "blue"
@@ -48,6 +52,10 @@
new /obj/item/device/analyzer(src)
new /obj/item/weapon/wirecutters(src)
/obj/item/weapon/storage/toolbox/mechanical/old
name = "rusty blue toolbox"
item_state = "toolbox_blue_old"
/obj/item/weapon/storage/toolbox/electrical
name = "electrical toolbox"
icon_state = "yellow"
@@ -306,3 +306,7 @@
..()
for(var/i in 1 to 3)
new/obj/item/weapon/grenade/chem_grenade/ez_clean(src)
/obj/item/weapon/storage/box/hug/reverse_revolver/New()
..()
new /obj/item/weapon/gun/ballistic/revolver/reverse(src)
@@ -9,6 +9,7 @@
var/gas_type = "o2"
var/on = FALSE
var/stabilizers = FALSE
var/full_speed = TRUE // If the jetpack will have a speedboost in space/nograv or not
var/datum/effect_system/trail_follow/ion/ion_trail
/obj/item/weapon/tank/jetpack/New()
@@ -133,6 +134,7 @@
volume = 1
slot_flags = null
gas_type = null
full_speed = FALSE
var/datum/gas_mixture/temp_air_contents
var/obj/item/weapon/tank/internals/tank = null
@@ -113,7 +113,7 @@
if(throwing) // you keep some momentum when getting out of a thrown closet
step(AM, dir)
if(throwing)
throwing = 0
throwing.finalize(FALSE)
/obj/structure/closet/proc/take_contents()
var/turf/T = get_turf(src)
@@ -438,3 +438,7 @@
for(var/atom/A in contents)
A.ex_act(severity, target)
CHECK_TICK
/obj/structure/closet/singularity_act()
dump_contents()
..()
+9
View File
@@ -107,6 +107,15 @@
cur_acc[cur_note] = "#" // so shift is never required
else
cur_oct[cur_note] = text2num(ni)
if(user.dizziness > 0 && prob(user.dizziness / 2))
cur_note = Clamp(cur_note + rand(round(-user.dizziness / 10), round(user.dizziness / 10)), 1, 7)
if(user.dizziness > 0 && prob(user.dizziness / 5))
if(prob(30))
cur_acc[cur_note] = "#"
else if(prob(42))
cur_acc[cur_note] = "b"
else if(prob(75))
cur_acc[cur_note] = "n"
playnote(cur_note, cur_acc[cur_note], cur_oct[cur_note])
if(notes.len >= 2 && text2num(notes[2]))
sleep(sanitize_tempo(tempo / text2num(notes[2])))