Jerry Billings wrote:
> Okay this is about the tenth time i've had a crash with the same code. i've
> added amny different bits of code and every now and then one will crash, but
> not because of the code i added. when i debug it it sends me to this code.
>
> void hitprcnt_mtrigger(char_data *ch)
> {
> trig_data *t;
> char buf[MAX_INPUT_LENGTH];
>
> if (!SCRIPT_CHECK(ch, MTRIG_HITPRCNT) || !FIGHTING(ch) || /* CODE THAT
> CRASHES */ AFF_FLAGGED(ch, AFF_CHARM))
> return;
>
> for (t = TRIGGERS(SCRIPT(ch)); t; t = t->next) {
> if (TRIGGER_CHECK(t, MTRIG_HITPRCNT) && GET_MAX_HIT(ch) &&
> (((GET_HIT(ch) * 100) / GET_MAX_HIT(ch)) <= GET_TRIG_NARG(t))) {
>
> ADD_UID_VAR(buf, t, FIGHTING(ch), "actor", 0)
> script_driver(ch, t, MOB_TRIGGER, TRIG_NEW);
> break;
> }
> }
> }
>
Looks like another hole ridden procedure :( If the mob dies and has a
hitpercent
trigger on, depending on your luck that day, the MUD will crash. Similar
things
happen when a random of fight trigger fires on a mob that just dies. I noticed
that
when a mob dies, it's name his set to NULL. So that is what I check before
executing any piece of code like that (script_trigger_check(),
fight_mtrigger(),
hitprcnt_mtrigger(), etc)
Claude
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 04/10/01 PDT