mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 18:53:06 +00:00
Fixes runtime when a borg is reset. Fixes issue where /proc/select_active_ai_with_fewest_borgs() would not always return the intended AI. Fixes issues with new borgs spamming the master AI with creation messages under some circumstances.
87 lines
2.4 KiB
Plaintext
87 lines
2.4 KiB
Plaintext
/obj/item/projectile/change
|
|
name = "bolt of change"
|
|
icon_state = "ice_1"
|
|
damage = 0
|
|
damage_type = BURN
|
|
nodamage = 1
|
|
check_armour = "energy"
|
|
|
|
on_hit(var/atom/change)
|
|
wabbajack(change)
|
|
|
|
|
|
/obj/item/projectile/change/proc/wabbajack (mob/M as mob in living_mob_list)
|
|
if(istype(M, /mob/living) && M.stat != DEAD)
|
|
if(M.monkeyizing) return
|
|
if(M.has_brain_worms()) return //Borer stuff - RR
|
|
|
|
M.monkeyizing = 1
|
|
M.canmove = 0
|
|
M.icon = null
|
|
M.overlays.Cut()
|
|
M.invisibility = 101
|
|
|
|
if(istype(M, /mob/living/silicon/robot))
|
|
var/mob/living/silicon/robot/Robot = M
|
|
if(Robot.mmi) del(Robot.mmi)
|
|
else
|
|
for(var/obj/item/W in M)
|
|
if(istype(W, /obj/item/weapon/implant)) //TODO: Carn. give implants a dropped() or something
|
|
del(W)
|
|
continue
|
|
W.layer = initial(W.layer)
|
|
W.loc = M.loc
|
|
W.dropped(M)
|
|
|
|
var/mob/living/new_mob
|
|
|
|
var/randomize = pick("monkey","robot","slime","xeno","human")
|
|
switch(randomize)
|
|
if("monkey")
|
|
new_mob = new /mob/living/carbon/monkey(M.loc)
|
|
new_mob.universal_speak = 1
|
|
if("robot")
|
|
new_mob = new /mob/living/silicon/robot(M.loc)
|
|
new_mob.gender = M.gender
|
|
new_mob.invisibility = 0
|
|
new_mob.job = "Cyborg"
|
|
var/mob/living/silicon/robot/Robot = new_mob
|
|
Robot.mmi = new /obj/item/device/mmi(new_mob)
|
|
Robot.mmi.transfer_identity(M) //Does not transfer key/client.
|
|
if("slime")
|
|
new_mob = new /mob/living/carbon/slime(M.loc)
|
|
new_mob.universal_speak = 1
|
|
if("xeno")
|
|
var/alien_caste = pick("Hunter","Sentinel","Drone","Larva")
|
|
new_mob = create_new_xenomorph(alien_caste,M.loc)
|
|
new_mob.universal_speak = 1
|
|
if("human")
|
|
new_mob = new /mob/living/carbon/human(M.loc, pick(all_species))
|
|
if(M.gender == MALE)
|
|
new_mob.gender = MALE
|
|
new_mob.name = pick(first_names_male)
|
|
else
|
|
new_mob.gender = FEMALE
|
|
new_mob.name = pick(first_names_female)
|
|
new_mob.name += " [pick(last_names)]"
|
|
new_mob.real_name = new_mob.name
|
|
|
|
var/datum/preferences/A = new() //Randomize appearance for the human
|
|
A.randomize_appearance_for(new_mob)
|
|
else
|
|
return
|
|
|
|
for (var/obj/effect/proc_holder/spell/S in M.spell_list)
|
|
new_mob.spell_list += new S.type
|
|
|
|
new_mob.a_intent = "hurt"
|
|
if(M.mind)
|
|
M.mind.transfer_to(new_mob)
|
|
else
|
|
new_mob.key = M.key
|
|
|
|
new_mob << "<B>Your form morphs into that of a [randomize].</B>"
|
|
|
|
del(M)
|
|
return new_mob
|