ID:2033769
 
Code:
Void_Minion()
var/mob/m = usr
if(!m.checkStatus("Void Minion", 1000))
return

flick("seal", m)
m.setDelay("Action", world.time + 10)
m.setDelay("Void Minion", world.time + 300)
m.chi -= 420
m.updatePassive("void_mastery", "Void Mastery")
view(8)<<"<b><center><font size=4><font color=red>[src]: Void Minion!</b></font>"
m << "<b><font color = green>INFO:</b></font> Click to move the minion to that spot, click a target and it'll attack it, activate Minion Swap to swap places with your minion!"
new/mob/Void_Minion(get_step(usr, usr.dir), usr.dir, usr)

mob
Void_Minion
var
mob/Owner
movement_delay

New(loc, dir, mob/Owner)
src.icon = 'void base.dmi'

new/obj/void(usr.loc)
spawn(10)
del(new/obj/void)
src.loc = loc
src.dir = dir
src.stam = src.Owner.stam/2
src.Owner = Owner
src.Owner.voidminion = src
src.name = "[Owner.name]'s Void Minion"
if(src.stam<=0)
del src
..()

Del()
new/obj/void(src.loc)
if(src.Owner && src == src.Owner.voidminion)
src.Owner.voidminion = null
..()

Move()
if(movement_delay > world.time)
return 0
movement_delay = world.time + 1
..()

ko()

Bump(mob/m)
if(!m || !src.checkDelay("Action") || !istype(m))
return 0

if(m == src.Owner)
return 0

src.delays["Attack"] = world.time + 12
src.dir = get_dir(src, m)
flick("punch1", src)

var/damage = (src.Owner.catk) * (1 + src.Owner.spirit_mastery * 0.015) * (1 + src.Owner.void_mastery * 0.01)

m.takeDamage(damage,src.Owner)


//m.health_damage(src.Owner)

m.ko(src.Owner)
..()

atom
Click()
if(usr.voidminion)
walk_towards(usr.voidminion, src)
..()

mob/var/tmp/voidminion


Problem description: When you create the Minion, it dosen't set the usr as the Owner, therefore you can't click to move it anywhere or will it attack anything. I had it working at one point but can't find where I messed up to cause it to stop setting the usr as the Owner.

you defined owner twice under Minion and in New() delete the one in New().

Void_Minion()
var/mob/m = usr
if(!m.checkStatus("Void Minion", 1000))
return

flick("seal", m)
m.setDelay("Action", world.time + 10)
m.setDelay("Void Minion", world.time + 300)
m.chi -= 420
m.updatePassive("void_mastery", "Void Mastery")
view(8)<<"<b><center><font size=4><font color=red>[src]: Void Minion!</b></font>"
m << "<b><font color = green>INFO:</b></font> Click to move the minion to that spot, click a target and it'll attack it, activate Minion Swap to swap places with your minion!"
var/V = new/mob/Void_Minion(get_step(usr, usr.dir), usr.dir, usr);V.Owner = m //assuming m is player. kind of hard to tell. Is Void_Minion() just a mob proc? you could just call src.
In response to Ganite
It's defined in New() so that the mob knows that the usr owns it and so it can use the usr's stats for damage calculations, etc. Void_Minion() is a verb.
I found the problem, it couldn't read
src.stam = src.Owner.stam/2
so I just changed it to
src.stam = usr.stam/2
and now it works again.