Files
GS13NG/GainStation13/code/obj/weapons/alter_rays.dm
2024-09-12 23:53:35 -04:00

172 lines
4.9 KiB
Plaintext

/////GS13 - rayguns for metabolism and breasts/ass manipulation
//this is pretty wonky code, but ig it works
/obj/item/gun/energy/laser/alter_ray
name = "alter-ray"
icon = 'icons/obj/guns/energy.dmi'
icon_state = "lasernew"
desc = "This weapon is capable of altering one's body capabilities."
item_state = null
selfcharge = EGUN_SELFCHARGE
charge_delay = 5
ammo_x_offset = 2
clumsy_check = 1
/obj/item/gun/energy/laser/alter_ray/gainrate
name = "AL-T-Ray: Metabolism"
desc = "This weapon is capable of altering one's body capabilities. This model appears to be capable of altering one's weight gain and loss rate by 10%."
ammo_type = list(/obj/item/ammo_casing/energy/laser/gainrate_decrease, /obj/item/ammo_casing/energy/laser/gainrate_increase, /obj/item/ammo_casing/energy/laser/lossrate_decrease, /obj/item/ammo_casing/energy/laser/lossrate_increase)
// /obj/item/gun/energy/laser/alter_ray/assbreasts //genius name, I know
// name = "AL-T-Ray: Voluptousness"
// desc = "This weapon is capable of altering one's body capabilities. This model appears to be capable of altering the size's of one's breasts or buttocks."
// ammo_type = list(/obj/item/ammo_casing/energy/laser/shrinkray, /obj/item/ammo_casing/energy/laser/growthray)
/obj/item/projectile/alter_ray
name = "sizeray beam"
icon_state = "omnilaser"
hitsound = null
damage = 0
damage_type = STAMINA
flag = "laser"
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
ricochets_max = 50
ricochet_chance = 80
is_reflectable = TRUE
var/ratechange_amount = 0.1
//projectile biz
/obj/item/projectile/alter_ray/gainrate_decrease
icon_state="bluelaser"
/obj/item/projectile/alter_ray/gainrate_increase
icon_state="laser"
/obj/item/projectile/alter_ray/lossrate_decrease
icon_state="bluelaser"
/obj/item/projectile/alter_ray/lossrate_increase
icon_state="laser"
// /obj/item/projectile/alter_ray/breast_decrease
// icon_state="bluelaser"
// /obj/item/projectile/alter_ray/breast_increase
// icon_state="laser"
// /obj/item/projectile/alter_ray/butt_decrease
// icon_state="bluelaser"
// /obj/item/projectile/alter_ray/butt_increase
// icon_state="laser"
//laser hitting / changing code
//wg rate increase
/obj/item/projectile/alter_ray/gainrate_increase/on_hit(atom/target, blocked)
. = ..()
var/mob/living/carbon/gainer = target
if(iscarbon(gainer))
if(gainer.weight_gain_rate <= 3)
gainer.weight_gain_rate += ratechange_amount
return TRUE
return FALSE
return FALSE
//wg rate decrease
/obj/item/projectile/alter_ray/gainrate_decrease/on_hit(atom/target, blocked)
. = ..()
var/mob/living/carbon/gainer = target
if(iscarbon(gainer))
if(gainer.weight_gain_rate >= 0.11)
gainer.weight_gain_rate -= ratechange_amount
return TRUE
if(gainer.weight_gain_rate <= 0.1)
return FALSE
return FALSE
//wl rate increase
/obj/item/projectile/alter_ray/lossrate_increase/on_hit(atom/target, blocked)
. = ..()
var/mob/living/carbon/gainer = target
if(iscarbon(gainer))
if(gainer.weight_loss_rate <= 3)
gainer.weight_loss_rate += ratechange_amount
return TRUE
return FALSE
return FALSE
//wl rate decrease
/obj/item/projectile/alter_ray/lossrate_decrease/on_hit(atom/target, blocked)
. = ..()
var/mob/living/carbon/gainer = target
if(iscarbon(gainer))
if(gainer.weight_loss_rate >= 0.11)
gainer.weight_loss_rate -= ratechange_amount
return TRUE
if(gainer.weight_loss_rate <= 0.1)
return FALSE
return FALSE
//ammo casings - these are needed to allow guns to switch between firing modes
/obj/item/ammo_casing/energy/laser/gainrate_increase
projectile_type = /obj/item/projectile/alter_ray/gainrate_increase
select_name = "Weight Gain Increase"
/obj/item/ammo_casing/energy/laser/gainrate_decrease
projectile_type = /obj/item/projectile/alter_ray/gainrate_decrease
select_name = "Weight Gain Decrease"
/obj/item/ammo_casing/energy/laser/lossrate_increase
projectile_type = /obj/item/projectile/alter_ray/lossrate_increase
select_name = "Weight Loss Increase"
/obj/item/ammo_casing/energy/laser/lossrate_decrease
projectile_type = /obj/item/projectile/alter_ray/lossrate_decrease
select_name = "Weight Loss Decrease"
//ALTRay for making someone gain from weight loss
/obj/item/gun/energy/laser/alter_ray/noloss
name = "AL-T-Ray: Reverser"
desc = "This weapon is capable of altering one's body capabilities. This one reverse's ones body functions, to make it so weight loss results in weight gain."
ammo_type = list(/obj/item/ammo_casing/energy/laser/lossrate_reverse)
/obj/item/ammo_casing/energy/laser/lossrate_reverse
projectile_type = /obj/item/projectile/alter_ray/lossrate_reverse
select_name = "Weight Loss Reverse"
/obj/item/projectile/alter_ray/lossrate_reverse
ratechange_amount = -2
icon_state="laser"
/obj/item/projectile/alter_ray/lossrate_reverse/on_hit(atom/target, blocked)
. = ..()
var/mob/living/carbon/gainer = target
if(iscarbon(gainer))
gainer.weight_loss_rate = ratechange_amount
return TRUE