void time_wtrigger(struct room_data *room) { trig_data *t; char buf[MAX_INPUT_LENGTH]; if (!SCRIPT_CHECK(room, WTRIG_TIME)) return; for (t = TRIGGERS(SCRIPT(room)); t; t = t->next) { if (TRIGGER_CHECK(t, WTRIG_TIME) && (time_info.hours == GET_TRIG_NARG(t))) { sprintf(buf, "%d", time_info.hours); add_var(&GET_TRIG_VARS(t), "time", buf, 0); script_driver(&room, t, WLD_TRIGGER, TRIG_NEW); break; } } }
void time_mtrigger(char_data *ch) { trig_data *t; char buf[MAX_INPUT_LENGTH]; /* This trigger is called if the hour is the same as specified in Narg. */ if (!SCRIPT_CHECK(ch, MTRIG_TIME) || AFF_FLAGGED(ch, AFF_CHARM)) return; for (t = TRIGGERS(SCRIPT(ch)); t; t = t->next) { if (TRIGGER_CHECK(t, MTRIG_TIME) && (time_info.hours == GET_TRIG_NARG(t))) { sprintf(buf, "%d", time_info.hours); add_var(&GET_TRIG_VARS(t), "time", buf, 0); script_driver(&ch, t, MOB_TRIGGER, TRIG_NEW); break; } } }
void bribe_mtrigger(char_data *ch, char_data *actor, int amount) { trig_data *t; char buf[MAX_INPUT_LENGTH]; if (!SCRIPT_CHECK(ch, MTRIG_BRIBE) || AFF_FLAGGED(ch, AFF_CHARM)) return; for (t = TRIGGERS(SCRIPT(ch)); t; t = t->next) { if (TRIGGER_CHECK(t, MTRIG_BRIBE) && (amount >= GET_TRIG_NARG(t))) { sprintf(buf, "%d", amount); add_var(&GET_TRIG_VARS(t), "amount", buf, 0); ADD_UID_VAR(buf, t, actor, "actor", 0); script_driver(ch, t, MOB_TRIGGER, TRIG_NEW); break; } } }
int enter_wtrigger(struct room_data *room, char_data *actor, int dir) { trig_data *t; char buf[MAX_INPUT_LENGTH]; int rev_dir[] = { SOUTH, WEST, NORTH, EAST, DOWN, UP }; if (!SCRIPT_CHECK(room, WTRIG_ENTER)) return 1; for (t = TRIGGERS(SCRIPT(room)); t; t = t->next) { if (TRIGGER_CHECK(t, WTRIG_ENTER) && (number(1, 100) <= GET_TRIG_NARG(t))) { add_var(&GET_TRIG_VARS(t), "direction", dirs[rev_dir[dir]], 0); ADD_UID_VAR(buf, t, actor, "actor", 0); return script_driver(room, t, WLD_TRIGGER, TRIG_NEW); } } return 1; }
void act_mtrigger(const char_data *ch, char *str, char_data *actor, char_data *victim, obj_data *object, obj_data *target, char *arg) { trig_data *t; char buf[MAX_INPUT_LENGTH]; if (SCRIPT_CHECK(ch, MTRIG_ACT) && !AFF_FLAGGED(ch, AFF_CHARM) && (actor != ch)) for (t = TRIGGERS(SCRIPT(ch)); t; t = t->next) { if (!TRIGGER_CHECK(t, MTRIG_ACT)) continue; if (!GET_TRIG_ARG(t) || !*GET_TRIG_ARG(t)) { mudlog(NRM, LVL_BUILDER, TRUE, "SYSERR: Act Trigger #%d has no text argument!", GET_TRIG_VNUM(t)); continue; } if (((GET_TRIG_NARG(t) && word_check(str, GET_TRIG_ARG(t))) || (!GET_TRIG_NARG(t) && is_substring(GET_TRIG_ARG(t), str)))) { if (actor) ADD_UID_VAR(buf, t, actor, "actor", 0); if (victim) ADD_UID_VAR(buf, t, victim, "victim", 0); if (object) ADD_UID_VAR(buf, t, object, "object", 0); if (target) ADD_UID_VAR(buf, t, target, "target", 0); if (str) { /* we're guaranteed to have a string ending with \r\n\0 */ char *nstr = strdup(str), *fstr = nstr, *p = strchr(nstr, '\r'); skip_spaces(&nstr); *p = '\0'; add_var(&GET_TRIG_VARS(t), "arg", nstr, 0); free(fstr); } script_driver(&ch, t, MOB_TRIGGER, TRIG_NEW); break; } } }
void act_mtrigger(const char_data *ch, char *str, char_data *actor, char_data *victim, obj_data *object, obj_data *target, char *arg) { trig_data *t; char buf[MAX_INPUT_LENGTH]; if (SCRIPT_CHECK(ch, MTRIG_ACT) && !AFF_FLAGGED(ch, AFF_CHARM) && (actor!=ch)) for (t = TRIGGERS(SCRIPT(ch)); t; t = t->next) { if (!TRIGGER_CHECK(t, MTRIG_ACT)) continue; if (!GET_TRIG_ARG(t) || !*GET_TRIG_ARG(t)) { sprintf(buf,"SYSERR: Act Trigger #%d has no text argument!", GET_TRIG_VNUM(t)); mudlog(buf, NRM, LVL_BUILDER, TRUE); continue; } if (((GET_TRIG_NARG(t) && word_check(str, GET_TRIG_ARG(t))) || (!GET_TRIG_NARG(t) && is_substring(GET_TRIG_ARG(t), str)))) { if (actor) ADD_UID_VAR(buf, t, actor, "actor", 0); if (victim) ADD_UID_VAR(buf, t, victim, "victim", 0); if (object) ADD_UID_VAR(buf, t, object, "object", 0); if (target) ADD_UID_VAR(buf, t, target, "target", 0); if (arg) { skip_spaces(&arg); add_var(&GET_TRIG_VARS(t), "arg", arg, 0); } script_driver(ch, t, MOB_TRIGGER, TRIG_NEW); break; } } }
void fight_mtrigger(char_data *ch) { struct char_data *actor; trig_data *t; char buf[MAX_INPUT_LENGTH]; if (!SCRIPT_CHECK(ch, MTRIG_FIGHT) || !FIGHTING(ch) || AFF_FLAGGED(ch, AFF_CHARM)) return; for (t = TRIGGERS(SCRIPT(ch)); t; t = t->next) { if (TRIGGER_CHECK(t, MTRIG_FIGHT) && (rand_number(1, 100) <= GET_TRIG_NARG(t))) { actor = FIGHTING(ch); if (actor) ADD_UID_VAR(buf, t, actor, "actor", 0); else add_var(&GET_TRIG_VARS(t), "actor", "nobody", 0); script_driver(&ch, t, MOB_TRIGGER, TRIG_NEW); break; } } }