diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm index 54d158386c..b33f1c29d5 100644 --- a/code/modules/clothing/chameleon.dm +++ b/code/modules/clothing/chameleon.dm @@ -423,6 +423,7 @@ var/list/ammo_copy_vars var/list/gun_copy_vars var/badmin_mode = FALSE + var/static/list/blacklisted_vars = list("locs", "loc", "contents", "x", "y", "z") /obj/item/weapon/gun/energy/laser/chameleon/New() ..() @@ -449,13 +450,18 @@ chameleon_ammo_vars = list() chameleon_gun_vars = list() chameleon_projectile_vars = list() - for(var/V in chambered.vars) - chambered.vars[V] = initial(chambered.vars[V]) - qdel(chambered.BB) + if(chambered) + for(var/v in ammo_copy_vars) + if(v in blacklisted_vars) //Just in case admins go crazy. + continue + chambered.vars[v] = initial(chambered.vars[v]) + for(var/v in gun_copy_vars) + if(v in blacklisted_vars) + continue + vars[v] = initial(vars[v]) + if(chambered.BB) + qdel(chambered.BB) chambered.newshot() - for(var/V in vars) - vars[V] = initial(vars[V]) - /obj/item/weapon/gun/energy/laser/chameleon/proc/set_chameleon_ammo(obj/item/ammo_casing/AC, passthrough = TRUE, reset = FALSE) if(!istype(AC)) @@ -464,7 +470,7 @@ for(var/V in ammo_copy_vars) if(AC.vars[V]) chameleon_ammo_vars[V] = AC.vars[V] - if(chambered.vars[V]) + if(chambered && chambered.vars[V]) chambered.vars[V] = AC.vars[V] if(passthrough) var/obj/item/projectile/P = AC.BB