mirror of
https://github.com/Citadel-Station-13/Citadel-Station-13-RP.git
synced 2026-08-20 09:16:55 +01:00
113 lines
4.5 KiB
Plaintext
113 lines
4.5 KiB
Plaintext
//* This file is explicitly licensed under the MIT license. *//
|
|
//* Copyright (c) 2025 Citadel Station Developers *//
|
|
|
|
/mob/OnMouseDrop(atom/over, mob/user, proximity, params)
|
|
. = ..()
|
|
if(over != user)
|
|
return
|
|
. |= mouse_drop_strip_interaction(user)
|
|
|
|
/mob/on_attack_hand(datum/event_args/actor/clickchain/clickchain, clickchain_flags)
|
|
. = ..()
|
|
if(. & CLICKCHAIN_FLAGS_INTERACT_ABORT)
|
|
return
|
|
// todo: add clickchain flags to on attack hand and return flags properly..
|
|
if(clickchain.performer.can_clickchain_unarmed_interact_with_mob(clickchain, NONE, src))
|
|
. = handle_inbound_clickchain_unarmed_interaction(clickchain, NONE)
|
|
if(. & CLICKCHAIN_FLAGS_INTERACT_ABORT)
|
|
return
|
|
|
|
/**
|
|
* Called when about to **send** a clickchain interaction
|
|
*/
|
|
/mob/proc/can_clickchain_unarmed_interact_with_mob(datum/event_args/actor/clickchain/clickchain, clickchain_flags, mob/target, silent)
|
|
return TRUE
|
|
|
|
/**
|
|
* Called when receiving a clickchain interaction.
|
|
*
|
|
* * Called only when clickchain has proximity.
|
|
* * Called before shieldcalls, so make sure to handle those.
|
|
* * Routes to on_clickchain_x_interaction by default.
|
|
*
|
|
* @return clickchain_flags
|
|
*/
|
|
/mob/proc/handle_inbound_clickchain_unarmed_interaction(datum/event_args/actor/clickchain/clickchain, clickchain_flags)
|
|
switch(clickchain.using_intent)
|
|
if(INTENT_HELP)
|
|
return handle_inbound_clickchain_help_interaction(clickchain, clickchain_flags)
|
|
if(INTENT_DISARM)
|
|
return handle_inbound_clickchain_disarm_interaction(clickchain, clickchain_flags)
|
|
if(INTENT_GRAB)
|
|
return handle_inbound_clickchain_grab_interaction(clickchain, clickchain_flags)
|
|
if(INTENT_HARM)
|
|
return handle_inbound_clickchain_harm_interaction(clickchain, clickchain_flags)
|
|
|
|
/**
|
|
* Called when receiving a clickchain interaction.
|
|
*
|
|
* * This is called on the receiving (being attacked) side.
|
|
* * Called only when clickchain has proximity.
|
|
* * Called before shieldcalls, so make sure to handle those.
|
|
*
|
|
* @return clickchain flags
|
|
*/
|
|
/mob/proc/handle_inbound_clickchain_help_interaction(datum/event_args/actor/clickchain/clickchain, clickchain_flags)
|
|
. = clickchain_flags
|
|
var/intentful_hook_results = SEND_SIGNAL(clickchain.performer, COMSIG_MOB_MELEE_INTENTFUL_HOOK, clickchain, .)
|
|
if(intentful_hook_results & RAISE_MOB_MELEE_INTENTFUL_SKIP)
|
|
. = CLICKCHAIN_DO_NOT_PROPAGATE
|
|
if(intentful_hook_results & RAISE_MOB_MELEE_INTENTFUL_ACTION)
|
|
. |= CLICKCHAIN_DID_SOMETHING
|
|
|
|
/**
|
|
* Called when receiving a clickchain interaction.
|
|
*
|
|
* * This is called on the receiving (being attacked) side.
|
|
* * Called only when clickchain has proximity.
|
|
* * Called before shieldcalls, so make sure to handle those.
|
|
*
|
|
* @return clickchain flags
|
|
*/
|
|
/mob/proc/handle_inbound_clickchain_disarm_interaction(datum/event_args/actor/clickchain/clickchain, clickchain_flags)
|
|
. = clickchain_flags
|
|
var/intentful_hook_results = SEND_SIGNAL(clickchain.performer, COMSIG_MOB_MELEE_INTENTFUL_HOOK, clickchain, .)
|
|
if(intentful_hook_results & RAISE_MOB_MELEE_INTENTFUL_SKIP)
|
|
. = CLICKCHAIN_DO_NOT_PROPAGATE
|
|
if(intentful_hook_results & RAISE_MOB_MELEE_INTENTFUL_ACTION)
|
|
. |= CLICKCHAIN_DID_SOMETHING
|
|
|
|
/**
|
|
* Called when receiving a clickchain interaction.
|
|
*
|
|
* * This is called on the receiving (being attacked) side.
|
|
* * Called only when clickchain has proximity.
|
|
* * Called before shieldcalls, so make sure to handle those.
|
|
*
|
|
* @return clickchain flags
|
|
*/
|
|
/mob/proc/handle_inbound_clickchain_grab_interaction(datum/event_args/actor/clickchain/clickchain, clickchain_flags)
|
|
. = clickchain_flags
|
|
var/intentful_hook_results = SEND_SIGNAL(clickchain.performer, COMSIG_MOB_MELEE_INTENTFUL_HOOK, clickchain, .)
|
|
if(intentful_hook_results & RAISE_MOB_MELEE_INTENTFUL_SKIP)
|
|
. = CLICKCHAIN_DO_NOT_PROPAGATE
|
|
if(intentful_hook_results & RAISE_MOB_MELEE_INTENTFUL_ACTION)
|
|
. |= CLICKCHAIN_DID_SOMETHING
|
|
|
|
/**
|
|
* Called when receiving a clickchain interaction.
|
|
*
|
|
* * This is called on the receiving (being attacked) side.
|
|
* * Called only when clickchain has proximity.
|
|
* * Called before shieldcalls, so make sure to handle those.
|
|
*
|
|
* @return clickchain flags
|
|
*/
|
|
/mob/proc/handle_inbound_clickchain_harm_interaction(datum/event_args/actor/clickchain/clickchain, clickchain_flags)
|
|
. = clickchain_flags
|
|
var/intentful_hook_results = SEND_SIGNAL(clickchain.performer, COMSIG_MOB_MELEE_INTENTFUL_HOOK, clickchain, .)
|
|
if(intentful_hook_results & RAISE_MOB_MELEE_INTENTFUL_SKIP)
|
|
. = CLICKCHAIN_DO_NOT_PROPAGATE
|
|
if(intentful_hook_results & RAISE_MOB_MELEE_INTENTFUL_ACTION)
|
|
. |= CLICKCHAIN_DID_SOMETHING
|