ItSoD

Error message

Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in drupal_get_feeds() (line 394 of /var/www/pied-piper.ermarian.net/includes/common.inc).

Pages

AuthorTopic: ItSoD
Lifecrafter
Member # 7538
Profile Homepage #25
I don't think this is gonna work tonight. It's almost 12, I've got school in the morning, and I've been needing to get to bed earlier.

Here's the entire code so far. If anyone has time to debug it, the only real change I've made to basicnpc is in the attacking section of the START_STATE.

// Memory Cells:
// Cell 0 - How creature moves.
// 0 - If 0, wander randomly.
// 1 - Stands still until a target appears.
// 2 - Completely immobile, even if target appears.
// Cell 1,2 - Stuff done flag. If both 0, nothing. Otherwise when this
// is killed, set to 1. (Example: If cell 1 is 3 and cell 2 is 5, when
// creature is killed, sets SDF(3,5) to 1.)
// Cell 3 - Dialogue node to start with if talked to. if left at 0, this
// character doesn't talk.
// Cell 4 - Number of sparkle wanted on person, plus 1 (so for sparkle 0, Cell 4 is 1). If left at 0, no sparkle.

begincreaturescript;

variables;

short i,target;

body;

beginstate INIT_STATE;
if (get_memory_cell(0) == 2)
set_mobility(ME,0);
break;

beginstate DEAD_STATE;
// Set the appropriate stuff done flag for this character being dead
if ((get_memory_cell(1) != 0) || (get_memory_cell(2) != 0))
set_flag(get_memory_cell(1),get_memory_cell(2),1);
break;

beginstate START_STATE;
// if I have a target for some reason, go attack it
if (target_ok()) {
if (dist_to_char(get_target()) <= 16)
set_state(3);
else set_target(ME,-1);
}

// Look for a target, attack it if visible
if (select_target(ME,8,0)) {
do_attack();
set_state(3);
}

// Have I been hit? Strike back!
if (who_hit_me() >= 0) {
set_target(ME,who_hit_me());
do_attack();
if (get_memory_cell(4) != 0)
put_sparkles_on_char(ME,get_memory_cell(4) - 1,3);
set_state(3);
}

// Otherwise, just peacefully move around. Go back to start, if I'm too far
// from where I started.
if ((my_dist_from_start() >= 6) || ((my_dist_from_start() > 0) && (get_memory_cell(0) > 0))) {
if (get_ran(1,1,100) < 40)
return_to_start(ME,1);
}
else if (get_memory_cell(0) == 0) {
fidget(ME,25);
}

// if we're in combat and the above didn't give me anything to do, just
// stop now. Otherwise, game will keep running script, and that eats up CPU time.
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 TALKING_STATE;
if (get_memory_cell(3) == 0) {
print_str("Talking: It doesn't respond.");
end();
}
begin_talk_mode(get_memory_cell(3));
break;
Whew... I'm tired. I'm going to bed.

EDIT: Fixed code.

[ Tuesday, December 05, 2006 23:00: Message edited by: Nemesis ]

--------------------
Do not provoke the turtles.
They do not like being provoked.

-Lenar

My website: Nemesis' Refuge
Posts: 743 | Registered: Friday, September 29 2006 07:00
Infiltrator
Member # 5576
Profile Homepage #26
To actually show effects like sparkles, you need to use run_animation, so I would make this:
if (get_memory_cell(4) != 0)
put_sparkles_on_char(ME,get_memory_cell(4) - 1,3);
into this:
if (get_memory_cell(4) != 0){
put_sparkles_on_char(ME,get_memory_cell(4) - 1,3);
run_animation();
}
This can slow the game down a lot though, as it takes a fraction of a second for the sparkle animation to run, during which time nothing else can happen.

--------------------
Überraschung des Dosenöffners!
"On guard, you musty sofa!"
Posts: 627 | Registered: Monday, March 7 2005 08:00
Lifecrafter
Member # 7538
Profile Homepage #27
Okay, thanks Niemand. Good to know. That in mind, this script's usefulness may be somewhat limited, but I'm sure someone will eventually find a use. Who knows, maybe I will.

--------------------
Do not provoke the turtles.
They do not like being provoked.

-Lenar

My website: Nemesis' Refuge
Posts: 743 | Registered: Friday, September 29 2006 07:00

Pages