Skip to content

Commit

Permalink
Merge pull request #4180 from MistakeNot4892/devupdate
Browse files Browse the repository at this point in the history
Dev update from staging.
  • Loading branch information
MistakeNot4892 authored Jul 9, 2024
2 parents 877c902 + b8a9770 commit b552614
Show file tree
Hide file tree
Showing 12 changed files with 60 additions and 61 deletions.
2 changes: 1 addition & 1 deletion code/__defines/reactions.dm
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
#define REACTION_TYPE_ALLOYING 2
#define REACTION_TYPE_COMPOUND 3
#define REACTION_TYPE_SYNTHESIS 4
#define REACTION_TYPE_RECIPE 5
#define REACTION_TYPE_RECIPE 5
12 changes: 6 additions & 6 deletions code/datums/movement/atom_movable.dm
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
// Static movement denial
/datum/movement_handler/no_move/MayMove()
/datum/movement_handler/no_move/MayMove(mob/mover, is_external)
return MOVEMENT_STOP

// Anchor check
/datum/movement_handler/anchored/MayMove()
/datum/movement_handler/anchored/MayMove(mob/mover, is_external)
return host.anchored ? MOVEMENT_STOP : MOVEMENT_PROCEED

// Movement relay
/datum/movement_handler/move_relay/DoMove(var/direction, var/mover)
/datum/movement_handler/move_relay/DoMove(direction, mob/mover, is_external)
var/atom/movable/AM = host.loc
if(!istype(AM))
return
Expand All @@ -25,13 +25,13 @@
..()
src.delay = max(1, delay)

/datum/movement_handler/delay/DoMove()
/datum/movement_handler/delay/DoMove(direction, mob/mover, is_external)
next_move = world.time + delay

/datum/movement_handler/delay/MayMove()
/datum/movement_handler/delay/MayMove(mob/mover, is_external)
return world.time >= next_move ? MOVEMENT_PROCEED : MOVEMENT_STOP

// Relay self
/datum/movement_handler/move_relay_self/DoMove(var/direction, var/mover)
/datum/movement_handler/move_relay_self/DoMove(direction, mob/mover, is_external)
host.relaymove(mover, direction)
return MOVEMENT_HANDLED
55 changes: 28 additions & 27 deletions code/datums/movement/mob.dm
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// Admin object possession
/datum/movement_handler/mob/admin_possess/DoMove(var/direction)
/datum/movement_handler/mob/admin_possess/DoMove(direction, mob/mover, is_external)
if(QDELETED(mob.control_object))
return MOVEMENT_REMOVE

Expand All @@ -13,7 +13,7 @@
control_object.set_dir(direction)

// Death handling
/datum/movement_handler/mob/death/DoMove(var/direction, var/mob/mover)
/datum/movement_handler/mob/death/DoMove(direction, mob/mover, is_external)
if(mob != mover || mob.stat != DEAD)
return

Expand All @@ -25,7 +25,7 @@
mob.ghostize()

// Incorporeal/Ghost movement
/datum/movement_handler/mob/incorporeal/DoMove(var/direction, var/mob/mover)
/datum/movement_handler/mob/incorporeal/DoMove(direction, mob/mover, is_external)
. = MOVEMENT_HANDLED
direction = mob.AdjustMovementDirection(direction, mover)
mob.set_glide_size(0)
Expand All @@ -44,15 +44,15 @@
return

// Eye movement
/datum/movement_handler/mob/eye/DoMove(var/direction, var/mob/mover)
/datum/movement_handler/mob/eye/DoMove(direction, mob/mover, is_external)
if(IS_NOT_SELF(mover)) // We only care about direct movement
return
if(!mob.eyeobj)
return
mob.eyeobj.EyeMove(direction)
return MOVEMENT_HANDLED

