Register to post in forums, or Log in to your existing account
 

Play RetroMUD
Post new topic  Reply to topic     Home » Forums » zMUD General Discussion
maelgrim
Newbie


Joined: 30 Aug 2002
Posts: 7
Location: Sweden

PostPosted: Fri Sep 27, 2002 8:03 pm   

Guru's please help me!
 
Ok, here is a long one...

In the mud I'm playing I have a healer. I want my triggers to heal automaticly, both myself and teammembers...and not only one teammember but several. I also whant to cast the spells again right after i'm done with the last one that has delay so that I am not too dependant on the promts.

The ways I can heal:
Healing hp: undamage <target> (this spell is instant)
Healing bleeding: cutrepair <target> (instant)
Healing poison: depoison <target> (instant)
Healing critical: uncritical <target> <amount> (delay)
Healing temporary: untemporary <target> <amount> (delay)
When you cast a spell that have delay you cant cast any spells of the ones above.


My own promt:
Hp:242(242) Sp:638(1900) T:0/0 C:0(65) B:0 P:0 Xp:5252923
My selfhealing trigger looks like:
^Hp:(%d)~((%d)~) Sp:(%d)~((%d)~) T:(%d)~/(%d) C:(%d)~(%d~) B:(%d) P:(%d) Xp:(%d) $
=
#var current_hp %1
#var max_hp %2
#var current_sp %3
#var max_sp %4
#var current_temp %5
#var current_crit %6
#var max_crit %7
#var current_bleed %8
#var current_poison %9
#var current_xp %10
#if (@current_sp > 300) { //If you cast a spell so that your sp goes under 0 you take damage and can die..
#if (@current_hp < (@max_hp - 18)) {undamage lifebringer}
#if (%eval( ( @max_hp - @current_hp - 18)/27) > 0) {#loop %eval( ( @max_hp - @current_hp - 18)/27) {undamage lifebringer}} //Undamage heals minimum 18 damage and the avarege is 27 hp.
#if (@current_bleed > 0) {#loop @current_bleed {cutrepair lifebringer}} //undamage heals one at a time
#if (@current_poison > 0) {#loop @current_poison {depoison lifebringer}} //same here
#if (@current_crit > 0 and @doing_spell = 1) { //@doing_spell Checks so that I am not already casting a spell...
#var doing_spell 0
#if (@current_crit < 8) { //If the crit is below 8 I will heal it's current number..
uncritical lifebringer @current_crit
#var crit_amount @current_crit
} {
uncritical lifebringer 8 //If it's over 8 I will heal 8, because it takes more time the more you heal and a greater chance to fail...
#var crit_amount 8
}
}
#if (@current_temp > 0 and @doing_spell = 1) { //works the same way as critical, except that critical is more important to get rid of..
#var doing_spell 0
#if (@current_temp < 8) {
untemporary lifebringer @current_temp
#var temp_amount @current_temp
} {
untemporary lifebringer 8
#var temp_amount 8
}
}
}

Continue on reply...
Reply with quote
maelgrim
Newbie


Joined: 30 Aug 2002
Posts: 7
Location: Sweden

PostPosted: Fri Sep 27, 2002 8:04 pm   
 

The promt that shows the teammembers status looks like:
| Smilfink HP: 0/342 C: 0 B: 0 P: 0 T: 0 |
When the player has different kind of damages it can look like:
| Smilfink HP: -40/302 C: 4 B: 2 P: 1 T: 12 |

Now to a part of the problem... This trigger works but I am dependant of it to get my real problem solved..
The prompt is shown whenever one value of any teammember is done, but it will only show his line...
My teamhealing trigger looks like:
^~|%s(%w)%sHP:(%*)/(%d)%sC:%s(%d)%sB:%s(%d)%sP:%s(%d)%sT:%s(%d)%s~|
=
#var link_nr %ismember( %1, @linkedmembers) //I have the names of the ones in my team in @linkedmembers
#var curr_damage@link_nr {[%2 * -1]} //[%2 * -1] is so that the trigger will work with both 0 and a negative number
#var curr_crit@link_nr {%4} //I think I need this for my trigger later on...
#var curr_bleed@link_nr {%5}
#var curr_poison@link_nr {%6}
#var curr_temp@link_nr {%7}
#if (@current_sp > 300 and @doing_spell = 1) {
#if ((%2*-1) > 18) {undamage %1} //The healing on this trigger works fine...
#if (%eval( ((%2*-1)-18)/27)>0) {#loop %eval( ((%2*-1)-18)/27) {undamage %1}}
#if (0 < %5) {#loop %5 {cutrepair %1}}
#if (0 < %6) {#loop %6 {depoison %1}}
#if (0 < %4) {
#var doing_spell 0
#if (%4 < 8) {
uncritical %1 %4
#var crit_amount@link_nr %4 //this is also for my trigger later on..
} {
uncritical %1 8
#var crit_amount@link_nr 8
}
}
#if (0 < %7) {
#var doing_spell 0
#if (%7 < 8) {
untemporary %1 %7
#var temp_amount@link_nr %7
} {
untemporary %1 8
#var temp_amount@link_nr 8
}
}
}

