mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-15 17:13:46 +01:00
Merge remote-tracking branch 'upstream/master' into brass
This commit is contained in:
@@ -246,7 +246,7 @@
|
||||
|
||||
if(!operating)
|
||||
for (var/obj/item/O in holdingitems)
|
||||
processing_chamber += "\A [O.name]<BR>"
|
||||
processing_chamber += "\A [html_encode(O.name)]<BR>"
|
||||
|
||||
if (!processing_chamber)
|
||||
is_chamber_empty = 1
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
M.SetParalysis(0, FALSE)
|
||||
M.SetSilence(0, FALSE)
|
||||
M.SetHallucinate(0)
|
||||
REMOVE_TRAITS_NOT_IN(M, list(ROUNDSTART_TRAIT))
|
||||
REMOVE_TRAITS_NOT_IN(M, list(ROUNDSTART_TRAIT, SPECIES_TRAIT))
|
||||
M.SetDizzy(0)
|
||||
M.SetDrowsy(0)
|
||||
M.SetStuttering(0)
|
||||
|
||||
@@ -640,18 +640,18 @@
|
||||
/datum/reagent/rotatium/on_mob_life(mob/living/carbon/M)
|
||||
if(M.hud_used)
|
||||
if(current_cycle >= 20 && current_cycle % 20 == 0)
|
||||
var/list/screens = list(M.hud_used.plane_masters["[FLOOR_PLANE]"], M.hud_used.plane_masters["[GAME_PLANE]"], M.hud_used.plane_masters["[LIGHTING_PLANE]"])
|
||||
var/atom/movable/plane_master_controller/pm_controller = M.hud_used.plane_master_controllers[PLANE_MASTERS_GAME]
|
||||
var/rotation = min(round(current_cycle / 20), 89) // By this point the player is probably puking and quitting anyway
|
||||
for(var/whole_screen in screens)
|
||||
animate(whole_screen, transform = matrix(rotation, MATRIX_ROTATE), time = 5, easing = QUAD_EASING, loop = -1)
|
||||
for(var/key in pm_controller.controlled_planes)
|
||||
animate(pm_controller.controlled_planes[key], transform = matrix(rotation, MATRIX_ROTATE), time = 5, easing = QUAD_EASING, loop = -1)
|
||||
animate(transform = matrix(-rotation, MATRIX_ROTATE), time = 5, easing = QUAD_EASING)
|
||||
return ..()
|
||||
|
||||
/datum/reagent/rotatium/on_mob_delete(mob/living/M)
|
||||
if(M && M.hud_used)
|
||||
var/list/screens = list(M.hud_used.plane_masters["[FLOOR_PLANE]"], M.hud_used.plane_masters["[GAME_PLANE]"], M.hud_used.plane_masters["[LIGHTING_PLANE]"])
|
||||
for(var/whole_screen in screens)
|
||||
animate(whole_screen, transform = matrix(), time = 5, easing = QUAD_EASING)
|
||||
if(M?.hud_used)
|
||||
var/atom/movable/plane_master_controller/pm_controller = M.hud_used.plane_master_controllers[PLANE_MASTERS_GAME]
|
||||
for(var/key in pm_controller.controlled_planes)
|
||||
animate(pm_controller.controlled_planes[key], transform = matrix(), time = 5, easing = QUAD_EASING)
|
||||
..()
|
||||
|
||||
//////////////////////////////
|
||||
|
||||
@@ -448,7 +448,7 @@
|
||||
if(!istype(C))
|
||||
return
|
||||
if(C.mind)
|
||||
if(C.mind.assigned_role == "Clown" || C.mind.assigned_role == SPECIAL_ROLE_HONKSQUAD)
|
||||
if(C.mind.assigned_role == "Clown")
|
||||
to_chat(C, "<span class='notice'>Whatever that was, it feels great!</span>")
|
||||
else if(C.mind.assigned_role == "Mime")
|
||||
to_chat(C, "<span class='warning'>You feel nauseous.</span>")
|
||||
@@ -466,7 +466,7 @@
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(prob(10))
|
||||
M.emote("giggle")
|
||||
if(M?.mind.assigned_role == "Clown" || M?.mind.assigned_role == SPECIAL_ROLE_HONKSQUAD)
|
||||
if(M?.mind.assigned_role == "Clown")
|
||||
update_flags |= M.adjustBruteLoss(-1.5 * REAGENTS_EFFECT_MULTIPLIER) //Screw those pesky clown beatings!
|
||||
else
|
||||
M.AdjustDizzy(10, 0, 500)
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
/datum/reagent/consumable/drink/apple_pocalypse/on_mob_life(mob/living/M)
|
||||
if(prob(1))
|
||||
var/turf/simulated/T = get_turf(M)
|
||||
goonchem_vortex(T, 1, 0)
|
||||
goonchem_vortex(T, TRUE, 0, TRUE) // Ignore the 0 volume
|
||||
to_chat(M, "<span class='notice'>You briefly feel super-massive, like a black hole. Probably just your imagination...</span>")
|
||||
return ..()
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
/datum/reagent/consumable/drink/grape_granade/on_mob_life(mob/living/M)
|
||||
if(prob(1))
|
||||
var/turf/simulated/T = get_turf(M)
|
||||
goonchem_vortex(T, 0, 0)
|
||||
goonchem_vortex(T, FALSE, 0, TRUE) // Ignore the 0 volume
|
||||
M.emote("burp")
|
||||
to_chat(M, "<span class='notice'>You feel ready to burst! Oh wait, just a burp...</span>")
|
||||
else if(prob(25))
|
||||
|
||||
@@ -57,10 +57,12 @@
|
||||
taste_description = "floor cleaner"
|
||||
|
||||
/datum/reagent/space_cleaner/reaction_obj(obj/O, volume)
|
||||
if(is_cleanable(O))
|
||||
var/obj/effect/decal/cleanable/blood/B = O
|
||||
if(!(istype(B) && B.off_floor))
|
||||
qdel(O)
|
||||
if(istype(O, /obj/effect))
|
||||
var/obj/effect/E = O
|
||||
if(E.is_cleanable())
|
||||
var/obj/effect/decal/cleanable/blood/B = E
|
||||
if(!(istype(B) && B.off_floor))
|
||||
qdel(E)
|
||||
else
|
||||
if(O.simulated)
|
||||
O.color = initial(O.color)
|
||||
|
||||
@@ -53,18 +53,37 @@
|
||||
for(var/j = 1, j <= rand(1, 3), j++)
|
||||
step(S, pick(NORTH,SOUTH,EAST,WEST))
|
||||
|
||||
/proc/goonchem_vortex(turf/T, setting_type, volume)
|
||||
if(setting_type)
|
||||
/**
|
||||
* Throws or pulls objects to/from a chem reaction
|
||||
*
|
||||
* Scales the amount of objects thrown with the volume, unless ignore_volume is TRUE
|
||||
*
|
||||
* Arguments:
|
||||
* * T - The turf to use as the throw from/to point
|
||||
* * pull - Do we want to pull objects towards T (TRUE) or push them away from it (FALSE)
|
||||
* * volume - The volume of reagents. Used to scale the effect is ignore_volume = FALSE
|
||||
* * ignore_volume - Do we want to ignore the volume of reagents and just throw regardless
|
||||
*/
|
||||
/proc/goonchem_vortex(turf/T, pull, volume, ignore_volume = FALSE)
|
||||
if(pull)
|
||||
new /obj/effect/temp_visual/implosion(T)
|
||||
playsound(T, 'sound/effects/whoosh.ogg', 25, 1) //credit to Robinhood76 of Freesound.org for this.
|
||||
else
|
||||
new /obj/effect/temp_visual/shockwave(T)
|
||||
playsound(T, 'sound/effects/bang.ogg', 25, 1)
|
||||
for(var/atom/movable/X in view(2 + setting_type + (volume > 30 ? 1 : 0), T))
|
||||
// PARADISE EDIT: Allow only a certain amount of atoms to be pulled per unit
|
||||
var/units_per_atom = 5
|
||||
var/atoms_to_move = round(volume / units_per_atom)
|
||||
var/moved_count = 0
|
||||
// The ternary below isnt exactly needed, but it makes code more readable because `pull` is a bool
|
||||
for(var/atom/movable/X in view(2 + (pull ? 1 : 0) + (volume > 30 ? 1 : 0), T))
|
||||
if(istype(X, /obj/effect))
|
||||
continue //stop pulling smoke and hotspots please
|
||||
if(X && !X.anchored && X.move_resist <= MOVE_FORCE_DEFAULT)
|
||||
if(setting_type)
|
||||
if(pull)
|
||||
X.throw_at(T, 20 + round(volume * 2), 1 + round(volume / 10))
|
||||
else
|
||||
X.throw_at(get_edge_target_turf(T, get_dir(T, X)), 20 + round(volume * 2), 1 + round(volume / 10))
|
||||
moved_count++
|
||||
if((moved_count >= atoms_to_move) && !ignore_volume)
|
||||
break
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
var/turf/T = get_turf(holder.my_atom)
|
||||
if(!T)
|
||||
return
|
||||
goonchem_vortex(T, 0, created_volume)
|
||||
goonchem_vortex(T, FALSE, created_volume)
|
||||
|
||||
/datum/chemical_reaction/sorium_explosion/sorium
|
||||
name = "sorium_vortex"
|
||||
@@ -133,7 +133,7 @@
|
||||
var/turf/simulated/T = get_turf(holder.my_atom)
|
||||
if(!T)
|
||||
return
|
||||
goonchem_vortex(T, 1, created_volume)
|
||||
goonchem_vortex(T, TRUE, created_volume)
|
||||
|
||||
/datum/chemical_reaction/ldm_implosion/liquid_dark_matter
|
||||
name = "LDM Vortex"
|
||||
|
||||
Reference in New Issue
Block a user