Adds the Oblivion Enforcer wizard loadout (#21920)

* initial addition

* adds wall/airlock obliteration
this definitely needs to be tuned a bit numbers-wise

* adds TRAIT_SUPERMATTER_IMMUNE & gloves

* adds more checks for the supermatter immune trait

* removes SM tongs logic from the halberd
Realistically, you would never actually have the halberd and tongs

* makes slivers bulky

* dusting downed people
also removing a useless assigned variable i missed

* adds the (incomplete) loadout

* halberd buff

* adds robes + sprites

* oops

* halberd icons

* knockdown

* stuff

* timer shortening

* species sprites part 2

* animation for dusting walls

* Apply suggestions from code review

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>

* early return

* parry numbers!

* Update code/modules/power/engines/supermatter/supermatter.dm

Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>

* dgamer review

* dgamer review + no more pulling

* reverts early return thingamajig

* Update code/modules/power/engines/supermatter/supermatter.dm

Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>

* removes `get_turf`

* hal review pt 1

* hal review pt. 2

* Update code/game/objects/items/theft_items.dm

Co-authored-by: Charlie <69320440+hal9000PR@users.noreply.github.com>

* `carve_sliver` proc

* unfucks icons

* Apply suggestions from code review

Co-authored-by: Charlie <69320440+hal9000PR@users.noreply.github.com>

---------

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>
Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>
Co-authored-by: Charlie <69320440+hal9000PR@users.noreply.github.com>
This commit is contained in:
JimKil3
2023-09-10 22:15:12 +01:00
committed by GitHub
co-authored by Henri215 DGamerL Luc Charlie
parent e59f0e8aea
commit aaad2a5aba
45 changed files with 290 additions and 23 deletions
@@ -749,6 +749,9 @@
/obj/machinery/atmospherics/supermatter_crystal/attack_hand(mob/living/user)
..()
if(HAS_TRAIT(user, TRAIT_SUPERMATTER_IMMUNE))
user.visible_message("<span class='notice'>[user] reaches out and pokes [src] harmlessly...somehow.</span>", "<span class='notice'>You poke [src].</span>")
return
dust_mob(user, cause = "hand")
/obj/machinery/atmospherics/supermatter_crystal/proc/dust_mob(mob/living/nom, vis_msg, mob_msg, cause)
@@ -770,32 +773,39 @@
return
if(moveable && default_unfasten_wrench(user, I, time = 20))
return
if(istype(I, /obj/item/scalpel/supermatter))
if(ishuman(user))
var/mob/living/carbon/human/M = user
var/obj/item/scalpel/supermatter/scalpel = I
to_chat(M, "<span class='notice'>You carefully begin to scrape [src] with [I]...</span>")
if(I.use_tool(src, M, 10 SECONDS, volume = 100))
if(scalpel.uses_left)
to_chat(M, "<span class='danger'>You extract a sliver from [src], and it begins to react violently!</span>")
matter_power += 800
scalpel.uses_left--
if(!scalpel.uses_left)
to_chat(M, "<span class='boldwarning'>A tiny piece of [I] falls off, rendering it useless!</span>")
if(!ishuman(user))
return
var/obj/item/nuke_core/supermatter_sliver/S = new /obj/item/nuke_core/supermatter_sliver(drop_location())
var/mob/living/carbon/human/H = user
var/obj/item/scalpel/supermatter/scalpel = I
var/obj/item/retractor/supermatter/tongs = M.is_in_hands(/obj/item/retractor/supermatter)
if(!scalpel.uses_left)
to_chat(H, "<span class='warning'>[scalpel] isn't sharp enough to carve a sliver off of [src]!</span>")
return
var/obj/item/nuke_core/supermatter_sliver/sliver = carve_sliver(scalpel, H)
if(sliver)
scalpel.uses_left--
if(!scalpel.uses_left)
to_chat(H, "<span class='boldwarning'>A tiny piece falls off of [scalpel]'s blade, rendering it useless!</span>")
var/obj/item/retractor/supermatter/tongs = H.is_in_hands(/obj/item/retractor/supermatter)
if(tongs && !tongs.sliver)
tongs.sliver = sliver
sliver.forceMove(tongs)
tongs.icon_state = "supermatter_tongs_loaded"
tongs.item_state = "supermatter_tongs_loaded"
to_chat(H, "<span class='notice'>You pick up [sliver] with [tongs]!</span>")
if(tongs && !tongs.sliver)
tongs.sliver = S
S.forceMove(tongs)
tongs.icon_state = "supermatter_tongs_loaded"
tongs.item_state = "supermatter_tongs_loaded"
to_chat(M, "<span class='notice'>You pick up [S] with [tongs]!</span>")
else
to_chat(user, "<span class='warning'>You fail to extract a sliver from [src]! [I] isn't sharp enough anymore.</span>")
return
if(istype(I, /obj/item/supermatter_halberd))
carve_sliver(I, user)
return
if(istype(I, /obj/item/retractor/supermatter))
to_chat(user, "<span class='notice'>[I] bounces off [src], you need to cut a sliver off first!</span>")
else if(user.drop_item())
@@ -809,6 +819,10 @@
radiation_pulse(src, 150, 4)
/obj/machinery/atmospherics/supermatter_crystal/Bumped(atom/movable/AM)
if(HAS_TRAIT(AM, TRAIT_SUPERMATTER_IMMUNE))
return
if(isliving(AM))
AM.visible_message("<span class='danger'>[AM] slams into [src] inducing a resonance... [AM.p_their()] body starts to glow and burst into flames before flashing into dust!</span>",\
"<span class='userdanger'>You slam into [src] as your ears are filled with unearthly ringing. Your last thought is \"Oh, fuck.\"</span>",\
@@ -917,7 +931,14 @@
remove_filter("outline")
QDEL_NULL(warp)
/obj/machinery/atmospherics/supermatter_crystal/proc/carve_sliver(obj/item/tool, mob/living/user)
to_chat(user, "<span class='notice'>You begin carving a sliver off of [src]...</span>")
if(tool.use_tool(src, user, 10 SECONDS, volume = 100))
to_chat(user, "<span class='danger'>You carve a sliver off of [src], and it begins to react violently!</span>")
matter_power += 800
var/obj/item/nuke_core/supermatter_sliver/S = new /obj/item/nuke_core/supermatter_sliver(drop_location())
return S
// Change how bright the rock is
/obj/machinery/atmospherics/supermatter_crystal/proc/lights()
@@ -1018,6 +1039,8 @@
var/mob/M = P
if(M.mob_negates_gravity())
continue //You can't pull someone nailed to the deck
if(HAS_TRAIT(M, TRAIT_SUPERMATTER_IMMUNE))
continue
else if(M.buckled)
var/atom/movable/buckler = M.buckled
if(buckler.unbuckle_mob(M, TRUE))