Skip to content

Commit

Permalink
smell mop
Browse files Browse the repository at this point in the history
  • Loading branch information
ToasterBiome committed Jun 4, 2024
1 parent 616c5e5 commit 282bef0
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 0 deletions.
28 changes: 28 additions & 0 deletions code/game/objects/items/mop.dm
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
/obj/item/mop/Initialize(mapload)
. = ..()
create_reagents(mopcap, REFILLABLE)
AddComponent(/datum/component/liquids_interaction, TYPE_PROC_REF(/obj/item/mop, attack_on_liquids_turf))


/obj/item/mop/proc/clean(turf/A)
Expand Down Expand Up @@ -73,6 +74,33 @@
to_chat(user, span_warning("You are unable to fit your [name] into the [J.name]."))
return

/obj/item/mop/proc/attack_on_liquids_turf(obj/item/mop/the_mop, turf/target, mob/user, obj/effect/abstract/liquid_turf/liquids)
if(!user.Adjacent(target))
return FALSE
var/free_space = mopcap - reagents.total_volume
var/speed_mult = 1
var/datum/liquid_group/targeted_group = target?.liquids?.liquid_group
while(!QDELETED(targeted_group))
if(speed_mult >= 0.2)
speed_mult -= 0.05
if(free_space <= 0)
to_chat(user, span_warning("Your [src] can't absorb any more!"))
return TRUE
if(!do_after(user, src.mopspeed * speed_mult, target = target))
break
if(the_mop.reagents.total_volume == the_mop.mopcap)
to_chat(user, span_warning("Your [src] can't absorb any more!"))
break
if(targeted_group?.reagents_per_turf)
targeted_group?.trans_to_seperate_group(the_mop.reagents, min(targeted_group?.reagents_per_turf, 5))
to_chat(user, span_notice("You soak up some liquids with \the [src]."))
else if(!QDELETED(target?.liquids?.liquid_group))
targeted_group = target.liquids.liquid_group
else
break
user.changeNext_move(CLICK_CD_MELEE)
return TRUE

/obj/item/mop/cyborg
insertable = FALSE

Expand Down
31 changes: 31 additions & 0 deletions code/modules/reagents/reagent_containers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,37 @@

add_initial_reagents()

AddComponent(/datum/component/liquids_interaction, TYPE_PROC_REF(/obj/item/reagent_containers, attack_on_liquids_turf))

/obj/item/reagent_containers/proc/attack_on_liquids_turf(obj/item/reagent_containers/my_beaker, turf/T, mob/living/user, obj/effect/abstract/liquid_turf/liquids)
if(!user.Adjacent(T))
return FALSE
if(!my_beaker.spillable)
return FALSE
if(!user.Adjacent(T))
return FALSE
if(user.combat_mode)
return FALSE
if(liquids.fire_state) //Use an extinguisher first
to_chat(user, "<span class='warning'>You can't scoop up anything while it's on fire!</span>")
return TRUE
if(liquids.liquid_group.expected_turf_height == 1)
to_chat(user, "<span class='warning'>The puddle is too shallow to scoop anything up!</span>")
return TRUE
var/free_space = my_beaker.reagents.maximum_volume - my_beaker.reagents.total_volume
if(free_space <= 0)
to_chat(user, "<span class='warning'>You can't fit any more liquids inside [my_beaker]!</span>")
return TRUE
var/desired_transfer = my_beaker.amount_per_transfer_from_this
if(desired_transfer > free_space)
desired_transfer = free_space
if(desired_transfer > liquids.liquid_group.reagents_per_turf)
desired_transfer = liquids.liquid_group.reagents_per_turf
liquids.liquid_group.trans_to_seperate_group(my_beaker.reagents, desired_transfer, liquids)
to_chat(user, "<span class='notice'>You scoop up around [round(desired_transfer)] units of liquids with [my_beaker].</span>")
user.changeNext_move(CLICK_CD_MELEE)
return TRUE

/obj/item/reagent_containers/proc/add_initial_reagents()
if(list_reagents)
reagents.add_reagent_list(list_reagents)
Expand Down

0 comments on commit 282bef0

Please sign in to comment.