diff --git a/code/datums/rituals.dm b/code/datums/rituals.dm index 4c3049d00fe..d13dc144be3 100644 --- a/code/datums/rituals.dm +++ b/code/datums/rituals.dm @@ -129,7 +129,7 @@ if(charges == 0) return NONE - if(allowed_special_role && !is_type_in_list(invoker.mind?.special_role, allowed_special_role)) + if(allowed_special_role && !LAZYIN(allowed_special_role, invoker.mind?.special_role)) return RITUAL_FAILED_INVALID_SPECIAL_ROLE if(allowed_species && !is_type_in_list(invoker.dna.species, allowed_species)) // double check to avoid funny situations @@ -151,14 +151,14 @@ /datum/ritual/proc/cast(mob/living/carbon/human/invoker) . = TRUE - LAZYADD(invokers, invoker) - for(var/mob/living/carbon/human/human as anything in invokers) + var/list/invokers_list = invokers.Copy() // create temp list to avoid funny situations + LAZYADD(invokers_list, invoker) + + for(var/mob/living/carbon/human/human as anything in invokers_list) if(!do_after(human, cast_time, ritual_object, extra_checks = CALLBACK(src, PROC_REF(action_check_contents)))) . = FALSE - LAZYREMOVE(invokers, invoker) - return . /datum/ritual/proc/check_invokers(mob/living/carbon/human/invoker) @@ -172,7 +172,7 @@ if(require_allowed_species && !is_type_in_list(human.dna.species, allowed_species)) continue - if(require_allowed_special_role && !is_type_in_list(human.mind?.special_role, allowed_special_role)) + if(require_allowed_special_role && !LAZYIN(allowed_special_role, human.mind?.special_role)) continue LAZYADD(invokers, human) @@ -204,7 +204,7 @@ if(obj == ritual_object) continue - if(locate(obj) in invokers) + if(LAZYIN(invokers, obj)) continue LAZYADD(atoms, obj) @@ -222,7 +222,7 @@ if(isstack(atom)) var/obj/item/stack/picked_stack = atom - LAZYREMOVE(requirements[req_type], picked_stack.amount) + requirements[req_type] -= picked_stack.amount else requirements[req_type]-- diff --git a/code/game/objects/effects/decals/Cleanable/misc.dm b/code/game/objects/effects/decals/Cleanable/misc.dm index 82e17d98a83..a288263f7a4 100644 --- a/code/game/objects/effects/decals/Cleanable/misc.dm +++ b/code/game/objects/effects/decals/Cleanable/misc.dm @@ -262,11 +262,22 @@ name = "Ash rune" desc = "A rune drawn in ash." icon = 'icons/effects/ashwalker_rune.dmi' - icon_state = "AshRuneFilled" + icon_state = "AshRuneSmall" anchored = TRUE mergeable_decal = FALSE mouse_opacity = MOUSE_OPACITY_ICON +/obj/effect/decal/cleanable/ashrune/Initialize(mapload) + . = ..() + + update_icon(UPDATE_ICON_STATE) + + pixel_x = -32 + pixel_y = -32 + +/obj/effect/decal/cleanable/ashrune/update_icon_state() + icon_state = "AshRuneFilled" + /obj/effect/decal/cleanable/ashrune/ComponentInitialize() AddComponent( \ /datum/component/ritual_object, \ diff --git a/icons/effects/ashwalker_rune.dmi b/icons/effects/ashwalker_rune.dmi index 3c703403738..99c80693443 100644 Binary files a/icons/effects/ashwalker_rune.dmi and b/icons/effects/ashwalker_rune.dmi differ