nor-shall-our-souls-falter

This commit is contained in:
Fox McCloud
2019-09-17 16:06:09 -04:00
parent 6f637b6014
commit aa49033844
157 changed files with 762 additions and 1057 deletions
+1 -1
View File
@@ -63,7 +63,7 @@
push_over()
/obj/item/cardboard_cutout/bullet_act(obj/item/projectile/P)
visible_message("<span class='danger'>[src] has been hit by [P]!</span>")
visible_message("<span class='danger'>[src] is hit by [P]!</span>")
playsound(src, 'sound/weapons/slice.ogg', 50, 1)
if(prob(P.damage))
push_over()
@@ -112,6 +112,15 @@
to_chat(M, "<span class='danger'>Your chameleon-projector deactivates.</span>")
master.disrupt()
/obj/effect/dummy/chameleon/attack_animal()
master.disrupt()
/obj/effect/dummy/chameleon/attack_slime()
master.disrupt()
/obj/effect/dummy/chameleon/attack_alien()
master.disrupt()
/obj/effect/dummy/chameleon/ex_act(var/severity) //no longer bomb-proof
for(var/mob/M in src)
to_chat(M, "<span class='danger'>Your chameleon-projector deactivates.</span>")
+4 -2
View File
@@ -46,8 +46,10 @@
if(prob(50))
qdel(src)
/obj/item/latexballon/bullet_act()
burst()
/obj/item/latexballon/bullet_act(obj/item/projectile/P)
if(!P.nodamage)
burst()
return ..()
/obj/item/latexballon/temperature_expose(datum/gas_mixture/air, temperature, volume)
..()
+3 -3
View File
@@ -38,10 +38,10 @@
merge(O)
..()
/obj/item/stack/hitby(atom/movable/AM, skipcatch, hitpush)
/obj/item/stack/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum)
if(istype(AM, merge_type) && !(amount >= max_amount))
merge(AM)
..()
. = ..()
/obj/item/stack/Destroy()
if(usr && usr.machine == src)
@@ -129,7 +129,7 @@
if(R.max_res_amount > 1 && max_multiplier > 1)
max_multiplier = min(max_multiplier, round(R.max_res_amount / R.res_amount))
t1 += " |"
var/list/multipliers = list(5, 10, 25)
for(var/n in multipliers)
if(max_multiplier >= n)
@@ -52,7 +52,7 @@
can_charge = 0
fire_delay = 50
var/obj/item/chrono_eraser/TED = null
var/obj/effect/chrono_field/field = null
var/obj/structure/chrono_field/field = null
var/turf/startpos = null
/obj/item/gun/energy/chrono_gun/New(var/obj/item/chrono_eraser/T)
@@ -79,7 +79,7 @@
field_disconnect(field)
return ..()
/obj/item/gun/energy/chrono_gun/proc/field_connect(var/obj/effect/chrono_field/F)
/obj/item/gun/energy/chrono_gun/proc/field_connect(obj/structure/chrono_field/F)
var/mob/living/user = src.loc
if(F.gun)
if(isliving(user) && F.captured)
@@ -93,7 +93,7 @@
to_chat(user, "<span class='notice'>Connection established with target: <b>[F.captured]</b></span>")
/obj/item/gun/energy/chrono_gun/proc/field_disconnect(var/obj/effect/chrono_field/F)
/obj/item/gun/energy/chrono_gun/proc/field_disconnect(obj/structure/chrono_field/F)
if(F && field == F)
var/mob/living/user = src.loc
if(F.gun == src)
@@ -103,7 +103,7 @@
field = null
startpos = null
/obj/item/gun/energy/chrono_gun/proc/field_check(var/obj/effect/chrono_field/F)
/obj/item/gun/energy/chrono_gun/proc/field_check(obj/structure/chrono_field/F)
if(F)
if(field == F)
var/turf/currentpos = get_turf(src)
@@ -135,7 +135,7 @@
/obj/item/projectile/energy/chrono_beam/on_hit(atom/target)
if(target && gun && isliving(target))
var/obj/effect/chrono_field/F = new(target.loc, target, gun)
var/obj/structure/chrono_field/F = new(target.loc, target, gun)
gun.field_connect(F)
/obj/item/ammo_casing/energy/chrono_beam
@@ -144,27 +144,27 @@
icon_state = "chronobolt"
e_cost = 0
/obj/effect/chrono_field
/obj/structure/chrono_field
name = "eradication field"
desc = "An aura of time-bluespace energy."
icon = 'icons/effects/effects.dmi'
icon_state = "chronofield"
density = TRUE
density = FALSE
anchored = TRUE
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF
move_resist = INFINITY
blend_mode = BLEND_MULTIPLY
var/mob/living/captured = null
var/obj/item/gun/energy/chrono_gun/gun = null
var/tickstokill = 30
var/image/mob_underlay = null
var/tickstokill = 15
var/mutable_appearance/mob_underlay
var/preloaded = 0
var/RPpos = null
/obj/effect/chrono_field/New(loc, var/mob/living/target, var/obj/item/gun/energy/chrono_gun/G)
/obj/structure/chrono_field/New(loc, mob/living/target, obj/item/gun/energy/chrono_gun/G)
if(target && isliving(target) && G)
target.loc = src
src.captured = target
target.forceMove(src)
captured = target
var/icon/mob_snapshot = getFlatIcon(target)
var/icon/cached_icon = new()
@@ -174,18 +174,19 @@
mob_icon.Blend(removing_frame, ICON_MULTIPLY)
cached_icon.Insert(mob_icon, "frame[i]")
mob_underlay = new(cached_icon, "frame1")
mob_underlay = mutable_appearance(cached_icon, "frame1")
update_icon()
desc = initial(desc) + "<br><span class='info'>It appears to contain [target.name].</span>"
START_PROCESSING(SSobj, src)
return ..()
/obj/effect/chrono_field/Destroy()
/obj/structure/chrono_field/Destroy()
if(gun && gun.field_check(src))
gun.field_disconnect(src)
return ..()
/obj/effect/chrono_field/update_icon()
/obj/structure/chrono_field/update_icon()
var/ttk_frame = 1 - (tickstokill / initial(tickstokill))
ttk_frame = Clamp(Ceiling(ttk_frame * CHRONO_FRAME_COUNT), 1, CHRONO_FRAME_COUNT)
if(ttk_frame != RPpos)
@@ -194,11 +195,11 @@
underlays = list() //hack: BYOND refuses to update the underlay to match the icon_state otherwise
underlays += mob_underlay
/obj/effect/chrono_field/process()
/obj/structure/chrono_field/process()
if(captured)
if(tickstokill > initial(tickstokill))
for(var/atom/movable/AM in contents)
AM.loc = loc
AM.forceMove(drop_location())
qdel(src)
else if(tickstokill <= 0)
to_chat(captured, "<span class='boldnotice'>As the last essence of your being is erased from time, you begin to re-experience your most enjoyable memory. You feel happy...</span>")
@@ -212,12 +213,8 @@
qdel(src)
else
captured.Paralyse(4)
if(captured.reagents)
captured.reagents.del_reagent("synaptizine") //you pesky thing you
if(captured.loc != src) //If they manage to escape, immediately kill them, this is so that even if there IS a way to get out, they won't use it
captured.loc = src
tickstokill = 0
return .()
if(captured.loc != src)
captured.forceMove(src)
update_icon()
if(gun)
if(gun.field_check(src))
@@ -230,7 +227,8 @@
else
qdel(src)
/obj/effect/chrono_field/bullet_act(var/obj/item/projectile/P)
/obj/structure/chrono_field/bullet_act(obj/item/projectile/P)
if(istype(P, /obj/item/projectile/energy/chrono_beam))
var/obj/item/projectile/energy/chrono_beam/beam = P
var/obj/item/gun/energy/chrono_gun/Pgun = beam.gun
@@ -239,28 +237,28 @@
else
return 0
/obj/effect/chrono_field/assume_air()
/obj/structure/chrono_field/assume_air()
return 0
/obj/effect/chrono_field/return_air() //we always have nominal air and temperature
/obj/structure/chrono_field/return_air() //we always have nominal air and temperature
var/datum/gas_mixture/GM = new
GM.oxygen = MOLES_O2STANDARD
GM.nitrogen = MOLES_N2STANDARD
GM.temperature = T20C
return GM
/obj/effect/chrono_field/Move()
/obj/structure/chrono_field/Move()
return
/obj/effect/chrono_field/singularity_act()
/obj/structure/chrono_field/singularity_act()
return
/obj/effect/chrono_field/ex_act()
/obj/structure/chrono_field/ex_act()
return
/obj/effect/chrono_field/blob_act()
/obj/structure/chrono_field/blob_act(obj/structure/blob/B)
return
#undef CHRONO_BEAM_RANGE
#undef CHRONO_FRAME_COUNT
#undef CHRONO_FRAME_COUNT
@@ -15,6 +15,12 @@
var/det_time = 50
var/display_timer = 1
/obj/item/grenade/deconstruct(disassembled = TRUE)
if(!disassembled)
prime()
if(!QDELETED(src))
qdel(src)
/obj/item/grenade/proc/clown_check(var/mob/living/user)
if((CLUMSY in user.mutations) && prob(50))
to_chat(user, "<span class='warning'>Huh? How does this thing work?</span>")
@@ -87,7 +87,6 @@
/obj/item/storage/backpack/holding/singularity_act(current_size)
var/dist = max((current_size - 2),1)
explosion(src.loc,(dist),(dist*2),(dist*4))
return
/obj/item/storage/backpack/santabag
name = "Santa's Gift Bag"
+13 -4
View File
@@ -109,10 +109,10 @@
return
/obj/item/tank/blob_act()
if(prob(50))
var/turf/location = loc
if(!( istype(location, /turf) ))
/obj/item/tank/blob_act(obj/structure/blob/B)
if(B && B.loc == loc)
var/turf/location = get_turf(src)
if(!location)
qdel(src)
if(air_contents)
@@ -120,6 +120,15 @@
qdel(src)
/obj/item/tank/deconstruct(disassembled = TRUE)
if(!disassembled)
var/turf/T = get_turf(src)
if(T)
T.assume_air(air_contents)
air_update_turf()
playsound(src.loc, 'sound/effects/spray.ogg', 10, TRUE, -3)
qdel(src)
/obj/item/tank/attackby(obj/item/W as obj, mob/user as mob, params)
..()