Fix Crossed/Entered/Exited/Bump/ui_act parameter casting (#49016)

About The Pull Request

Detected as part of my work on SpaceManiac/SpacemanDMM#167
This commit is contained in:
spookydonut
2020-01-28 10:51:15 +13:00
committed by oranges
parent b7aa7ef4b4
commit ac7f2b5166
25 changed files with 84 additions and 71 deletions
@@ -611,8 +611,8 @@
/obj/effect/ctf/ammo/Crossed(atom/movable/AM)
reload(AM)
/obj/effect/ctf/ammo/Bump(atom/movable/AM)
reload(AM)
/obj/effect/ctf/ammo/Bump(atom/A)
reload(A)
/obj/effect/ctf/ammo/Bumped(atom/movable/AM)
reload(AM)
@@ -129,9 +129,10 @@
var/newcolor = color2hex(pick(10;"green", 5;"blue", 3;"red", 1;"purple"))
add_atom_colour(newcolor, FIXED_COLOUR_PRIORITY)
/obj/item/rupee/Crossed(mob/M)
if(!istype(M))
/obj/item/rupee/Crossed(atom/movable/AM)
if(!ismob(AM))
return
var/mob/M = AM
if(M.put_in_hands(src))
if(src != M.get_active_held_item())
M.swap_hand()
+5 -4
View File
@@ -350,10 +350,11 @@
if(BURN)
playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE)
/obj/structure/spacevine/Crossed(mob/crosser)
if(isliving(crosser))
for(var/datum/spacevine_mutation/SM in mutations)
SM.on_cross(src, crosser)
/obj/structure/spacevine/Crossed(atom/movable/AM)
if(!isliving(AM))
return
for(var/datum/spacevine_mutation/SM in mutations)
SM.on_cross(src, AM)
//ATTACK HAND IGNORING PARENT RETURN VALUE
/obj/structure/spacevine/attack_hand(mob/user)
@@ -425,10 +425,11 @@
return
O.applyOrganDamage(-repair_rate)
/obj/machinery/smartfridge/organ/Exited(obj/item/organ/AM, atom/newLoc)
/obj/machinery/smartfridge/organ/Exited(atom/movable/AM, atom/newLoc)
. = ..()
if(istype(AM))
AM.organ_flags &= ~ORGAN_FROZEN
if(isorgan(AM))
var/obj/item/organ/O = AM
O.organ_flags &= ~ORGAN_FROZEN
// -----------------------------
// Chemistry Medical Smartfridge
+5 -2
View File
@@ -75,8 +75,11 @@
flags_1 = NONE
resistance_flags = FLAMMABLE
/obj/item/cultivator/rake/Crossed(mob/living/carbon/human/H)
if(istype(H) && has_gravity(loc) && HAS_TRAIT(H, TRAIT_CLUMSY) && !H.resting)
/obj/item/cultivator/rake/Crossed(atom/movable/AM)
if(!ishuman(AM))
return
var/mob/living/carbon/human/H = AM
if(has_gravity(loc) && HAS_TRAIT(H, TRAIT_CLUMSY) && !H.resting)
H.confused = max(H.confused, 10)
H.Stun(20)
playsound(src, 'sound/weapons/punch4.ogg', 50, TRUE)
@@ -773,10 +773,10 @@ Pass a positive integer as an argument to override a bot's default speed.
else // no path, so calculate new one
calc_summon_path()
/mob/living/simple_animal/bot/Bump(M as mob|obj) //Leave no door unopened!
/mob/living/simple_animal/bot/Bump(atom/A) //Leave no door unopened!
. = ..()
if((istype(M, /obj/machinery/door/airlock) || istype(M, /obj/machinery/door/window)) && (!isnull(access_card)))
var/obj/machinery/door/D = M
if((istype(A, /obj/machinery/door/airlock) || istype(A, /obj/machinery/door/window)) && (!isnull(access_card)))
var/obj/machinery/door/D = A
if(D.check_access(access_card))
D.open()
frustration = 0
@@ -256,7 +256,7 @@
var/mob/living/simple_animal/hostile/asteroid/elite/legionnaire/myowner = null
/obj/structure/legionnaire_bonfire/Entered(atom/movable/mover, turf/target)
/obj/structure/legionnaire_bonfire/Entered(atom/movable/mover, atom/target)
if(isliving(mover))
var/mob/living/L = mover
L.adjust_fire_stacks(3)
@@ -157,7 +157,7 @@
// Calls beginning with "PRG_" are reserved for programs handling.
// Calls beginning with "PC_" are reserved for computer handling (by whatever runs the program)
// ALWAYS INCLUDE PARENT CALL ..() OR DIE IN FIRE.
/datum/computer_file/program/ui_act(action,params,datum/tgui/ui)
/datum/computer_file/program/ui_act(action,list/params,datum/tgui/ui)
if(..())
return 1
if(computer)
@@ -90,7 +90,7 @@
data["BossID"] = "boss[boss_id].gif"
return data
/datum/computer_file/program/arcade/ui_act(action, params, mob/user)
/datum/computer_file/program/arcade/ui_act(action, list/params, mob/user)
if(..())
return TRUE
var/obj/item/computer_hardware/printer/printer
+4 -1
View File
@@ -832,8 +832,11 @@
. = ..()
AddComponent(/datum/component/caltrop, force)
/obj/item/light/Crossed(mob/living/L)
/obj/item/light/Crossed(atom/movable/AM)
. = ..()
if(!isliving(AM))
return
var/mob/living/L = AM
if(istype(L) && !(L.is_flying() || L.is_floating() || L.buckled))
playsound(src, 'sound/effects/glass_step.ogg', HAS_TRAIT(L, TRAIT_LIGHT_STEP) ? 30 : 50, TRUE)
if(status == LIGHT_BURNED || status == LIGHT_OK)
@@ -64,12 +64,12 @@
else
..()
/obj/machinery/field/containment/Crossed(mob/mover)
if(isliving(mover))
shock(mover)
/obj/machinery/field/containment/Crossed(atom/movable/AM)
if(isliving(AM))
shock(AM)
if(ismachinery(mover) || isstructure(mover) || ismecha(mover))
bump_field(mover)
if(ismachinery(AM) || isstructure(AM) || ismecha(AM))
bump_field(AM)
/obj/machinery/field/containment/proc/set_master(master1,master2)
if(!master1 || !master2)
+3 -3
View File
@@ -158,12 +158,12 @@
remove_controller_actions_by_flag(controller, i)
return TRUE
/obj/vehicle/Bump(atom/movable/M)
/obj/vehicle/Bump(atom/A)
. = ..()
if(emulate_door_bumps)
if(istype(M, /obj/machinery/door))
if(istype(A, /obj/machinery/door))
for(var/m in occupants)
M.Bumped(m)
A.Bumped(m)
/obj/vehicle/Move(newloc, dir)
. = ..()
+8 -8
View File
@@ -65,25 +65,25 @@
to_chat(user, "<span class='danger'>You use the [banana] to repair the [src]!</span>")
qdel(banana)
/obj/vehicle/sealed/car/clowncar/Bump(atom/movable/M)
/obj/vehicle/sealed/car/clowncar/Bump(atom/A)
. = ..()
if(isliving(M))
if(ismegafauna(M))
if(isliving(A))
if(ismegafauna(A))
return
var/mob/living/L = M
var/mob/living/L = A
if(iscarbon(L))
var/mob/living/carbon/C = L
C.Paralyze(40) //I play to make sprites go horizontal
L.visible_message("<span class='warning'>[src] rams into [L] and sucks [L.p_them()] up!</span>") //fuck off shezza this isn't ERP.
mob_forced_enter(L)
playsound(src, pick('sound/vehicles/clowncar_ram1.ogg', 'sound/vehicles/clowncar_ram2.ogg', 'sound/vehicles/clowncar_ram3.ogg'), 75)
log_combat(src, M, "sucked up")
else if(istype(M, /turf/closed))
visible_message("<span class='warning'>[src] rams into [M] and crashes!</span>")
log_combat(src, A, "sucked up")
else if(istype(A, /turf/closed))
visible_message("<span class='warning'>[src] rams into [A] and crashes!</span>")
playsound(src, pick('sound/vehicles/clowncar_crash1.ogg', 'sound/vehicles/clowncar_crash2.ogg'), 75)
playsound(src, 'sound/vehicles/clowncar_crashpins.ogg', 75)
DumpMobs(TRUE)
log_combat(src, M, "crashed into", null, "dumping all passengers")
log_combat(src, A, "crashed into", null, "dumping all passengers")
/obj/vehicle/sealed/car/clowncar/emag_act(mob/user)
if(obj_flags & EMAGGED)
@@ -135,32 +135,32 @@
. += "Energy efficiency: [power_efficiency]"
. += "Power: [power_cell.charge] out of [power_cell.maxcharge]"
/obj/vehicle/ridden/wheelchair/motorized/Bump(atom/movable/M)
/obj/vehicle/ridden/wheelchair/motorized/Bump(atom/A)
. = ..()
// Here is the shitty emag functionality.
if(obj_flags & EMAGGED && (istype(M, /turf/closed) || isliving(M)))
if(obj_flags & EMAGGED && (istype(A, /turf/closed) || isliving(A)))
explosion(src, -1, 1, 3, 2, 0)
visible_message("<span class='boldwarning'>[src] explodes!!</span>")
return
// If the speed is higher than delay_multiplier throw the person on the wheelchair away
if(M.density && speed > delay_multiplier && has_buckled_mobs())
if(A.density && speed > delay_multiplier && has_buckled_mobs())
var/mob/living/H = buckled_mobs[1]
var/atom/throw_target = get_edge_target_turf(H, pick(GLOB.cardinals))
unbuckle_mob(H)
H.throw_at(throw_target, 2, 3)
H.Knockdown(100)
H.adjustStaminaLoss(40)
if(isliving(M))
var/mob/living/D = M
if(isliving(A))
var/mob/living/D = A
throw_target = get_edge_target_turf(D, pick(GLOB.cardinals))
D.throw_at(throw_target, 2, 3)
D.Knockdown(80)
D.adjustStaminaLoss(35)
visible_message("<span class='danger'>[src] crashes into [M], sending [H] and [D] flying!</span>")
visible_message("<span class='danger'>[src] crashes into [A], sending [H] and [D] flying!</span>")
else
visible_message("<span class='danger'>[src] crashes into [M], sending [H] flying!</span>")
visible_message("<span class='danger'>[src] crashes into [A], sending [H] flying!</span>")
playsound(src, 'sound/effects/bang.ogg', 50, 1)
/obj/vehicle/ridden/wheelchair/motorized/emag_act(mob/user)
if((obj_flags & EMAGGED) || !panel_open)
return
+4 -2
View File
@@ -66,12 +66,14 @@
for(var/i in GLOB.cardinals)
D.set_vehicle_dir_layer(i, BELOW_MOB_LAYER)
/obj/vehicle/ridden/space/speedwagon/Bump(atom/movable/A)
/obj/vehicle/ridden/space/speedwagon/Bump(atom/A)
. = ..()
if(A.density && has_buckled_mobs())
var/atom/throw_target = get_edge_target_turf(A, dir)
if(crash_all)
A.throw_at(throw_target, 4, 3)
if(ismovableatom(A))
var/atom/movable/AM = A
AM.throw_at(throw_target, 4, 3)
visible_message("<span class='danger'>[src] crashes into [A]!</span>")
playsound(src, 'sound/effects/bang.ogg', 50, TRUE)
if(ishuman(A))