April sync (#360)
* Maps and things no code/icons * helpers defines globalvars * Onclick world.dm orphaned_procs * subsystems Round vote and shuttle autocall done here too * datums * Game folder * Admin - chatter modules * clothing - mining * modular computers - zambies * client * mob level 1 * mob stage 2 + simple_animal * silicons n brains * mob stage 3 + Alien/Monkey * human mobs * icons updated * some sounds * emitter y u no commit * update tgstation.dme * compile fixes * travis fixes Also removes Fast digest mode, because reasons. * tweaks for travis Mentors are broke again Also fixes Sizeray guns * oxygen loss fix for vore code. * removes unused code * some code updates * bulk fixes * further fixes * outside things * whoops. * Maint bar ported * GLOBs.
This commit is contained in:
@@ -24,6 +24,8 @@
|
||||
slot_flags = SLOT_BACK
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
var/processing_mode = FLIGHTSUIT_PROCESSING_FULL
|
||||
|
||||
var/obj/item/clothing/suit/space/hardsuit/flightsuit/suit = null
|
||||
var/mob/living/carbon/human/wearer = null
|
||||
var/slowdown_ground = 1
|
||||
@@ -104,14 +106,15 @@
|
||||
|
||||
|
||||
//Start/Stop processing the item to use momentum and flight mechanics.
|
||||
/obj/item/device/flightpack/New()
|
||||
/obj/item/device/flightpack/Initialize()
|
||||
ion_trail = new
|
||||
ion_trail.set_up(src)
|
||||
START_PROCESSING(SSflightpacks, src)
|
||||
..()
|
||||
update_parts()
|
||||
sync_processing(SSflightpacks)
|
||||
..()
|
||||
|
||||
/obj/item/device/flightpack/full/New()
|
||||
/obj/item/device/flightpack/full/Initialize()
|
||||
part_manip = new /obj/item/weapon/stock_parts/manipulator/pico(src)
|
||||
part_scan = new /obj/item/weapon/stock_parts/scanning_module/phasic(src)
|
||||
part_cap = new /obj/item/weapon/stock_parts/capacitor/super(src)
|
||||
@@ -120,6 +123,18 @@
|
||||
assembled = TRUE
|
||||
..()
|
||||
|
||||
/obj/item/device/flightpack/proc/sync_processing(datum/controller/subsystem/processing/flightpacks/FPS)
|
||||
processing_mode = FPS.flightsuit_processing
|
||||
if(processing_mode == FLIGHTSUIT_PROCESSING_NONE)
|
||||
momentum_x = 0
|
||||
momentum_y = 0
|
||||
momentum_speed_x = 0
|
||||
momentum_speed_y = 0
|
||||
momentum_speed = 0
|
||||
boost_charge = 0
|
||||
boost = FALSE
|
||||
update_slowdown()
|
||||
|
||||
/obj/item/device/flightpack/proc/update_parts()
|
||||
boost_chargerate = initial(boost_chargerate)
|
||||
boost_drain = initial(boost_drain)
|
||||
@@ -339,7 +354,7 @@
|
||||
suit.slowdown = slowdown_air
|
||||
|
||||
/obj/item/device/flightpack/process()
|
||||
if(!suit)
|
||||
if(!suit || (processing_mode == FLIGHTSUIT_PROCESSING_NONE))
|
||||
return FALSE
|
||||
update_slowdown()
|
||||
update_icon()
|
||||
@@ -451,7 +466,7 @@
|
||||
wearer.visible_message("[wearer] is knocked flying by the impact!")
|
||||
|
||||
/obj/item/device/flightpack/proc/flight_impact(atom/unmovablevictim, crashdir) //Yes, victim.
|
||||
if((unmovablevictim == wearer) || crashing)
|
||||
if((unmovablevictim == wearer) || crashing || (processing_mode == FLIGHTSUIT_PROCESSING_NONE))
|
||||
return FALSE
|
||||
crashing = TRUE
|
||||
var/crashpower = 0
|
||||
@@ -563,9 +578,12 @@
|
||||
spawn()
|
||||
A.open()
|
||||
wearer.visible_message("<span class='warning'>[wearer] rolls sideways and slips past [A]</span>")
|
||||
wearer.forceMove(get_turf(A))
|
||||
var/turf/target = get_turf(A)
|
||||
if(istype(A, /obj/machinery/door/window) && (get_turf(wearer) == get_turf(A)))
|
||||
target = get_step(A, A.dir)
|
||||
wearer.forceMove(target)
|
||||
if(dragging_through)
|
||||
dragging_through.forceMove(get_turf(A))
|
||||
dragging_through.forceMove(target)
|
||||
wearer.pulling = dragging_through
|
||||
return pass
|
||||
|
||||
@@ -573,30 +591,8 @@
|
||||
/obj/item/device/flightpack/proc/mobknockback(mob/living/victim, power, direction)
|
||||
if(!ismob(victim))
|
||||
return FALSE
|
||||
var/knockmessage = "<span class='warning'>[victim] is knocked back by [wearer] as they narrowly avoid a collision!"
|
||||
if(power == 1)
|
||||
knockmessage = "<span class='warning'>[wearer] soars into [victim], pushing them away!"
|
||||
var/knockback = 0
|
||||
var/stun = boost * 2 + (power - 2)
|
||||
if((stun >= 0) || (power == 3))
|
||||
knockmessage += " [wearer] dashes across [victim] at full impulse, knocking them [stun ? "down" : "away"]!" //Impulse...
|
||||
knockmessage += "</span>"
|
||||
knockback += power
|
||||
knockback += (part_manip.rating / 2)
|
||||
knockback += (part_bin.rating / 2)
|
||||
knockback += boost*2
|
||||
switch(power)
|
||||
if(1)
|
||||
knockback = 1
|
||||
if(2)
|
||||
knockback /= 1.5
|
||||
var/throwdir = pick(alldirs)
|
||||
var/turf/target = get_step(victim, throwdir)
|
||||
for(var/i in 1 to (knockback-1))
|
||||
target = get_step(target, throwdir)
|
||||
wearer.visible_message(knockmessage)
|
||||
victim.throw_at(target, knockback, 1)
|
||||
victim.Weaken(stun)
|
||||
wearer.forceMove(get_turf(victim))
|
||||
wearer.visible_message("<span class='notice'>[wearer] flies over [victim]!</span>")
|
||||
|
||||
/obj/item/device/flightpack/proc/victimknockback(atom/movable/victim, power, direction)
|
||||
if(!victim)
|
||||
@@ -621,7 +617,7 @@
|
||||
for(var/i in 1 to knockback)
|
||||
target = get_step(target, direction)
|
||||
for(var/i in 1 to knockback/3)
|
||||
target = get_step(target, pick(alldirs))
|
||||
target = get_step(target, pick(GLOB.alldirs))
|
||||
if(knockback)
|
||||
victim.throw_at(target, knockback, part_manip.rating)
|
||||
if(isobj(victim))
|
||||
@@ -639,7 +635,7 @@
|
||||
if(move)
|
||||
while(momentum_x != 0 || momentum_y != 0)
|
||||
sleep(2)
|
||||
step(wearer, pick(cardinal))
|
||||
step(wearer, pick(GLOB.cardinal))
|
||||
momentum_decay()
|
||||
adjust_momentum(0, 0, 10)
|
||||
wearer.visible_message("<span class='warning'>[wearer]'s flight suit crashes into the ground!</span>")
|
||||
@@ -1270,13 +1266,13 @@
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/flightsuit/equipped(mob/living/carbon/human/wearer, slot)
|
||||
..()
|
||||
for(var/hudtype in datahuds)
|
||||
var/datum/atom_hud/H = huds[hudtype]
|
||||
var/datum/atom_hud/H = GLOB.huds[hudtype]
|
||||
H.add_hud_to(wearer)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/flightsuit/dropped(mob/living/carbon/human/wearer)
|
||||
..()
|
||||
for(var/hudtype in datahuds)
|
||||
var/datum/atom_hud/H = huds[hudtype]
|
||||
var/datum/atom_hud/H = GLOB.huds[hudtype]
|
||||
H.remove_hud_from(wearer)
|
||||
if(zoom)
|
||||
toggle_zoom(wearer, TRUE)
|
||||
|
||||
@@ -430,13 +430,13 @@
|
||||
to_chat(user, ("<span class='warning'>Your [user.glasses] prevents you using [src]'s diagnostic visor HUD.</span>"))
|
||||
else
|
||||
onboard_hud_enabled = 1
|
||||
var/datum/atom_hud/DHUD = huds[DATA_HUD_DIAGNOSTIC]
|
||||
var/datum/atom_hud/DHUD = GLOB.huds[DATA_HUD_DIAGNOSTIC]
|
||||
DHUD.add_hud_to(user)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/rd/dropped(mob/living/carbon/human/user)
|
||||
..()
|
||||
if(onboard_hud_enabled && !(user.glasses && istype(user.glasses, /obj/item/clothing/glasses/hud/diagnostic)))
|
||||
var/datum/atom_hud/DHUD = huds[DATA_HUD_DIAGNOSTIC]
|
||||
var/datum/atom_hud/DHUD = GLOB.huds[DATA_HUD_DIAGNOSTIC]
|
||||
DHUD.remove_hud_from(user)
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/rd
|
||||
|
||||
@@ -308,3 +308,33 @@ Contains:
|
||||
desc = "Peering into the eyes of the helmet is enough to seal damnation."
|
||||
icon_state = "hardsuit0-beserker"
|
||||
item_state = "hardsuit0-beserker"
|
||||
|
||||
/obj/item/clothing/head/helmet/space/fragile
|
||||
name = "emergency space helmet"
|
||||
desc = "A bulky, air-tight helmet meant to protect the user during emergency situations. It doesn't look very durable."
|
||||
icon_state = "syndicate-helm-orange"
|
||||
item_state = "syndicate-helm-orange"
|
||||
armor = list(melee = 5, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 10, fire = 0, acid = 0)
|
||||
strip_delay = 65
|
||||
|
||||
/obj/item/clothing/suit/space/fragile
|
||||
name = "emergency space suit"
|
||||
desc = "A bulky, air-tight suit meant to protect the user during emergency situations. It doesn't look very durable."
|
||||
var/torn = FALSE
|
||||
icon_state = "syndicate-orange"
|
||||
item_state = "syndicate-orange"
|
||||
slowdown = 2
|
||||
armor = list(melee = 5, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 10, fire = 0, acid = 0)
|
||||
strip_delay = 65
|
||||
|
||||
/obj/item/clothing/suit/space/fragile/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance)
|
||||
if(!torn && prob(50))
|
||||
to_chat(owner, "<span class='warning'>[src] tears from the damage, breaking the air-tight seal!</span>")
|
||||
src.flags -= STOPSPRESSUREDMAGE
|
||||
src.name = "torn [src]."
|
||||
src.desc = "A bulky suit meant to protect the user during emergency situations, at least until someone tore a hole in the suit."
|
||||
src.torn = TRUE
|
||||
playsound(loc, 'sound/weapons/slashmiss.ogg', 50, 1)
|
||||
playsound(loc, 'sound/effects/refill.ogg', 50, 1)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user