ion jetpack module

This commit is contained in:
Jerry Wester
2022-12-14 20:24:54 -07:00
parent adbbb12701
commit b52e7a5657
4 changed files with 241 additions and 28 deletions
@@ -16,9 +16,15 @@
if(istype(T) && movement_dir && T.allow_thrust(0.01))
return 1
var/obj/item/tank/jetpack/J = get_jetpack()
if(istype(J) && (movement_dir || J.stabilizers) && J.allow_thrust(0.01, src))
return 1
var/obj/item/I = get_jetpack()
if(istype(I, /obj/item/tank/jetpack))
var/obj/item/tank/jetpack/J = I
if((movement_dir || J.stabilizers) && J.allow_thrust(0.01, src))
return 1
else if(istype(I, /obj/item/mod/module/jetpack))
var/obj/item/mod/module/jetpack/J = I
if((movement_dir || J.stabilizers) && J.allow_thrust())
return 1
/mob/living/carbon/Moved()
. = ..()
+140 -21
View File
@@ -7,78 +7,169 @@
return ..()
/obj/item/mod/control/pre_equipped/standard
initial_modules = list(/obj/item/mod/module/storage, /obj/item/mod/module/welding, /obj/item/mod/module/flashlight)
initial_modules = list(
/obj/item/mod/module/storage,
/obj/item/mod/module/welding,
/obj/item/mod/module/flashlight,
)
/obj/item/mod/control/pre_equipped/engineering
theme = /datum/mod_theme/engineering
initial_modules = list(/obj/item/mod/module/storage, /obj/item/mod/module/welding, /obj/item/mod/module/rad_protection, /obj/item/mod/module/flashlight, /obj/item/mod/module/magboot)
initial_modules = list(
/obj/item/mod/module/storage,
/obj/item/mod/module/welding,
/obj/item/mod/module/rad_protection,
/obj/item/mod/module/flashlight,
/obj/item/mod/module/magboot,
)
/obj/item/mod/control/pre_equipped/atmospheric
theme = /datum/mod_theme/atmospheric
initial_modules = list(/obj/item/mod/module/storage, /obj/item/mod/module/welding, /obj/item/mod/module/rad_protection, /obj/item/mod/module/flashlight, /obj/item/mod/module/t_ray)
initial_modules = list(
/obj/item/mod/module/storage,
/obj/item/mod/module/welding,
/obj/item/mod/module/rad_protection,
/obj/item/mod/module/flashlight,
/obj/item/mod/module/t_ray,
)
/obj/item/mod/control/pre_equipped/advanced
theme = /datum/mod_theme/advanced
cell = /obj/item/stock_parts/cell/super
initial_modules = list(/obj/item/mod/module/storage, /obj/item/mod/module/welding, /obj/item/mod/module/rad_protection, /obj/item/mod/module/flashlight)
initial_modules = list(
/obj/item/mod/module/storage,
/obj/item/mod/module/welding,
/obj/item/mod/module/rad_protection,
/obj/item/mod/module/flashlight,
/obj/item/mod/module/jetpack,
)
/obj/item/mod/control/pre_equipped/mining
theme = /datum/mod_theme/mining
cell = /obj/item/stock_parts/cell/high/plus
initial_modules = list(/obj/item/mod/module/storage, /obj/item/mod/module/welding, /obj/item/mod/module/orebag, /obj/item/mod/module/flashlight, /obj/item/mod/module/magboot, /obj/item/mod/module/drill)
initial_modules = list(
/obj/item/mod/module/storage,
/obj/item/mod/module/welding,
/obj/item/mod/module/orebag,
/obj/item/mod/module/flashlight,
/obj/item/mod/module/magboot,
/obj/item/mod/module/drill,
)
/obj/item/mod/control/pre_equipped/medical
theme = /datum/mod_theme/medical
initial_modules = list(/obj/item/mod/module/storage, /obj/item/mod/module/flashlight, /obj/item/mod/module/health_analyzer, /obj/item/mod/module/quick_carry)
initial_modules = list(
/obj/item/mod/module/storage,
/obj/item/mod/module/flashlight,
/obj/item/mod/module/health_analyzer,
/obj/item/mod/module/quick_carry,
)
/obj/item/mod/control/pre_equipped/rescue
theme = /datum/mod_theme/rescue
cell = /obj/item/stock_parts/cell/super
initial_modules = list(/obj/item/mod/module/storage, /obj/item/mod/module/flashlight, /obj/item/mod/module/health_analyzer)
initial_modules = list(
/obj/item/mod/module/storage,
/obj/item/mod/module/flashlight,
/obj/item/mod/module/health_analyzer,
)
/obj/item/mod/control/pre_equipped/research
theme = /datum/mod_theme/research
cell = /obj/item/stock_parts/cell/super
initial_modules = list(/obj/item/mod/module/storage, /obj/item/mod/module/welding, /obj/item/mod/module/flashlight, /obj/item/mod/module/t_ray)
initial_modules = list(
/obj/item/mod/module/storage,
/obj/item/mod/module/welding,
/obj/item/mod/module/flashlight,
/obj/item/mod/module/t_ray,
)
/obj/item/mod/control/pre_equipped/security
theme = /datum/mod_theme/security
initial_modules = list(/obj/item/mod/module/storage, /obj/item/mod/module/welding, /obj/item/mod/module/flashlight, /obj/item/mod/module/holster)
initial_modules = list(
/obj/item/mod/module/storage,
/obj/item/mod/module/welding,
/obj/item/mod/module/flashlight,
/obj/item/mod/module/holster,
)
/obj/item/mod/control/pre_equipped/safeguard
theme = /datum/mod_theme/safeguard
cell = /obj/item/stock_parts/cell/super
initial_modules = list(/obj/item/mod/module/storage, /obj/item/mod/module/welding, /obj/item/mod/module/flashlight, /obj/item/mod/module/holster)
initial_modules = list(
/obj/item/mod/module/storage,
/obj/item/mod/module/welding,
/obj/item/mod/module/flashlight,
/obj/item/mod/module/jetpack,
/obj/item/mod/module/holster,
)
/obj/item/mod/control/pre_equipped/magnate
theme = /datum/mod_theme/magnate
cell = /obj/item/stock_parts/cell/hyper
initial_modules = list(/obj/item/mod/module/storage, /obj/item/mod/module/welding, /obj/item/mod/module/holster)
initial_modules = list(
/obj/item/mod/module/storage,
/obj/item/mod/module/welding,
/obj/item/mod/module/holster,
/obj/item/mod/module/jetpack/advanced,
)
/obj/item/mod/control/pre_equipped/traitor
theme = /datum/mod_theme/syndicate
cell = /obj/item/stock_parts/cell/super
initial_modules = list(/obj/item/mod/module/storage, /obj/item/mod/module/welding, /obj/item/mod/module/flashlight, /obj/item/mod/module/dna_lock)
initial_modules = list(
/obj/item/mod/module/storage,
/obj/item/mod/module/welding,
/obj/item/mod/module/flashlight,
/obj/item/mod/module/dna_lock,
/obj/item/mod/module/jetpack,
)
/obj/item/mod/control/pre_equipped/nuclear
theme = /datum/mod_theme/syndicate
cell = /obj/item/stock_parts/cell/hyper
initial_modules = list(/obj/item/mod/module/storage, /obj/item/mod/module/welding, /obj/item/mod/module/visor/thermal, /obj/item/mod/module/flashlight, /obj/item/mod/module/holster)
initial_modules = list(
/obj/item/mod/module/storage,
/obj/item/mod/module/welding,
/obj/item/mod/module/visor/thermal,
/obj/item/mod/module/flashlight,
/obj/item/mod/module/jetpack/advanced,
/obj/item/mod/module/holster,
)
/obj/item/mod/control/pre_equipped/elite
theme = /datum/mod_theme/elite
cell = /obj/item/stock_parts/cell/bluespace
initial_modules = list(/obj/item/mod/module/storage, /obj/item/mod/module/welding, /obj/item/mod/module/emp_shield, /obj/item/mod/module/visor/thermal, /obj/item/mod/module/flashlight, /obj/item/mod/module/holster)
initial_modules = list(
/obj/item/mod/module/storage,
/obj/item/mod/module/welding,
/obj/item/mod/module/emp_shield,
/obj/item/mod/module/visor/thermal,
/obj/item/mod/module/jetpack/advanced,
/obj/item/mod/module/flashlight,
/obj/item/mod/module/holster,
)
/obj/item/mod/control/pre_equipped/prototype
theme = /datum/mod_theme/prototype
cell = /obj/item/stock_parts/cell/high/plus
initial_modules = list(/obj/item/mod/module/storage, /obj/item/mod/module/welding, /obj/item/mod/module/rad_protection, /obj/item/mod/module/flashlight)
initial_modules = list(
/obj/item/mod/module/storage,
/obj/item/mod/module/welding,
/obj/item/mod/module/rad_protection,
/obj/item/mod/module/flashlight,
)
/obj/item/mod/control/pre_equipped/responsory
theme = /datum/mod_theme/responsory
cell = /obj/item/stock_parts/cell/hyper
initial_modules = list(/obj/item/mod/module/storage, /obj/item/mod/module/welding, /obj/item/mod/module/emp_shield, /obj/item/mod/module/flashlight, /obj/item/mod/module/holster)
initial_modules = list(
/obj/item/mod/module/storage,
/obj/item/mod/module/welding,
/obj/item/mod/module/emp_shield,
/obj/item/mod/module/flashlight,
/obj/item/mod/module/holster,
)
var/insignia_type = /obj/item/mod/module/insignia
/obj/item/mod/control/pre_equipped/responsory/Initialize(mapload, new_theme, new_skin)
@@ -107,7 +198,14 @@
insignia_type = /obj/item/mod/module/insignia/chaplain
/obj/item/mod/control/pre_equipped/responsory/inquisitory
initial_modules = list(/obj/item/mod/module/storage, /obj/item/mod/module/anti_magic, /obj/item/mod/module/welding, /obj/item/mod/module/emp_shield, /obj/item/mod/module/flashlight, /obj/item/mod/module/holster)
initial_modules = list(
/obj/item/mod/module/storage,
/obj/item/mod/module/anti_magic,
/obj/item/mod/module/welding,
/obj/item/mod/module/emp_shield,
/obj/item/mod/module/flashlight,
/obj/item/mod/module/holster,
)
applied_skin = "inquisitory"
/obj/item/mod/control/pre_equipped/responsory/inquisitory/commander
@@ -125,22 +223,43 @@
/obj/item/mod/control/pre_equipped/apocryphal
theme = /datum/mod_theme/apocryphal
cell = /obj/item/stock_parts/cell/bluespace
initial_modules = list(/obj/item/mod/module/storage, /obj/item/mod/module/welding, /obj/item/mod/module/emp_shield, /obj/item/mod/module/holster)
initial_modules = list(
/obj/item/mod/module/storage,
/obj/item/mod/module/welding,
/obj/item/mod/module/emp_shield,
/obj/item/mod/module/holster,
/obj/item/mod/module/jetpack,
)
/obj/item/mod/control/pre_equipped/corporate
theme = /datum/mod_theme/corporate
cell = /obj/item/stock_parts/cell/bluespace
initial_modules = list(/obj/item/mod/module/storage, /obj/item/mod/module/holster)
initial_modules = list(
/obj/item/mod/module/storage,
/obj/item/mod/module/holster,
)
/obj/item/mod/control/pre_equipped/debug
theme = /datum/mod_theme/debug
cell = /obj/item/stock_parts/cell/bluespace
initial_modules = list(/obj/item/mod/module/storage, /obj/item/mod/module/welding, /obj/item/mod/module/flashlight, /obj/item/mod/module/bikehorn, /obj/item/mod/module/rad_protection) //one of every type of module, for testing if they all work correctly
initial_modules = list(
/obj/item/mod/module/storage,
/obj/item/mod/module/welding,
/obj/item/mod/module/flashlight,
/obj/item/mod/module/bikehorn,
/obj/item/mod/module/rad_protection,
) //one of every type of module, for testing if they all work correctly
/obj/item/mod/control/pre_equipped/administrative
theme = /datum/mod_theme/administrative
cell = /obj/item/stock_parts/cell/infinite/abductor
initial_modules = list(/obj/item/mod/module/storage, /obj/item/mod/module/welding, /obj/item/mod/module/quick_carry/advanced, /obj/item/mod/module/magboot/advanced)
initial_modules = list(
/obj/item/mod/module/storage,
/obj/item/mod/module/welding,
/obj/item/mod/module/quick_carry/advanced,
/obj/item/mod/module/magboot/advanced,
/obj/item/mod/module/jetpack/advanced,
)
//these exist for the prefs menu
/obj/item/mod/control/pre_equipped/syndicate_empty
+85 -1
View File
@@ -73,7 +73,91 @@
QDEL_NULL(stored)
return ..()
/// No Ion Jetpack
///Ion Jetpack - Lets the user fly freely through space using battery charge.
/obj/item/mod/module/jetpack
name = "MOD ion jetpack module"
desc = "A series of electric thrusters installed across the suit, this is a module highly anticipated by trainee Engineers. \
Rather than using gasses for combustion thrust, these jets are capable of accelerating ions using \
charge from the suit's charge. Some say this isn't Nakamura Engineering's first foray into jet-enabled suits."
icon_state = "jetpack"
module_type = MODULE_TOGGLE
complexity = 3
active_power_cost = DEFAULT_CHARGE_DRAIN * 0.5
use_power_cost = DEFAULT_CHARGE_DRAIN
incompatible_modules = list(/obj/item/mod/module/jetpack)
cooldown_time = 0.5 SECONDS
overlay_state_inactive = "module_jetpack"
overlay_state_active = "module_jetpack_on"
/// Do we stop the wearer from gliding in space.
var/stabilizers = FALSE
/// Do we give the wearer a speed buff.
var/full_speed = FALSE
var/datum/effect_system/trail_follow/ion/ion_trail
/obj/item/mod/module/jetpack/Initialize(mapload)
. = ..()
ion_trail = new
ion_trail.set_up(src)
/obj/item/mod/module/jetpack/Destroy()
QDEL_NULL(ion_trail)
return ..()
/obj/item/mod/module/jetpack/on_activation()
. = ..()
if(!.)
return
ion_trail.start()
RegisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED, .proc/move_react)
RegisterSignal(mod.wearer, COMSIG_MOVABLE_SPACEMOVE, .proc/spacemove_react, override = TRUE)
if(full_speed)
mod.wearer.add_movespeed_modifier(/datum/movespeed_modifier/jetpack/fullspeed)
else
mod.wearer.add_movespeed_modifier(/datum/movespeed_modifier/jetpack)
/obj/item/mod/module/jetpack/on_deactivation(display_message = TRUE, deleting = FALSE)
. = ..()
stabilizers = FALSE
ion_trail.stop()
UnregisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED)
mod.wearer.remove_movespeed_modifier(/datum/movespeed_modifier/jetpack/fullspeed)
mod.wearer.remove_movespeed_modifier(/datum/movespeed_modifier/jetpack)
/obj/item/mod/module/jetpack/get_configuration()
. = ..()
.["stabilizers"] = add_ui_configuration("Stabilizers", "bool", stabilizers)
/obj/item/mod/module/jetpack/configure_edit(key, value)
switch(key)
if("stabilizers")
stabilizers = text2num(value)
/obj/item/mod/module/jetpack/proc/move_react(mob/user)
allow_thrust()
/obj/item/mod/module/jetpack/proc/allow_thrust(use_fuel = TRUE)
if(!active)
return FALSE
if(!use_fuel)
return check_power(use_power_cost)
if(!drain_power(use_power_cost))
return FALSE
return TRUE
/obj/item/mod/module/jetpack/proc/spacemove_react(mob/user, movement_dir)
SIGNAL_HANDLER
if(active && (movement_dir || stabilizers))
return COMSIG_MOVABLE_STOP_SPACEMOVE
/obj/item/mod/module/jetpack/advanced
name = "MOD advanced ion jetpack module"
desc = "An improvement on the previous model of electric thrusters. This one achieves higher speeds through \
mounting of more jets and a red paint applied on it."
icon_state = "jetpack_advanced"
overlay_state_inactive = "module_jetpackadv"
overlay_state_active = "module_jetpackadv_on"
full_speed = TRUE
///Eating Apparatus - Lets the user eat/drink with the suit on.
/obj/item/mod/module/mouthhole