Merge branch 'master' of https://github.com/tgstation/tgstation into alchemy_pt_1

# Conflicts:
#	code/game/objects/items/weapons/storage/bags.dm
#	code/modules/mining/lavaland/ash_flora.dm
This commit is contained in:
TechnoAlchemist
2016-10-10 13:20:25 -07:00
760 changed files with 7915 additions and 7061 deletions
+1 -5
View File
@@ -179,9 +179,6 @@
else
return ..()
/obj/structure/closet/crate/secure/loot/attack_animal(mob/user)
boom(user)
/obj/structure/closet/crate/secure/loot/AltClick(mob/living/user)
if(!user.canUseTopic(src))
return
@@ -224,8 +221,7 @@
else
..()
/obj/structure/closet/crate/secure/loot/burn()
SSobj.burning -= src
/obj/structure/closet/crate/secure/loot/deconstruct(disassembled = TRUE)
boom()
/obj/structure/closet/crate/secure/loot/proc/boom(mob/user)
+5 -5
View File
@@ -242,7 +242,7 @@
/obj/effect/resonance/proc/burst(turf/T)
playsound(src,'sound/weapons/resonator_blast.ogg',50,1)
if(istype(T, /turf/closed/mineral))
if(ismineralturf(T))
var/turf/closed/mineral/M = T
M.gets_drilled(creator)
for(var/mob/living/L in T)
@@ -285,7 +285,7 @@
/obj/item/weapon/lazarus_injector/afterattack(atom/target, mob/user, proximity_flag)
if(!loaded)
return
if(istype(target, /mob/living) && proximity_flag)
if(isliving(target) && proximity_flag)
if(istype(target, /mob/living/simple_animal))
var/mob/living/simple_animal/M = target
if(M.sentience_type != revive_type)
@@ -294,7 +294,7 @@
if(M.stat == DEAD)
M.faction = list("neutral")
M.revive(full_heal = 1, admin_revive = 1)
if(istype(target, /mob/living/simple_animal/hostile))
if(ishostile(target))
var/mob/living/simple_animal/hostile/H = M
if(malfunctioning)
H.faction |= list("lazarus", "\ref[user]")
@@ -522,7 +522,7 @@
L.underlays += I
hammer_synced.marked_image = I
var/target_turf = get_turf(target)
if(istype(target_turf, /turf/closed/mineral))
if(ismineralturf(target_turf))
var/turf/closed/mineral/M = target_turf
PoolOrNew(/obj/effect/overlay/temp/kinetic_blast, M)
M.gets_drilled(firer)
@@ -531,7 +531,7 @@
/obj/item/weapon/twohanded/required/mining_hammer/afterattack(atom/target, mob/user, proximity_flag)
if(!proximity_flag && charged)//Mark a target, or mine a tile.
var/turf/proj_turf = get_turf(src)
if(!istype(proj_turf, /turf))
if(!isturf(proj_turf))
return
var/datum/gas_mixture/environment = proj_turf.return_air()
var/pressure = environment.return_pressure()
+4 -4
View File
@@ -71,7 +71,7 @@ var/list/total_extraction_beacons = list()
var/image/balloon
var/image/balloon2
var/image/balloon3
if(istype(A, /mob/living))
if(isliving(A))
var/mob/living/M = A
M.Weaken(16) // Keep them from moving during the duration of the extraction
M.buckled = 0 // Unbuckle them to prevent anchoring problems
@@ -104,7 +104,7 @@ var/list/total_extraction_beacons = list()
sleep(10)
playsound(holder_obj.loc, 'sound/items/fultext_launch.wav', 50, 1, -3)
animate(holder_obj, pixel_z = 1000, time = 30)
if(istype(A, /mob/living/carbon/human))
if(ishuman(A))
var/mob/living/carbon/human/L = A
L.SetParalysis(0)
L.drowsyness = 0
@@ -173,12 +173,12 @@ var/list/total_extraction_beacons = list()
var/atom/movable/stored_obj
/obj/item/weapon/extraction_pack/proc/check_for_living_mobs(atom/A)
if(istype(A, /mob/living))
if(isliving(A))
var/mob/living/L = A
if(L.stat != DEAD)
return 1
for(var/thing in A.GetAllContents())
if(istype(A, /mob/living))
if(isliving(A))
var/mob/living/L = A
if(L.stat != DEAD)
return 1
+14 -2
View File
@@ -154,8 +154,9 @@
icon_state = "mushroom_shavings"
list_reagents = list("sugar" = 3, "ethanol" = 2, "stabilizing_agent" = 3, "minttoxin" = 2)
w_class = 1
resistance_flags = 0
burntime = 30
resistance_flags = FLAMMABLE
obj_integrity = 100
max_integrity = 100
var/prepared = FALSE
var/prepared_type = /obj/item/weapon/reagent_containers/food/snacks/ash_flora/shavings
var/standard_prep = TRUE
@@ -245,6 +246,17 @@
icon_state = "cactus_fruit_p"
//prepared = TRUE
/obj/item/mushroom_bowl
name = "mushroom bowl"
desc = "A bowl made out of mushrooms. Not food, though it might have contained some at some point."
icon = 'icons/obj/lavaland/ash_flora.dmi'
icon_state = "mushroom_bowl"
w_class = 2
resistance_flags = FLAMMABLE
obj_integrity = 200
max_integrity = 200
//what you can craft with these things
/datum/crafting_recipe/mushroom_bowl
name = "Mushroom Bowl"
@@ -83,24 +83,21 @@
user << "<span class='warning'>The wisp has gone missing!</span>"
return
if(wisp.loc == src)
user << "<span class='notice'>You release the wisp. It begins to \
bob around your head.</span>"
user << "<span class='notice'>You release the wisp. It begins to bob around your head.</span>"
user.sight |= SEE_MOBS
icon_state = "lantern"
wisp.orbit(user, 20)
feedback_add_details("wisp_lantern","F") // freed
else
user << "<span class='notice'>You return the wisp to the lantern.\
</span>"
user << "<span class='notice'>You return the wisp to the lantern.</span>"
if(wisp.orbiting)
var/atom/A = wisp.orbiting.orbiting
if(istype(A, /mob/living))
if(isliving(A))
var/mob/living/M = A
M.sight &= ~SEE_MOBS
M << "<span class='notice'>Your vision returns to \
normal.</span>"
M << "<span class='notice'>Your vision returns to normal.</span>"
wisp.stop_orbit()
wisp.loc = src
@@ -116,8 +113,7 @@
if(wisp.loc == src)
qdel(wisp)
else
wisp.visible_message("<span class='notice'>[wisp] has a sad \
feeling for a moment, then it passes.</span>")
wisp.visible_message("<span class='notice'>[wisp] has a sad feeling for a moment, then it passes.</span>")
..()
//Wisp Lantern
@@ -233,7 +229,7 @@
if(cooldown < world.time)
feedback_add_details("immortality_talisman","U") // usage
cooldown = world.time + 600
user.visible_message("<span class='danger'>[user] vanishes from reality, leaving a a hole in their place!</span>")
user.visible_message("<span class='danger'>[user] vanishes from reality, leaving a a hole in [user.p_their()] place!</span>")
var/obj/effect/immortality_talisman/Z = new(get_turf(src.loc))
Z.name = "hole in reality"
Z.desc = "It's shaped an awful lot like [user.name]."
@@ -252,7 +248,6 @@
/obj/effect/immortality_talisman
icon_state = "blank"
icon = 'icons/effects/effects.dmi'
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
var/can_destroy = FALSE
/obj/effect/immortality_talisman/attackby()
@@ -514,7 +509,7 @@
return
user << "You call out for aid, attempting to summon spirits to your side."
notify_ghosts("[user] is raising their [src], calling for your help!",
notify_ghosts("[user] is raising [user.p_their()] [src], calling for your help!",
enter_link="<a href=?src=\ref[src];orbit=1>(Click to help)</a>",
source = user, action=NOTIFY_ORBIT)
@@ -756,7 +751,7 @@
for(var/mob/living/carbon/human/H in player_list)
if(H == L)
continue
H << "<span class='userdanger'>You have an overwhelming desire to kill [L]. They have been marked red! Go kill them!</span>"
H << "<span class='userdanger'>You have an overwhelming desire to kill [L]. [L.p_they(TRUE)] [L.p_have()] been marked red! Go kill [L.p_them()]!</span>"
H.put_in_hands_or_del(new /obj/item/weapon/kitchen/knife/butcher(H))
qdel(src)
@@ -794,7 +789,7 @@
addtimer(src, "aoe_burst", 0, FALSE, T, user)
add_logs(user, target, "fired 3x3 blast at", src)
else
if(istype(target, /turf/closed/mineral) && get_dist(user, target) < 6) //target is minerals, we can hit it(even if we can't see it)
if(ismineralturf(target) && get_dist(user, target) < 6) //target is minerals, we can hit it(even if we can't see it)
addtimer(src, "cardinal_blasts", 0, FALSE, T, user)
timer = world.time + cooldown_time
else if(target in view(5, get_turf(user))) //if the target is in view, hit it
@@ -814,9 +809,12 @@
friendly_fire_check = !friendly_fire_check
user << "<span class='warning'>You toggle friendly fire [friendly_fire_check ? "off":"on"]!</span>"
return
if(!user.is_holding(src)) //you need to hold the staff to teleport
user << "<span class='warning'>You need to hold the staff in your hands to [rune ? "teleport with it":"create a rune"]!</span>"
return
if(!rune)
if(isturf(user.loc))
user.visible_message("<span class='hierophant_warning'>[user] holds [src] carefully in front of them, moving it in a strange pattern...</span>", \
user.visible_message("<span class='hierophant_warning'>[user] holds [src] carefully in front of [user.p_them()], moving it in a strange pattern...</span>", \
"<span class='notice'>You start creating a hierophant rune to teleport to...</span>")
timer = world.time + 51
if(do_after(user, 50, target = user))
@@ -826,7 +824,7 @@
var/obj/effect/hierophant/H = new/obj/effect/hierophant(T)
rune = H
user.update_action_buttons_icon()
user.visible_message("<span class='hierophant_warning'>[user] creates a strange rune beneath them!</span>", \
user.visible_message("<span class='hierophant_warning'>[user] creates a strange rune beneath [user.p_them()]!</span>", \
"<span class='hierophant'>You create a hierophant rune, which you can teleport yourself and any allies to at any time!</span>\n\
<span class='notice'>You can remove the rune to place a new one by striking it with the staff.</span>")
else
@@ -834,9 +832,6 @@
else
user << "<span class='warning'>You need to be on solid ground to produce a rune!</span>"
return
if(!user.is_holding(src)) //you need to hold the staff to teleport
user << "<span class='warning'>You need to hold the staff in your hands to [rune ? "teleport with it":"create a rune"]!</span>"
return
if(get_dist(user, rune) <= 2) //rune too close abort
user << "<span class='warning'>You are too close to the rune to teleport to it!</span>"
return
+4 -3
View File
@@ -452,9 +452,10 @@
var/buildstackamount = 5
/obj/structure/fans/deconstruct()
if(buildstacktype)
new buildstacktype(loc,buildstackamount)
..()
if(!(flags & NODECONSTRUCT))
if(buildstacktype)
new buildstacktype(loc,buildstackamount)
qdel(src)
/obj/structure/fans/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/weapon/wrench) && !(flags&NODECONSTRUCT))
+21 -8
View File
@@ -36,6 +36,10 @@
if(istype(T, /turf/closed/mineral/random))
Spread(T)
/turf/closed/mineral/acid_melt()
ChangeTurf(baseturf)
/turf/closed/mineral/volcanic
environment_type = "basalt"
turf_type = /turf/open/floor/plating/asteroid/basalt
@@ -73,7 +77,7 @@
var/path = pickweight(mineralSpawnChanceList)
var/turf/T = ChangeTurf(path)
if(T && istype(T, /turf/closed/mineral))
if(T && ismineralturf(T))
var/turf/closed/mineral/M = T
M.mineralAmt = rand(1, 5)
M.environment_type = src.environment_type
@@ -359,7 +363,7 @@
/turf/open/floor/plating/asteroid/airless/cave/proc/SpawnFloor(turf/T)
for(var/S in RANGE_TURFS(1, src))
var/turf/NT = S
if(!NT || istype(NT, /turf/open/space) || istype(NT.loc, /area/mine/explored) || istype(NT.loc, /area/lavaland/surface/outdoors/explored))
if(!NT || isspaceturf(NT) || istype(NT.loc, /area/mine/explored) || istype(NT.loc, /area/lavaland/surface/outdoors/explored))
sanity = 0
break
if(!sanity)
@@ -402,7 +406,7 @@
if (istype(P, /obj/item/weapon/pickaxe))
var/turf/T = user.loc
if (!( istype(T, /turf) ))
if (!isturf(T))
return
if(last_act+P.digspeed > world.time)//prevents message spam
@@ -412,7 +416,7 @@
P.playDigSound()
if(do_after(user,P.digspeed, target = src))
if(istype(src, /turf/closed/mineral))
if(ismineralturf(src))
user << "<span class='notice'>You finish cutting into the rock.</span>"
gets_drilled(user)
feedback_add_details("pick_used_mining","[P.type]")
@@ -446,13 +450,13 @@
/turf/closed/mineral/Bumped(AM as mob|obj)
..()
if(istype(AM,/mob/living/carbon/human))
if(ishuman(AM))
var/mob/living/carbon/human/H = AM
var/obj/item/I = H.is_holding_item_of_type(/obj/item/weapon/pickaxe)
if(I)
attackby(I,H)
return
else if(istype(AM,/mob/living/silicon/robot))
else if(iscyborg(AM))
var/mob/living/silicon/robot/R = AM
if(istype(R.module_active,/obj/item/weapon/pickaxe))
src.attackby(R.module_active,R)
@@ -561,7 +565,7 @@
digging_speed = P.digspeed
if (digging_speed)
var/turf/T = user.loc
if (!( istype(T, /turf) ))
if(!isturf(T))
return
if (dug)
@@ -725,11 +729,20 @@
L.resting = TRUE
animate(AM, transform = matrix() - matrix(), alpha = 0, color = rgb(0, 0, 0), time = 10)
for(var/i in 1 to 5)
//Make sure the item is still there after our sleep
if(!AM || qdeleted(AM))
return
AM.pixel_y--
sleep(2)
if(isrobot(AM))
//Make sure the item is still there after our sleep
if(!AM || qdeleted(AM))
return
if(iscyborg(AM))
var/mob/living/silicon/robot/S = AM
qdel(S.mmi)
qdel(AM)
/turf/closed/mineral/volcanic/lava_land_surface
+1
View File
@@ -24,6 +24,7 @@
maxHealth = 125
melee_damage_lower = 15
melee_damage_upper = 15
obj_damage = 0
environment_smash = 0
check_friendly_fire = 1
stop_automated_movement_when_pulled = 1
+3 -2
View File
@@ -5,8 +5,9 @@
icon_state = "moneybag"
force = 10
throwforce = 0
resistance_flags = 0
burntime = 20
resistance_flags = FLAMMABLE
obj_integrity = 100
max_integrity = 100
w_class = 4
max_w_class = 3
storage_slots = 80