Merge branch 'master' of https://github.com/Yawn-Wider/YWPolarisVore into August2020UpstreamPull

August2020UpstreamPull
This commit is contained in:
Razgriz
2020-08-09 02:58:18 -07:00
915 changed files with 253357 additions and 90809 deletions
+51
View File
@@ -0,0 +1,51 @@
/obj/item/toy/tennis
name = "tennis ball"
desc = "A classic tennis ball; a hollow rubber sphere covered in felt. This one has seen better days, and seems to have lost most of its bounce."
icon = 'icons/obj/balls_vr.dmi'
icon_state = "tennis_classic"
item_icons = list(
slot_l_hand_str = 'icons/mob/items/righthand_balls_vr.dmi',
slot_r_hand_str = 'icons/mob/items/lefthand_balls_vr.dmi',
slot_wear_mask_str = 'icons/mob/mouthball_vr.dmi',
)
item_state = "tennis_classic"
slot_flags = SLOT_MASK
throw_range = 14
w_class = ITEMSIZE_SMALL
/obj/item/toy/tennis/red
name = "red tennis ball"
desc = "A red tennis ball. It goes twice as fast!"
icon_state = "tennis_red"
item_state = "tennis_red"
throw_speed = 8 //base throw_speed is 4, and that's already super fast
/obj/item/toy/tennis/yellow
name = "yellow tennis ball"
desc = "A yellow tennis ball. Or is it orange? Orangey-yellow?"
icon_state = "tennis_yellow"
item_state = "tennis_yellow"
/obj/item/toy/tennis/green
name = "green tennis ball"
desc = "A bright green tennis ball. Tastes faintly of lime... or maybe soap."
icon_state = "tennis_green"
item_state = "tennis_green"
/obj/item/toy/tennis/cyan
name = "cyan tennis ball"
desc = "A cyan tennis ball. What a curious color choice."
icon_state = "tennis_cyan"
item_state = "tennis_cyan"
/obj/item/toy/tennis/blue
name = "blue tennis ball"
desc = "A blue tennis ball. Who makes blue tennis balls anyway?"
icon_state = "tennis_blue"
item_state = "tennis_blue"
/obj/item/toy/tennis/purple
name = "purple tennis ball"
desc = "A purple tennis ball. Now you've seen everything. Purple, seriously?"
icon_state = "tennis_purple"
item_state = "tennis_purple"
+4 -1
View File
@@ -519,7 +519,10 @@ var/list/civilian_cartridges = list(
if(bl.z != cl.z)
continue
var/direction = get_dir(src,B)
CartData[++CartData.len] = list("x" = bl.x, "y" = bl.y, "dir" = uppertext(dir2text(direction)), "status" = B.reagents.total_volume/100)
var/status = "No Bucket"
if(B.mybucket)
status = B.mybucket.reagents.total_volume / 100
CartData[++CartData.len] = list("x" = bl.x, "y" = bl.y, "dir" = uppertext(dir2text(direction)), "status" = status)
if(!CartData.len)
CartData[++CartData.len] = list("x" = 0, "y" = 0, dir=null, status = null)
@@ -10,7 +10,7 @@
origin_tech = list(TECH_ILLEGAL = 4, TECH_MAGNET = 4)
var/can_use = 1
var/obj/effect/dummy/chameleon/active_dummy = null
var/saved_item = /obj/item/weapon/cigbutt
var/saved_item = /obj/item/trash/cigbutt
var/saved_icon = 'icons/obj/clothing/masks.dmi'
var/saved_icon_state = "cigbutt"
var/saved_overlays
+4 -4
View File
@@ -271,8 +271,8 @@
//Checks for various conditions to see if the mob is revivable
/obj/item/weapon/shockpaddles/proc/can_defib(mob/living/carbon/human/H) //This is checked before doing the defib operation
if((H.species.flags & NO_SCAN))
return "buzzes, \"Unrecogized physiology. Operation aborted.\""
if((H.species.flags & NO_DEFIB))
return "buzzes, \"Incompatible physiology. Operation aborted.\""
else if(H.isSynthetic() && !use_on_synthetic)
return "buzzes, \"Synthetic Body. Operation aborted.\""
else if(!H.isSynthetic() && use_on_synthetic)
@@ -338,14 +338,14 @@
if(!heart)
return TRUE
var/blood_volume = round((H.vessel.get_reagent_amount("blood")/H.species.blood_volume)*100)
var/blood_volume = H.vessel.get_reagent_amount("blood")
if(!heart || heart.is_broken())
blood_volume *= 0.3
else if(heart.is_bruised())
blood_volume *= 0.7
else if(heart.damage > 1)
blood_volume *= 0.8
return blood_volume < BLOOD_VOLUME_SURVIVE
return blood_volume < H.species.blood_volume*H.species.blood_level_fatal
/obj/item/weapon/shockpaddles/proc/check_charge(var/charge_amt)
return 0
+1 -1
View File
@@ -138,7 +138,7 @@
for(var/mob/living/carbon/M in oviewers(4, T))
if(M.get_ear_protection() >= 2)
continue
M.sleeping = 0
M.SetSleeping(0)
M.stuttering += 20
M.ear_deaf += 30
M.Weaken(3)
+6 -12
View File
@@ -155,8 +155,8 @@ var/global/list/default_medbay_channels = list(
data["freq"] = format_frequency(frequency)
data["rawfreq"] = num2text(frequency)
data["mic_cut"] = (wires.IsIndexCut(WIRE_TRANSMIT) || wires.IsIndexCut(WIRE_SIGNAL))
data["spk_cut"] = (wires.IsIndexCut(WIRE_RECEIVE) || wires.IsIndexCut(WIRE_SIGNAL))
data["mic_cut"] = (wires.is_cut(WIRE_RADIO_TRANSMIT) || wires.is_cut(WIRE_RADIO_SIGNAL))
data["spk_cut"] = (wires.is_cut(WIRE_RADIO_RECEIVER) || wires.is_cut(WIRE_RADIO_SIGNAL))
var/list/chanlist = list_channels(user)
if(islist(chanlist) && chanlist.len)
@@ -215,12 +215,6 @@ var/global/list/default_medbay_channels = list(
/mob/observer/dead/has_internal_radio_channel_access(var/list/req_one_accesses)
return can_admin_interact()
/obj/item/device/radio/proc/text_wires()
if (b_stat)
return wires.GetInteractWindow()
return
/obj/item/device/radio/proc/text_sec_channel(var/chan_name, var/chan_stat)
var/list = !!(chan_stat&FREQ_LISTENING)!=0
return {"
@@ -229,10 +223,10 @@ var/global/list/default_medbay_channels = list(
"}
/obj/item/device/radio/proc/ToggleBroadcast()
broadcasting = !broadcasting && !(wires.IsIndexCut(WIRE_TRANSMIT) || wires.IsIndexCut(WIRE_SIGNAL))
broadcasting = !broadcasting && !(wires.is_cut(WIRE_RADIO_TRANSMIT) || wires.is_cut(WIRE_RADIO_SIGNAL))
/obj/item/device/radio/proc/ToggleReception()
listening = !listening && !(wires.IsIndexCut(WIRE_RECEIVE) || wires.IsIndexCut(WIRE_SIGNAL))
listening = !listening && !(wires.is_cut(WIRE_RADIO_RECEIVER) || wires.is_cut(WIRE_RADIO_SIGNAL))
/obj/item/device/radio/CanUseTopic()
if(!on)
@@ -337,7 +331,7 @@ GLOBAL_DATUM(autospeaker, /mob/living/silicon/ai/announcer)
// Uncommenting this. To the above comment:
// The permacell radios aren't suppose to be able to transmit, this isn't a bug and this "fix" is just making radio wires useless. -Giacom
if(wires.IsIndexCut(WIRE_TRANSMIT)) // The device has to have all its wires and shit intact
if(wires.is_cut(WIRE_RADIO_TRANSMIT)) // The device has to have all its wires and shit intact
return FALSE
if(!radio_connection)
@@ -541,7 +535,7 @@ GLOBAL_DATUM(autospeaker, /mob/living/silicon/ai/announcer)
// check if this radio can receive on the given frequency, and if so,
// what the range is in which mobs will hear the radio
// returns: -1 if can't receive, range otherwise
if(wires.IsIndexCut(WIRE_RECEIVE))
if(wires.is_cut(WIRE_RADIO_RECEIVER))
return -1
if(!listening)
return -1
@@ -0,0 +1,7 @@
/obj/item/device/bluespaceradio/cryogaia_prelinked
name = "bluespace radio (Cryogaia)"
handset = /obj/item/device/radio/bluespacehandset/linked/cryogaia_prelinked
/obj/item/device/radio/bluespacehandset/linked/cryogaia_prelinked
bs_tx_preload_id = "cryogaia_rx" //Transmit to a receiver
bs_rx_preload_id = "cryogaia_tx" //Recveive from a transmitter
@@ -128,7 +128,7 @@
//Only care about megabroadcasts or things that are targeted at us
if(!(0 in level))
return -1
if(wires.IsIndexCut(WIRE_RECEIVE))
if(wires.is_cut(WIRE_RADIO_RECEIVER))
return -1
if(!listening)
return -1
+4 -2
View File
@@ -272,9 +272,11 @@ HALOGEN COUNTER - Radcount on mobs
var/blood_volume = H.vessel.get_reagent_amount("blood")
var/blood_percent = round((blood_volume / H.species.blood_volume)*100)
var/blood_type = H.dna.b_type
if(blood_percent <= BLOOD_VOLUME_BAD)
if(blood_volume <= H.species.blood_volume*H.species.blood_level_danger)
dat += "<span class='danger'><i>Warning: Blood Level CRITICAL: [blood_percent]% [blood_volume]cl. Type: [blood_type]</i></span><br>"
else if(blood_percent <= BLOOD_VOLUME_SAFE)
else if(blood_volume <= H.species.blood_volume*H.species.blood_level_warning)
dat += "<span class='danger'><i>Warning: Blood Level VERY LOW: [blood_percent]% [blood_volume]cl. Type: [blood_type]</i></span><br>"
else if(blood_volume <= H.species.blood_volume*H.species.blood_level_safe)
dat += "<span class='danger'>Warning: Blood Level LOW: [blood_percent]% [blood_volume]cl. Type: [blood_type]</span><br>"
else
dat += "<span class='notice'>Blood Level Normal: [blood_percent]% [blood_volume]cl. Type: [blood_type]</span><br>"
@@ -326,7 +326,7 @@
var/televored = FALSE
if(isbelly(real_dest))
var/obj/belly/B = real_dest
if(!target.can_be_drop_prey && B.owner != user)
if(!(target.can_be_drop_prey) && B.owner != user)
to_chat(target,"<span class='warning'>\The [src] narrowly avoids teleporting you right into \a [lowertext(real_dest.name)]!</span>")
real_dest = dT //Nevermind!
else
+121 -16
View File
@@ -1,3 +1,9 @@
#define JAR_NOTHING 0
#define JAR_MONEY 1
#define JAR_ANIMAL 2
#define JAR_SPIDER 3
/obj/item/glass_jar
name = "glass jar"
desc = "A small empty jar."
@@ -27,7 +33,7 @@
var/mob/L = A
user.visible_message("<span class='notice'>[user] scoops [L] into \the [src].</span>", "<span class='notice'>You scoop [L] into \the [src].</span>")
L.loc = src
contains = 2
contains = JAR_ANIMAL
update_icon()
return
else if(istype(A, /obj/effect/spider/spiderling))
@@ -35,40 +41,40 @@
user.visible_message("<span class='notice'>[user] scoops [S] into \the [src].</span>", "<span class='notice'>You scoop [S] into \the [src].</span>")
S.loc = src
STOP_PROCESSING(SSobj, S) // No growing inside jars
contains = 3
contains = JAR_SPIDER
update_icon()
return
/obj/item/glass_jar/attack_self(var/mob/user)
switch(contains)
if(1)
if(JAR_MONEY)
for(var/obj/O in src)
O.loc = user.loc
to_chat(user, "<span class='notice'>You take money out of \the [src].</span>")
contains = 0
contains = JAR_NOTHING
update_icon()
return
if(2)
if(JAR_ANIMAL)
for(var/mob/M in src)
M.loc = user.loc
user.visible_message("<span class='notice'>[user] releases [M] from \the [src].</span>", "<span class='notice'>You release [M] from \the [src].</span>")
contains = 0
contains = JAR_NOTHING
update_icon()
return
if(3)
if(JAR_SPIDER)
for(var/obj/effect/spider/spiderling/S in src)
S.loc = user.loc
user.visible_message("<span class='notice'>[user] releases [S] from \the [src].</span>", "<span class='notice'>You release [S] from \the [src].</span>")
START_PROCESSING(SSobj, S) // They can grow after being let out though
contains = 0
contains = JAR_NOTHING
update_icon()
return
/obj/item/glass_jar/attackby(var/obj/item/W, var/mob/user)
if(istype(W, /obj/item/weapon/spacecash))
if(contains == 0)
contains = 1
if(contains != 1)
if(contains == JAR_NOTHING)
contains = JAR_MONEY
if(contains != JAR_MONEY)
return
var/obj/item/weapon/spacecash/S = W
user.visible_message("<span class='notice'>[user] puts [S.worth] [S.worth > 1 ? "thalers" : "thaler"] into \the [src].</span>")
@@ -80,10 +86,10 @@
underlays.Cut()
overlays.Cut()
switch(contains)
if(0)
if(JAR_NOTHING)
name = initial(name)
desc = initial(desc)
if(1)
if(JAR_MONEY)
name = "tip jar"
desc = "A small jar with money inside."
for(var/obj/item/weapon/spacecash/S in src)
@@ -92,7 +98,7 @@
money.pixel_y = rand(-6, 6)
money.transform *= 0.6
underlays += money
if(2)
if(JAR_ANIMAL)
for(var/mob/M in src)
var/image/victim = image(M.icon, M.icon_state)
victim.pixel_y = 6
@@ -105,10 +111,109 @@
underlays += victim
name = "glass jar with [M]"
desc = "A small jar with [M] inside."
if(3)
if(JAR_SPIDER)
for(var/obj/effect/spider/spiderling/S in src)
var/image/victim = image(S.icon, S.icon_state)
underlays += victim
name = "glass jar with [S]"
desc = "A small jar with [S] inside."
return
return
/obj/item/glass_jar/fish
name = "glass tank"
desc = "A large glass tank."
var/filled = FALSE
w_class = ITEMSIZE_NORMAL
accept_mobs = list(/mob/living/simple_mob/animal/passive/lizard, /mob/living/simple_mob/animal/passive/mouse, /mob/living/simple_mob/animal/sif/leech, /mob/living/simple_mob/animal/sif/frostfly, /mob/living/simple_mob/animal/sif/glitterfly, /mob/living/simple_mob/animal/passive/fish)
/obj/item/glass_jar/fish/plastic
name = "plastic tank"
desc = "A large plastic tank."
matter = list("plastic" = 4000)
/obj/item/glass_jar/fish/update_icon() // Also updates name and desc
underlays.Cut()
overlays.Cut()
if(filled)
underlays += image(icon, "[icon_state]_water")
switch(contains)
if(JAR_NOTHING)
name = initial(name)
desc = initial(desc)
if(JAR_MONEY)
name = "tip tank"
desc = "A large [name] with money inside."
for(var/obj/item/weapon/spacecash/S in src)
var/image/money = image(S.icon, S.icon_state)
money.pixel_x = rand(-2, 3)
money.pixel_y = rand(-6, 6)
money.transform *= 0.6
underlays += money
if(JAR_ANIMAL)
for(var/mob/M in src)
var/image/victim = image(M.icon, M.icon_state)
var/initial_x_scale = M.icon_scale_x
var/initial_y_scale = M.icon_scale_y
M.adjust_scale(0.7)
victim.appearance = M.appearance
M.adjust_scale(initial_x_scale, initial_y_scale)
victim.pixel_y = 4
underlays += victim
name = "[name] with [M]"
desc = "A large [name] with [M] inside."
if(JAR_SPIDER)
for(var/obj/effect/spider/spiderling/S in src)
var/image/victim = image(S.icon, S.icon_state)
underlays += victim
name = "[name] with [S]"
desc = "A large tank with [S] inside."
if(filled)
desc = "[desc] It contains water."
return
/obj/item/glass_jar/fish/afterattack(var/atom/A, var/mob/user, var/proximity)
if(!filled)
if(istype(A, /obj/structure/sink) || istype(A, /turf/simulated/floor/water))
if(contains && user.a_intent == "help")
to_chat(user, "<span class='warning'>That probably isn't the best idea.</span>")
return
to_chat(user, "<span class='notice'>You fill \the [src] with water!</span>")
filled = TRUE
update_icon()
return
return ..()
/obj/item/glass_jar/fish/attack_self(var/mob/user)
if(filled)
if(contains == JAR_ANIMAL)
if(user.a_intent == "help")
to_chat(user, "<span class='notice'>Maybe you shouldn't empty the water...</span>")
return
else
filled = FALSE
user.visible_message("<span class='warning'>[user] dumps out \the [src]'s water!</span>")
update_icon()
return
else
user.visible_message("<span class='notice'>[user] dumps \the [src]'s water.</span>")
filled = FALSE
update_icon()
return
return ..()
#undef JAR_NOTHING
#undef JAR_MONEY
#undef JAR_ANIMAL
#undef JAR_SPIDER
+4 -2
View File
@@ -25,7 +25,9 @@
user.visible_message("<span class='notice'>[user] presses a button on [src]!</span>")
desc = desc + " This one seems to be used-up."
spent = TRUE
user.visible_message("<span class='notice'>A small bluespace rift opens just above your head and spits out a pizza box!</span>")
user.visible_message("<span class='notice'>A small bluespace rift opens just above [user]'s head and spits out a pizza box!</span>",
"<span class='notice'>A small bluespace rift opens just above your head and spits out a pizza box!</span>",
"<span class='notice'>You hear a fwoosh followed by a thump.</span>")
if(special_delivery)
command_announcement.Announce("SPECIAL DELIVERY PIZZA ORDER #[rand(1000,9999)]-[rand(100,999)] HAS BEEN RECIEVED. SHIPMENT DISPATCHED VIA EXTRA-POWERFUL BALLISTIC LAUNCHERS FOR IMMEDIATE DELIVERY! THANK YOU AND ENJOY YOUR PIZZA!", "WE ALWAYS DELIVER!")
new /obj/effect/falling_effect/pizza_delivery/special(user.loc)
@@ -59,4 +61,4 @@
return INITIALIZE_HINT_LATELOAD
/obj/effect/falling_effect/pizza_delivery/special
crushing = TRUE
crushing = TRUE
@@ -6,7 +6,8 @@
R.add_language(LANGUAGE_ECUREUILIAN, 1)
R.add_language(LANGUAGE_DAEMON, 1)
R.add_language(LANGUAGE_ENOCHIAN, 1)
R.add_language(LANGUAGE_SLAVIC, 1)
R.add_language(LANGUAGE_SLAVIC, 1)
R.add_language(LANGUAGE_DRUDAKAR, 1)
return 1
else
return 0
+74
View File
@@ -1445,3 +1445,77 @@
force = 1
throwforce = 1
drop_sound = 'sound/items/drop/box.ogg'
//////////////////////////////////////////////////////
// Chess Pieces //
//////////////////////////////////////////////////////
/obj/item/toy/chess
name = "chess piece"
desc = "This should never display."
icon = 'icons/obj/chess.dmi'
w_class = ITEMSIZE_SMALL
force = 1
throwforce = 1
drop_sound = 'sound/items/drop/glass.ogg'
/obj/item/toy/chess/pawn_white
name = "blue pawn"
desc = "A large pawn piece for playing chess. It's made of a blue-colored glass."
description_info = "Pawns can move forward one square, if that square is unoccupied. If the pawn has not yet moved, it has the option of moving two squares forward provided both squares in front of the pawn are unoccupied. A pawn cannot move backward. They can only capture an enemy piece on either of the two tiles diagonally in front of them, but not the tile directly in front of them."
icon_state = "w-pawn"
/obj/item/toy/chess/pawn_black
name = "purple pawn"
desc = "A large pawn piece for playing chess. It's made of a purple-colored glass."
description_info = "Pawns can move forward one square, if that square is unoccupied. If the pawn has not yet moved, it has the option of moving two squares forward provided both squares in front of the pawn are unoccupied. A pawn cannot move backward. They can only capture an enemy piece on either of the two tiles diagonally in front of them, but not the tile directly in front of them."
icon_state = "b-pawn"
/obj/item/toy/chess/rook_white
name = "blue rook"
desc = "A large rook piece for playing chess. It's made of a blue-colored glass."
description_info = "The Rook can move any number of vacant squares vertically or horizontally."
icon_state = "w-rook"
/obj/item/toy/chess/rook_black
name = "purple rook"
desc = "A large rook piece for playing chess. It's made of a purple-colored glass."
description_info = "The Rook can move any number of vacant squares vertically or horizontally."
icon_state = "b-rook"
/obj/item/toy/chess/knight_white
name = "blue knight"
desc = "A large knight piece for playing chess. It's made of a blue-colored glass. Sadly, you can't ride it."
description_info = "The Knight can either move two squares horizontally and one square vertically or two squares vertically and one square horizontally. The knight's movement can also be viewed as an 'L' laid out at any horizontal or vertical angle."
icon_state = "w-knight"
/obj/item/toy/chess/knight_black
name = "purple knight"
desc = "A large knight piece for playing chess. It's made of a purple-colored glass. 'Just a flesh wound.'"
description_info = "The Knight can either move two squares horizontally and one square vertically or two squares vertically and one square horizontally. The knight's movement can also be viewed as an 'L' laid out at any horizontal or vertical angle."
icon_state = "b-knight"
/obj/item/toy/chess/bishop_white
name = "blue bishop"
desc = "A large bishop piece for playing chess. It's made of a blue-colored glass."
description_info = "The Bishop can move any number of vacant squares in any diagonal direction."
icon_state = "w-bishop"
/obj/item/toy/chess/bishop_black
name = "purple bishop"
desc = "A large bishop piece for playing chess. It's made of a purple-colored glass."
description_info = "The Bishop can move any number of vacant squares in any diagonal direction."
icon_state = "b-bishop"
/obj/item/toy/chess/queen_white
name = "blue queen"
desc = "A large queen piece for playing chess. It's made of a blue-colored glass."
description_info = "The Queen can move any number of vacant squares diagonally, horizontally, or vertically."
icon_state = "w-queen"
/obj/item/toy/chess/queen_black
name = "purple queen"
desc = "A large queen piece for playing chess. It's made of a purple-colored glass."
description_info = "The Queen can move any number of vacant squares diagonally, horizontally, or vertically."
icon_state = "b-queen"
/obj/item/toy/chess/king_white
name = "blue king"
desc = "A large king piece for playing chess. It's made of a blue-colored glass."
description_info = "The King can move exactly one square horizontally, vertically, or diagonally. If your opponent captures this piece, you lose."
icon_state = "w-king"
/obj/item/toy/chess/king_black
name = "purple king"
desc = "A large king piece for playing chess. It's made of a purple-colored glass."
description_info = "The King can move exactly one square horizontally, vertically, or diagonally. If your opponent captures this piece, you lose."
icon_state = "b-king"
+8
View File
@@ -14,6 +14,14 @@
drop_sound = 'sound/voice/weh.ogg'
attack_verb = list("raided", "kobolded", "weh'd")
/obj/item/toy/plushie/lizardplushie/resh
name = "security unathi plushie"
desc = "An adorable stuffed toy that resembles an unathi wearing a head of security uniform. Perfect example of a monitor lizard."
icon = 'icons/obj/toy_vr.dmi'
icon_state = "marketable_resh"
pokephrase = "Halt! Sssecurity!" //"Butts!" would be too obvious
attack_verb = list("valided", "justiced", "batoned")
/obj/item/toy/plushie/slimeplushie
name = "slime plushie"
desc = "An adorable stuffed toy that resembles a slime. It is practically just a hacky sack."
+14
View File
@@ -7,6 +7,20 @@
w_class = ITEMSIZE_SMALL
desc = "This is rubbish."
drop_sound = 'sound/items/drop/wrapper.ogg'
var/age = 0
/obj/item/trash/New(var/newloc, var/_age)
..(newloc)
if(!isnull(_age))
age = _age
/obj/item/trash/Initialize()
SSpersistence.track_value(src, /datum/persistent/filth/trash)
. = ..()
/obj/item/trash/Destroy()
SSpersistence.forget_value(src, /datum/persistent/filth/trash)
. = ..()
/obj/item/trash/raisins
name = "\improper 4no raisins"
+3 -3
View File
@@ -33,7 +33,7 @@
var/datum/pipe_recipe/recipe = null // pipe recipie selected for display/construction //YW edit, added = null
var/static/datum/pipe_recipe/first_atmos
var/static/datum/pipe_recipe/first_disposal
var/static/datum/asset/iconsheet/pipes/icon_assets
var/static/datum/asset/spritesheet/pipes/icon_assets
var/static/list/pipe_layers = list(
"Regular" = PIPING_LAYER_REGULAR,
"Supply" = PIPING_LAYER_SUPPLY,
@@ -80,7 +80,7 @@
/obj/item/weapon/pipe_dispenser/interact(mob/user)
SetupPipes()
if(!icon_assets)
icon_assets = get_asset_datum(/datum/asset/iconsheet/pipes)
icon_assets = get_asset_datum(/datum/asset/spritesheet/pipes)
icon_assets.send(user)
var/list/lines = list()
@@ -370,7 +370,7 @@
if(_dir == p_dir && flipped == p_flipped)
attrs += " class=\"linkOn\""
if(icon_state)
var/img_tag = icon_assets.icon_tag(icon_state, _dir)
var/img_tag = icon_assets.icon_tag("[dirtext]-[icon_state]")
return "<a href=\"?src=\ref[src];dir=[dirtext];flipped=[flipped]\" title=\"[title]\"[attrs]>[img_tag]</a>"
else
return "<a href=\"?src=\ref[src];dir=[dirtext];flipped=[flipped]\" title=\"[title]\"[attrs]>[noimg]</a>"
@@ -150,7 +150,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
/obj/item/clothing/mask/smokable/examine(mob/user)
. = ..()
if(!is_pipe)
var/smoke_percent = round((smoketime / max_smoketime) * 100)
switch(smoke_percent)
@@ -283,7 +283,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
w_class = ITEMSIZE_TINY
slot_flags = SLOT_EARS | SLOT_MASK
attack_verb = list("burnt", "singed")
type_butt = /obj/item/weapon/cigbutt
type_butt = /obj/item/trash/cigbutt
chem_volume = 15
max_smoketime = 300
smoketime = 300
@@ -341,7 +341,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
name = "premium cigar"
desc = "A brown roll of tobacco and... well, you're not quite sure. This thing's huge!"
icon_state = "cigar2"
type_butt = /obj/item/weapon/cigbutt/cigarbutt
type_butt = /obj/item/trash/cigbutt/cigarbutt
throw_speed = 0.5
item_state = "cigar"
max_smoketime = 1500
@@ -369,7 +369,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
chem_volume = 30
nicotine_amt = 10
/obj/item/weapon/cigbutt
/obj/item/trash/cigbutt
name = "cigarette butt"
desc = "A manky old cigarette butt."
icon = 'icons/obj/clothing/masks.dmi'
@@ -379,12 +379,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM
slot_flags = SLOT_EARS
throwforce = 1
/obj/item/weapon/cigbutt/Initialize()
/obj/item/trash/cigbutt/Initialize()
. = ..()
randpixel_xy()
transform = turn(transform,rand(0,360))
/obj/item/weapon/cigbutt/cigarbutt
/obj/item/trash/cigbutt/cigarbutt
name = "cigar butt"
desc = "A manky old cigar butt."
icon_state = "cigarbutt"
@@ -12,7 +12,6 @@
/obj/item/weapon/circuitboard/security/New()
..()
network = using_map.station_networks
/obj/item/weapon/circuitboard/security/tv
name = T_BOARD("security camera monitor - television")
@@ -45,7 +44,7 @@
/obj/item/weapon/circuitboard/security/construct(var/obj/machinery/computer/security/C)
if (..(C))
C.network = network.Copy()
C.set_network(network.Copy())
/obj/item/weapon/circuitboard/security/deconstruct(var/obj/machinery/computer/security/C)
if (..(C))
+22 -1
View File
@@ -9,6 +9,7 @@
/obj/item/weapon/book/manual/engineering_construction
name = "Station Repairs and Construction"
icon_state ="bookEngineering"
item_state = "book3"
author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
title = "Station Repairs and Construction"
@@ -30,6 +31,7 @@
/obj/item/weapon/book/manual/engineering_particle_accelerator
name = "Particle Accelerator User's Guide"
icon_state ="bookParticleAccelerator"
item_state = "book15"
author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
title = "Particle Accelerator User's Guide"
@@ -77,6 +79,7 @@
/obj/item/weapon/book/manual/supermatter_engine
name = "Supermatter Engine Operating Manual"
icon_state = "bookSupermatter"
item_state = "book15"
author = "Central Engineering Division"
title = "Supermatter Engine Operating Manual"
@@ -160,6 +163,7 @@
/obj/item/weapon/book/manual/tesla_engine
name = "Tesla Operating Manual"
icon_state ="bookTesla"
item_state = "book15"
author = "Engineering Encyclopedia"
title = "Tesla Engine User's Guide"
dat = {"<html>
@@ -229,7 +233,8 @@
/obj/item/weapon/book/manual/rust_engine
name = "R-UST Operating Manual"
icon_state = "bookSupermatter"
author = "Yumi Kruik"
item_state = "book15"
author = "Cindy Crawfish"
title = "R-UST Operating Manual"
//R-UST guide Re-Writen by Gozulio to reflect how the R-UST actually operates.
@@ -280,6 +285,7 @@
/obj/item/weapon/book/manual/engineering_hacking
name = "Hacking"
icon_state ="bookHacking"
item_state = "book2"
author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
title = "Hacking"
@@ -302,6 +308,7 @@
/obj/item/weapon/book/manual/engineering_singularity_safety
name = "Singularity Safety in Special Circumstances"
icon_state ="bookEngineeringSingularitySafety"
item_state = "book15"
author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
title = "Singularity Safety in Special Circumstances"
@@ -354,6 +361,7 @@
/obj/item/weapon/book/manual/hydroponics_pod_people
name = "The Diona Harvest - From Seed to Market"
icon_state ="bookHydroponicsPodPeople"
item_state = "book5"
author = "Farmer John"
title = "The Diona Harvest - From Seed to Market"
@@ -392,6 +400,7 @@
/obj/item/weapon/book/manual/medical_cloning
name = "Cloning Techniques of the 26th Century"
icon_state ="bookCloning"
item_state = "book9"
author = "Medical Journal, volume 3" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
title = "Cloning Techniques of the 26th Century"
@@ -485,6 +494,7 @@
/obj/item/weapon/book/manual/ripley_build_and_repair
name = "APLU \"Ripley\" Construction and Operation Manual"
icon_state ="book"
item_state = "book"
author = "Randall Varn, Einstein Engines Senior Mechanic" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
title = "APLU \"Ripley\" Construction and Operation Manual"
@@ -562,6 +572,7 @@
/obj/item/weapon/book/manual/research_and_development
name = "Research and Development 101"
icon_state = "rdbook"
item_state = "book7"
author = "Dr. L. Ight"
title = "Research and Development 101"
@@ -631,6 +642,7 @@
/obj/item/weapon/book/manual/robotics_cyborgs
name = "Cyborgs for Dummies"
icon_state = "borgbook"
item_state = "book1"
author = "XISC"
title = "Cyborgs for Dummies"
@@ -837,6 +849,7 @@
name = "Corporate Regulations"
desc = "A set of corporate guidelines for keeping law and order on privately-owned space stations."
icon_state = "bookSpaceLaw"
item_state = "book13"
author = "The Company"
title = "Corporate Regulations"
@@ -861,6 +874,7 @@
name = "Medical Diagnostics Manual"
desc = "First, do no harm. A detailed medical practitioner's guide."
icon_state = "bookMedical"
item_state = "book12"
author = "Medical Department"
title = "Medical Diagnostics Manual"
@@ -908,6 +922,7 @@
/obj/item/weapon/book/manual/engineering_guide
name = "Engineering Textbook"
icon_state ="bookEngineering2"
item_state = "book3"
author = "Engineering Encyclopedia"
title = "Engineering Textbook"
@@ -929,6 +944,7 @@
/obj/item/weapon/book/manual/chef_recipes
name = "Chef Recipes"
icon_state = "cooked_book"
item_state = "book16"
author = "Victoria Ponsonby"
title = "Chef Recipes"
@@ -989,6 +1005,7 @@
name = "Barman Recipes"
desc = "For the enterprising drink server."
icon_state = "barbook"
item_state = "book14"
author = "Sir John Rose"
title = "Barman Recipes"
@@ -1044,6 +1061,7 @@
/obj/item/weapon/book/manual/detective
name = "The Film Noir: Proper Procedures for Investigations"
icon_state ="bookDetective"
item_state = "book8"
author = "The Company"
title = "The Film Noir: Proper Procedures for Investigations"
@@ -1087,6 +1105,7 @@
/obj/item/weapon/book/manual/nuclear
name = "Fission Mailed: Nuclear Sabotage 101"
icon_state ="bookNuclear"
item_state = "book8"
author = "Syndicate"
title = "Fission Mailed: Nuclear Sabotage 101"
@@ -1138,6 +1157,7 @@
/obj/item/weapon/book/manual/atmospipes
name = "Pipes and You: Getting To Know Your Scary Tools"
icon_state = "pipingbook"
item_state = "book3"
author = "Maria Crash, Senior Atmospherics Technician"
title = "Pipes and You: Getting To Know Your Scary Tools"
dat = {"<html>
@@ -1246,6 +1266,7 @@
/obj/item/weapon/book/manual/evaguide
name = "EVA Gear and You: Not Spending All Day Inside, 2nd Edition"
icon_state = "evabook"
item_state = "book14"
author = "Maria Crash, Senior Atmospherics Technician"
title = "EVA Gear and You: Not Spending All Day Inside, 2nd Edition"
dat = {"<html>
@@ -46,7 +46,7 @@ var/global/list/ashtray_cache = list()
/obj/item/weapon/material/ashtray/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (health <= 0)
return
if (istype(W,/obj/item/weapon/cigbutt) || istype(W,/obj/item/clothing/mask/smokable/cigarette) || istype(W, /obj/item/weapon/flame/match))
if (istype(W,/obj/item/trash/cigbutt) || istype(W,/obj/item/clothing/mask/smokable/cigarette) || istype(W, /obj/item/weapon/flame/match))
if (contents.len >= max_butts)
to_chat(user, "\The [src] is full.")
return
@@ -12,13 +12,13 @@ obj/item/weapon/chainsaw
var/active_force = 55
var/inactive_force = 10
obj/item/weapon/chainsaw/New()
obj/item/weapon/chainsaw/Initialize() //YW edit - replaced New with Initialize so chainsaws can be mapped in
. = ..()
var/datum/reagents/R = new/datum/reagents(max_fuel)
reagents = R
R.my_atom = src
R.add_reagent("fuel", max_fuel)
START_PROCESSING(SSobj, src)
..()
obj/item/weapon/chainsaw/Destroy()
STOP_PROCESSING(SSobj, src)
@@ -3,6 +3,10 @@
desc = "A scroll for moving around."
icon = 'icons/obj/wizard.dmi'
icon_state = "scroll"
item_icons = list(
slot_l_hand_str = 'icons/mob/items/lefthand_books.dmi',
slot_r_hand_str = 'icons/mob/items/righthand_books.dmi'
)
var/uses = 4.0
w_class = ITEMSIZE_TINY
item_state = "paper"
@@ -33,7 +33,7 @@
base_block_chance = 40
slot_flags = SLOT_BACK
var/brightness_on
brightness_on = 4
brightness_on = 6
var/on = 0
var/light_applied
//var/light_overlay
@@ -13,10 +13,6 @@
mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
if(..())
if(istype(H) && istype(H.tail_style, taurtype))
if(H.size_multiplier >= RESIZE_BIG) //Are they a macro?
slowdown = 0
else
slowdown = initial(slowdown)
return 1
else
to_chat(H, "<span class='warning'>[no_message]</span>")
@@ -44,66 +40,20 @@
mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
if(..())
var/datum/sprite_accessory/tail/taur/TT = H.tail_style
if(istype(H) && istype(TT, /datum/sprite_accessory/tail/taur/horse))
item_state = "[icon_base]_Horse"
if(H.size_multiplier >= RESIZE_BIG) //Are they a macro?
slowdown = 0
else
slowdown = initial(slowdown)
return 1
if(istype(H) && istype(TT, /datum/sprite_accessory/tail/taur/wolf))
item_state = "[icon_base]_Wolf"
if(H.size_multiplier >= RESIZE_BIG) //Are they a macro?
slowdown = 0
else
slowdown = initial(slowdown)
return 1
if(istype(H) && istype(TT, /datum/sprite_accessory/tail/taur/cow))
item_state = "[icon_base]_Cow"
if(H.size_multiplier >= RESIZE_BIG) //Are they a macro?
slowdown = 0
else
slowdown = initial(slowdown)
return 1
if(istype(H) && istype(TT, /datum/sprite_accessory/tail/taur/lizard))
item_state = "[icon_base]_Lizard"
if(H.size_multiplier >= RESIZE_BIG) //Are they a macro?
slowdown = 0
else
slowdown = initial(slowdown)
return 1
if(istype(H) && istype(TT, /datum/sprite_accessory/tail/taur/feline))
item_state = "[icon_base]_Feline"
if(H.size_multiplier >= RESIZE_BIG) //Are they a macro?
slowdown = 0
else
slowdown = initial(slowdown)
return 1
if(istype(H) && istype(TT, /datum/sprite_accessory/tail/taur/drake))
item_state = "[icon_base]_Drake"
if(H.size_multiplier >= RESIZE_BIG) //Are they a macro?
slowdown = 0
else
slowdown = initial(slowdown)
return 1
if(istype(H) && istype(TT, /datum/sprite_accessory/tail/taur/otie))
item_state = "[icon_base]_Otie"
if(H.size_multiplier >= RESIZE_BIG) //Are they a macro?
slowdown = 0
else
slowdown = initial(slowdown)
return 1
if(istype(H) && istype(TT, /datum/sprite_accessory/tail/taur/deer))
item_state = "[icon_base]_Deer"
if(H.size_multiplier >= RESIZE_BIG) //Are they a macro?
slowdown = 0
else
slowdown = initial(slowdown)
return 1
if(!istype(H))//Error, non HUMAN.
log_runtime("[H] was not a valid human!")
return
if(H.size_multiplier >= RESIZE_BIG) //Are they a macro? If yes, they get no slowdown.
slowdown = 0
else
to_chat(H, "<span class='warning'>[no_message]</span>")
return 0
slowdown = initial(slowdown)
var/datum/sprite_accessory/tail/taur/TT = H.tail_style
item_state = "[icon_base]_[TT.icon_sprite_tag]" //icon_sprite_tag is something like "deer"
return 1
/obj/item/weapon/storage/backpack/saddlebag_common/robust //Shared bag for other taurs with sturdy backs
name = "Robust Saddlebags"
@@ -116,7 +66,7 @@
/obj/item/weapon/storage/backpack/saddlebag_common/vest //Shared bag for other taurs with sturdy backs
name = "Taur Duty Vest"
desc = "An armored vest with the armor modules replaced with various handy compartments with decent storage capacity. Useless for protection though."
desc = "An armored vest with the armor modules replaced with various handy compartments with decent storage capacity. Useless for protection though. Holds less than a saddle."
icon = 'icons/obj/clothing/backpack_vr.dmi'
icon_override = 'icons/mob/back_vr.dmi'
item_state = "taurvest"
@@ -145,6 +95,7 @@
icon_override = 'icons/mob/back_vr.dmi'
item_state = "satchel-explorer"
icon_state = "satchel-explorer"
/obj/item/weapon/storage/backpack/explorer
name = "explorer backpack"
desc = "A backpack for carrying a large number of supplies easily."
@@ -152,6 +103,7 @@
icon_override = 'icons/mob/back_vr.dmi'
item_state = "explorerpack"
icon_state = "explorerpack"
/obj/item/weapon/storage/backpack/satchel/roboticist
name = "roboticist satchel"
desc = "A satchel for carrying a large number of spare parts easily."
@@ -159,6 +111,7 @@
icon_override = 'icons/mob/back_vr.dmi'
item_state = "satchel-robo"
icon_state = "satchel-robo"
/obj/item/weapon/storage/backpack/roboticist
name = "roboticist backpack"
desc = "A backpack for carrying a large number of spare parts easily."
@@ -166,6 +119,7 @@
icon_override = 'icons/mob/back_vr.dmi'
item_state = "backpack-robo"
icon_state = "backpack-robo"
/obj/item/weapon/storage/backpack/vietnam
name = "vietnam backpack"
desc = "There are tangos in the trees! We need napalm right now! Why is my gun jammed?"
@@ -173,6 +127,7 @@
icon_override = 'icons/mob/back_vr.dmi'
item_state = "nambackpack"
icon_state = "nambackpack"
/obj/item/weapon/storage/backpack/russian
name = "russian backpack"
desc = "Useful for carrying large quantities of vodka."
@@ -180,6 +135,7 @@
icon_override = 'icons/mob/back_vr.dmi'
item_state = "ru_rucksack"
icon_state = "ru_rucksack"
/obj/item/weapon/storage/backpack/korean
name = "korean backpack"
desc = "Insert witty description here."
@@ -2,6 +2,11 @@
name = "bible"
desc = "Apply to head repeatedly."
icon_state ="bible"
item_state = "bible"
item_icons = list(
slot_l_hand_str = 'icons/mob/items/lefthand_books.dmi',
slot_r_hand_str = 'icons/mob/items/righthand_books.dmi'
)
throw_speed = 1
throw_range = 5
w_class = ITEMSIZE_NORMAL
@@ -209,7 +209,7 @@
throwforce = 2
slot_flags = SLOT_BELT
storage_slots = 6
can_hold = list(/obj/item/clothing/mask/smokable/cigarette, /obj/item/weapon/flame/lighter, /obj/item/weapon/cigbutt)
can_hold = list(/obj/item/clothing/mask/smokable/cigarette, /obj/item/weapon/flame/lighter, /obj/item/trash/cigbutt)
icon_type = "cigarette"
starts_with = list(/obj/item/clothing/mask/smokable/cigarette = 6)
var/brand = "\improper Trans-Stellar Duty-free"
@@ -316,7 +316,7 @@
throwforce = 2
slot_flags = SLOT_BELT
storage_slots = 7
can_hold = list(/obj/item/clothing/mask/smokable/cigarette/cigar, /obj/item/weapon/cigbutt/cigarbutt)
can_hold = list(/obj/item/clothing/mask/smokable/cigarette/cigar, /obj/item/trash/cigbutt/cigarbutt)
icon_type = "cigar"
starts_with = list(/obj/item/clothing/mask/smokable/cigarette/cigar = 7)
@@ -14,7 +14,7 @@
/obj/item/weapon/storage/firstaid/regular
starts_with = list(
/obj/item/stack/medical/bruise_pack,
/obj/item/device/healthanalyzer, /*YW EDIT*/
/obj/item/stack/medical/bruise_pack,
/obj/item/stack/medical/bruise_pack,
/obj/item/stack/medical/bruise_pack,
+1 -1
View File
@@ -126,7 +126,7 @@
return 1
/obj/item/weapon/tape_roll/proc/stick(var/obj/item/weapon/W, mob/user)
if(!istype(W, /obj/item/weapon/paper))
if(!istype(W, /obj/item/weapon/paper) || istype(W, /obj/item/weapon/paper/sticky) || !user.unEquip(W))
return
user.drop_from_inventory(W)
var/obj/item/weapon/ducttape/tape = new(get_turf(src))