/datum/movement_handler/mob/eye/MayMove(var/mob/mover, var/is_external)
/datum/movement_handler/mob/eye/MayMove(mob/mover, is_external)
if(IS_NOT_SELF(mover))
return MOVEMENT_PROCEED
if(is_external)
Expand All @@ -65,29 +65,26 @@
var/allow_move

// Space movement
/datum/movement_handler/mob/space/DoMove(var/direction, var/mob/mover)
if(!mob.has_gravity())
if(!allow_move)
return MOVEMENT_HANDLED
if(!mob.space_do_move(allow_move, direction))
return MOVEMENT_HANDLED
/datum/movement_handler/mob/space/DoMove(direction, mob/mover, is_external)
if(mob.has_gravity() || (IS_NOT_SELF(mover) && is_external))
return
if(!allow_move || !mob.space_do_move(allow_move, direction))
return MOVEMENT_HANDLED

/datum/movement_handler/mob/space/MayMove(var/mob/mover, var/is_external)
/datum/movement_handler/mob/space/MayMove(mob/mover, is_external)
if(IS_NOT_SELF(mover) && is_external)
return MOVEMENT_PROCEED

if(!mob.has_gravity())
allow_move = mob.Process_Spacemove(1)
if(!allow_move)
return MOVEMENT_STOP

return MOVEMENT_PROCEED

// Buckle movement
/datum/movement_handler/mob/buckle_relay/DoMove(var/direction, var/mover)
/datum/movement_handler/mob/buckle_relay/DoMove(direction, mob/mover, is_external)
return mob?.buckled?.handle_buckled_relaymove(src, mob, direction, mover)

/datum/movement_handler/mob/buckle_relay/MayMove(var/mover)
/datum/movement_handler/mob/buckle_relay/MayMove(mob/mover, is_external)
if(mob.buckled)
return mob.buckled.MayMove(mover, FALSE) ? (MOVEMENT_PROCEED|MOVEMENT_HANDLED) : MOVEMENT_STOP
return MOVEMENT_PROCEED
Expand All @@ -104,7 +101,7 @@
next_move = world.time + delay
mob.set_glide_size(delay)

/datum/movement_handler/mob/delay/MayMove(var/mover, var/is_external)
/datum/movement_handler/mob/delay/MayMove(mob/mover, is_external)
if(IS_NOT_SELF(mover) && is_external)
return MOVEMENT_PROCEED
return ((mover && mover != mob) || world.time >= next_move) ? MOVEMENT_PROCEED : MOVEMENT_STOP
Expand All @@ -116,31 +113,35 @@
next_move += max(0, delay)

// Stop effect
/datum/movement_handler/mob/stop_effect/DoMove()
if(MayMove() == MOVEMENT_STOP)
/datum/movement_handler/mob/DoMove(direction, mob/mover, is_external)
if(MayMove(mover, is_external) == MOVEMENT_STOP)
return MOVEMENT_HANDLED

/datum/movement_handler/mob/stop_effect/MayMove()
/datum/movement_handler/mob/stop_effect/MayMove(mob/mover, is_external)
for(var/obj/effect/stop/S in mob.loc)
if(S.victim == mob)
return MOVEMENT_STOP
return MOVEMENT_PROCEED

// Transformation
/datum/movement_handler/mob/transformation/MayMove()
/datum/movement_handler/mob/transformation/MayMove(mob/mover, is_external)
return MOVEMENT_STOP

// Consciousness - Is the entity trying to conduct the move conscious?
/datum/movement_handler/mob/conscious/MayMove(var/mob/mover)
/datum/movement_handler/mob/conscious/MayMove(mob/mover, is_external)
return (mover ? mover.stat == CONSCIOUS : mob.stat == CONSCIOUS) ? MOVEMENT_PROCEED : MOVEMENT_STOP

