ID:1173921
 
Keywords: blend, eyes, icon, overlay
Code:
        var/icon/tempIcon
tempIcon=icon(icon=plyr.icon,icon_state="",dir=SOUTH,frame = 1)
world<<"\icon[tempIcon]"
tempIcon.Blend(plyr.Eyes.icon,function=ICON_SUBTRACT,x=1,y=1)
world<<"\icon[plyr.Eyes.icon]"
world<<"\icon[tempIcon]"
tempIcon.Scale(64,64)

b.icon=tempIcon
b.screen_loc="hud:2,2"
screen+=b


Problem description:

I'm beginning to feel guilty for flooding this forum so much, but you guys are just so darned helpful! Big thanks in advance!

Anywho, no matter whether I try ICON_SUBTRACT or ICON_OVERLAY or ICON_ADD or ICON_MULTIPLY I don't seem to make any impact on my original icon. You may notice the "world<<"s : they're just for debugging, and the output from them is below, followed by the result on the HUD.

It looks like it should be working (you want ICON_OVERLAY, by the way). Does the eyes' icon file have icon_states? If so, you may need to specifically create a /icon for it with the right icon_state.
Argh, I should add: "plyr.Eyes" is an object, as the icon maybe be coloured with RGB at character creation. The icon file the icon uses does have icon_states, but doesn't it depend on what 'state' the object is in?

That said, I gave what you said a try:
client/proc
loadHUD()
var/mob/Player/plyr = src.mob //The client's mob is always of type Player, so this a safe assumption. Plus this saves us adding HUDlist lists to every mob.
var/obj/HUD/Back/a = new()
a.screen_loc="hud:1,1 to 4,4"
screen+=a


var/obj/HUD/Health/b = new()
var/icon/tempIcon
var/icon/eyesIcon = icon(icon=plyr.Eyes.icon,icon_state="")
tempIcon=icon(icon=plyr.icon,icon_state="",dir=SOUTH,frame = 1)
tempIcon.Blend(eyesIcon,function=ICON_OVERLAY,x=1,y=1)
tempIcon.Scale(64,64)

b.icon=tempIcon
b.screen_loc="hud:2,2"
screen+=b
plyr.HUDlist+=b

But to no avail, still the same results.
I gave up on Blend() in the end. For those curious on a work-a-round: I just made a new object for the eyes, and added it to the HUD after the player icon. Not an elegant method, but it works.