Continue on next reply....

/ Maelgrim
Reply with quote
maelgrim
Newbie


Joined: 30 Aug 2002
Posts: 7
Location: Sweden

PostPosted: Fri Sep 27, 2002 8:06 pm   
 
Now I come to the trigger where the problem is...
When I am done casting a spell with delay that makes me unable to cast spells during that spell is being casted I want to cast new spells right away, I don't want to wait for my teammembers promt line again...
The promt lines can come up between when you start casting the spell and when you are done casting it.
Now this trigger does not work good at all...but here you can see how I have programmed it...

Priorities:
1. heal my own hp damage, bleed and poison
2. heal teammembers hp damage, bleed and poison
3. heal my own crit then temp damage
4. heal teammembers crit and temp damage

(If noone have any damage of any kind it should not do anything ofcourse)

Continue next reply...

/ Maelgrim
Reply with quote
maelgrim
Newbie


Joined: 30 Aug 2002
Posts: 7
Location: Sweden

PostPosted: Fri Sep 27, 2002 8:06 pm   
 

The trigger looks like:
^{You remove critical damage from|You relieve|Your healing powers come forth and|You call forth a ball of healing|You receive}
=
#var doing_spell 1
#if (@current_sp > 300) {
#if (@current_hp < (@max_hp - 18)) {undamage lifebringer}
#if (%eval( ( @max_hp - @current_hp - 18)/27) > 0) {#loop %eval( ( @max_hp - @current_hp - 18)/27) {undamage lifebringer}}
#if (@current_bleed > 0) {#loop @current_bleed {cutrepair lifebringer}}
#if (@current_poison > 0) {#loop @current_poison {depoison lifebringer}}
#if (%numitems( @linkedmembers) > 0) {
#loop %numitems( @linkedmembers) {
#add nr 1
#if (@curr_damage@nr > 18) {undamage %item( @linkedmembers, @nr)}
#if (%eval( @curr_damage@nr - 18) / 27)>0) {#loop %eval( (@curr_damage@nr-18)/27) {undamage %item( @linkedmembers, @nr)}}
#if (0 < @curr_bleed@nr) {#loop @curr_bleed@nr {cutrepair %item( @linkedmembers, @nr)}}
#if (0 < @curr_poison@nr) {#loop @curr_poison@nr {depoison %item( @linkedmembers, @nr)}}
}
#if (@current_crit > 0) {
#var doing_spell 0
#math current_crit {@current_crit - @crit_amount}
#if (@current_crit < 8) {
uncritical lifebringer @current_crit
#var crit_amount @current_crit
} {
uncritical lifebringer 8
#var crit_amount 8
}
}
#if (@current_temp > 0 and doing_spell = 1) {
#var doing_spell 0
#math current_temp {@current_temp - @temp_amount}
#if (@current_temp < 8) {
untemporary lifebringer @current_temp
#var temp_amount @current_temp
} {
untemporary lifebringer 8
#var temp_amount 8
}
}
#var nr 0
#loop %numitems( @linkedmembers) {
#add nr 1
#if (0 < @curr_crit@nr and @doing_spell = 1) {
#var doing_spell 0
#math curr_crit@nr {@curr_crit@nr - @crit_amount@nr}
#if (@curr_crit@nr < 8) {
uncritical %item( @linkedmembers, @nr) @curr_crit@nr
#var crit_amount@nr @curr_crit@nr
} {
uncritical %item( @linkedmembers, @nr) 8
#var crit_amount@nr 8
}
}
#if (0 < @curr_temp@nr and @doing_spell = 1) {
#var doing_spell 0
#math curr_temp@nr {@curr_temp@nr - @temp_amount@nr}
#if (@curr_temp@nr < 8) {
untemporary %item( @linkedmembers, @nr) @curr_temp@nr
#var temp_amount@nr @curr_temp@nr
} {
untemporary %item( @linkedmembers, @nr) 8
#var crit_amount@nr 8
}
}
#var nr 0
}
}
}


I hope you understand my question. Please ask if it is something you don't understand about my question.
Thanks in advance!


/ Maelgrim
Reply with quote
Display posts from previous:   
Post new topic   Reply to topic     Home » Forums » zMUD General Discussion All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

© 2009 Zugg Software. Hosted by Wolfpaw.net