// Along with more physical checks
/datum/movement_handler/mob/physically_capable/MayMove(var/mob/mover)
/datum/movement_handler/mob/physically_capable/MayMove(mob/mover, is_external)
// We only check physical capability if the host mob tried to do the moving
return ((mover && mover != mob) || !mob.incapacitated(INCAPACITATION_DISABLED & ~INCAPACITATION_FORCELYING)) ? MOVEMENT_PROCEED : MOVEMENT_STOP
if(mover && mover != mob)
return MOVEMENT_PROCEED
if(mob.incapacitated(INCAPACITATION_DISABLED & ~INCAPACITATION_FORCELYING))
return MOVEMENT_STOP
return MOVEMENT_PROCEED

// Is anything physically preventing movement?
/datum/movement_handler/mob/physically_restrained/MayMove(var/mob/mover)
/datum/movement_handler/mob/physically_restrained/MayMove(mob/mover, is_external)
if(istype(mob.buckled) && !mob.buckled.buckle_movable)
if(mover == mob)
to_chat(mob, SPAN_WARNING("You're buckled to \the [mob.buckled]!"))
Expand All @@ -166,7 +167,7 @@
return MOVEMENT_PROCEED

// Finally... the last of the mob movement junk
/datum/movement_handler/mob/movement/DoMove(var/direction, var/mob/mover)
/datum/movement_handler/mob/movement/DoMove(direction, mob/mover, is_external)
. = MOVEMENT_HANDLED

if(!mob || mob.moving)
Expand Down Expand Up @@ -203,7 +204,7 @@
mob.handle_embedded_and_stomach_objects()
mob.moving = FALSE

/datum/movement_handler/mob/movement/MayMove(var/mob/mover)
/datum/movement_handler/mob/movement/MayMove(mob/mover, is_external)
return IS_SELF(mover) && mob.moving ? MOVEMENT_STOP : MOVEMENT_PROCEED

