/
githubmirror
/
vgstation13
Обзор
Документация
Войти
/
githubmirror
/
vgstation13
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
Bleeding-Edge
code/game/objects/items/weapons/soap.dm
126 строк
4 KB
CrazyAmphibian
Jungle fix 5 (#37779)
21 июн 2025, 23:47
Не верифицирован
21 июн 2025, 23:47
77ac7fc
Код
Авторство
О чём код?
/obj/item/weapon/soap name = "soap" desc = "A cheap bar of soap. Doesn't smell." gender = PLURAL icon = 'icons/obj/items.dmi' icon_state = "soap" w_class = W_CLASS_TINY w_type = RECYK_BIOLOGICAL flammable = TRUE siemens_coefficient = 0 //no conduct throwforce = 0 throw_speed = 4 throw_range = 20 flags = FPRINT | NO_ATTACK_MSG /obj/item/weapon/soap/nanotrasen desc = "A Nanotrasen brand bar of soap. Smells of plasma." icon_state = "soapnt" /obj/item/weapon/soap/nanotrasen/planned_obsolescence desc = "A cheap Nanotrasen brand bar of soap. Smells of planned obsolescence." icon_state = "soapnt" var/max_uses = 20 /obj/item/weapon/soap/deluxe desc = "A deluxe Waffle Co. brand bar of soap. Smells of condoms." icon_state = "soapdeluxe" /obj/item/weapon/soap/syndie desc = "An untrustworthy bar of soap. Smells of fear." icon_state = "soapsyndie" /obj/item/weapon/soap/holo name = "UV sterilizer" desc = "This shouldn't exist." /obj/item/weapon/soap/proc/on_successful_use(var/mob/user) return /obj/item/weapon/soap/nanotrasen/planned_obsolescence/on_successful_use(var/mob/user) max_uses-- if (max_uses <= 0 && prob(10 + (-max_uses * 5))) if (user) to_chat(user,"<span class='warning'>The bar of soap disintegrates between your fingers as you scrub the last of it.</span>") else visible_message("<span class='warning'>The bar of soap disintegrates.</span>") qdel(src) /obj/item/weapon/soap/Crossed(var/atom/movable/AM) if(..()) return 1 if(iscarbon(AM)) var/mob/living/carbon/M = AM if(M.Slip(3, 2, 1, slipped_on = src, drugged_message = "<span class='userdanger'>Something is scratching at your feet! Oh god!</span>")) on_successful_use() /obj/item/weapon/soap/afterattack(var/atom/target, var/mob/user) if(!user.Adjacent(target)) return if(user.client && (target in user.client.screen) && !(user.is_holding_item(target))) user.simple_message("<span class='notice'>You need to take that [target.name] off before cleaning it.</span>", "<span class='notice'>You need to take that [target.name] off before destroying it.</span>") else if(istype(target,/obj/effect/decal/cleanable)) user.simple_message("<span class='notice'>You scrub \the [target.name] out.</span>", "<span class='warning'>You destroy [pick("an artwork","a valuable artwork","a rare piece of art","a rare piece of modern art")].</span>") qdel(target) on_successful_use(user) else if(istype(target,/obj/effect/rune)) var/obj/effect/rune/R = target if (!R.activated) user.simple_message("<span class='notice'>You scrub \the [target.name] out.</span>", "<span class='warning'>You destroy [pick("an artwork","a valuable artwork","a rare piece of art","a rare piece of modern art")].</span>") qdel(target) on_successful_use(user) else if(istype(target,/turf)) var/turf/T = target var/list/cleanables = list() for(var/obj/effect/decal/cleanable/CC in T) if(!istype(CC) || !CC) continue cleanables += CC for(var/obj/effect/rune/R in T) if(!R.activated) cleanables += R for(var/obj/effect/decal/cleanable/CC in get_turf(user)) //Get all nearby decals drawn on this wall and erase them if(CC.on_wall == target) cleanables += CC if (istype(T,/turf/simulated)) var/turf/simulated/ST=T if(ST.advanced_graffiti) ST.overlays -= ST.advanced_graffiti_overlay ST.advanced_graffiti_overlay = null qdel(ST.advanced_graffiti) cleanables += "advanced graffiti" if(!cleanables.len) user.simple_message("<span class='notice'>You fail to clean anything.</span>", "<span class='notice'>There is nothing for you to vandalize.</span>") return cleanables = shuffle(cleanables) var/obj/effect/decal/cleanable/C = pick(cleanables) user.simple_message("<span class='notice'>You scrub \the [isatom(C) ? "[C.name]" : "decal"] out.</span>", "<span class='warning'>You destroy [pick("an artwork","a valuable artwork","a rare piece of art","a rare piece of modern art")].</span>") qdel(C) on_successful_use(user) else user.simple_message("<span class='notice'>You clean \the [target.name].</span>", "<span class='warning'>You [pick("deface","ruin","stain")] \the [target.name].</span>") target.clean_act(CLEANLINESS_SPACECLEANER) on_successful_use(user) /obj/item/weapon/soap/attack(var/mob/target, var/mob/user) if(target && user && ishuman(target) && !target.stat && !user.stat && user.zone_sel &&user.zone_sel.selecting == "mouth" ) user.visible_message("<span class='warning'>\The [user] washes \the [target]'s mouth out with soap!</span>") return ..()