ID:140908
 
Code:
mob
verb
Body_Expand(X as num)
if(X==0)
if(usr.expand==0)
usr<<"You are not expanded to revert"
return
usr.expand=0
usr.transbp=n_transbp
usr.transst=n_transst
usr.transen=n_transen
usr.transfo=n_transfo
usr.transre=n_transre
usr.transsp=n_transsp
usr.te=src.te_max
usr.thp=src.thp_max
usr<<"You revert from body expand"
usr.icon=src.reserveicon
return
if(usr.expand<0)
usr.icon=src.reserveicon
usr.transbp=n_transbp
usr.transst=n_transst
usr.transen=n_transen
usr.transfo=n_transfo
usr.transre=n_transre
usr.transsp=n_transsp
usr.te=src.te_max
usr.thp=src.thp_max
if(X>=usr.expand_max)
usr<<"Your max expand is [usr.expand_max] it automaticaly turned into it"
X=usr.expand_max
usr.expand=X
usr.transbp+=X/2.5
usr.transst+=X/1.5
usr.transen+=X/2.8
usr.transfo-=X/3
usr.transre-=X/3
usr.transsp-=X/3
usr.te-=X/3
usr.thp+=X/1.6
if(usr.transfo<=0)
usr.transfo=0.1
if(usr.transre<=0)
usr.transre=0.1
if(usr.transsp<=0)
usr.transsp=0.1
if(usr.te<=0)
usr.te=0.1
usr<<"You expanded to level [src.expand],to revert expand to 0, expand makes you stronger but slower and less ki"
usr.update()
usr.reserveicon=usr.icon
sleep(0.01)
var/icon/I = usr.icon
I.Scale(32,64)
usr.icon=I


Problem description:
When i use the verb everything goes normal my power raises
my stats increase but the icon dont change and it says
runtime error: Cannot execute null.Scale().

proc name: Body Expand (/mob/verb/Body_Expand)
usr: Karffebon (/mob)
src: Karffebon (/mob)
call stack:
Karffebon (/mob): Body Expand(1)

The icon variable isn't actually an icon, it's essentially a filename (or a reference to icon data in the .rsc file). You need to use new() to create an icon from it.
In response to Garthor (#1)
it's kinda difficult to me to understand the guide cause i didnt master english yet so if you could fix the icon part to me it would be very helpful, just show me how to make with the new() proc
In response to Karffebon (#2)
That's the reference, not the guide, and it provides an example of how to use new().
In response to Garthor (#3)
var/icon/I = new(usr.icon)
I.Scale(64,64)
usr.icon=I

This didnt work...
In response to Karffebon (#4)
That's because BYOND doesn't have built in support for icons bigger than 32x32. You have to change the user's icon state etc. yourself, or use ShadowDarke's big atom library.
In response to Jeff8500 (#5)
If a simple 32×32 icon is scaled to a larger size, the big icon will have extra icon states. If for example the original had a state named "open", then the new icon will have a thumbnail image in "open", but it will have 32×32-pixel segments stored in "open 0,0" (the lower left corner), "open 1,0" (lower right), "open 0,1" (upper left), and "open 1,1" (upper right).

What does that mean?
And why didnt BYOND do it for my icon?
In response to Karffebon (#6)
It means that BYOND made your icon bigger, but it did so by making new 32x32 icon states. To handle this, you need to add overlays and some collision detection. However, this seems a bit out of your league, so I recommend Shadowdarke's Big Atom library (again), which does that for you.