Re: [HELP] Clone Spell

From: Akuma/Chris Baggett/DOOMer (doomer@BAYOU.COM)
Date: 07/24/97


OK, I'm gonna attempt to help here. One of the things that can be done,
is either choose to use the title of the player as part of the mobs
long_descr (when you look at room) or not.  Short Description is for
when you attack it, or list it.
just take a look at the unquoted stuff for help down here.

>
>ASPELL (spell_clone)
>{
>  struct char_data *clone_ch;
>  struct affected_type af, clone_af;
>
>
>  int i; /* Loop Variable */
>
>  send_to_char ("You slowly fade out of existence.\r\n", ch);
>  act ("$n slowly fades out of existence.", FALSE, ch, 0, 0, TO_ROOM);
>  act ("$n slowly fades into existence.", FALSE, ch, 0, 0, TO_ROOM);
>  send_to_char ("Your clone appears.\r\n", ch);
>
>  af.duration = 10 + (GET_LEVEL (ch) << 2);
>  af.location = APPLY_AC;
>  af.bitvector = AFF_INVISIBLE;
>  affect_to_char (ch, &af);
>
>
>  clone_ch = read_mobile (10, VIRTUAL);


>  clone_af.type = SPELL_CHARM;
>  clone_af.duration = 99;
>  clone_af.modifier = 0;
>  clone_af.location = 0;
>  clone_af.bitvector = AFF_CHARM;
>
>  affect_to_char (clone_ch, &clone_af);
ok, the above 7 lines (the ones with AF in them)
could be changed, if you want it a permanent CHARM.
by doing a
SET_BIT(AFF_FLAGS(clone_ch), AFF_CHARM);
>
>  clone_ch->carrying = ch->carrying;
  What THAT line does, is give the mob everything that the player is
carrying.  which personnally i think is a bad idea.  because if the mob
gives something to the player, then the player will have two.
  But, if it ain't broke, don't fix it :-)

>  clone_ch->real_abils = ch->real_abils;
>  clone_ch->aff_abils = ch->aff_abils;
>  clone_ch->player.name = ch->player.name;
  the above line is what allows one to   look <playername>
but you might wanna try
clone_ch->player.name = str_dup(ch->player.name);
>  //clone_ch->player.short_descr = ch->player.short_descr;<== This
>crashes the game
  this would possibly crash, because the player has no short_descr
try something like
clon_ch->player.short_descr = str_dup(ch->player.name);

>  clone_ch->player.long_descr = ch->player.long_descr;
this line definetly won't work.
i would do something like this.
sprintf(buf, "%s %s", ch->player.name, GET_TITLE(ch));
clone_ch->player.long_descr = str_dup(buf);

>  clone_ch->player.title = ch->player.title;
Mobs don't use this.
>  clone_ch->player.level = ch->player.level;
>  clone_ch->player.sex = ch->player.sex;
>  clone_ch->player.class = ch->player.class;
>  clone_ch->player.description = ch->player.description;
try doing a str_dup on the above.
clone_ch->player.description = str_dup(ch->player.description);
>  clone_ch->points = ch->points;
>  clone_ch->points.gold = 0;
>  clone_ch->points.bank_gold = 0;
>  //clone_ch->char_specials = ch->char_specials;
you DEFINATELY may not wanna do the above.
>
>
>  // Load up clone with same equip as master.
>  for (i = 0; i < NUM_WEARS; i++)
>    clone_ch->equipment[i] = ch->equipment[i];
>
>
>  char_to_room (clone_ch, ch->in_room);
>  add_follower(clone_ch, ch);
>
>}

All that should help a little.  there may be a few things i overlooked.
but if you wanna give a mob the same string (like names, descr, etc)
then use   str_dup()   on the string...

anyway
Code On
Akuma the Raging Coder
  +------------------------------------------------------------+
  | "The poets talk about love, but what I talk about is DOOM, |
  |      because in the end, DOOM is all that counts." -       |
  |   Alex Machine/George Stark/Stephen King, The Dark Half    |
  |        "Nothing is IMPOSSIBLE, Just IMPROBABLE"            |
  |   "Easier Said Than Done, But Better Done Than Said..."    |
  +------------------------------------------------------------+


     +------------------------------------------------------------+
     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
     +------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 12/08/00 PST