[CF-Devel] Paralyze

Mark Wedel mwedel at sonic.net
Wed Nov 21 21:43:07 CST 2001


Michael Toennies wrote:

 I should mention as a preface that I am all for making paralyze a force
object.  But I just want to correct and add a few things.



>
     
     
     >
     
      Paralyze wasn't included like this.
     
     >
     
      It had worked like this:
     
     >
     
     
     >
     
      I noticed, thats paralyze has no effect flag. Means, if you get paralyzed
     
     >
     
      through the spell
     
     >
     
      or effect, you got not marked as paralyzed. As i look in the code, i see
     
     >
     
      that the effect was
     
     >
     
      triggered only by setting the speed value of the object. Means the "you has
     
     >
     
      no speed left"
     
     >
     
      counter is set up by a high value. Thats very bad, because every speed
     
     >
     
      effect like encumberence
     
     >
     
      or land tile effects use this value too.
     
     
 Incorrect.  

 you are correct that when you paralyzed, your speed left is set to some
negative value based on your current speed (so that you are effectively
paralyzed for X ticks).  However, encumberance does not effect it because it is
effect * current speed, so if your current speed is slow, it is the same number
of ticks.  terrain does not effect it either - that just affects the speed left
as you move on terrain.  It does not effect your actual speed, and if you are
moving, it also has no effect.

>
     
     
     >
     
      That makes it impossible to remove paralyze - thats the reason why there is
     
     >
     
      no "remove paralyze"
     
     >
     
      in the game - the server never knows why the speed is decreased . It can be
     
     >
     
      paralyze but also a
     
     >
     
      different effect.
     
     
 I think the bigger reason is because if you are paralyzed, you can't cast
spells, so there isn't much reason for such an item.  But it is a multiplayer
game, so you could add that spell on the basis someone else could cast it on
you.  This of course could be done now (if speed_left is some negative value,
assume it is paralyze or related, and just set it to zero, but using a force
does make more sense and is more consistent with the rest of the game).

>
     
      Bad effect is, that i don't change it so much, that we use a paralyze_force
     
     >
     
      object. Because the
     
     >
     
      paralyze effect still use the speed value adding, you can't heal paralyze by
     
     >
     
      yourself - the server
     
     >
     
      never allows your object any action until your speed is set - even animation
     
     >
     
      and internal stuffs of
     
     >
     
      your player object are stopped! So be careful to insert new features using
     
     >
     
      values in a object.
     
     
 In theory, a player should not be able to do much.  It could also be dangerous
to actually heal while paralyzed - if you run out of food, you could die simply
because you have nothing more - even if you might have some in a bag, or a horn
of plenty, or a pile just a square away.

 Now it could be enhanced such that paralyze just doesn't process commands for
the client (or ignores most) - that wouldn't be too hard to do - probably the
commands table could be examined - if a command takes time, don't allow it.  But
that would need to be carefully examined - certainly, things like use_skill or
apply or many others should not be allowed.

>
     
     
     >
     
      Also, i find some strange stuff in the paralyze function.
     
     >
     
      Anyone knows why and how this is inside?
     
     >
     
     
     >
     
      Michael
     
     >
     
     
     >
     
      void paralyze_player(object *op, object *hitter, int dam)
     
     >
     
      {
     
     >
     
          float effect,max;
     
     >
     
          /* object *tmp; */
     
     >
     
     
     >
     
          /* This is strange stuff... someone knows for what this is
     
     >
     
           * written? Well, i think this can and should be removed
     
     >
     
          */
     
     
 That block adds a paralyzation image when you are hit (I guess like detect
magic, eg, a little thing flashes).  Of course, if you are paralyzed, you don't
see it.  the present is so that only one is inserted - no reason to insert
another if one is already there.

>
     
     
     >
     
          /*
     
     >
     
          if((tmp=present(PARAIMAGE,op->map,op->x,op->y))==NULL) {
     
     >
     
              tmp=clone_arch(PARAIMAGE);
     
     >
     
              tmp->x=op->x,tmp->y=op->y;
     
     >
     
              insert_ob_in_map(tmp,op->map,tmp,INS_NO_MERGE | INS_NO_WALK_ON);
     
     >
     
          }
     
     >
     
          */
     
     >
     
     
     >
     
          /* Do this as a float - otherwise, rounding might very well reduce this
     
     >
     
      to 0 */
     
     >
     
          effect = (float)dam * 3.0 * (100.0 - op->resist[ATNR_PARALYZE]) / 100;
     
     >
     
     
     

David Hurst wrote:
>
     
     
     >
     
      Ahh =)
     
     >
     
     
     >
     
      I never liked how it was impossible to do anything once paralyzed. Basically if you fight any really high level monsters, it is effectively game over because you cannot do anything. I remember the old trick was to quit the client, but this seems completely dodgy. Perhaps some more thought as to exactly how paralyze should work is in order here. It seems sort of logical that you can't cast spells etc when paralyzed, because once paralyzed you can no longer control muscles. Perhaps though you can still cast prayers (which have little/no encumberance)? Then perhaps then a revive, or heal paralyisis or something would be good. I remember when we added -20 resistance to paralyze on mostrai. People complained that the game became impossible.
     
     
 Presumably, most prayers would require chanting or other verbal actions, which
if muscles are frozen, should not be allowed either.

 But I do agree that paralyze and drain are two attack forms that are annoying
at low levels (before you get the things that main you immune to them), and
after that point, you ignore them.

 A couple things that could be done:

 drain: Put in a force object that contains the negative experience totals (eg,
how much you have lost).  Allow potions or high level spells to restore this. 
An alternative would be to store the higest total you had. 

 The difference here is that in the first case, you lose nothing by the drain. 
In the second case, any experience you gain before getting restored is not
really gained - if you gain a whole much, your total will go above what
restoration gives you.  IF you gain a little, the restore puts you to your old
total, so you get nothing from that little you gained.

 Another idea, which could also apply to drain, would be items you wear that
have charges and absorb the losses.  Eg, an amulet of paralyzation absorbing,
which absorbs 500 ticks or something of paralyzation effects.  Drain absorbing
could absorb something like 20 full hits (so if your 80% protected, you then get
100 drain hits).  IF these are added, the objects that give 100% protection
should of course get removed.  

 Arguably, all 100 permanent protection items could/should get removed.  At
best, this could be available by potions.  The problem is that main times things
like grim reapers are hidden, and you open a door, and 5 of them are there, and
its too late to drink that potion of drain resistance. 

 which monsters also have these effects should be looked at.  I know some
monsters have it but it doesn't make a lot of sense - it was mostly like 'give
this creature every attacktype simply so it will be difficult'.  Same is true
for protections on some.

    
    


More information about the crossfire mailing list