mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-09 16:12:17 +00:00
[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:
committed by
GitHub
parent
90a9f2c39c
commit
91bb52b6d4
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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."))
|
||||
|
||||
Reference in New Issue
Block a user