ID:264594
 
Code:
mob/proc/kiblast()
set category = "Skills"
var/damage=round(usr.Statmaxki/2)
damage+=rand(-4,2)
usr.Kiblas("[src.name]",damage)

obj/Skills
Ki_Blast //this will be modded to make up any projectile attacks!
density=1 //make sure it can actualy hit stuff!
var/mob/Owner //somebody had to shoot it right?
var/damage //and we want it to actualy hurt stuff eh?
icon='Ki Blast.dmi' //setup its icon
New()
spawn(100) del src //this will automaticaly delete it after 10 seconds, if its still around
Bump(mob/M)
if(ismob(M))
if(src.Owner) //make sure it has an owner! otherwise dont bother
M.Statpowerlevel-=src.damage
M.DamageShow(damage,200,0,0) //flashes the damage on the screen
M.DeathCheck(src.Owner)
del src

Bump(obj/M)
if(isobj(M))
if(src.Owner) //make sure it has an owner! otherwise dont bother
M.Statpowerlevel-=src.damage
M.DamageShow(damage,200,0,0)
M.DeathCheck(src.Owner)
del src

mob/proc/Kiblas(var/IS,var/damage) //the arguments inside the () allow us to easily customize the proc
//The Icon States for this proc are Kept in Projectiles.dmi
//Simply add a new icon state and name it to match the skill and youre good to go!
var/obj/Skills/Ki_Blast/P=new() //first we'll make a new projectile
P.icon_state=IS //this sets the icon state to whatever we need
P.damage=damage //this will set up the damage that we passed in through the arguments
P.Owner=src //set its owner to the person that shot it
P.dir=src.dir //make it face the same direction as the attacker
P.loc=src.loc //locate it on the player
walk(P,src.dir)

// ...

obj/CW/Stone
icon='Walls.dmi'
icon_state="stone"
density=1
dead=0
Statpowerlevel=1000

mob/proc
DeathCheck(mob/Killer)
if(src.Statpowerlevel<=0)
if(src.key)
world << "<font color = red><b>Death Info: </font> <b>[src] has been killed by [Killer]"
src.Statpowerlevel=src.Statmaxpowerlevel //restores users HP and MP after dying
src.Statki=src.Statmaxki
src.dead=1
src.loc=locate(6,69,2)
src.overlays+= /obj/Players_Overlays/Halo
else
Killer<<"You defeated [src] You Gained <b>[src.exp]</b> EXP and <b>[src.Zenie]</b> Zenie"
Killer.exp+=src.exp
Killer.Zenie+=src.Zenie
Killer.LevelCheck()
Killer.CheckScore()
del src

mob/proc/DamageShow(var/damage,var/VarR=200,VarG=0,VarB=0) //input the amount, then rgb values to change color
if(istext(damage)) //if your send the proc something like Block it will display that instead of #s
var/obj/O=new/obj/Supplemental/DamageNum //creates the new object
O.loc=locate(src:x,src:y,src:z) //locates it at the damaged person
flick("[damage]",O) //this flashes the Block icon state, or whichever u sent
return //then return because we dont want to show numbers
damage=num2text(damage) //this converts the number to text so we can chop it up
var/pxplus=-7 //offsets the damage by -7 pixels
var/spot=0 //used for cutting out the text
while(pxplus<(length(damage)*7)-7) //this makes it show itll only display a max of 7 numbers
spot+=1 //determines where we're cutting
pxplus+=7 //bump the pixel display by 7 each # so they dont overlap
var/obj/Supplemental/DamageNum/O=new() //create the new number
O.pixel_x+=pxplus //offset the numbers pixel display
O.loc=locate(src:x,src:y,src:z) //locate it at the person being hurt
O.icon+=rgb(VarR,VarG,VarB) //changes the color of the damage so we can use the same icon for healing, criticals, etc
flick("[copytext(damage,spot,spot+1)]",O)


Problem description: Well the problem is when i try to run it this Says:

loading Dragon Ball Z United Warriors.dme
loading Skin.dmf
Skills\Ki Blast.dm:27:error: M.DamageShow: undefined proc
Skills\Ki Blast.dm:28:error: M.DeathCheck: undefined proc
Procedures.dm:48:warning: NL: variable defined but not used

Dragon Ball Z United Warriors.dmb - 2 errors, 1 warning (double-click on an error to jump to it)
The Errors are form the Bump(obj/M) any idea of how to fix it


There are some problems on your code, but I wont try to correct since I dont have the time in my hands.

I will just let gathor appear and save the day as usual


But for your imediate need, here is the bump after I tweaked it

Yours
        Bump(obj/M)
if(isobj(M))
if(src.Owner) //make sure it has an owner! otherwise dont bother
M.Statpowerlevel-=src.damage
M.DamageShow(damage,200,0,0)
M.DeathCheck(src.Owner)
del src


Mine
        Bump(atom/M)
if(isobj(M)&&src.Owner) //make sure it has an owner! otherwise dont bother
M:Statpowerlevel-=src.damage
M:DamageShow(damage,200,0,0)
M:DeathCheck(src.Owner)
del src
In response to Abrax
Yeah, ignore this person now. Anyone using the : operator should just be laughed at.
In response to Moonlight Memento
If used correctly, like after type checks, it doesn't matter,
In response to Moonlight Memento
Moonlight Memento wrote:
Yeah, ignore this person now. Anyone using the : operator should just be laughed at.

Oh I see, so I shouldnt ignore you because you made a huge contribution to the community as well as helped this guy right?

Oh wait, you didnt do none of those stuff nor can you code!!!
Otherwise you would know that in that case cenario, it doesnt matter
In response to Abrax
Abrax wrote:
Moonlight Memento wrote:
Yeah, ignore this person now. Anyone using the : operator should just be laughed at.

Oh I see, so I shouldnt ignore you because you made a huge contribution to the community as well as helped this guy right?

Oh wait, you didnt do none of those stuff nor can you code!!!
Otherwise you would know that in that case cenario, it doesnt matter

Well, it doesn't matter in the sense that what you wrote is almost functionally equivalent to what the original poster already had, yes. Technically, it isn't QUITE equivalent, as using the : operator removes a layer of error-checking, preventing you from attempting to, say, access a mob's variables from an obj.

While saying the : operator is wrong in every circumstance ever no matter what is... wrong in every circumstance ever no matter what, the manner in which you used it really wasn't valid.