mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-27 22:17:32 +01:00
Fix summoning multiple guardians exploit (#15882)
* Check for existing guardian after picking observer. Repeat existing guardian check after picking observer, before finalizing creation. Refactor existing guardian check into separate proc * Fix indentation * Reset guardian item to unused if it cancels in the second has_guardian check Co-authored-by: Farie82 <farie82@users.noreply.github.com> Co-authored-by: Farie82 <farie82@users.noreply.github.com>
This commit is contained in:
@@ -250,10 +250,9 @@
|
||||
var/name_list = list("Aries", "Leo", "Sagittarius", "Taurus", "Virgo", "Capricorn", "Gemini", "Libra", "Aquarius", "Cancer", "Scorpio", "Pisces")
|
||||
|
||||
/obj/item/guardiancreator/attack_self(mob/living/user)
|
||||
for(var/mob/living/simple_animal/hostile/guardian/G in GLOB.alive_mob_list)
|
||||
if(G.summoner == user)
|
||||
to_chat(user, "You already have a [mob_name]!")
|
||||
return
|
||||
if(has_guardian(user))
|
||||
to_chat(user, "You already have a [mob_name]!")
|
||||
return
|
||||
if(user.mind && (user.mind.changeling || user.mind.vampire))
|
||||
to_chat(user, "[ling_failure]")
|
||||
return
|
||||
@@ -285,6 +284,10 @@
|
||||
|
||||
if(candidates.len)
|
||||
theghost = pick(candidates)
|
||||
if(has_guardian(user))
|
||||
to_chat(user, "You already have a [mob_name]!")
|
||||
used = FALSE
|
||||
return
|
||||
spawn_guardian(user, theghost.key, guardian_type)
|
||||
else
|
||||
to_chat(user, "[failure_message]")
|
||||
@@ -295,6 +298,13 @@
|
||||
if(used)
|
||||
. += "<span class='notice'>[used_message]</span>"
|
||||
|
||||
/obj/item/guardiancreator/proc/has_guardian(mob/living/user)
|
||||
for(var/mob/living/simple_animal/hostile/guardian/G in GLOB.alive_mob_list)
|
||||
if(G.summoner == user)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
|
||||
/obj/item/guardiancreator/proc/spawn_guardian(mob/living/user, key, guardian_type)
|
||||
var/pickedtype = /mob/living/simple_animal/hostile/guardian/punch
|
||||
switch(guardian_type)
|
||||
|
||||
Reference in New Issue
Block a user