mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-12 19:22:56 +00:00
Conflicts: baystation12.dme code/__HELPERS/global_lists.dm code/__HELPERS/type2type.dm code/__HELPERS/unsorted.dm code/datums/datumvars.dm code/datums/disease.dm code/datums/organs/organ_external.dm code/datums/supplypacks.dm code/defines/obj.dm code/game/area/areas.dm code/game/atoms.dm code/game/gamemodes/cult/cult_structures.dm code/game/gamemodes/cult/runes.dm code/game/gamemodes/events.dm code/game/gamemodes/events/ninja_equipment.dm code/game/gamemodes/events/space_ninja.dm code/game/gamemodes/game_mode.dm code/game/gamemodes/gameticker.dm code/game/hud.dm code/game/jobs/access.dm code/game/jobs/job/civilian.dm code/game/machinery/alarm.dm code/game/machinery/cloning.dm code/game/machinery/computer/cloning.dm code/game/machinery/computer/medical.dm code/game/machinery/computer/syndicate_shuttle.dm code/game/machinery/telecomms/broadcaster.dm code/game/machinery/telecomms/machine_interactions.dm code/game/objects/effects/decals/contraband.dm code/game/objects/effects/signs.dm code/game/objects/items/devices/PDA/PDA.dm code/game/objects/items/devices/PDA/cart.dm code/game/objects/items/weapons/photography.dm code/game/objects/structures/door_assembly.dm code/game/objects/structures/window.dm code/game/sound.dm code/game/verbs/ooc.dm code/global.dm code/modules/DetectiveWork/detective_work.dm code/modules/DetectiveWork/evidence.dm code/modules/DetectiveWork/footprints_and_rag.dm code/modules/DetectiveWork/scanner.dm code/modules/admin/player_panel.dm code/modules/admin/verbs/adminhelp.dm code/modules/admin/verbs/adminpm.dm code/modules/awaymissions/gateway.dm code/modules/client/client defines.dm code/modules/client/client procs.dm code/modules/client/preferences.dm code/modules/clothing/spacesuits/rig.dm code/modules/mining/machine_processing.dm code/modules/mining/machine_stacking.dm code/modules/mining/mint.dm code/modules/mining/ores_coins.dm code/modules/mining/satchel_ore_boxdm.dm code/modules/mob/living/carbon/alien/alien.dm code/modules/mob/living/carbon/carbon.dm code/modules/mob/living/carbon/carbon_defines.dm code/modules/mob/living/carbon/human/human_damage.dm code/modules/mob/living/carbon/human/life.dm code/modules/mob/living/carbon/human/update_icons.dm code/modules/mob/living/living.dm code/modules/mob/living/say.dm code/modules/mob/mob.dm code/modules/mob/mob_cleanup.dm code/modules/mob/mob_defines.dm code/modules/mob/mob_transformation_simple.dm code/modules/mob/new_player/login.dm code/modules/mob/new_player/new_player.dm code/modules/mob/new_player/preferences_setup.dm code/modules/mob/new_player/savefile.dm code/modules/mob/new_player/sprite_accessories.dm code/modules/paperwork/folders.dm code/modules/paperwork/paper.dm code/modules/paperwork/photocopier.dm code/modules/projectiles/guns/energy/special.dm code/modules/projectiles/guns/projectile/automatic.dm code/setup.dm code/unused/mining/datum_processing_recipe.dm code/unused/powerarmor/powerarmor.dm code/world.dm html/changelog.html icons/effects/96x96.dmi icons/mob/head.dmi icons/mob/items_lefthand.dmi icons/mob/items_righthand.dmi icons/mob/suit.dmi icons/obj/clothing/hats.dmi icons/obj/clothing/suits.dmi icons/obj/hydroponics.dmi icons/obj/items.dmi icons/turf/areas.dmi icons/turf/walls.dmi maps/RandomZLevels/fileList.txt maps/RandomZLevels/spacebattle.dmm Signed-off-by: Cael_Aislinn <cael_aislinn@yahoo.com.au>
282 lines
7.5 KiB
Plaintext
282 lines
7.5 KiB
Plaintext
/obj/item/clothing/suit/powered
|
|
name = "Powered armor"
|
|
desc = "Not for rookies."
|
|
icon_state = "swat"
|
|
item_state = "swat"
|
|
w_class = 4//bulky item
|
|
|
|
protective_temperature = 1000
|
|
flags = FPRINT | TABLEPASS
|
|
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS
|
|
armor = list(melee = 40, bullet = 30, laser = 20,energy = 15, bomb = 25, bio = 10, rad = 10)
|
|
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/gun,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen)
|
|
slowdown = 9
|
|
var/fuel = 0
|
|
|
|
var/list/togglearmor = list(melee = 90, bullet = 70, laser = 60,energy = 40, bomb = 75, bio = 75, rad = 75)
|
|
var/active = 0
|
|
|
|
var/helmrequired = 1
|
|
var/obj/item/clothing/head/powered/helm
|
|
|
|
var/glovesrequired = 0
|
|
var/obj/item/clothing/gloves/powered/gloves
|
|
|
|
var/shoesrequired = 0
|
|
var/obj/item/clothing/shoes/powered/shoes
|
|
//Adding gloves and shoes as possible armor components. --NEO
|
|
|
|
var/obj/item/powerarmor/servos/servos
|
|
var/obj/item/powerarmor/reactive/reactive
|
|
var/obj/item/powerarmor/atmoseal/atmoseal
|
|
var/obj/item/powerarmor/power/power
|
|
|
|
New()
|
|
verbs += /obj/item/clothing/suit/powered/proc/poweron
|
|
|
|
proc/poweron()
|
|
set category = "Object"
|
|
set name = "Activate armor systems"
|
|
|
|
var/mob/living/carbon/human/user = usr
|
|
|
|
if(user.stat)
|
|
return //if you're unconscious or dead, no dicking with your armor. --NEO
|
|
|
|
if(!istype(user))
|
|
user << "\red This suit was engineered for human use only."
|
|
return
|
|
|
|
if(user.wear_suit!=src)
|
|
user << "\red The suit functions best if you are inside of it."
|
|
return
|
|
|
|
if(helmrequired && !istype(user.head, /obj/item/clothing/head/powered))
|
|
user << "\red Helmet missing, unable to initiate power-on procedure."
|
|
return
|
|
|
|
if(glovesrequired && !istype(user.gloves, /obj/item/clothing/gloves/powered))
|
|
user << "\red Gloves missing, unable to initiate power-on procedure."
|
|
return
|
|
|
|
if(shoesrequired && !istype(user.shoes, /obj/item/clothing/shoes/powered))
|
|
user << "\red Shoes missing, unable to initiate power-on procedure."
|
|
return
|
|
|
|
if(active)
|
|
user << "\red The suit is already on, you can't turn it on twice."
|
|
return
|
|
|
|
if(!power || !power.checkpower())
|
|
user << "\red Powersource missing or depleted."
|
|
return
|
|
|
|
verbs -= /obj/item/clothing/suit/powered/proc/poweron
|
|
|
|
user << "\blue Suit interlocks engaged."
|
|
if(helmrequired)
|
|
helm = user.head
|
|
helm.canremove = 0
|
|
if(glovesrequired)
|
|
gloves = user.gloves
|
|
gloves.canremove = 0
|
|
if(shoesrequired)
|
|
shoes = user.shoes
|
|
shoes.canremove = 0
|
|
canremove = 0
|
|
sleep(20)
|
|
|
|
if(atmoseal)
|
|
atmoseal.toggle()
|
|
sleep(20)
|
|
|
|
if(reactive)
|
|
reactive.toggle()
|
|
sleep(20)
|
|
|
|
if(servos)
|
|
servos.toggle()
|
|
sleep(20)
|
|
|
|
user << "\blue All systems online."
|
|
active = 1
|
|
power.process()
|
|
|
|
verbs += /obj/item/clothing/suit/powered/proc/poweroff
|
|
|
|
|
|
proc/poweroff()
|
|
set category = "Object"
|
|
set name = "Deactivate armor systems"
|
|
powerdown() //BYOND doesn't seem to like it if you try using a proc with vars in it as a verb, hence this. --NEO
|
|
|
|
proc/powerdown(sudden = 0)
|
|
|
|
var/delay = sudden?0:20
|
|
|
|
var/mob/living/carbon/human/user = usr
|
|
|
|
if(user.stat && !sudden)
|
|
return //if you're unconscious or dead, no dicking with your armor. --NEO
|
|
|
|
if(!active)
|
|
return
|
|
|
|
verbs -= /obj/item/clothing/suit/powered/proc/poweroff
|
|
|
|
if(sudden)
|
|
user << "\red Your armor loses power!"
|
|
|
|
if(servos)
|
|
servos.toggle(sudden)
|
|
sleep(delay)
|
|
|
|
if(reactive)
|
|
reactive.toggle(sudden)
|
|
sleep(delay)
|
|
|
|
if(atmoseal)
|
|
if(istype(atmoseal, /obj/item/powerarmor/atmoseal/optional) && helm)
|
|
atmoseal:helmtoggle(sudden)
|
|
atmoseal.toggle(sudden)
|
|
|
|
sleep(delay)
|
|
|
|
if(!sudden)
|
|
usr << "\blue Suit interlocks disengaged."
|
|
if(helm)
|
|
helm.canremove = 1
|
|
helm = null
|
|
if(gloves)
|
|
gloves.canremove = 1
|
|
gloves = null
|
|
if(shoes)
|
|
shoes.canremove = 1
|
|
gloves = null
|
|
canremove = 1
|
|
//Not a tabbing error, the thing only unlocks if you intentionally power-down the armor. --NEO
|
|
sleep(delay)
|
|
|
|
if(!sudden)
|
|
usr << "\blue All systems disengaged."
|
|
|
|
active = 0
|
|
verbs += /obj/item/clothing/suit/powered/proc/poweron
|
|
|
|
|
|
|
|
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
if(power && istype(power,/obj/item/powerarmor/power/plasma))
|
|
switch(W.type)
|
|
if(/obj/item/stack/sheet/mineral/plasma)
|
|
if(fuel < 50)
|
|
user << "\blue You feed some refined plasma into the armor's generator."
|
|
power:fuel += 25
|
|
W:amount--
|
|
if (W:amount <= 0)
|
|
del(W)
|
|
return
|
|
else
|
|
user << "\red The generator already has plenty of plasma."
|
|
return
|
|
|
|
if(/obj/item/weapon/ore/plasma) //raw plasma has impurities, so it doesn't provide as much fuel. --NEO
|
|
if(fuel < 50)
|
|
user << "\blue You feed some plasma into the armor's generator."
|
|
power:fuel += 15
|
|
del(W)
|
|
return
|
|
else
|
|
user << "\red The generator already has plenty of plasma."
|
|
return
|
|
|
|
..()
|
|
|
|
/obj/item/clothing/head/powered
|
|
name = "Powered armor"
|
|
icon_state = "swat"
|
|
desc = "Not for rookies."
|
|
flags = FPRINT | TABLEPASS | HEADCOVERSEYES | HEADCOVERSMOUTH
|
|
see_face = 0.0
|
|
item_state = "swat"
|
|
armor = list(melee = 40, bullet = 30, laser = 20,energy = 15, bomb = 25, bio = 10, rad = 10)
|
|
var/obj/item/clothing/suit/powered/parent
|
|
|
|
proc/atmotoggle()
|
|
set category = "Object"
|
|
set name = "Toggle helmet seals"
|
|
|
|
var/mob/living/carbon/human/user = usr
|
|
|
|
if(!istype(user))
|
|
user << "\red This helmet is not rated for nonhuman use."
|
|
return
|
|
|
|
if(user.head != src)
|
|
user << "\red Can't engage the seals without wearing the helmet."
|
|
return
|
|
|
|
if(!user.wear_suit || !istype(user.wear_suit,/obj/item/clothing/suit/powered))
|
|
user << "\red This helmet can only couple with powered armor."
|
|
return
|
|
|
|
var/obj/item/clothing/suit/powered/armor = user.wear_suit
|
|
|
|
if(!armor.atmoseal || !istype(armor.atmoseal, /obj/item/powerarmor/atmoseal/optional))
|
|
user << "\red This armor's atmospheric seals are missing or incompatible."
|
|
return
|
|
|
|
armor.atmoseal:helmtoggle(0,1)
|
|
|
|
|
|
|
|
|
|
/obj/item/clothing/gloves/powered
|
|
name = "Powered armor"
|
|
icon_state = "swat"
|
|
desc = "Not for rookies."
|
|
flags = FPRINT | TABLEPASS
|
|
item_state = "swat"
|
|
armor = list(melee = 40, bullet = 30, laser = 20,energy = 15, bomb = 25, bio = 10, rad = 10)
|
|
|
|
/obj/item/clothing/shoes/powered
|
|
name = "Powered armor"
|
|
icon_state = "swat"
|
|
desc = "Not for rookies."
|
|
flags = FPRINT | TABLEPASS
|
|
item_state = "swat"
|
|
armor = list(melee = 40, bullet = 30, laser = 20,energy = 15, bomb = 25, bio = 10, rad = 10)
|
|
|
|
|
|
obj/item/clothing/suit/powered/spawnable/badmin
|
|
New()
|
|
servos = new /obj/item/powerarmor/servos(src)
|
|
servos.parent = src
|
|
reactive = new /obj/item/powerarmor/reactive(src)
|
|
reactive.parent = src
|
|
atmoseal = new /obj/item/powerarmor/atmoseal/optional/adminbus(src)
|
|
atmoseal.parent = src
|
|
power = new /obj/item/powerarmor/power(src)
|
|
power.parent = src
|
|
|
|
verbs += /obj/item/clothing/suit/powered/proc/poweron
|
|
|
|
var/obj/item/clothing/head/powered/helm = new /obj/item/clothing/head/powered(src.loc)
|
|
helm.verbs += /obj/item/clothing/head/powered/proc/atmotoggle
|
|
|
|
obj/item/clothing/suit/powered/spawnable/regular
|
|
New()
|
|
servos = new /obj/item/powerarmor/servos(src)
|
|
servos.parent = src
|
|
reactive = new /obj/item/powerarmor/reactive/centcomm(src)
|
|
reactive.parent = src
|
|
atmoseal = new /obj/item/powerarmor/atmoseal/optional/adminbus(src)
|
|
atmoseal.parent = src
|
|
power = new /obj/item/powerarmor/power(src)
|
|
power.parent = src
|
|
|
|
verbs += /obj/item/clothing/suit/powered/proc/poweron
|
|
|
|
var/obj/item/clothing/head/powered/helm = new /obj/item/clothing/head/powered(src.loc)
|
|
helm.verbs += /obj/item/clothing/head/powered/proc/atmotoggle
|