mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-27 07:08:00 +01:00
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:
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user