mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-31 07:57:47 +01:00
Baystation Rigsuits
This commit adds baystation's rigsuit system on top of our own hardsuits; Our own hardsuits still function fine and are around, but these are available to admins. Next commit will contain balancing and player implementation stuff.
This commit is contained in:
@@ -11,6 +11,12 @@
|
||||
var/modifystate
|
||||
var/can_charge = 1
|
||||
|
||||
//self-recharging
|
||||
var/self_recharge = 0 //if set, the weapon will recharge itself
|
||||
var/use_external_power = 0 //if set, the weapon will look for an external power source to draw from, otherwise it recharges magically
|
||||
var/recharge_time = 4
|
||||
var/charge_tick = 0
|
||||
|
||||
/obj/item/weapon/gun/energy/emp_act(severity)
|
||||
if(power_supply)
|
||||
power_supply.use(round(power_supply.charge / severity))
|
||||
@@ -23,7 +29,46 @@
|
||||
else
|
||||
power_supply = new(src)
|
||||
power_supply.give(power_supply.maxcharge)
|
||||
return
|
||||
if(self_recharge)
|
||||
processing_objects.Add(src)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/gun/energy/Destroy()
|
||||
if(self_recharge)
|
||||
processing_objects.Remove(src)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/gun/energy/process()
|
||||
if(self_recharge) //Every [recharge_time] ticks, recharge a shot for the cyborg
|
||||
charge_tick++
|
||||
if(charge_tick < recharge_time) return 0
|
||||
charge_tick = 0
|
||||
|
||||
if(!power_supply || power_supply.charge >= power_supply.maxcharge)
|
||||
return 0 // check if we actually need to recharge
|
||||
|
||||
if(use_external_power)
|
||||
var/obj/item/weapon/stock_parts/cell/external = get_external_power_supply()
|
||||
if(!external || !external.use(charge_cost)) //Take power from the borg...
|
||||
return 0
|
||||
|
||||
power_supply.give(charge_cost) //... to recharge the shot
|
||||
update_icon()
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/gun/energy/proc/get_external_power_supply()
|
||||
if(isrobot(src.loc))
|
||||
var/mob/living/silicon/robot/R = src.loc
|
||||
return R.cell
|
||||
if(istype(src.loc, /obj/item/rig_module))
|
||||
var/obj/item/rig_module/module = src.loc
|
||||
if(module.holder && module.holder.wearer)
|
||||
var/mob/living/carbon/human/H = module.holder.wearer
|
||||
if(istype(H) && H.back)
|
||||
var/obj/item/weapon/rig/suit = H.back
|
||||
if(istype(suit))
|
||||
return suit.cell
|
||||
return null
|
||||
|
||||
/obj/item/weapon/gun/energy/process_chambered()
|
||||
if(in_chamber) return 1
|
||||
|
||||
@@ -29,27 +29,8 @@ obj/item/weapon/gun/energy/laser/retro
|
||||
desc = "This is an antique laser gun. All craftsmanship is of the highest quality. It is decorated with assistant leather and chrome. The object menaces with spikes of energy. On the item is an image of Space Station 13. The station is exploding."
|
||||
force = 10
|
||||
origin_tech = null
|
||||
var/charge_tick = 0
|
||||
|
||||
|
||||
/obj/item/weapon/gun/energy/laser/captain/New()
|
||||
..()
|
||||
processing_objects.Add(src)
|
||||
|
||||
/obj/item/weapon/gun/energy/laser/captain/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/gun/energy/laser/captain/process()
|
||||
charge_tick++
|
||||
if(charge_tick < 4)
|
||||
return 0
|
||||
charge_tick = 0
|
||||
if(!power_supply)
|
||||
return 0
|
||||
power_supply.give(1000)
|
||||
update_icon()
|
||||
return 1
|
||||
self_recharge = 1
|
||||
|
||||
|
||||
/obj/item/weapon/gun/energy/laser/cyborg
|
||||
@@ -89,6 +70,13 @@ obj/item/weapon/gun/energy/laser/retro
|
||||
isHandgun()
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/gun/energy/lasercannon/mounted
|
||||
name = "mounted laser cannon"
|
||||
self_recharge = 1
|
||||
use_external_power = 1
|
||||
recharge_time = 10
|
||||
|
||||
|
||||
/obj/item/weapon/gun/energy/lasercannon/cyborg/process_chambered()
|
||||
if(in_chamber)
|
||||
return 1
|
||||
@@ -119,35 +107,15 @@ obj/item/weapon/gun/energy/laser/retro
|
||||
projectile_type = "/obj/item/projectile/lasertag/blue"
|
||||
origin_tech = "combat=1;magnets=2"
|
||||
clumsy_check = 0
|
||||
var/charge_tick = 0
|
||||
|
||||
special_check(var/mob/living/carbon/human/M)
|
||||
if(ishuman(M))
|
||||
if(istype(M.wear_suit, /obj/item/clothing/suit/bluetag))
|
||||
return 1
|
||||
M << "\red You need to be wearing your laser tag vest!"
|
||||
return 0
|
||||
|
||||
New()
|
||||
..()
|
||||
processing_objects.Add(src)
|
||||
|
||||
|
||||
Destroy()
|
||||
processing_objects.Remove(src)
|
||||
return ..()
|
||||
|
||||
|
||||
process()
|
||||
charge_tick++
|
||||
if(charge_tick < 4) return 0
|
||||
charge_tick = 0
|
||||
if(!power_supply) return 0
|
||||
power_supply.give(1000)
|
||||
update_icon()
|
||||
return 1
|
||||
|
||||
self_recharge = 1
|
||||
|
||||
/obj/item/weapon/gun/energy/laser/bluetag/special_check(var/mob/living/carbon/human/M)
|
||||
if(ishuman(M))
|
||||
if(istype(M.wear_suit, /obj/item/clothing/suit/bluetag))
|
||||
return 1
|
||||
M << "\red You need to be wearing your laser tag vest!"
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/gun/energy/laser/redtag
|
||||
name = "laser tag gun"
|
||||
@@ -156,30 +124,12 @@ obj/item/weapon/gun/energy/laser/retro
|
||||
projectile_type = "/obj/item/projectile/lasertag/red"
|
||||
origin_tech = "combat=1;magnets=2"
|
||||
clumsy_check = 0
|
||||
var/charge_tick = 0
|
||||
|
||||
special_check(var/mob/living/carbon/human/M)
|
||||
if(ishuman(M))
|
||||
if(istype(M.wear_suit, /obj/item/clothing/suit/redtag))
|
||||
return 1
|
||||
M << "\red You need to be wearing your laser tag vest!"
|
||||
return 0
|
||||
self_recharge = 1
|
||||
|
||||
New()
|
||||
..()
|
||||
processing_objects.Add(src)
|
||||
|
||||
|
||||
Destroy()
|
||||
processing_objects.Remove(src)
|
||||
return ..()
|
||||
|
||||
|
||||
process()
|
||||
charge_tick++
|
||||
if(charge_tick < 4) return 0
|
||||
charge_tick = 0
|
||||
if(!power_supply) return 0
|
||||
power_supply.give(1000)
|
||||
update_icon()
|
||||
return 1
|
||||
/obj/item/weapon/gun/energy/laser/redtag/special_check(var/mob/living/carbon/human/M)
|
||||
if(ishuman(M))
|
||||
if(istype(M.wear_suit, /obj/item/clothing/suit/redtag))
|
||||
return 1
|
||||
M << "\red You need to be wearing your laser tag vest!"
|
||||
return 0
|
||||
@@ -35,8 +35,10 @@
|
||||
else
|
||||
user.update_inv_r_hand()
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/gun/energy/gun/mounted
|
||||
name = "mounted energy gun"
|
||||
self_recharge = 1
|
||||
use_external_power = 1
|
||||
|
||||
/obj/item/weapon/gun/energy/gun/nuclear
|
||||
name = "Advanced Energy Gun"
|
||||
@@ -44,7 +46,6 @@
|
||||
icon_state = "nucgun"
|
||||
origin_tech = "combat=3;materials=5;powerstorage=3"
|
||||
var/lightfail = 0
|
||||
var/charge_tick = 0
|
||||
can_flashlight = 0
|
||||
can_charge = 0
|
||||
|
||||
|
||||
@@ -40,25 +40,9 @@
|
||||
projectile_type = "/obj/item/projectile/energy/floramut"
|
||||
origin_tech = "materials=2;biotech=3;powerstorage=3"
|
||||
modifystate = "floramut"
|
||||
var/charge_tick = 0
|
||||
var/mode = 0 //0 = mutate, 1 = yield boost
|
||||
|
||||
/obj/item/weapon/gun/energy/floragun/New()
|
||||
..()
|
||||
processing_objects.Add(src)
|
||||
|
||||
/obj/item/weapon/gun/energy/floragun/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/gun/energy/floragun/process()
|
||||
charge_tick++
|
||||
if(charge_tick < 4) return 0
|
||||
charge_tick = 0
|
||||
if(!power_supply) return 0
|
||||
power_supply.give(1000)
|
||||
update_icon()
|
||||
return 1
|
||||
self_recharge = 1
|
||||
|
||||
/obj/item/weapon/gun/energy/floragun/attack_self(mob/living/user as mob)
|
||||
switch(mode)
|
||||
@@ -98,27 +82,9 @@
|
||||
projectile_type = "/obj/item/projectile/meteor"
|
||||
cell_type = "/obj/item/weapon/stock_parts/cell/potato"
|
||||
clumsy_check = 0 //Admin spawn only, might as well let clowns use it.
|
||||
var/charge_tick = 0
|
||||
var/recharge_time = 5 //Time it takes for shots to recharge (in ticks)
|
||||
|
||||
New()
|
||||
..()
|
||||
processing_objects.Add(src)
|
||||
|
||||
|
||||
Destroy()
|
||||
processing_objects.Remove(src)
|
||||
return ..()
|
||||
|
||||
process()
|
||||
charge_tick++
|
||||
if(charge_tick < recharge_time) return 0
|
||||
charge_tick = 0
|
||||
if(!power_supply) return 0
|
||||
power_supply.give(1000)
|
||||
|
||||
update_icon()
|
||||
return
|
||||
self_recharge = 1
|
||||
recharge_time = 5 //Time it takes for shots to recharge (in ticks)
|
||||
|
||||
|
||||
/obj/item/weapon/gun/energy/meteorgun/pen
|
||||
@@ -351,36 +317,12 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
|
||||
/obj/item/weapon/gun/energy/disabler/cyborg
|
||||
name = "cyborg disabler"
|
||||
desc = "An integrated disabler that draws from a cyborg's power cell. This weapon contains a limiter to prevent the cyborg's power cell from overheating."
|
||||
var/charge_tick = 0
|
||||
var/recharge_time = 2.5
|
||||
|
||||
/obj/item/weapon/gun/energy/disabler/cyborg/New()
|
||||
..()
|
||||
processing_objects.Add(src)
|
||||
self_recharge = 1
|
||||
use_external_power = 1
|
||||
recharge_time = 2.5
|
||||
|
||||
|
||||
/obj/item/weapon/gun/energy/disabler/cyborg/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/gun/energy/disabler/cyborg/process() //Every [recharge_time] ticks, recharge a shot for the cyborg
|
||||
if(power_supply.charge == power_supply.maxcharge)
|
||||
return 0
|
||||
charge_tick++
|
||||
if(charge_tick < recharge_time)
|
||||
return 0
|
||||
charge_tick = 0
|
||||
|
||||
if(!power_supply) return 0 //sanity
|
||||
if(isrobot(src.loc))
|
||||
var/mob/living/silicon/robot/R = src.loc
|
||||
if(R && R.cell)
|
||||
if(R.cell.use(charge_cost/10)) //Take power from the borg...
|
||||
power_supply.give(charge_cost) //... to recharge the shot
|
||||
|
||||
update_icon()
|
||||
return 1
|
||||
|
||||
/* 3d printer 'pseudo guns' for borgs */
|
||||
|
||||
/obj/item/weapon/gun/energy/printer
|
||||
@@ -392,32 +334,7 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
|
||||
cell_type = "/obj/item/weapon/stock_parts/cell/secborg"
|
||||
projectile_type = "/obj/item/projectile/bullet/midbullet3"
|
||||
charge_cost = 200 //Yeah, let's NOT give them a 300 round clip that recharges, 20 is more reasonable and will actually hurt the borg's battery for overuse.
|
||||
var/charge_tick = 0
|
||||
var/recharge_time = 5
|
||||
|
||||
/obj/item/weapon/gun/energy/printer/update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/gun/energy/printer/New()
|
||||
..()
|
||||
processing_objects.Add(src)
|
||||
|
||||
/obj/item/weapon/gun/energy/printer/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/gun/energy/printer/process()
|
||||
if(power_supply.charge == power_supply.maxcharge)
|
||||
return 0
|
||||
charge_tick++
|
||||
if(charge_tick < recharge_time)
|
||||
return 0
|
||||
charge_tick = 0
|
||||
|
||||
if(!power_supply) return 0 //sanity
|
||||
if(isrobot(src.loc))
|
||||
var/mob/living/silicon/robot/R = src.loc
|
||||
if(R && R.cell)
|
||||
if(R.cell.use(charge_cost/10)) //Take power from the borg...
|
||||
power_supply.give(charge_cost) //...to recharge the shot
|
||||
return 1
|
||||
self_recharge = 1
|
||||
use_external_power = 1
|
||||
recharge_time = 5
|
||||
@@ -9,6 +9,11 @@
|
||||
cell_type = "/obj/item/weapon/stock_parts/cell/crap"
|
||||
fire_delay = 15
|
||||
|
||||
/obj/item/weapon/gun/energy/taser/mounted
|
||||
name = "mounted taser gun"
|
||||
self_recharge = 1
|
||||
use_external_power = 1
|
||||
|
||||
/obj/item/weapon/gun/energy/taser/cyborg
|
||||
name = "taser gun"
|
||||
desc = "A small, low capacity gun used for non-lethal takedowns."
|
||||
@@ -16,35 +21,9 @@
|
||||
fire_sound = 'sound/weapons/Taser.ogg'
|
||||
projectile_type = "/obj/item/projectile/energy/electrode"
|
||||
cell_type = "/obj/item/weapon/stock_parts/cell/secborg"
|
||||
var/charge_tick = 0
|
||||
var/recharge_time = 10 //Time it takes for shots to recharge (in ticks)
|
||||
|
||||
/obj/item/weapon/gun/energy/taser/cyborg/New()
|
||||
..()
|
||||
processing_objects.Add(src)
|
||||
|
||||
|
||||
/obj/item/weapon/gun/energy/taser/cyborg/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/gun/energy/taser/cyborg/process() //Every [recharge_time] ticks, recharge a shot for the cyborg
|
||||
if(power_supply.charge == power_supply.maxcharge)
|
||||
return 0
|
||||
charge_tick++
|
||||
if(charge_tick < recharge_time)
|
||||
return 0
|
||||
charge_tick = 0
|
||||
|
||||
if(!power_supply) return 0 //sanity
|
||||
if(isrobot(src.loc))
|
||||
var/mob/living/silicon/robot/R = src.loc
|
||||
if(R && R.cell)
|
||||
if(R.cell.use(charge_cost)) //Take power from the borg...
|
||||
power_supply.give(charge_cost) //... to recharge the shot
|
||||
|
||||
update_icon()
|
||||
return 1
|
||||
self_recharge = 1
|
||||
recharge_time = 10 //Time it takes for shots to recharge (in ticks)
|
||||
|
||||
/obj/item/weapon/gun/energy/stunrevolver
|
||||
name = "stun revolver"
|
||||
@@ -69,25 +48,12 @@
|
||||
fire_sound = 'sound/weapons/Genhit.ogg'
|
||||
projectile_type = "/obj/item/projectile/energy/bolt"
|
||||
cell_type = "/obj/item/weapon/stock_parts/cell/crap"
|
||||
var/charge_tick = 0
|
||||
|
||||
/obj/item/weapon/gun/energy/crossbow/New()
|
||||
..()
|
||||
processing_objects.Add(src)
|
||||
self_recharge = 1
|
||||
|
||||
/obj/item/weapon/gun/energy/crossbow/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/gun/energy/crossbow/process()
|
||||
charge_tick++
|
||||
if(charge_tick < 4)
|
||||
return 0
|
||||
charge_tick = 0
|
||||
if(!power_supply)
|
||||
return 0
|
||||
power_supply.give(1000)
|
||||
return 1
|
||||
/obj/item/weapon/gun/energy/crossbow/ninja
|
||||
name = "energy dart thrower"
|
||||
projectile_type = /obj/item/projectile/energy/dart
|
||||
|
||||
/obj/item/weapon/gun/energy/crossbow/update_icon()
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user