Professional Documents
Culture Documents
txt// Creature attacks anything it hates nearby, and spends the rest
of its time patrolling a path.// Once it has won, it returns to its home.// Memory
Cells:
// Cell 0 - Number of path to follow.// Cell 1 - If 0, just loops around
path. If 1, walks to end of path, waits a little, and returns home.// If 2,
goes to end of path and just stops.// Cell 2 - Node if talked to. 0 means no
conversation// Cell 3,4 - Stuff done flag. If both 0, nothing. Otherwise when
this is killed, set to 1.begincreaturescript;
variables;
short i,target;
body;
beginstate INIT_STATE;
break;
beginstate DEAD_STATE;
if ((get_memory_cell(3) != 0)
|| (get_memory_cell(4) != 0))
inc_flag(get_memory_cell(3),get_memory_cell(4),1);
break;
beginstate
START_STATE;
if (get_foe_target(ME,TARGET_RANGE,0)) { do_attack();
set_state(3);
} if (who_shot_me() >= 0) {
set_foe_target(ME,who_shot_me());
do_attack();
set_state(3);
} if (get_memory_cell(1) == 0)
follow_path(ME,get_memory_cell(0),1);
else { if
((my_dist_from_start() >= 2) && (get_memory_cell(1) != 2)) {
if (get_ran(1,1,100) < 40) return_to_start(ME,1);
} if ((get_ran(1,1,100) < 15) ||
(get_memory_cell(1) == 2)) {
follow_path(ME,get_memory_cell(0),0);
set_state(4);
} } if (am_i_doing_action() == FALSE)
end_combat_turn();
break;
beginstate 3;
// attacking if (target_ok() ==
FALSE) set_state(START_STATE);
do_attack();
break;
beginstate 4;
// patrol
if (get_foe_target(ME,TARGET_RANGE,0)) { do_attack();
set_state(3);
} if (who_shot_me() >= 0) {
set_foe_target(ME,who_shot_me());
do_attack();
set_state(3);
} if (follow_path(ME,get_memory_cell(0),0) ==
TRUE) set_state(START_STATE);
break;
beginstate TALKING_STATE;
if
(get_memory_cell(2) == 0) { print_str("Talking:
It doesn't respond.");
} else begin_talk_mode(get_memory_cell(2));
break;