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
Dasyr
Newbie


Joined: 29 Jan 2016
Posts: 8

PostPosted: Tue Sep 12, 2017 8:47 am   

Timing Issue with #LOOP?
 
Code:
Code:

#DELCLASS {CORE|RADIATION}
#CLASS {CORE|RADIATION}
#VARIABLE radTemp {}
#VARIABLE radActual {}
#VARIABLE radProjected {}
#VARIABLE radDifference {}
#VARIABLE radCostArray {brawn|40|grace|40|mettle|40|wits|40|tenacity|40|discipline|40|attack|5|defense|5|damage|10|ascendancy|4|protection|4|power|8|resistance|8|speed|12|health|1|mana|2|landing|1|enchantment|1|crush_soak|1000|cut_soak|1000|stab_soak|1000|movement_speed|1000}
#ALIAS radAdd {#SAY OK ~[~%1: %1~]~[~@radTemp~[~%2~]: %-2~];#VARIABLE radTemp {%lower(%2)};#LOOP 1,%numitems(@radCostArray) {#IF @radCostArray.%i=@radTemp {#SAY INDEXED AT %i}}}
#ALIAS radDiffer {}
#TRIGGER {Magic type : {A|An} (*) (%w) with (%d) points of radiation.} {#SAY COLLECT NOW: RAD %3 - TYPE %1 %2;#VARIABLE radActual {%3};#T+ {CORE|RADIATION|CAPTURE}}
#CLASS {CORE|RADIATION|CAPTURE}
#TRIGGER {-------------------------------------------------------------------------------} {#say GOODNIGHT COLLECTOR;#T- {CORE|RADIATION|CAPTURE}}
#TRIGGER {^Bonus      : Contains (%d) points of (%w).} {radAdd %1 %2}
#TRIGGER {^Bonus      : +(%d) to (%w).} {radAdd %1 %2}
#TRIGGER {^Bonus      : +(%d) (%w).} {radAdd %1 %2}
#TRIGGER {^Bonus      : +(%d)~% soak vs (%w) damage.} {radAdd %1 %2_soak}
#TRIGGER {^Bonus      : Auto-absorbs (%d) points of (%w) damage ~(see 'help armour'~).} {radAdd %1 %2_absorb}
#T- {CORE|RADIATION|CAPTURE}
#CLASS 0


In the alias radAdd I am having some type of issue, it is spitting out the entire array @radCostArray instead of checking the specific data designated with .%i, this only happens while the alias is triggered but typing in a value with the alias for example "radAdd 100 wits" will return 7 Question
Reply with quote
shalimar
GURU


Joined: 04 Aug 2002
Posts: 4715
Location: Pensacola, FL, USA

PostPosted: Tue Sep 12, 2017 10:35 am   
 
Your #IF expressions need to be inside (parenthesis)
Also, making use of #LOCAL $vars might speed up runtime a hair.
There is also no need to specify a range if you are going to test all values.

#LOOP %numitems(@radCostArray) {
$this=%db(@radCostArray,%i)
#IF ($this=@radTemp) {#SAY INDEXED AT %i}
}

You could also start it with:
#FORALL %dbkeys(@radCostArray) {
_________________
Discord: Shalimarwildcat
Reply with quote
shalimar
GURU


Joined: 04 Aug 2002
Posts: 4715
Location: Pensacola, FL, USA

PostPosted: Wed Sep 13, 2017 8:48 am   
 
oh, right zMUD doesn't have #LOCAL $vars, that's a CMUD thing.
_________________
Discord: Shalimarwildcat
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