Files
CHOMPStation2/code/unused/powerarmor/powerarmor.dm
Cael_Aislinn aae42d928a Merge branch 'incremental_tg' r5200 into bs12_with_tgport
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>
2013-01-07 00:23:22 +10:00

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