[MIRROR] Multiple buckling and wizard spell fixes (#11437)

Co-authored-by: Will <7099514+Willburd@users.noreply.github.com>
Co-authored-by: Cameron Lennox <killer65311@gmail.com>
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
CHOMPStation2StaffMirrorBot
2025-08-15 20:31:14 -07:00
committed by GitHub
parent 90a9f2c39c
commit 91bb52b6d4
8 changed files with 20 additions and 14 deletions

View File

@@ -73,25 +73,26 @@
L+=T
if(!L.len)
to_chat(user, "The spell matrix was unable to locate a suitable teleport destination for an unknown reason. Sorry.")
to_chat(user, span_warning("The spell matrix was unable to locate a suitable teleport destination for an unknown reason. Sorry."))
return
if(user && user.buckled)
user.buckled.unbuckle_mob()
user.buckled.unbuckle_mob( user, TRUE)
var/list/tempL = L
var/attempt = null
var/success = 0
while(tempL.len)
attempt = pick(tempL)
success = user.Move(attempt)
success = user.forceMove(attempt)
if(!success)
tempL.Remove(attempt)
else
break
if(!success)
user.loc = pick(L)
to_chat(user, span_warning("The spell matrix was unable to locate a suitable teleport destination, because the destination area is entirely obstructed. Sorry."))
user.forceMove(pick(L))
smoke.start()
src.uses -= 1

View File

@@ -20,7 +20,7 @@
var/turf/starting = get_turf(user)
if(T)
if(user.buckled)
user.buckled = null
user.buckled.unbuckle_mob( user, TRUE)
user.forceMove(T)
var/datum/effect/effect/system/smoke_spread/smoke = new /datum/effect/effect/system/smoke_spread()

View File

@@ -33,7 +33,6 @@
opacity = 0
density = TRUE
unacidable = TRUE
invisibility = INVISIBILITY_ABSTRACT
/obj/effect/forcefield/bullet_act(var/obj/item/projectile/Proj, var/def_zone)
var/turf/T = get_turf(src.loc)
@@ -46,6 +45,7 @@
icon_state = "empty"
name = "invisible wall"
desc = "You have a bad feeling about this."
invisibility = INVISIBILITY_ABSTRACT
/obj/effect/forcefield/cultify()
new /obj/effect/forcefield/cult(get_turf(src))

View File

@@ -51,11 +51,11 @@
L+=T
if(!L.len)
to_chat(user, "The spell matrix was unable to locate a suitable teleport destination for an unknown reason. Sorry.")
to_chat(user, span_warning("The spell matrix was unable to locate a suitable teleport destination for an unknown reason. Sorry."))
return
if(user && user.buckled)
user.buckled = null
user.buckled.unbuckle_mob( user, TRUE)
var/attempt = null
var/success = 0
@@ -68,7 +68,8 @@
break
if(!success)
user.loc = pick(L)
to_chat(user, span_warning("The spell matrix was unable to locate a suitable teleport destination, because the destination area is entirely obstructed. Sorry."))
user.forceMove(pick(L))
return

View File

@@ -17,7 +17,8 @@
/spell/targeted/ethereal_jaunt/cast(list/targets) //magnets, so mostly hardcoded
for(var/mob/living/target in targets)
target.transforming = 1 //protects the mob from being transformed (replaced) midjaunt and getting stuck in bluespace
if(target.buckled) target.buckled = null
if(target.buckled)
target.buckled.unbuckle_mob( target, TRUE)
spawn(0)
var/mobloc = get_turf(target.loc)
var/obj/effect/dummy/spell_jaunt/holder = new /obj/effect/dummy/spell_jaunt( mobloc )
@@ -31,7 +32,7 @@
animation.master = holder
target.ExtinguishMob()
if(target.buckled)
target.buckled = null
target.buckled.unbuckle_mob( target, TRUE)
jaunt_disappear(animation, target)
target.loc = holder
target.transforming=0 //mob is safely inside holder now, no need for protection.

View File

@@ -136,8 +136,8 @@ Targeted spells have two useful flags: INCLUDEUSER and SELECTABLE. These are exp
target.Paralyse(amt_paralysis)
target.Stun(amt_stunned)
if(amt_weakened || amt_paralysis || amt_stunned)
if(target.buckled)
target.buckled = null
if(target && target.buckled)
target.buckled.unbuckle_mob( target, TRUE)
target.Blind(amt_eye_blind)
target.eye_blurry += amt_eye_blurry
target.make_dizzy(amt_dizziness)

View File

@@ -31,7 +31,8 @@
/mob/living/stumble_into(mob/living/M)
var/mob/living/carbon/human/S = src
if(S.buckled || M.buckled)
return
playsound(src, "punch", 25, 1, -1)
M.Weaken(4)
M.stop_flying()

View File

@@ -204,6 +204,8 @@
var/mob/living/simple_mob/SA = M
if(!SA.has_hands)
return 0
if(mob_size < MOB_SMALL && src == M)
return 0
if(size_diff >= 0.50 || mob_size < MOB_SMALL || size_diff >= get_effective_size() || ignore_size)
if(buckled)
to_chat(src,span_notice("You have to unbuckle \the [src] before you pick them up."))