Merge branch 'master' into master

This commit is contained in:
Thalpy
2019-07-13 19:33:46 +01:00
committed by GitHub
126 changed files with 901 additions and 582 deletions
@@ -120,6 +120,33 @@
loot = GLOB.maintenance_loot
. = ..()
/obj/effect/spawner/lootdrop/glowstick
name = "random colored glowstick"
icon = 'icons/obj/lighting.dmi'
icon_state = "random_glowstick"
/obj/effect/spawner/lootdrop/glowstick/Initialize()
loot = typesof(/obj/item/flashlight/glowstick)
. = ..()
/obj/effect/spawner/lootdrop/gloves
name = "random gloves"
desc = "These gloves are supposed to be a random color..."
icon = 'icons/obj/clothing/gloves.dmi'
icon_state = "random_gloves"
loot = list(
/obj/item/clothing/gloves/color/orange = 1,
/obj/item/clothing/gloves/color/red = 1,
/obj/item/clothing/gloves/color/blue = 1,
/obj/item/clothing/gloves/color/purple = 1,
/obj/item/clothing/gloves/color/green = 1,
/obj/item/clothing/gloves/color/grey = 1,
/obj/item/clothing/gloves/color/light_brown = 1,
/obj/item/clothing/gloves/color/brown = 1,
/obj/item/clothing/gloves/color/white = 1,
/obj/item/clothing/gloves/color/rainbow = 1)
/obj/effect/spawner/lootdrop/crate_spawner
name = "lootcrate spawner" //USE PROMO CODE "SELLOUT" FOR 20% OFF!
lootdoubles = FALSE
-8
View File
@@ -230,9 +230,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
research_msg += "."
to_chat(user, research_msg.Join())
/obj/item/proc/speechModification(message) //for message modding by mask slot.
return message
/obj/item/interact(mob/user)
add_fingerprint(user)
ui_interact(user)
@@ -647,11 +644,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
else
. = ""
//when an item modify our speech spans when in our active hand. Override this to modify speech spans.
/obj/item/proc/get_held_item_speechspans(mob/living/carbon/user)
return
/obj/item/hitby(atom/movable/AM)
return
@@ -512,17 +512,6 @@
name = "pink glowstick"
color = LIGHT_COLOR_PINK
/obj/item/flashlight/glowstick/random
name = "random colored glowstick"
icon_state = "random_glowstick"
color = null
/obj/item/flashlight/glowstick/random/Initialize()
..()
var/T = pick(typesof(/obj/item/flashlight/glowstick) - /obj/item/flashlight/glowstick/random)
new T(loc)
return INITIALIZE_HINT_QDEL
/obj/item/flashlight/spotlight //invisible lighting source
name = "disco light"
desc = "Groovy..."
@@ -234,11 +234,18 @@
w_class = WEIGHT_CLASS_SMALL
actions_types = list(/datum/action/item_action/instrument)
/obj/item/instrument/harmonica/speechModification(message)
/obj/item/instrument/harmonica/proc/handle_speech(datum/source, list/speech_args)
if(song.playing && ismob(loc))
to_chat(loc, "<span class='warning'>You stop playing the harmonica to talk...</span>")
song.playing = FALSE
return message
/obj/item/instrument/harmonica/equipped(mob/M, slot)
. = ..()
RegisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech)
/obj/item/instrument/harmonica/dropped(mob/M)
. = ..()
UnregisterSignal(M, COMSIG_MOB_SAY)
/obj/item/instrument/bikehorn
name = "gilded bike horn"
+18 -6
View File
@@ -17,13 +17,25 @@
user.say("AAAAAAAAAAAARGHHHHH", forced="megaphone suicide")//he must have died while coding this
return OXYLOSS
/obj/item/megaphone/get_held_item_speechspans(mob/living/carbon/user)
if(spamcheck > world.time)
to_chat(user, "<span class='warning'>\The [src] needs to recharge!</span>")
/obj/item/megaphone/equipped(mob/M, slot)
. = ..()
if (slot == SLOT_HANDS)
RegisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech)
else
playsound(loc, 'sound/items/megaphone.ogg', 100, 0, 1)
spamcheck = world.time + 50
return voicespan
UnregisterSignal(M, COMSIG_MOB_SAY)
/obj/item/megaphone/dropped(mob/M)
. = ..()
UnregisterSignal(M, COMSIG_MOB_SAY)
/obj/item/megaphone/proc/handle_speech(mob/living/carbon/user, list/speech_args)
if (user.get_active_held_item() == src)
if(spamcheck > world.time)
to_chat(user, "<span class='warning'>\The [src] needs to recharge!</span>")
else
playsound(loc, 'sound/items/megaphone.ogg', 100, 0, 1)
spamcheck = world.time + 50
speech_args[SPEECH_SPANS] |= voicespan
/obj/item/megaphone/emag_act(mob/user)
if(obj_flags & EMAGGED)
@@ -189,7 +189,7 @@
/obj/item/radio/talk_into(atom/movable/M, message, channel, list/spans, datum/language/language)
if(!spans)
spans = M.get_spans()
spans = list(M.speech_span)
if(!language)
language = M.get_default_language()
INVOKE_ASYNC(src, .proc/talk_into_impl, M, message, channel, spans.Copy(), language)
+1 -3
View File
@@ -282,9 +282,7 @@
var/obj/item/clothing/mask/horsehead/magichead = new /obj/item/clothing/mask/horsehead
magichead.item_flags |= NODROP //curses!
magichead.flags_inv &= ~HIDEFACE //so you can still see their face
magichead.voicechange = TRUE //NEEEEIIGHH
if(!user.dropItemToGround(user.wear_mask))
qdel(user.wear_mask)
user.dropItemToGround(user.wear_mask, TRUE)
user.equip_to_slot_if_possible(magichead, SLOT_WEAR_MASK, TRUE, TRUE)
qdel(src)
else
+1 -1
View File
@@ -8,7 +8,7 @@
name = "artistic toolbox"
desc = "A toolbox painted bright green. Looking at it makes you feel uneasy."
icon_state = "his_grace"
item_state = "artistic_toolbox"
item_state = "toolbox_green"
lefthand_file = 'icons/mob/inhands/equipment/toolbox_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/toolbox_righthand.dmi'
icon = 'icons/obj/items_and_weapons.dmi'
+2 -2
View File
@@ -15,7 +15,7 @@
var/mopping = 0
var/mopcount = 0
var/mopcap = 5
var/stamusage = 5
var/stamusage = 2
force_string = "robust... against germs"
var/insertable = TRUE
@@ -94,7 +94,7 @@
force = 6
throwforce = 8
throw_range = 4
stamusage = 2
stamusage = 1
var/refill_enabled = TRUE //Self-refill toggle for when a janitor decides to mop with something other than water.
var/refill_rate = 1 //Rate per process() tick mop refills itself
var/refill_reagent = "water" //Determins what reagent to use for refilling, just in case someone wanted to make a HOLY MOP OF PURGING
+1 -9
View File
@@ -578,10 +578,6 @@
icon_state = "vulken"
item_state = "vulken"
/obj/item/toy/plush/snakeplushie/jecca
icon_state = "jecca"
item_state = "jecca"
/obj/item/toy/plush/nukeplushie
name = "operative plushie"
desc = "A stuffed toy that resembles a syndicate nuclear operative. The tag claims operatives to be purely fictitious."
@@ -634,13 +630,9 @@
/obj/item/toy/plush/mothplushie
name = "insect plushie"
desc = "An adorable stuffed toy that resembles some kind of insect"
icon_state = "cydia"
item_state = "cydia"
squeak_override = list('modular_citadel/sound/voice/mothsqueak.ogg' = 1)
/obj/item/toy/plush/mothplushie/bumble
icon_state = "bumble"
item_state = "bumble"
squeak_override = list('modular_citadel/sound/voice/mothsqueak.ogg' = 1)
/obj/item/toy/plush/mothplushie/nameko
icon_state = "nameko"
+9 -4
View File
@@ -159,11 +159,13 @@
armor = list("melee" = 25, "bullet" = 25, "laser" = 5, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 80)
lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi'
item_state = "makeshift_shield"
icon = 'icons/obj/items_and_weapons.dmi'
item_state = "metal"
icon_state = "makeshift_shield"
materials = list(MAT_METAL = 18000)
slot_flags = null
block_chance = 25
force = 5
block_chance = 35
force = 10
throwforce = 7
/obj/item/shield/riot/tower
@@ -171,8 +173,11 @@
desc = "A massive shield that can block a lot of attacks, can take a lot of abuse before braking."
armor = list("melee" = 95, "bullet" = 95, "laser" = 75, "energy" = 60, "bomb" = 90, "bio" = 90, "rad" = 0, "fire" = 90, "acid" = 10) //Armor for the item, dosnt transfer to user
item_state = "metal"
icon_state = "metal"
icon = 'icons/obj/items_and_weapons.dmi'
block_chance = 75 //1/4 shots will hit*
force = 10
force = 16
slowdown = 2
throwforce = 15 //Massive pice of metal
w_class = WEIGHT_CLASS_HUGE
item_flags = SLOWS_WHILE_IN_HAND
@@ -424,6 +424,8 @@ GLOBAL_LIST_INIT(brass_recipes, list ( \
new/datum/stack_recipe("receiver - brass skewer", /obj/structure/destructible/clockwork/trap/brass_skewer, 2, time = 20, one_per_turf = TRUE, on_floor = TRUE, placement_checks = STACK_CHECK_ADJACENT), \
new/datum/stack_recipe("receiver - steam vent", /obj/structure/destructible/clockwork/trap/steam_vent, 3, time = 30, one_per_turf = TRUE, on_floor = TRUE, placement_checks = STACK_CHECK_CARDINALS), \
new/datum/stack_recipe("receiver - power nullifier", /obj/structure/destructible/clockwork/trap/power_nullifier, 5, time = 20, one_per_turf = TRUE, on_floor = TRUE, placement_checks = STACK_CHECK_CARDINALS), \
null,
new/datum/stack_recipe("brass flask", /obj/item/reagent_containers/food/drinks/holyoil/null), \
))
@@ -441,7 +443,7 @@ GLOBAL_LIST_INIT(brass_recipes, list ( \
throw_range = 3
turf_type = /turf/open/floor/clockwork
novariants = FALSE
grind_results = list("iron" = 5, "teslium" = 15)
grind_results = list("iron" = 5, "teslium" = 15, "holyoil" = 1)
merge_type = /obj/item/stack/tile/brass
/obj/item/stack/tile/brass/narsie_act()
+60 -6
View File
@@ -1,3 +1,5 @@
GLOBAL_LIST_EMPTY(rubber_toolbox_icons)
/obj/item/storage/toolbox
name = "toolbox"
desc = "Danger. Very robust."
@@ -16,21 +18,25 @@
hitsound = 'sound/weapons/smash.ogg'
var/latches = "single_latch"
var/has_latches = TRUE
var/can_rubberify = TRUE
/obj/item/storage/toolbox/Initialize()
/obj/item/storage/toolbox/Initialize(mapload)
. = ..()
if(has_latches)
if(prob(10))
latches = "double_latch"
if(prob(1))
latches = "triple_latch"
if(mapload && can_rubberify && prob(5))
rubberify()
update_icon()
/obj/item/storage/toolbox/update_icon()
..()
cut_overlays()
if(has_latches)
add_overlay(latches)
var/icon/I = icon('icons/obj/storage.dmi', latches)
add_overlay(I)
/obj/item/storage/toolbox/suicide_act(mob/user)
@@ -39,8 +45,6 @@
/obj/item/storage/toolbox/emergency
name = "emergency toolbox"
icon_state = "red"
item_state = "toolbox_red"
/obj/item/storage/toolbox/emergency/PopulateContents()
new /obj/item/crowbar/red(src)
@@ -59,6 +63,7 @@
name = "rusty red toolbox"
icon_state = "toolbox_red_old"
has_latches = FALSE
can_rubberify = FALSE
/obj/item/storage/toolbox/mechanical
name = "mechanical toolbox"
@@ -77,6 +82,7 @@
name = "rusty blue toolbox"
icon_state = "toolbox_blue_old"
has_latches = FALSE
can_rubberify = FALSE
/obj/item/storage/toolbox/mechanical/old/heirloom
name = "old, robust toolbox" //this will be named "X family toolbox"
@@ -151,6 +157,7 @@
resistance_flags = FIRE_PROOF | ACID_PROOF
w_class = WEIGHT_CLASS_HUGE
attack_verb = list("robusted", "crushed", "smashed")
can_rubberify = FALSE
var/fabricator_type = /obj/item/clockwork/replica_fabricator/scarab
/obj/item/storage/toolbox/brass/ComponentInitialize()
@@ -191,6 +198,7 @@
item_state = "toolbox_blue"
w_class = WEIGHT_CLASS_HUGE //heyo no bohing this!
force = 18 //spear damage
can_rubberify = FALSE
/obj/item/storage/toolbox/plastitanium/afterattack(atom/A, mob/user, proximity)
. = ..()
@@ -204,7 +212,7 @@
name = "artistic toolbox"
desc = "A toolbox painted bright green. Why anyone would store art supplies in a toolbox is beyond you, but it has plenty of extra space."
icon_state = "green"
item_state = "artistic_toolbox"
item_state = "toolbox_green"
w_class = WEIGHT_CLASS_GIGANTIC //Holds more than a regular toolbox!
/obj/item/storage/toolbox/artistic/ComponentInitialize()
@@ -253,9 +261,55 @@
/obj/item/storage/toolbox/gold_fake // used in crafting
name = "golden toolbox"
desc = "A gold plated toolbox, fancy and harmless do to the gold plating being on cardboard!"
desc = "A gold plated toolbox, fancy and harmless due to the gold plating being on cardboard!"
icon_state = "gold"
item_state = "gold"
has_latches = FALSE
force = 0
throwforce = 0
can_rubberify = FALSE
/obj/item/storage/toolbox/proc/rubberify()
name = "rubber [name]"
desc = replacetext(desc, "Danger", "Bouncy")
desc = replacetext(desc, "robust", "safe")
desc = replacetext(desc, "heavier", "bouncier")
DISABLE_BITFIELD(flags_1, CONDUCT_1)
materials = null
damtype = STAMINA
force += 3 //to compensate the higher stamina K.O. threshold compared to actual health.
throwforce += 3
attack_verb += "bounced"
hitsound = 'sound/effects/clownstep1.ogg'
if(!GLOB.rubber_toolbox_icons[icon_state])
generate_rubber_toolbox_icon()
icon = GLOB.rubber_toolbox_icons[icon_state]
AddComponent(/datum/component/bouncy)
. = ..()
/obj/item/storage/toolbox/proc/generate_rubber_toolbox_icon()
var/icon/new_icon = icon(icon, icon_state)
var/icon/smooth = icon('icons/obj/storage.dmi', "rubber_toolbox_blend")
new_icon.Blend(smooth, ICON_MULTIPLY)
new_icon = fcopy_rsc(new_icon)
GLOB.rubber_toolbox_icons[icon_state] = new_icon
/obj/item/storage/toolbox/rubber
name = "rubber toolbox"
desc = "Bouncy. Very safe."
flags_1 = null
materials = null
damtype = STAMINA
force = 17
throwforce = 17
attack_verb = list("robusted", "bounced")
can_rubberify = FALSE //we are already the future.
/obj/item/storage/toolbox/rubber/Initialize()
icon_state = pick("blue", "red", "yellow", "green")
item_state = "toolbox_[icon_state]"
if(!GLOB.rubber_toolbox_icons[icon_state])
generate_rubber_toolbox_icon()
icon = GLOB.rubber_toolbox_icons[icon_state]
. = ..()
AddComponent(/datum/component/bouncy)
+2 -3
View File
@@ -6,10 +6,9 @@
w_class = WEIGHT_CLASS_TINY
var/taste_sensitivity = 15
speech_span = null
/obj/item/taster/get_spans()
return list()
var/taste_sensitivity = 15
/obj/item/taster/afterattack(atom/O, mob/user, proximity)
. = ..()
+1 -1
View File
@@ -294,7 +294,7 @@
name = "windup toolbox"
desc = "A replica toolbox that rumbles when you turn the key."
icon_state = "his_grace"
item_state = "artistic_toolbox"
item_state = "toolbox_green"
lefthand_file = 'icons/mob/inhands/equipment/toolbox_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/toolbox_righthand.dmi'
var/active = FALSE
+6 -1
View File
@@ -48,7 +48,12 @@
/obj/hitby(atom/movable/AM)
..()
take_damage(AM.throwforce, BRUTE, "melee", 1, get_dir(src, AM))
var/throwdamage = AM.throwforce
if(isobj(AM))
var/obj/O = AM
if(O.damtype == STAMINA)
throwdamage = 0
take_damage(throwdamage, BRUTE, "melee", 1, get_dir(src, AM))
/obj/ex_act(severity, target)
if(resistance_flags & INDESTRUCTIBLE)
+1 -3
View File
@@ -2,6 +2,7 @@
/obj
var/crit_fail = FALSE
animate_movement = 2
speech_span = SPAN_ROBOT
var/obj_flags = CAN_BE_HIT
var/set_obj_flags // ONLY FOR MAPPING: Sets flags from a string list, handled in Initialize. Usage: set_obj_flags = "EMAGGED;!CAN_BE_HIT" to set EMAGGED and clear CAN_BE_HIT.
@@ -204,9 +205,6 @@
if(!anchored || current_size >= STAGE_FIVE)
step_towards(src,S)
/obj/get_spans()
return ..() | SPAN_ROBOT
/obj/get_dumping_location(datum/component/storage/source,mob/user)
return get_turf(src)
+10
View File
@@ -294,6 +294,16 @@
icon = "the_lightbulb"
desc = "A cafe popular among moths and moffs. Once shut down for a week after the bartender used mothballs to protect her spare uniforms."
/datum/barsign/cybersylph
name = "Cyber Sylph's"
icon = "cybersylph"
desc = "A cafe renowed for its out-of-boundaries futuristic insignia."
/datum/barsign/meow_mix
name = "Meow Mix"
icon = "meow_mix"
desc = "No, we don't serve catnip, officer!"
/datum/barsign/hiddensigns
hidden = TRUE
+1 -1
View File
@@ -262,7 +262,7 @@
if(isobj(AM))
if(prob(50) && anchored && !broken)
var/obj/O = AM
if(O.throwforce != 0)//don't want to let people spam tesla bolts, this way it will break after time
if(O.throwforce != 0 && O.damtype != STAMINA)//don't want to let people spam tesla bolts, this way it will break after time
var/turf/T = get_turf(src)
var/obj/structure/cable/C = T.get_cable_node()
if(C)