-
Notifications
You must be signed in to change notification settings - Fork 19
SCUMM 8 API: Actors
Actors have similar properties to Objects, but they also have the ability to walk, talk and have inventory.
The following properties apply to Actor definitions.
-
name
- The display name of an Actor.
-
x,y
- Position of Actor within a Room.
-
z
- The z/depth pos of Actor within a Room (useful for forcing Actors to appear in-front/behind others)
- The z-plane system in SCUMM-8 is from -64 to 64
- (with the
map
being drawn at plane 0)
- (with the
- (Defaults to same as
y
pos)
-
w,h
- Width and height (in sprite cel's) of an Actor.
-
classes
-
Actors can have multiple classes attributed, all of which have different effects. The available classes are:
- class_untouchable = Actor cannot be interacted with at all
- class_talkable = Actor can be talked to
- class_openable = Actor can be opened(?)
- class_actor = Object is an Actor (not just a normal Object)
-
For example:
classes = { class_actor, class_talkable }
-
-
use_pos
-
The position the selected player will walk to when Actor is interacted with. The available use positions are:
- pos_infront = Stand in-front of Actor
- pos_left = Stand to the left of Actor
- pos_right = Stand to the right of Actor
- pos_above = Stand just above the Actor
- pos_center = Stand in center of Actor
-
For example:
use_pos = pos_left
-
-
use_dir
- The direction the selected player will face to when Actor is interacted with. The available use positions are:
- face_front
- face_left
- face_back
- face_right
- For example:
use_dir = face_right
- The direction the selected player will face to when Actor is interacted with. The available use positions are:
-
idle
-
A list of sprite numbers to use for when the Actor is just standing (e.g. not walking, etc.). There should be four items specified; one frame for each possible face direction.
For example:
-- (face front, left, back, right) idle = { 193, 197, 199, 197 }
-
-
talk
- A list of sprite numbers to use as an overlay for when the Actor is talking (e.g. to show mouth in open position). There should be four items specified; one frame for each possible face direction.
-
NOTE:
-
An (optional) X,Y position of the talk sprite overlay can also be set by specifying a 5th and 6th value in the list
- (by default, this offset is hard-coded to be the 2nd sprite down (e.g. 8 pixels) from the top of the Actor.
-
An (optional) width & height of the talk sprite overlay can also be set by specifying a 7th and 8th value in the list
- (by default, this is hard-coded to 1x1)
For example:
talk = { 218, 219, 220, 219, -- talking front, left, back, right, 2, 0, -- x-offset-pos, y-offset-pos, 1, 1 -- sprite width, sprite height }
-
-
walk_anim_side / walk_anim_front / walk_anim_back
-
A list of sprite numbers to animate the Actor when walking in a particular direction.
-
Note: The
walk_anim_side
property should be drawn facing right. Actor's sprite will be automatically flipped when walking left.For example:
-- (facing front, left, back, right) walk_anim_side = { 196, 197, 198, 197 } walk_anim_front = { 194, 193, 195, 193 } walk_anim_back = { 200, 199, 201, 199 }
-
-
walk_speed
- The speed that the Actor can move (e.g. distance moved, in pixels, per frame).
- For example:
walk_speed = 0.6
-
frame_delay
- The amount of frames to display the current Actor's current sprite frame. Used to control the speed of animations (e.g. walking animation, etc.)
- For example:
frame_delay = 5
-
face_dir
- States the direction the selected player should be facing in. The available use positions are:
- face_front
- face_left
- face_back
- face_right
- For example:
face_dir= face_right
- States the direction the selected player should be facing in. The available use positions are:
-
trans_col
- The color to draw as transparent (defaults to 0 = black)
-
col_replace
- Allows you to specify an alternative color to the one originally in actor's sprites. Useful for re-using existing content.
- For example:
col_replace = {5,2}
-
lighting
- Specifies the lighting level to use for a given Actor. Range is from 1=Normal to 0=black (default = 1).
- For example:
lighting = 0.75
-
scale
- Specifies the scale factor to use when drawing the Actor. Range is from 1 = 100% to 0=almost 0% (default = 1)
- Leave as
nil
for auto-scaling (fake) 3D depth scaling to occur. - If specified, this value will override and disable auto-scaling.
The verbs
property allows you to specify a list of functions for each verb that the Actor supports. When a user chooses a verb from the UI and clicks on the Actor, the defined function will be executed.
For example:
verbs = {
lookat = function(me)
say_line("it's a weird looking tentacle, thing!")
end,
talkto = function(me)
say_line(me, "what do you want, Human?!")
end,
use = function(me)
-- switch character
selected_actor = me
camera_follow(me)
end
}
Allows you to specify a list of functions that are specific to a given Actor. These scripts can then either be called directly (synchronously) or run asynchronously via the start_script()
function.
For example:
scripts = {
watch_tentacle = function()
while true do
-- automatically face actor as he moves around
do_anim(selected_actor, "anim_face", purp_tentacle)
break_time(10)
end
end
}
Introduction
Definitions
Core Variables
Core Functions
Tutorials