/mob/proc/get_stamina_used_per_step()
Expand Down
19 changes: 8 additions & 11 deletions code/datums/movement/movement.dm
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,8 @@ if(LAZYLEN(movement_handlers) && ispath(movement_handlers[1])) { \
if(ispath(movement_handlers[1]))
return (handler_path in movement_handlers)
else
for(var/mh in movement_handlers)
var/datum/MH = mh
if(MH.type == handler_path)
for(var/datum/movement_handler/movement_handler as anything in movement_handlers)
if(movement_handler.type == handler_path)
return TRUE
return FALSE

Expand Down Expand Up @@ -78,7 +77,7 @@ if(LAZYLEN(movement_handlers) && ispath(movement_handlers[1])) { \
#define SET_MOVER(X) X = X || src
#define SET_IS_EXTERNAL(X) is_external = isnull(is_external) ? (mover != src) : is_external

/atom/movable/proc/DoMove(var/direction, var/mob/mover, var/is_external)
/atom/movable/proc/DoMove(direction, mob/mover, is_external)

if(!direction || !isnum(direction))
return MOVEMENT_STOP
Expand All @@ -97,8 +96,7 @@ if(LAZYLEN(movement_handlers) && ispath(movement_handlers[1])) { \
step(src, direction)
return loc != oldloc

for(var/mh in movement_handlers)
var/datum/movement_handler/movement_handler = mh
for(var/datum/movement_handler/movement_handler as anything in movement_handlers)
if(movement_handler.MayMove(mover, is_external) & MOVEMENT_STOP)
return MOVEMENT_STOP

Expand All @@ -110,13 +108,12 @@ if(LAZYLEN(movement_handlers) && ispath(movement_handlers[1])) { \

// is_external means that something else (not inside us) is asking if we may move
// This for example includes mobs bumping into each other
/atom/movable/proc/MayMove(var/mob/mover, var/is_external)
/atom/movable/proc/MayMove(mob/mover, is_external)
INIT_MOVEMENT_HANDLERS
SET_MOVER(mover)
SET_IS_EXTERNAL(mover)

for(var/mh in movement_handlers)
var/datum/movement_handler/movement_handler = mh
for(var/datum/movement_handler/movement_handler as anything in movement_handlers)
var/may_move = movement_handler.MayMove(mover, is_external)
if(may_move & MOVEMENT_STOP)
return FALSE
Expand All @@ -142,11 +139,11 @@ if(LAZYLEN(movement_handlers) && ispath(movement_handlers[1])) { \
host = null
. = ..()

/datum/movement_handler/proc/DoMove(var/direction, var/mob/mover, var/is_external)
/datum/movement_handler/proc/DoMove(direction, mob/mover, is_external)
return

// Asks the handlers if the mob may move, ignoring destination, if attempting a DoMove()
/datum/movement_handler/proc/MayMove(var/mob/mover, var/is_external)
/datum/movement_handler/proc/MayMove(mob/mover, is_external)
return MOVEMENT_PROCEED

/*******
Expand Down
6 changes: 3 additions & 3 deletions code/datums/movement/multiz.dm
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/datum/movement_handler/mob/multiz/DoMove(var/direction, var/mob/mover, var/is_external)
/datum/movement_handler/mob/multiz/DoMove(direction, mob/mover, is_external)
if(!(direction & (UP|DOWN)))
return MOVEMENT_PROCEED

Expand Down Expand Up @@ -29,7 +29,7 @@
return MOVEMENT_PROCEED

//For ghosts and such
/datum/movement_handler/mob/multiz_connected/DoMove(var/direction, var/mob/mover, var/is_external)
/datum/movement_handler/mob/multiz_connected/DoMove(direction, mob/mover, is_external)
if(!(direction & (UP|DOWN)))
return MOVEMENT_PROCEED

Expand All @@ -40,7 +40,7 @@

return MOVEMENT_PROCEED

/datum/movement_handler/deny_multiz/DoMove(var/direction, var/mob/mover, var/is_external)
/datum/movement_handler/deny_multiz/DoMove(direction, mob/mover, is_external)
if(direction & (UP|DOWN))
return MOVEMENT_HANDLED
return MOVEMENT_PROCEED
4 changes: 2 additions & 2 deletions code/datums/movement/robot.dm
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@
. = ..()

// Use power while moving.
/datum/movement_handler/robot/use_power/DoMove()
/datum/movement_handler/robot/use_power/DoMove(direction, mob/mover, is_external)
var/datum/robot_component/actuator/A = robot.get_component("actuator")
if(!robot.cell_use_power(A.active_usage * robot.power_efficiency))
return MOVEMENT_HANDLED

/datum/movement_handler/robot/use_power/MayMove()
/datum/movement_handler/robot/use_power/MayMove(mob/mover, is_external)
return (!robot.lockcharge && robot.is_component_functioning("actuator")) ? MOVEMENT_PROCEED : MOVEMENT_STOP
12 changes: 6 additions & 6 deletions code/modules/mechs/mech_movement.dm
Original file line number Diff line number Diff line change
Expand Up @@ -37,15 +37,15 @@
/datum/movement_handler/mob/delay/exosuit
expected_host_type = /mob/living/exosuit

/datum/movement_handler/mob/delay/exosuit/MayMove(mover, is_external)
/datum/movement_handler/mob/delay/exosuit/MayMove(mob/mover, is_external)
var/mob/living/exosuit/exosuit = host
if(mover && (mover != exosuit) && (!(mover in exosuit.pilots)) && is_external)
return MOVEMENT_PROCEED
else if(world.time >= next_move)
return MOVEMENT_PROCEED
return MOVEMENT_STOP

/datum/movement_handler/mob/delay/exosuit/DoMove(direction, mover, is_external) //Delay must be handled by other handlers.
/datum/movement_handler/mob/delay/exosuit/DoMove(direction, mob/mover, is_external) //Delay must be handled by other handlers.
return

/mob/living/exosuit/SetMoveCooldown(timeout)
Expand All @@ -61,7 +61,7 @@
/datum/movement_handler/mob/exosuit
expected_host_type = /mob/living/exosuit

/datum/movement_handler/mob/exosuit/MayMove(var/mob/mover, var/is_external)
/datum/movement_handler/mob/exosuit/MayMove(mob/mover, is_external)
var/mob/living/exosuit/exosuit = host
if((!(mover in exosuit.pilots) && mover != exosuit) || exosuit.incapacitated() || mover.incapacitated())
return MOVEMENT_STOP
Expand All @@ -85,7 +85,7 @@

return MOVEMENT_PROCEED

/datum/movement_handler/mob/exosuit/DoMove(var/direction, var/mob/mover, var/is_external)
/datum/movement_handler/mob/exosuit/DoMove(direction, mob/mover, is_external)
var/mob/living/exosuit/exosuit = host
var/moving_dir = direction

Expand Down Expand Up @@ -119,12 +119,12 @@
expected_host_type = /mob/living/exosuit

// Space movement
/datum/movement_handler/mob/space/exosuit/DoMove(var/direction, var/mob/mover)
/datum/movement_handler/mob/space/exosuit/DoMove(direction, mob/mover, is_external)
if(!mob.has_gravity() && (!allow_move || (allow_move == -1 && mob.handle_spaceslipping())))
return MOVEMENT_HANDLED
mob.inertia_dir = 0

/datum/movement_handler/mob/space/exosuit/MayMove(var/mob/mover, var/is_external)
/datum/movement_handler/mob/space/exosuit/MayMove(mob/mover, is_external)
if((mover != host) && is_external)
return MOVEMENT_PROCEED

Expand Down
2 changes: 1 addition & 1 deletion code/modules/mob/living/living.dm
Original file line number Diff line number Diff line change
Expand Up @@ -444,7 +444,7 @@ default behaviour is:
if(!isturf(loc))
for(var/G in get_active_grabs())
qdel(G)
return
return

if(isturf(old_loc))
for(var/atom/movable/AM as anything in ret_grab())
Expand Down
2 changes: 1 addition & 1 deletion code/modules/reagents/reactions/_reaction.dm
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
var/reaction_sound = 'sound/effects/bubbles.ogg'
var/lore_text
var/mechanics_text
var/reaction_category
var/reaction_category = REACTION_TYPE_COMPOUND
/// Flags used when reaction processing.
var/chemical_reaction_flags = 0

Expand Down
1 change: 0 additions & 1 deletion code/modules/reagents/reactions/reaction_compounds.dm
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
/decl/chemical_reaction/compound
abstract_type = /decl/chemical_reaction/compound
reaction_category = REACTION_TYPE_COMPOUND

/decl/chemical_reaction/compound/surfactant
name = "Azosurfactant"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
abstract_type = /decl/chemical_reaction/grenade_reaction
result_amount = 1
chemical_reaction_flags = CHEM_REACTION_FLAG_OVERFLOW_CONTAINER
reaction_category = REACTION_TYPE_COMPOUND

/decl/chemical_reaction/grenade_reaction/explosion_potassium
name = "Explosion"
Expand Down
5 changes: 3 additions & 2 deletions maps/away/magshield/magshield.dm
Original file line number Diff line number Diff line change
Expand Up @@ -103,9 +103,10 @@
sleep(50)
visible_message(SPAN_DANGER("\The [src] explodes!"))
var/turf/T = get_turf(src)
explosion(T, 2, 3, 4, 10, 1)
empulse(src, heavy_range*2, lighter_range*2, 1)
qdel(src)
explosion(T, 2, 3, 4, 10, 1)
if(!QDELETED(src))
qdel(src)
if(istype(W, /obj/item/mop))
to_chat(user, SPAN_NOTICE("You stick \the [W] into the rotating spokes, and it immediately breaks into tiny pieces."))
qdel(W)
Expand Down

0 comments on commit b552614

Please sign in to comment.