Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2014
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 49.21 KB | None | 0 0
  1. @@ CSYS CODE
  2.  
  3. @switch/inline isdbref(u(csc))=0,{@tel create(Combat System Configurator <CSC>)=config(master_room)}
  4. &csc u(coi)=locate(config(master_room),Combat System Configurator <CSC>,TXxi)
  5. @parent u(csc)=u(coi)
  6. @set u(csc)=WIZARD !NO_COMMAND SAFE
  7. @lock/Command u(csc)=@[u(sgo)]/Command
  8.  
  9. @switch/inline isdbref(u(csdb))=0,{@tel create(Combat System Database <CSDB>)=u(csc)}
  10. &csdb u(coi)=locate(u(csc),Combat System Database <CSDB>,TXxi)
  11. @parent u(csdb)=u(coi)
  12. @set u(csdb)=WIZARD !NO_COMMAND SAFE
  13. @power u(csdb)=many_attribs
  14.  
  15. &VAR`MSGHEAD u(csc)=CSYSEDIT
  16. &RFN`HEADER u(csc)=header(%0,,CSYSEDIT`BORDER,CSYSEDIT`BORDERDOT,CSYSEDIT`BORDERTEXT)
  17. &RFN`SUBHEADER u(csc)=subheader(%0,,CSYSEDIT`BORDER,CSYSEDIT`BORDERDOT,CSYSEDIT`BORDERTEXT)
  18.  
  19. &MAINDB u(csc)=u(csdb)
  20.  
  21. @@ ******** Validation
  22. @@ %0 = data, %1 = target, %2 = attribute
  23.  
  24. &VAL`FORMSLOT u(csc)=@assert regmatchi(trim(%0),^(\\d+|\[a-z\])$)=@nspemit %#=msghead(v(VAR`MSGHEAD)) ERROR: Forms must be addressed by a positive integer value or single alphabetical character.;th setq(return,trim(%0))
  25. &VAL`FORMNAME u(csc)=th setq(return,trim(%0))
  26. &VAL`STAT u(csc)=@assert strlen(%0)=@include u(csc)/INC`PMSG=%#,{ERROR: No stat entered.};@include u(ccs)/INC`PARTIAL=before(%0,=),u(RET`STATLIST),|,v(VAR`MSGHEAD),stat,stat;th setq(statnum,u(RET`STATNUM,%q<stat>))
  27. &VAL`STATNUM u(csc)=@assert isint(%0)=@include u(csc)/INC`PMSG=%#,{ERROR: Stats must be Integers!};th setq(return,abs(trim(%0)))
  28. &VAL`CLASS u(csc)=@assert strlen(%0)=@include u(csc)/INC`PMSG=%#,{ERROR: No class entered.};@include u(ccs)/INC`PARTIAL=%0,u(RET`CLALIST),|,v(VAR`MSGHEAD),class,class;th setq(clanum,u(RET`CLANUM,%q<class>))
  29. &VAL`ATKSLOT u(csc)=@assert valnum(setr(slot,add(%0,0)))=@include u(csc)/INC`PMSG=%#,{ERROR: Slot not entered or invalid. Must be a whole positive number!}
  30. &VAL`ATKNAME u(csc)=@assert strlen(%0)=@include u(csc)/INC`PMSG=%#,{ERROR: Attack requires a name!};th setq(return,trim(%0))
  31. &VAL`ATKPOWER u(csc)=@assert strlen(%0)=@include u(csc)/INC`PMSG=%#,{ERROR: Power level required!};@assert isint(%0)=@include u(csc)/INC`PMSG=%#,{ERROR: Power Level must be an integer!};th setq(return,abs(trim(%0)))
  32. &VAL`ATKACC u(csc)=@assert strlen(%0)=@include u(csc)/INC`PMSG=%#,{ERROR: Accuracy required!};@assert isint(%0)=@include u(csc)/INC`PMSG=%#,{ERROR: Accuracy must be an integer!};th setq(return,abs(trim(%0)))
  33. &VAL`ATKTYPE u(csc)=@assert strlen(%0)=@include u(csc)/INC`PMSG=%#,{ERROR: Type empty!};@include u(ccs)/INC`PARTIAL=%0,u(RET`TYPLIST),|,v(VAR`MSGHEAD),type,type;th setq(typnum,u(RET`TYPNUM,%q<type>))
  34. &VAL`ELEMENT u(csc)=@assert strlen(%0)=@include u(csc)/INC`PMSG=%#,{ERROR: Element empty!};@include u(ccs)/INC`PARTIAL=%0,u(RET`ELELIST),|,v(VAR`MSGHEAD),element,element;th setq(elenum,u(RET`ELENUM,%q<element>))
  35. &VAL`ELEMENT`LIST u(csc)=@assert strlen(%0)=@include u(csc)/INC`PMSG=%#,{ERROR: Element list empty!};@dolist/inline %0={@include u(csc)/VAL`ELEMENT=%i0;th setq(elelist,trim(cat(%q<elelist>,%q<element>)),elenumlist,trim(cat(%q<elenumlist>,%q<elenum>)))}
  36.  
  37. &VAL`ATKSTRING u(csc)=@include u(csc)/VAL`ATKNAME=elements(%0,1,/);th setq(atkname,%q<return>);@include u(csc)/VAL`ATKTYPE=elements(%0,2,/);th setq(atktype,%q<typnum>);@include u(csc)/VAL`ELEMENT`LIST=elements(%0,3,/);th setq(atkele,%q<elenumlist>);@include u(csc)/VAL`ATKPOWER=elements(%0,4,/);th setq(atkpower,%q<return>);@include u(csc)/VAL`ATKACC=elements(%0,5,/);th setq(atkacc,%q<return>)
  38.  
  39. &VAL`CATEGORY u(csc)=@assert strlen(%0)=@include u(csc)/INC`PMSG=%#,{ERROR: Category empty!};@include u(ccs)/INC`PARTIAL=%0,u(RET`CATLIST,%1,|),|,v(VAR`MSGHEAD),category,category;th setq(catnum,u(RET`CATNUM,%q<category>,%1))
  40. &VAL`CATEGORY`LIST u(csc)=@assert strlen(%0)=@include u(csc)/INC`PMSG=%#,{ERROR: Category list empty!};@dolist/inline %0={@include u(csc)/VAL`CATEGORY=%i0,%1;th setq(catlist,trim(cat(%q<catlist>,%q<category>)));th setq(catnumlist,trim(cat(%q<catnumlist>,%q<catnum>)))}
  41.  
  42. &VAL`TAG u(csc)=@assert strlen(%0)=@include u(csc)/INC`PMSG=%#,{ERROR: Tag empty!};@include u(ccs)/INC`PARTIAL=%0,u(RET`TAGLIST,%1,|),|,v(VAR`MSGHEAD),tag,tag;th setq(tagnum,u(RET`TAGNUM,%q<tag>,%1))
  43. &VAL`TAG`LIST u(csc)=@assert strlen(%0)=@include u(csc)/INC`PMSG=%#,{ERROR: Tag list empty!};@dolist/inline %0={@include u(csc)/VAL`TAG=%i0,%1;th setq(taglist,trim(cat(%q<taglist>,%q<tag>)));th setq(tagnumlist,trim(cat(%q<tagnumlist>,%q<tagnum>)))}
  44.  
  45. &VAL`PARASTRING u(csc)=th setq(options,iter(lattr(u(csc)/VAL`PARA`*),last(%i0,`),%b,|));@dolist/inline/delimit , %2={@include u(ccs)/INC`PARTIAL=before(%i0,/),%q<options>,|,v(VAR`MSGHEAD),para,para;@include u(csc)/VAL`PARA`%q<para>=after(%i0,/)}
  46.  
  47. &VAL`PARA`INFLICTS u(csc)=@include u(csc)/DB`SEARCH=elements(%0,1,/),E;@assert cor(not(strlen(elements(%0,2,/))),regmatchi(elements(%0,2,/),^(X|\\d+)$))=@include u(csc)/INC`PMSG=%#,{ERROR: Status Effect chance must be blank, an integer, or X.};@switch/inline t(strlen(elements(%0,2,/)))[t(isint(elements(%0,2,/)))]=11,{th setq(return,abs(trim(elements(%0,2,/))))},10,{th setq(return,trim(elements(%0,2,/)))},00,{th setq(return,)}
  48. &VAL`PARA`CLEARS u(csc)=@include u(csc)/VAL`TAG`LIST=elements(%0,1,/),E;@assert cor(not(strlen(elements(%0,2,/))),regmatchi(elements(%0,2,/),^(X|\\d+)$))=@include u(csc)/INC`PMSG=%#,{ERROR: Status Effect chance must be blank, an integer, or X.};@switch/inline t(strlen(elements(%0,2,/)))[t(isint(elements(%0,2,/)))]=11,{th setq(return,abs(trim(elements(%0,2,/))))},10,{th setq(return,trim(elements(%0,2,/)))},00,{th setq(return,)}
  49. &VAL`PARA`CANCELS u(csc)=@include u(csc)/VAL`PARA`CLEARS
  50. &VAL`PARA`ADOPTS u(csc)=@include u(csc)/VAL`PARA`INFLICTS
  51. &VAL`PARA`AOE u(csc)=@assert strlen(elements(%0,1,/))=@include u(csc)/INC`PMSG=%#,{ERROR: No AOE value entered.};@assert valnum(elements(%0,1,/))=@include u(csc)/INC`PMSG=%#,{ERROR: AOE must be a positive integer.};th setq(return,abs(trim(elements(%0,1,/))))
  52. &VAL`PARA`MPBUST u(csc)=@include u(csc)/VAL`PERSTRING=elements(%0,1,/),MPBUST
  53. &VAL`PARA`HPSIPHON u(csc)=@include u(csc)/VAL`PERSTRING=elements(%0,1,/),HPSIPHON
  54. &VAL`PARA`MPSIPHON u(csc)=@include u(csc)/VAL`PERSTRING=elements(%0,1,/),MPSIPHON
  55. &VAL`PARA`REVIVE u(csc)=@include u(csc)/VAL`PERSTRING=elements(%0,1,/),REVIVE
  56. &VAL`PARA`DAMAGE u(csc)=@include u(csc)/VAL`PERSTRING=elements(%0,1,/),DAMAGE
  57. &VAL`PARA`HPCOST u(csc)=@include u(csc)/VAL`PERSTRING=elements(%0,1,/),HPCOST
  58. &VAL`PARA`MPCOST u(csc)=@include u(csc)/VAL`PERSTRING=elements(%0,1,/),MPCOST
  59.  
  60. &VAL`PERSTRING u(csc)=@assert cor(regmatchi(%0,^(\\d+(:\\d+)?)$),regmatchi(%0,^(\\d+p(:\\d+p)?)$))=@include u(csc)/INC`PMSG=%#,{ERROR: %1 Entry must be in <val>, <valP>, <min>:<max>, or <minP>:<maxP> format.};th setq(return,regeditalli(ucstr(trim(%0)),\\d+,abs($0)))
  61.  
  62. &VAL`EFFPARA u(csc)=th setq(options,iter(lattr(u(csc)/VAL`EFFPARA`*),last(%i0,`),%b,|));@dolist/inline/delimit , %2={@include u(ccs)/INC`PARTIAL=before(%i0,/),%q<options>,|,v(VAR`MSGHEAD),para,para;@include u(csc)/VAL`EFFPARA`%q<para>=after(%i0,/)}
  63.  
  64. &VAL`EFFPARA`STACKABLE u(csc)=@assert cor(not(strlen(%0)),regmatchi(%0,^(X|\\d+)$))=@include u(csc)/INC`PMSG=%#,{ERROR: Stackable must be blank, an integer, or X.};th setq(return,trim(%0))
  65. &VAL`EFFPARA`DURATION u(csc)=@assert cor(not(strlen(%0)),regmatchi(%0,^(X|\\d+)$))=@include u(csc)/INC`PMSG=%#,{ERROR: Duration must be blank, an integer, or X.};th setq(return,trim(%0))
  66. &VAL`EFFPARA`DOT u(csc)=@include u(csc)/VAL`PERSTRING=%0,DOT
  67. &VAL`EFFPARA`REGEN u(csc)=@include u(csc)/VAL`PERSTRING=%0,REGEN
  68. &VAL`EFFPARA`DRAIN u(csc)=@include u(csc)/VAL`PERSTRING=%0,DRAIN
  69. &VAL`EFFPARA`GAIN u(csc)=@include u(csc)/VAL`PERSTRING=%0,GAIN
  70. &VAL`EFFPARA`HPSIPHON u(csc)=@include u(csc)/VAL`PERSTRING=%0,HPSIPHON
  71. &VAL`EFFPARA`MPSIPHON u(csc)=@include u(csc)/VAL`PERSTRING=%0,MPSIPHON
  72. &VAL`EFFPARA`EVAMOD u(csc)=@include u(csc)/VAL`INTMOD=%0,EVAMOD
  73. &VAL`EFFPARA`ACCMOD u(csc)=@include u(csc)/VAL`INTMOD=%0,ACCMOD
  74. &VAL`EFFPARA`STATMOD u(csc)=@include u(csc)/VAL`STAT=elements(%0,1,/);@include u(csc)/VAL`INTMOD=elements(%0,2,/),EVAMOD
  75. &VAL`EFFPARA`ELERESMOD u(csc)=@include u(csc)/VAL`ELEMENT=elements(%0,1,/);@include u(csc)/VAL`INTMOD=elements(%0,2,/),EVAMOD
  76. &VAL`EFFPARA`ELEPOWMOD u(csc)=@include u(csc)/VAL`ELEMENT=elements(%0,1,/);@include u(csc)/VAL`INTMOD=elements(%0,2,/),EVAMOD
  77. &VAL`EFFPARA`COSTMOD u(csc)=@include u(csc)/VAL`INTMOD=%2,COSTMOD
  78. &VAL`EFFPARA`HEALMOD u(csc)=@include u(csc)/VAL`INTMOD=%2,HEALMOD
  79. &VAL`EFFPARA`FORMLOCK u(csc)=@include u(csc)/VAL`INTMOD=%2,FORMLOCK
  80. &VAL`EFFPARA`BACKLASH u(csc)=@include u(csc)/VAL`INTMOD=%2,BACKLASH
  81.  
  82.  
  83. &VAL`INTMOD u(csc)=@assert isint(%0)=@include u9csc)/INC`PMSG=%#,{ERROR: %1 Must be an integer.};th setq(return,trim(%0))
  84.  
  85. @@ ****** ELEMENT SECTION
  86. &ELE`1 u(maindb)=Physical
  87. &ELE`1`COLOR u(maindb)=n
  88. &ELE`2 u(maindb)=Gun
  89. &ELE`2`COLOR u(maindb)=n
  90. &ELE`3 u(maindb)=Force
  91. &ELE`3`COLOR u(maindb)=g
  92. &ELE`4 u(maindb)=Fire
  93. &ELE`4`COLOR u(maindb)=hr
  94. &ELE`5 u(maindb)=Ice
  95. &ELE`5`COLOR u(maindb)=hc
  96. &ELE`6 u(maindb)=Elec
  97. &ELE`6`COLOR u(maindb)=hy
  98. &ELE`7 u(maindb)=Mind
  99. &ELE`7`COLOR u(maindb)=m
  100. &ELE`8 u(maindb)=Expel
  101. &ELE`8`COLOR u(maindb)=hm
  102. &ELE`9 u(maindb)=Death
  103. &ELE`9`COLOR u(maindb)=hx
  104. &ELE`10 u(maindb)=Almighty
  105. &ELE`10`COLOR u(maindb)=hw
  106. &ELE`11 u(maindb)=Heal
  107. &ELE`11`COLOR u(maindb)=hg
  108.  
  109. @@ ******** STAT SECTION
  110. &STA`1 u(maindb)=PHY
  111. &STA`1`FULLNAME u(maindb)=Physical
  112. &STA`2 u(maindb)=END
  113. &STA`2`FULLNAME u(maindb)=Endurance
  114. &STA`3 u(maindb)=MAG
  115. &STA`3`FULLNAME u(maindb)=Magic
  116. &STA`4 u(maindb)=WIL
  117. &STA`4`FULLNAME u(maindb)=Willpower
  118. &STA`5 u(maindb)=AGI
  119. &STA`5`FULLNAME u(maindb)=Agility
  120. &STA`6 u(maindb)=LUK
  121. &STA`6`FULLNAME u(maindb)=Luck
  122.  
  123. @@ ******** ATK TYPE SECTION
  124. &TYP`1 u(maindb)=Physical
  125. &TYP`1`ATK u(maindb)=1
  126. &TYP`1`DEF u(maindb)=2
  127. &TYP`1`ACC u(maindb)=5
  128. &TYP`1`EVA u(maindb)=5
  129. &TYP`2 u(maindb)=Magical
  130. &TYP`2`ATK u(maindb)=3
  131. &TYP`2`DEF u(maindb)=4
  132. &TYP`2`ACC u(maindb)=5
  133. &TYP`2`EVA u(maindb)=5
  134. &TYP`3 u(maindb)=Elemental
  135. &TYP`3`ATK u(maindb)=1 3
  136. &TYP`3`DEF u(maindb)=2 4
  137. &TYP`3`ACC u(maindb)=5
  138. &TYP`3`EVA u(maindb)=5
  139. &TYP`4 u(maindb)=Healing
  140. &TYP`4`ATK u(maindb)=3
  141. &TYP`4`DEF u(maindb)=
  142. &TYP`4`ACC u(maindb)=
  143. &TYP`4`EVA u(maindb)=
  144. &TYP`4`AUTOHIT u(maindb)=1
  145. &TYP`4`HEALING u(maindb)=1
  146. &TYP`5 u(maindb)=Crippling
  147. &TYP`5`ATK u(maindb)=
  148. &TYP`5`DEF u(maindb)=
  149. &TYP`5`ACC u(maindb)=5
  150. &TYP`5`EVA u(maindb)=5
  151. &TYP`5`NODAMAGE u(maindb)=1
  152.  
  153. @@ ******** CLASS SECTION
  154. &CLA`1 u(maindb)=Human
  155. &CLA`2 u(maindb)=Demon
  156. &CLA`3 u(maindb)=Persona User
  157. &CLA`4 u(maindb)=Avatar Tuner
  158. &CLA`5 u(maindb)=Devil Summoner
  159.  
  160. @@ ******** Data Retrieval
  161. &RET`FORMNAME u(csc)=switch(%0,u(maindb),default(u(maindb)/F`%1,Unknown Form),strfirstof(get(%0/D`CSYS`FORM`%1),Unset Form))
  162. &RET`FORMNAME`FORMAL u(csc)=Form %1: '[u(RET`FORMNAME,%0,%1)]'
  163.  
  164. &RET`ATKNAME u(csc)=switch(%0,u(maindb),if(gt(%+,2),default(u(maindb)/F`%1`ATK`%2,Unknown Attack),default(u(maindb)/A`%1,Unknown Attack)),strfirstof(get(%0/D`CSYS`FORM`%1`ATK`%2),Unset Attack))
  165. &RET`ATKNAME`FORMAL u(csc)=Attack %1: '[if(gt(%+,2),u(RET`ATKNAME,%0,%1,%2),u(RET`ATKNAME,%0,%1))]'
  166.  
  167. &RET`EFFNAME u(csc)=default(u(maindb)/E`%1,Unknown Effect)
  168. &RET`EFFNAME`FORMAL u(csc)=Effect %1: '[u(RET`EFFNAME,%0,%1)]'
  169.  
  170. &RET`ELENAME u(csc)=localize(switch(isint(%0),1,if(strlen(get(u(maindb)/ELE`%0`COLOR)),ansi(get(u(maindb)/ELE`%0`COLOR),get(u(maindb)/ELE`%0)),get(u(maindb)/ELE`%0)),0,if(setr(elenum,u(RET`ELENUM,%0)),u(RET`ELENAME,%q<elenum>),*UNKNOWN*)))
  171. &RET`ELELIST u(csc)=iter(sortkey(#lambda/last(\%0,`),lattr(u(maindb)/ELE`*),n),get(u(maindb)/%i0),%b,strfirstof(%0,|))
  172. &RET`ELELIST`COLOR u(csc)=iter(sortkey(#lambda/last(\%0,`),lattr(u(maindb)/ELE`*),n),ansi(strfirstof(get(u(maindb)/%i0`COLOR),n),get(u(maindb)/%i0)),%b,strfirstof(%0,|))
  173. &RET`ELELISTNUM u(csc)=sort(iter(lattr(u(maindb)/ELE`*),last(%i0,`),%b,strfirstof(%0,|)),n,strfirstof(%0,|))
  174. &RET`ELENUM u(csc)=elements(filterbool(#lambda/strmatch(%0,get(u(maindb)/\%0)),lattr(u(maindb)/ELE`*)),2,`)
  175.  
  176. &RET`TYPNAME u(csc)=localize(switch(isint(%0),1,if(strlen(get(u(maindb)/TYP`%0`COLOR)),ansi(get(u(maindb)/TYP`%0`COLOR),get(u(maindb)/TYP`%0)),get(u(maindb)/TYP`%0)),0,if(setr(typnum,u(RET`TYPNUM,%0)),u(RET`TYPNAME,%q<typnum>),*UNKNOWN*)))
  177. &RET`TYPLIST u(csc)=iter(sortkey(#lambda/last(\%0,`),lattr(u(maindb)/TYP`*),n),get(u(maindb)/%i0),%b,strfirstof(%0,|))
  178. &RET`TYPLISTNUM u(csc)=sort(iter(lattr(u(maindb)/TYP`*),last(%i0,`),%b,strfirstof(%0,|)),n,strfirstof(%0,|))
  179. &RET`TYPNUM u(csc)=elements(filterbool(#lambda/strmatch(%0,get(u(maindb)/\%0)),lattr(u(maindb)/TYP`*)),2,`)
  180.  
  181. &RET`CLANAME u(csc)=localize(switch(isint(%0),1,if(strlen(get(u(maindb)/CLA`%0`COLOR)),ansi(get(u(maindb)/CLA`%0`COLOR),get(u(maindb)/CLA`%0)),get(u(maindb)/CLA`%0)),0,if(setr(clanum,u(RET`CLANUM,%0)),u(RET`CLANAME,%q<typnum>),*UNKNOWN*)))
  182. &RET`CLALIST u(csc)=iter(sortkey(#lambda/last(\%0,`),lattr(u(maindb)/CLA`*),n),get(u(maindb)/%i0),%b,strfirstof(%0,|))
  183. &RET`CLALISTNUM u(csc)=sort(iter(lattr(u(maindb)/CLA`*),last(%i0,`),%b,strfirstof(%0,|)),n,strfirstof(%0,|))
  184. &RET`CLANUM u(csc)=elements(filterbool(#lambda/strmatch(%0,get(u(maindb)/\%0)),lattr(u(maindb)/CLA`*)),2,`)
  185.  
  186. &RET`CATNAME u(csc)=localize(switch(isint(%0),1,if(strlen(get(u(maindb)/CAT`%1`%0`COLOR)),ansi(get(u(maindb)/CAT`%1`%0`COLOR),get(u(maindb)/CAT`%1`%0)),get(u(maindb)/CAT`%1`%0)),0,if(setr(clanum,u(RET`CATNUM,%0,%1)),u(RET`CATNAME,%q<catnum>,%1),*UNKNOWN*)))
  187. &RET`CATLIST u(csc)=iter(sortkey(#lambda/last(\%0,`),lattr(u(maindb)/CAT`%0`*),n),get(u(maindb)/%i0),%b,strfirstof(%1,|))
  188. &RET`CATLISTNUM u(csc)=sort(iter(lattr(u(maindb)/CAT`%0`*),last(%i0,`),%b,strfirstof(%0,|)),n,strfirstof(%0,|))
  189. &RET`CATNUM u(csc)=elements(filterbool(#lambda/strmatch(%0,get(u(maindb)/\%0)),lattr(u(maindb)/CAT`%1`*)),3,`)
  190.  
  191. &RET`TAGNAME u(csc)=localize(switch(isint(%0),1,if(strlen(get(u(maindb)/TAG`%1`%0`COLOR)),ansi(get(u(maindb)/TAG`%1`%0`COLOR),get(u(maindb)/TAG`%1`%0)),get(u(maindb)/TAG`%1`%0)),0,if(setr(clanum,u(RET`TAGNUM,%0,%1)),u(RET`TAGNAME,%q<tagnum>,%1),*UNKNOWN*)))
  192. &RET`TAGLIST u(csc)=iter(sortkey(#lambda/last(\%0,`),lattr(u(maindb)/TAG`%0`*),n),get(u(maindb)/%i0),%b,strfirstof(%1,|))
  193. &RET`TAGLISTNUM u(csc)=sort(iter(lattr(u(maindb)/TAG`%0`*),last(%i0,`),%b,strfirstof(%0,|)),n,strfirstof(%0,|))
  194. &RET`TAGNUM u(csc)=elements(filterbool(#lambda/strmatch(%0,get(u(maindb)/\%0)),lattr(u(maindb)/TAG`%1`*)),3,`)
  195.  
  196. &RET`STATNAME u(csc)=localize(switch(isint(%0),1,if(strlen(get(u(maindb)/STA`%0`COLOR)),ansi(get(u(maindb)/STA`%0`COLOR),get(u(maindb)/STA`%0)),get(u(maindb)/STA`%0)),0,if(setr(statnum,u(RET`STATNUM,%0)),u(RET`STATNAME,%q<statnum>),*UNKNOWN*)))
  197. &RET`STATLIST u(csc)=iter(sortkey(#lambda/last(\%0,`),lattr(u(maindb)/STA`*),n),get(u(maindb)/%i0),%b,strfirstof(%0,|))
  198. &RET`STATLISTNUM u(csc)=sort(iter(lattr(u(maindb)/STA`*),last(%i0,`),%b,strfirstof(%0,|)),n,strfirstof(%0,|))
  199. &RET`STATNUM u(csc)=elements(filterbool(#lambda/strmatch(%0,get(u(maindb)/\%0)),lattr(u(maindb)/STA`*)),2,`)
  200.  
  201. @@ ******** Data Setting
  202.  
  203. &SET`FORM`NAME u(csc)=@include u(csc)/VAL`FORMNAME=%2;@switch/inline %0=u(maindb),{&F`%1 u(maindb)=%q<return>},{@include u(csc)/INC`PMSG=%#,setr(msg,Renamed [name(%0)]'s [u(RET`FORMNAME`FORMAL,%0,%1)] to: %q<return>);@include u(csc)/INC`AMSG=%q<msg>;@include u(csc)/INC`PMSG=%0,{Your [u(RET`FORMNAME`FORMAL,%0,%1)] was renamed to: %q<return>},%0;&D`CSYS`FORM`%1 %0=%q<return>;&D`CSYS`FORM`%1`ID %0=X}
  204.  
  205. &SET`FORM`ID u(csc)=@switch/inline %0=u(maindb),{@include u(csc)/INC`PMSG=%#,setr(msg,Changed ID of [u(RET`FORMNAME`FORMAL,%0,%1)] to %2);@include u(csc)/INC`AMSG=%q<msg>;@wipe u(maindb)/F`%2;@include u(ccs)/INC`CPTREE=u(maindb),F`%1,u(maindb),F`%2},{@wipe %0/D`CSYS`FORM`%1;@include u(ccs)/INC`CPTREE=u(maindb),F`%1,%0,D`CSYS`FORM`%2;@include u(csc)/INC`PMSG=%#,setr(msg,name(%0) now has database form [u(RET`FORMNAME`FORMAL,u(maindb),%2)] in Form Slot %1);@include u(csc)/INC`AMSG=%q<msg>;@include u(csc)/INC`PMSG=%0,{New Form Obtained: [u(RET`FORMNAME`FORMAL,%0,%1)]}}
  206.  
  207. &SET`FORM`STAT u(csc)=@include u(csc)/VAL`STAT=%2;@include u(csc)/VAL`STATNUM=%3;@switch/inline %0=u(maindb),{@include u(csc)/INC`PMSG=%#,setr(msg,Changed DB [u(RET`FORMNAME`FORMAL,%0,%1)]'s %q<stat> Stat to: %q<return>);@include u(csc)/INC`AMSG=%q<msg>;&F`%1`STAT`%q<statnum> %0=%q<return>},{@include u(csc)/INC`PMSG=%#,setr(msg,Changed [name(%0)]'s [u(RET`FORMNAME`FORMAL,%0,%1)]'s %q<stat> Stat to: %q<return>);@include u(csc)/INC`AMSG=%q<msg>;@include u(csc)/INC`PMSG=%0,{[u(RET`FORMNAME`FORMAL,%0,%1)] Stat %q<stat> Changed to: %q<return>};&D`CSYS`FORM`%1`STAT`%q<statnum> %0=%q<return>;&D`CSYS`FORM`%1`ID %0=X}
  208.  
  209. &SET`FORM`CLASS u(csc)=@include u(csc)/VAL`CLASS=%2;@switch/inline %0=u(maindb),{@include u(csc)/INC`PMSG=%#,setr(msg,Changed DB [u(RET`FORMNAME`FORMAL,%0,%1)]'s Class to: %q<class>);@include u(csc)/INC`AMSG=%q<msg>;&F`%1`CLASS %0=%q<class>},{@include u(csc)/INC`PMSG=%#,setr(msg,Changed [name(%0)]'s [u(RET`FORMNAME`FORMAL,%0,%1)]'s Class to: %q<class>);@include u(csc)/INC`AMSG=%q<msg>;@include u(csc)/INC`PMSG=%0,{[u(RET`FORMNAME`FORMAL,%0,%1)] Class Changed to: %q<class>};&D`CSYS`FORM`%1`CLASS %0=%q<class>;&D`CSYS`FORM`%1`ID %0=X}
  210.  
  211. &SET`FORM`ELELIKE u(csc)=@include u(csc)/VAL`ELEMENT`LIST=%2;@switch/inline %0=u(maindb),{@include u(csc)/INC`PMSG=%#,setr(msg,Changed DB [u(RET`FORMNAME`FORMAL,%0,%1)]'s Element %3 to: %q<elelist>);@include u(csc)/INC`AMSG=%q<msg>;&F`%1`%3 %0=%q<elenumlist>},{@include u(csc)/INC`PMSG=%#,setr(msg,Changed [name(%0)]'s [u(RET`FORMNAME`FORMAL,%0,%1)]'s Element %3 to: %q<elelist>);@include u(csc)/INC`AMSG=%q<msg>;@include u(csc)/INC`PMSG=%0,{[u(RET`FORMNAME`FORMAL,%0,%1)] Element %2 Changed to: %q<elelist>};&D`CSYS`FORM`%1`%2 %0=%q<elenumlist>;&D`CSYS`FORM`%1`ID %0=X}
  212.  
  213. &SET`FORM`ATK`ID u(csc)=@switch/inline %0=u(maindb),{@include u(csc)/INC`PMSG=%#,setr(msg,Changed DB ID of [u(RET`FORMNAME`FORMAL,%0,%1)]'s ATK %2 to %3);@include u(csc)/INC`AMSG=%q<msg>;@wipe u(maindb)/F`%2`ATK`%3;@include u(ccs)/INC`CPTREE=u(maindb),F`%1`ATK`%2,u(maindb),F`%1`ATK`%3},{@wipe %0/D`CSYS`FORM`%1`ATK`%3;@include u(ccs)/INC`CPTREE=u(maindb),A`%3,%0,D`CSYS`FORM`%1`ATK`%2;@include u(csc)/INC`PMSG=%#,setr(msg,name(%0)'s [u(RET`FORMNAME`FORMAL,u(maindb),%2)] now has [u(RET`ATKNAME`FORMAL,u(maindb),%3)] in Slot %2);@include u(csc)/INC`AMSG=%q<msg>;@include u(csc)/INC`PMSG=%0,{[u(RET`FORMNAME`FORMAL,%0,%1)] now has [u(RET`ATKNAME`FORMAL,%0,%1,%2)]}}
  214.  
  215. &SET`FORM`ATK`STRING u(csc)=@include u(csc)/VAL`ATKSTRING=%3;@switch/inline %0=u(maindb),{@include u(csc)/INC`PMSG=%#,setr(msg,Changed DB [u(RET`FORMNAME`FORMAL,%0,%1)]'s ATK [u(RET`ATKNAME`FORMAL,u(maindb),%1,%2)] to: %3);@include u(csc)/INC`AMSG=%q<msg>;@include u(csc)/SET`ATK=u(maindb),F`%1`ATK`%2,%q<atkname>,%q<atktype>,%q<atkele>,%q<atkpower>,%q<atkacc>},{@include u(csc)/SET`ATK=%0,D`CSYS`FORM`%1`ATK`%2,%q<atkname>,%q<atktype>,%q<atkele>,%q<atkpower>,%q<atkacc>;@include u(csc)/INC`PMSG=%#,setr(msg,name(%0)'s [u(RET`FORMNAME`FORMAL,%0,%1)] now has [u(RET`ATKNAME`FORMAL,%0,%1,%2)]);@include u(csc)/INC`AMSG=%q<msg>;@include u(csc)/INC`PMSG=%0,{[u(RET`FORMNAME`FORMAL,%0,%1)] now has [u(RET`ATKNAME`FORMAL,%0,%1,%2)]}}
  216.  
  217. &SET`ATK`ID u(csc)=@include u(csc)/INC`PMSG=%#,setr(msg,Changed ID of [u(RET`ATKNAME`FORMAL,%0,%1)]' to %2);@include u(csc)/INC`AMSG=%q<msg>;@wipe %0/A`%2;@include u(ccs)/INC`MVTREE=%0,A`%1,%0,A`%2
  218.  
  219. &SET`ATK`STRING u(csc)=@include u(csc)/VAL`ATKSTRING=%2;@include u(csc)/INC`PMSG=%#,setr(msg,Changed DB [u(RET`ATKNAME`FORMAL,%0,%1)] to: %2);@include u(csc)/INC`AMSG=%q<msg>;@include u(csc)/SET`ATK=u(maindb),A`%1,%q<atkname>,%q<atktype>,%q<atkele>,%q<atkpower>,%q<atkacc>
  220.  
  221. &SET`ATK u(csc)=@wipe %0/%1;&%1 %0=%2;&%1`TYPE %0=%3;&%1`ELEMENT %0=%4;&%1`POWER %0=%5;&%1`ACCURACY %0=%6
  222.  
  223. &SET`FORM`ATK`PARA u(csc)=@include u(csc)/VAL`PARASTRING=%3;@switch/inline %0=u(maindb),{@include u(csc)/INC`PMSG=%#,setr(msg,Changed DB [u(RET`FORMNAME`FORMAL,%0,%1)]'s ATK [u(RET`ATKNAME`FORMAL,u(maindb),%1,%2)] PARAMETERS to: %3);@include u(csc)/INC`AMSG=%q<msg>;@include u(csc)/SET`PARA=u(maindb),F`%1`ATK`%2,%3},{@include u(csc)/SET`PARA=%0,D`CSYS`FORM`%1`ATK`%2,%3;@include u(csc)/INC`PMSG=%#,setr(msg,name(%0)'s [u(RET`FORMNAME`FORMAL,%0,%1)] now has [u(RET`ATKNAME`FORMAL,%0,%1,%2)]);@include u(csc)/INC`AMSG=%q<msg>;@include u(csc)/INC`PMSG=%0,{[u(RET`FORMNAME`FORMAL,%0,%1)] now has [u(RET`ATKNAME`FORMAL,%0,%1,%2)]}}
  224.  
  225. &SET`ATK`PARA u(csc)=@include u(csc)/VAL`PARASTRING=%2;@include u(csc)/INC`PMSG=%#,setr(msg,Changed DB [u(RET`ATKNAME`FORMAL,%0,%1)] PARAMETERS to: %2);@include u(csc)/INC`AMSG=%q<msg>;@include u(csc)/SET`PARA=u(maindb),A`%1,%2
  226.  
  227. &SET`PARA u(csc)=@dolist/inline INFLICTS CLEARS ADOPTS CANCELS AOE MPBUST HPSIPHON MPSIPHON REVIVE DAMAGE HPCOST MPCOST={@wipe %0/%1`%i0};th setq(options,iter(lattr(u(csc)/SET`PARA`DO`*),last(%i0,`),%b,|));@dolist/inline/delimit , %2={@include u(ccs)/INC`PARTIAL=before(%i0,/),%q<options>,|,v(VAR`MSGHEAD),para,para;@include u(csc)/SET`PARA`DO`%q<para>=%0,%1,after(%i0,/)}
  228.  
  229. &SET`PARA`DO`INFLICTS u(csc)=@include u(csc)/VAL`PARA`INFLICTS=%2;&%1`INFLICTS`%q<id> %0=%q<return>
  230. &SET`PARA`DO`ADOPTS u(csc)=@include u(csc)/VAL`PARA`ADOPTS=%2;&%1`ADOPTS`%q<id> %0=%q<return>
  231. &SET`PARA`DO`CLEARS u(csc)=@include u(csc)/VAL`PARA`CLEARS=%2;&%1`CLEARS %0=%q<tagnumlist>;&%1`CLEARS`CHANCE %0=%q<return>
  232. &SET`PARA`DO`CANCELS u(csc)=@include u(csc)/VAL`PARA`CANCELS=%2;&%1`CANCELS %0=%q<tagnumlist>;&%1`CANCELS`CHANCE %0=%q<return>
  233. &SET`PARA`DO`AOE u(csc)=@include u(csc)/VAL`PARA`AOE=%2;&%1`AOE %0=%q<return>
  234. &SET`PARA`DO`MPBUST u(csc)=@include u(csc)/VAL`PARA`MPBUST=%2;&%1`MPBUST %0=%q<return>
  235. &SET`PARA`DO`HPSIPHON u(csc)=@include u(csc)/VAL`PARA`HPSIPHON=%2;&%1`HPSIPHON %0=%q<return>
  236. &SET`PARA`DO`MPSIPHON u(csc)=@include u(csc)/VAL`PARA`MPSIPHON=%2;&%1`MPSIPHON %0=%q<return>
  237. &SET`PARA`DO`REVIVE u(csc)=@include u(csc)/VAL`PARA`REVIVE=%2;&%1`REVIVE %0=%q<return>
  238. &SET`PARA`DO`DAMAGE u(csc)=@include u(csc)/VAL`PARA`DAMAGE=%2;&%1`DAMAGE %0=%q<return>
  239. &SET`PARA`DO`HPCOST u(csc)=@include u(csc)/VAL`PARA`HPCOST=%2;&%1`HPCOST %0=%q<return>
  240. &SET`PARA`DO`MPCOST u(csc)=@include u(csc)/VAL`PARA`MPCOST=%2;&%1`MPCOST %0=%q<return>
  241.  
  242. &SET`EFF`PARA u(csc)=@dolist/inline STACKABLE DURATION DOT REGEN DRAIN GAIN HPSIPHON MPSIPHON EVAMOD ACCMOD STATMOD ELERESMOD ELEPOWMOD={@wipe %0/%1`%i0};th setq(options,iter(lattr(u(csc)/SET`EFF`PARA`DO`*),last(%i0,`),%b,|));@dolist/inline/delimit , %3={@include u(ccs)/INC`PARTIAL=before(%i0,/),%q<options>,|,v(VAR`MSGHEAD),para,para;@include u(csc)/SET`EFF`PARA`DO`%q<para>=%0,%1,after(%i0,/)}
  243.  
  244. &SET`EFF`PARA`DO`STACKABLE u(csc)=@include u(csc)/VAL`EFFPARA`STACKABLE=%2;&%1`STACKABLE %0=%q<return>
  245. &SET`EFF`PARA`DO`DURATION u(csc)=@include u(csc)/VAL`EFFPARA`DURATION=%2;&%1`DURATION %0=%q<return>
  246. &SET`EFF`PARA`DO`DOT u(csc)=@include u(csc)/VAL`EFFPARA`DOT=%2;&%1`DOT %0=%q<return>
  247. &SET`EFF`PARA`DO`REGEN u(csc)=@include u(csc)/VAL`EFFPARA`REGEN=%2;&%1`REGEN %0=%q<return>
  248. &SET`EFF`PARA`DO`DRAIN u(csc)=@include u(csc)/VAL`EFFPARA`DRAIN=%2;&%1`DRAIN %0=%q<return>
  249. &SET`EFF`PARA`DO`GAIN u(csc)=@include u(csc)/VAL`EFFPARA`GAIN=%2;&%1`GAIN %0=%q<return>
  250. &SET`EFF`PARA`DO`HPSIPHON u(csc)=@include u(csc)/VAL`PARA`HPSIPHON=%2;&%1`HPSIPHON %0=%q<return>
  251. &SET`EFF`PARA`DO`MPSIPHON u(csc)=@include u(csc)/VAL`PARA`MPSIPHON=%2;&%1`MPSIPHON %0=%q<return>
  252. &SET`EFF`PARA`DO`EVAMOD u(csc)=@include u(csc)/VAL`PARA`EVAMOD=%2;&%1`MPSIPHON %0=%q<return>
  253. &SET`EFF`PARA`DO`ACCMOD u(csc)=@include u(csc)/VAL`PARA`ACCMOD=%2;&%1`MPSIPHON %0=%q<return>
  254. &SET`EFF`PARA`DO`STATMOD u(csc)=@include u(csc)/VAL`PARA`STATMOD=%2;&%1`STATMOD`%q<statnum> %0=%q<return>
  255. &SET`EFF`PARA`DO`ELERESMOD u(csc)=@include u(csc)/VAL`PARA`ELERESMOD=%2;&%1`ELERESMOD`%q<elenum> %0=%q<return>
  256. &SET`EFF`PARA`DO`ELEPOWMOD u(csc)=@include u(csc)/VAL`PARA`ELEPOWMOD=%2;&%1`ELEPOWMOD`%q<elenum> %0=%q<return>
  257. &SET`EFF`PARA`DO`COSTMOD u(csc)=@include u(csc)/VAL`PARA`MPSIPHON=%2;&%1`COSTMOD %0=%q<return>
  258. &SET`EFF`PARA`DO`HEALMOD u(csc)=@include u(csc)/VAL`PARA`MPSIPHON=%2;&%1`HEALMOD %0=%q<return>
  259. &SET`EFF`PARA`DO`FORMLOCK u(csc)=@include u(csc)/VAL`PARA`FORMLOCK=%2;&%1`FORMLOCK %0=%q<return>
  260. &SET`EFF`PARA`DO`BACKLASH u(csc)=@include u(csc)/VAL`PARA`BACKLASH=%2;&%1`BACKLASH %0=%q<return>
  261.  
  262.  
  263.  
  264.  
  265.  
  266. @@ ******** Messaging
  267. &INC`AMSG u(csc)=@nscemit/noisy u(CMO`STAFFREP)=ansi(h,\[[name(firstof(%1,%#))]\]) %0
  268.  
  269. &INC`PMSG u(csc)=@nspemit %0=msghead(v(VAR`MSGHEAD)) %1
  270.  
  271. @@ ******** Character Editor
  272. &CMD`+SELECT u(csc)=$^\+select(?\: +(.+?))?(?\:=(.*))?$:@include u(ccs)/INC`CHECKPC=%1,1,v(VAR`MSGHEAD);@include u(csc)/VAL`FORMSLOT=%2;&D`SELECT %#=%q<t1objid> %2 [secs()];@nspemit %#=announce(v(VAR`MSGHEAD)) You are now managing %q<t1name>'s Form %2: '[default(%q<t1>/D`CSYS`FORM`%2,Unset Form)]'
  273. @set u(csc)/CMD`+SELECT=regexp
  274.  
  275. &CMD`+SET u(csc)=$^\+(add|set|rem)(\S+)(?\: +(.*))?$:@assert hasattrval(%#/D`SELECT)=@include u(csc)/INC`PMSG=%#,{ERROR: You are not managing anyone's forms!};@assert isobjid(setr(target,elements(setr(select,get(%#/D`SELECT)),1)))=@include u(csc)/INC`PMSG=%#,{ERROR: Your selection is invalid. This could happen if the character was nuked?};@break gte(sub(secs(),last(elements(%q<select>,3))),mul(60,60))=@include u(csc)/INC`PMSG=%#,{ERROR: Selection has timed out. Please Choose again with +select!};@include u(ccs)/INC`CHECKPC=%q<target>,1,v(VAR`MSGHEAD);th setq(form,elements(%q<select>,2));@include u(ccs)/INC`PARTIAL=%2,v(VAR`SET`%1),|,v(VAR`MSGHEAD),option,option;@include/nobreak u(csc)/CHAR`%1`%q<option>=trim(%3);&D`SELECT %#=elements(%q<select>,1 2) [secs()]
  276. @set u(csc)/CMD`+SET=regexp
  277.  
  278. &VAR`SET`ADD u(csc)=TRAIT
  279. &VAR`SET`SET u(csc)=NAME|ID|STAT|ATK|PARA|CLASS|WEAK|RESIST|NULL
  280. &VAR`SET`REM u(csc)=FORM|ATK|TRAIT
  281.  
  282. &CHAR`SET`NAME u(csc)=@include u(csc)/SET`FORM`NAME=%q<t1>,%q<form>,%0
  283.  
  284. &CHAR`SET`ID u(csc)=@assert strlen(%0)=@include u(csc)/INC`PMSG=%#,{ERROR: What form will you link?};@include u(csc)/DB`SEARCH=%0,F,,1;@switch/inline t(nattr(%q<t1>/D`CSYS`FORM`%q<form>`**))=1,{@include u(ccs)/INC`VERIFY={[ansi(hr,WARNING:)] This will copy the form from the database to %q<t1name>'s slot [u(RET`FORMNAME`FORMAL,%q<t1>,%q<form>)], overwriting it. Is this okay? Enter the same command again within ten seconds to verify!},CSYS SET ID %q<t1> %q<form> %0,v(VAR`MSGHEAD)};@include u(csc)/SET`FORM`ID=%q<t1>,%q<form>,%q<id>
  285.  
  286. &CHAR`SET`STAT u(csc)=@include u(csc)/SET`FORM`STAT=%q<t1>,%q<form>,before(%0,=),after(%0,=)
  287.  
  288. &CHAR`SET`CLASS u(csc)=@include u(csc)/SET`FORM`CLASS=%q<t1>,%q<form>,%0
  289.  
  290. &CHAR`SET`ATK u(csc)=@include u(csc)/VAL`ATKSLOT=before(%0,=);@switch/inline words(after(%0,=),/)=1,{@include u(csc)/DB`SEARCH=before(%0,/),A,,1;@include u(csc)/SET`FORM`ATK`ID=%q<t1>,%q<form>,%q<slot>,%q<id>},{@include u(csc)/SET`FORM`ATK`STRING=%q<t1>,%q<form>,%q<slot>,after(%0,=)}
  291. &CHAR`SET`PARA u(csc)=@include u(csc)/VAL`ATKSLOT=before(%0,=);@include u(csc)/SET`FORM`PARA=%q<t1>,%q<form>,%q<slot>,after(%0,=)
  292.  
  293.  
  294. &CHAR`SET`WEAK u(csc)=@include u(csc)/SET`FORM`ELELIKE=%q<t1>,%q<form>,%0,WEAK
  295. &CHAR`SET`RESIST u(csc)=@include u(csc)/SET`FORM`ELELIKE=%q<t1>,%q<form>,%0,RESIST
  296. &CHAR`SET`NULL u(csc)=@include u(csc)/SET`FORM`ELELIKE=%q<t1>,%q<form>,%0,NULL
  297.  
  298. @@ ******* CSYS EDIT
  299. &CMD`+CSYSEDIT u(csc)=$^\+(eff|atk|def|frm|tra)(?\:/(\S+)?)?(?\: +(.+?))?$:@include u(ccs)/INC`PARTIAL=%2,setunion(get(u(csc)/VAR`%1`PLAYFLAGS),if(isadmin(%#),get(u(csc)/VAR`%1`ADMINFLAGS)),|,|),|,%1,switch,switch;@include u(csc)/[ucstr(%1)]`[strfirstof(%q<switch>,MAIN)]=before(%3,=),after(%3,=),%3,switch(%1,EFF,Effect,ATK,Attack,DEF,Defense,FRM,Form,CHAR,Character,TRA,Trait),switch(%1,EFF,E,ATK,A,DEF,D,FRM,F,CHAR,C,TRA,T),switch(%1,ATK,ATK,EFF,EFF,DEF,DEF,FRM,FRM,TRA,TRA)
  300. @set u(csc)/CMD`+CSYSEDIT=regexp
  301. @@ %0 - lsargs, %1 - rsargs, %2 - args, %3 - mode name, %4 - mode attribute root, %5 - code root
  302.  
  303. &VAR`ATK`ADMINFLAGS u(csc)=SET|RENAME|PARA|WIPE|UPDATE|CATEGORY|MAKECATEGORY|RENCATEGORY|DELCATEGORY|DESC|SEARCH|CATDESC|MAKETAG|RENTAG|DELTAG|TAGDESC|TAGS|ADDTAG
  304. &VAR`EFF`ADMINFLAGS u(csc)=ADD|PARA|WIPE|UPDATE|CATEGORY|MAKECATEGORY|RENCATEGORY|DELCATEGORY|DESC|SEARCH|CATDESC|MAKETAG|RENTAG|DELTAG|TAGDESC|TAGS|ADDTAG
  305. &VAR`TRA`ADMINFLAGS u(csc)=ADD|SET|WIPE|CATEGORY|MAKECATEGORY|RENCATEGORY|DELCATEGORY|DESC|SEARCH|CATDESC|MAKETAG|RENTAG|DELTAG|TAGDESC|TAGS|ADDTAG
  306. &VAR`FRM`ADMINFLAGS u(csc)=ADD|SET|WIPE|UPDATE|CATEGORY|MAKECATEGORY|RENCATEGORY|DELCATEGORY|DESC|SEARCH|CATDESC|MAKETAG|RENTAG|DELTAG|TAGDESC|TAGS|ADDTAG
  307. &VAR`DEF`ADMINFLAGS u(csc)=SET|PARA|WIPE|UPDATE|CATEGORY|MAKECATEGORY|RENCATEGORY|DELCATEGORY|DESC|SEARCH|CATDESC|MAKETAG|RENTAG|DELTAG|TAGDESC|TAGS|ADDTAG
  308.  
  309. &DB`SEARCH u(csc)=@assert strlen(%0)=@include u(csc)/INC`PMSG=%#,{ERROR: Nothing entered to search for.};@switch/inline t(%2)[valnum(%0)]=00,{@assert words(setr(results,if(%3,wildgrepi(u(maindb),%1`*,%0*),filterbool(#lambda/strmatch(%0,get(u(maindb)/%1`\%0)),lattr(u(maindb)/%1`*)))))=@include u(csc)/INC`PMSG=%#,{ERROR: '%0' did not match anything.};@break gt(%q<results>,1)=@include u(csc)/INC`PMSG=%#,{ERROR: '%0' matched multiple items: [itemize(iter(%q<results>,last(%i0,`) '[get(u(maindb)/%i0)]',%b,|),|,and,\,)];th setq(id,last(%q<results>,`))}},01,{@assert hasattr(u(maindb),%1`%0)=@include u(csc)/INC`PMSG=%#,{ERROR: No entry for ID '%0'};th setq(id,%0)},10,{th setq(results,if(%3,wildgrepi(u(maindb),%1`*,%0*),filterbool(#lambda/strmatch(%0,get(u(maindb)/\%0)),lattr(u(maindb)/%1`*))))},11,{@switch/inline hasattr(u(maindb),%1`%0)=1,{th setq(id,%0),0,{th setq(id,%0,notfound,1)}}},{@break 1=@include u(csc)/INC`PMSG=%#,{ERROR: Entered text was not recognized.}}
  310.  
  311. &DBFUN`CATSEARCH u(csc)=sortkey(#lambda/abs(last(\%0,`)),iter(regrepi(u(maindb),%0`*`CATEGORY,\\b%1\\b),elements(%i0,2,`)),n)
  312.  
  313. &DBFUN`TAGSEARCH u(csc)=sortkey(#lambda/abs(last(\%0,`)),iter(regrepi(u(maindb),%0`*`TAGS,\\b%1\\b),elements(%i0,2,`)),n)
  314.  
  315. &DBFUN`UNCATSEARCH u(csc)=sortkey(#lambda/abs(last(\%0,`)),filterbool(#lambda/not(words(get(u(maindb)/\%0`CATEGORY))),lattr(u(maindb)/%0`*)),n)
  316.  
  317. @@ ****** Category section
  318. &CAT`MAKE u(csc)=@assert strlen(%0)=@include u(csc)/INC`PMSG=%#,{ERROR: Category name field is empty.};@assert regmatchi(%0,^(\\w+)$)=@include u(csc)/INC`PMSG=%#,{ERROR: Category names must be simple words.};@break strmatch(%0,None)=@include u(csc)/INC`PMSG=%#,{ERROR: 'None' is not an acceptable category name.};@include u(csc)/DB`SEARCH=%0,CAT`%4,1;@break strlen(%q<results>)=@include u(csc)/INC`PMSG=%#,{ERROR: Category names must be unique.};&[setr(newcat,CAT`%4`[nextslot(u(maindb),CAT`%4)])] u(maindb)=%0;@include u(csc)/INC`PMSG=%#,{%3 Category '%0' Created!};@include u(csc)/INC`AMSG={%3 Category '%0' Created}
  319. &CAT`RENAME u(csc)=@include u(csc)/VAL`CATEGORY=%0,%4;@assert strlen(%1)=@include u(csc)/INC`PMSG=%#,{ERROR: New name field empty.};@assert regmatchi(%1,^(\\w+)$)=@include u(csc)/INC`PMSG=%#,{ERROR: Category names must be simple words.};@break strmatch(%1,None)=@include u(csc)/INC`PMSG=%#,{ERROR: 'None' is not an acceptable category name.};@include u(csc)/DB`SEARCH=%1,CAT`%4,1;@break strlen(%q<results>)=@include u(csc)/INC`PMSG=%#,{ERROR: Category names must be unique.};&CAT`%4`%q<catnum> u(maindb)=%1;@include u(csc)/INC`PMSG=%#,{%3 Category '%q<category>' Renamed to: %1};@include u(csc)/INC`AMSG={%3 Category '%q<category>' Renamed to: %1}
  320. &CAT`DEL u(csc)=@include u(csc)/VAL`CATEGORY=%0,%4;@include u(ccs)/INC`VERIFY={ansi(hr,WARNING:) This will Delete %3 Category %q<category>. Any %3s depending on it will become uncategorized. Are you sure? Enter the same command again to verify!},%3 DELETE %q<category>,v(VAR`MSGHEAD);@wipe u(maindb)/CAT`%4`%q<catnum>;@switch/inline setr(count,words(setr(itmlist,u(DBFUN`CATSEARCH,%4,%q<catnum>))))=>0,{@dolist/inline %q<itmlist>={&%4`%i0`CATEGORY u(maindb)=setdiff(get(u(maindb)/%i0),%q<catnum>)}};@include u(csc)/INC`PMSG=%#,{%3 Category %q<category> deleted![if(%q<count>,%b%q<count> %3s were unlinked.)]};@include u(csc)/INC`AMSG={%3 Category %q<category> deleted![if(%q<count>,%b%q<count> %3s were unlinked.)]},%#
  321. &CAT`DESC u(csc)=@include u(csc)/VAL`CATEGORY=%0,%4;@assert strlen(%1)=@include u(csc)/INC`PMSG=%#,{ERROR: New Description field empty.};&CAT`%4`%q<catnum>`DESC u(maindb)=%1;@include u(csc)/INC`PMSG=%#,{%3 Category '%q<category>' Description changed to: %1};@include u(csc)/INC`AMSG={%3 Category '%q<category>' Description changed to: %1}
  322.  
  323. &CAT`LIST u(csc)=@nspemit %#=u(RFN`HEADER,%3 Database: Categories);@nspemit %#=align(4 13 40 10,ID,NAME,DESC,COUNT);@dolist/inline sortkey(#lambda/last(\%0,`),lattr(u(maindb)/CAT`%4`*))={@nspemit %#=align(4 13 40 5,pueblize(last(%i0,`),setr(pueblo,+%5 [get(u(maindb)/%i0)])),pueblize(get(u(maindb)/%i0),%q<pueblo>),get(u(maindb)/%i0`DESC),setr(count,words(setr(list,u(DBFUN`CATSEARCH,%4,last(%i0,`))))));th setq(total,add(%q<total>,%q<count>));th setq(tlist,setunion(%q<tlist>,%q<list>))};@nspemit %#=align(4 13 40 5,pueblize(???,setr(pueblo,+%5 Uncategorized)),pueblize(Uncategorized,%q<pueblo>),For all entries without a category.,setr(count,words(setr(list,filterbool(#lambda/not(strlen(get(u(maindb)/\%0`CATEGORY))),lattr(u(maindb)/%4`*))))));th setq(total,add(%q<total>,%q<count>));th setq(tlist,setunion(%q<tlist>,%q<list>));@nspemit %#=u(RFN`HEADER,Total %3 Entries: %q<total> ([words(%q<tlist>)] Unique))
  324.  
  325. @@ ****** Tag section
  326. &TAG`MAKE u(csc)=@assert strlen(%0)=@include u(csc)/INC`PMSG=%#,{ERROR: Tag name field is empty.};@assert regmatchi(%0,^(\\w+)$)=@include u(csc)/INC`PMSG=%#,{ERROR: Tag names must be simple words.};@break strmatch(%0,None)=@include u(csc)/INC`PMSG=%#,{ERROR: 'None' is not an acceptable Tag name.};@include u(csc)/DB`SEARCH=%0,TAG`%4,1;@break strlen(%q<results>)=@include u(csc)/INC`PMSG=%#,{ERROR: Tag names must be unique.};&[setr(newtag,TAG`%4`[nextslot(u(maindb),TAG`%4)])] u(maindb)=%0;@include u(csc)/INC`PMSG=%#,{%3 Tag '%0' Created!};@include u(csc)/INC`AMSG={%3 Tag '%0' Created}
  327. &TAG`RENAME u(csc)=@include u(csc)/VAL`TAG=%0,%4;@assert strlen(%1)=@include u(csc)/INC`PMSG=%#,{ERROR: New name field empty.};@assert regmatchi(%1,^(\\w+)$)=@include u(csc)/INC`PMSG=%#,{ERROR: Tag names must be simple words.};@break strmatch(%1,None)=@include u(csc)/INC`PMSG=%#,{ERROR: 'None' is not an acceptable Tag name.};@include u(csc)/DB`SEARCH=%1,TAG`%4,1;@break strlen(%q<results>)=@include u(csc)/INC`PMSG=%#,{ERROR: Tag names must be unique.};&TAG`%4`%q<tagnum> u(maindb)=%1;@include u(csc)/INC`PMSG=%#,{%3 Tag '%q<tag>' Renamed to: %1};@include u(csc)/INC`AMSG={%3 Tag '%q<tag>' Renamed to: %1}
  328. &TAG`DEL u(csc)=@include u(csc)/VAL`TAG=%0,%4;@include u(ccs)/INC`VERIFY={ansi(hr,WARNING:) This will Delete %3 Tag %q<tag>. Any %3s depending on it will become untagged. Are you sure? Enter the same command again to verify!},%3 DELETE %q<tag>,v(VAR`MSGHEAD);@wipe u(maindb)/TAG`%4`%q<tagnum>;@switch/inline setr(count,words(setr(itmlist,u(DBFUN`TAGSEARCH,%4,%q<tagnum>))))=>0,{@dolist/inline %q<itmlist>={&%4`%i0`TAG u(maindb)=setdiff(get(u(maindb)/%i0),%q<tagnum>)}};@include u(csc)/INC`PMSG=%#,{%3 Tag %q<tag> deleted![if(%q<count>,%b%q<count> %3s were unlinked.)]};@include u(csc)/INC`AMSG={%3 Tag %q<tag> deleted![if(%q<count>,%b%q<count> %3s were unlinked.)]},%#
  329. &TAG`DESC u(csc)=@include u(csc)/VAL`TAG=%0,%4;@assert strlen(%1)=@include u(csc)/INC`PMSG=%#,{ERROR: New Description field empty.};&TAG`%4`%q<tagnum>`DESC u(maindb)=%1;@include u(csc)/INC`PMSG=%#,{%3 Tag '%q<tag>' Description changed to: %1};@include u(csc)/INC`AMSG={%3 Tag '%q<tag>' Description changed to: %1}
  330.  
  331. &TAG`LIST u(csc)=@nspemit %#=u(RFN`HEADER,%3 Database: Tags);@nspemit %#=align(4 13 40 10,ID,NAME,DESC,COUNT);@dolist/inline sortkey(#lambda/last(\%0,`),lattr(u(maindb)/TAG`%4`*))={@nspemit %#=align(4 13 40 5,pueblize(last(%i0,`),setr(pueblo,+%5/tags [get(u(maindb)/%i0)])),pueblize(get(u(maindb)/%i0),%q<pueblo>),get(u(maindb)/%i0`DESC),setr(count1,words(setr(list1,u(DBFUN`TAGSEARCH,%4,last(%i0,`))))));th setq(total1,add(%q<total1>,%q<count1>));th setq(alist1,setunion(%q<alist1>,%q<list1>))};th setq(total1,add(%q<total1>,%q<count1>));th setq(tlist1,setunion(%q<tlist1>,%q<list1>));@nspemit %#=u(RFN`HEADER,Total %3 Tag Entries: %q<total1> ([words(%q<alist1>)] Unique))
  332.  
  333.  
  334. @@ ******* Item Section
  335. &ITM`ADD u(csc)=
  336. &ITM`RENAME u(csc)=@include u(csc)/DB`SEARCH=%0,%4;@assert strlen(%1)=@include u(csc)/INC`PMSG=%#,{};
  337. &ITM`WIPE u(csc)=@include u(csc)/DB`SEARCH=%0,%4;
  338. &ITM`CATEGORY u(csc)=@include u(csc)/DB`SEARCH=%0,%4;@assert strlen(%1)=@include u(csc)/INC`PMSG=%#,{ERROR: No categories entered to assign!};@include u(csc)/VAL`CATEGORY`LIST=%1,%4;&%4`%q<id>`CATEGORY u(maindb)=%q<catnumlist>
  339. &ITM`DESC u(csc)=@include u(csc)/DB`SEARCH=%0,%4;@assert strlen(%1)=@include u(csc)/INC`PMSG=%#,{ERROR: Description field empty.};&%4`%q<id> u(maindb)=%1;@include u(csc)/INC`PMSG=%#,{You set DB [u(RET`%5NAME`FORMAL)]'s Description to: %1};@include u(csc)/INC`AMSG={DB [u(RET`%5NAME`FORMAL)]'s Description set to: %1},%#
  340. &ITM`TAG u(csc)=@include u(csc)/DB`SEARCH=%0,%4;@assert strlen(%1)=@include u(csc)/INC`PMSG=%#,{ERROR: No Tags entered to assign!};@include u(csc)/VAL`TAG`LIST=%1,%4;&%4`%q<id>`TAGS u(maindb)=%q<tagnumlist>
  341.  
  342. @@ ******* ATTACK SECTION
  343. &ATK`MAIN u(csc)=@switch/inline t(strlen(%0))[valnum(%0)]=11,{@include u(csc)/%5`MAIN`ITEM},0*,{@include u(csc)/%5`MAIN`CATLIST},10,{@include u(csc)/%5`MAIN`CATEGORY}
  344.  
  345. &ATK`MAIN`CATLIST u(csc)=@include u(csc)/CAT`LIST
  346.  
  347. &ATK`MAIN`UNCATEGORIZED u(csc)=@nspemit %#=u(RFN`HEADER,%3 Database: Uncategorized Entries);@nspemit %#=align(4 12 8 3 3 3 10,ID,NAME,ELE,POW,ACC,STA,DESC);@include u(csc)/%5`CASCADE=%0,%1,%2,%3,%4,%5,u(DBFUN`UNCATSEARCH,%4);@nspemit %#=u(RFN`HEADER)
  348.  
  349. &ATK`MAIN`ITEM u(csc)=@include u(csc)/DB`SEARCH=%0,%4;@nspemit %#=u(RFN`HEADER,u(RET`ATKNAME`FORMAL,u(maindb),%q<id>));@nspemit %#=align(21 13,iter(ELEMENT TYPE POWER ACCURACY,align(>10 10,%i0:,switch(%i0,ELEMENT,iter(get(u(maindb)/%4`%q<id>`ELEMENT),u(RET`ELENAME,%i0)),TYPE,u(RET`TYPNAME,get(u(maindb)/%4`%q<id>`TYPE)),get(u(maindb)/%4`%q<id>`%i0))),%b,%r),);@switch/inline t(strlen(setr(effects,align(36 36,u(ATK`FUN`STATUSCOLADM,u(maindb),%4`%q<id>,INFLICTS),u(ATK`FUN`STATUSCOLADM,u(maindb),%4`%q<id>,ADOPTS)))))=1,{@nspemit %#=%R[align(36 36,INFLICTS,ADOPTS)];@nspemit %#=%q<effects>};@switch/inline t(strlen(setr(effects,align(36 36,u(ATK`FUN`STATUSCOLADM2,u(maindb),%4`%q<id>,CLEARS),u(ATK`FUN`STATUSCOLADM2,u(maindb),%4`%q<id>,CANCELS)))))=1,{@nspemit %#=%R[align(36 36,CLEARS,CANCELS)];@nspemit %#=%q<effects>};@nspemit %#=u(RFN`HEADER)
  350.  
  351. &ATK`FUN`STATUSCOLADM u(csc)=trim(iter(sortkey(#lambda/last(\%0,`),lattr(%0/%1`%2`*),n),align(20 4,pueblize([last(%i0,`)]: '[u(RET`EFFNAME,u(maindb),last(%i0,`))]',+eff [last(%i0,`)]),strfirstof(get(%0/%i0),DEF)\%),%b,%r),%r)
  352. &ATK`FUN`STATUSCOLADM2 u(csc)=trim(iter(sortkey(#lambda/last(\%0,`),lattr(%0/%1`%2`*),n),align(20 4,pueblize([last(%i0,`)]: '[u(RET`TAGNAME,E,last(%i0,`))]',+eff/tags [last(%i0,`)]),strfirstof(get(%0/%i0),DEF)\%),%b,%r),%r)
  353.  
  354. &ATK`CASCADE u(csc)=@nspemit %#=align(4 12 8 3 3 3 10,ID,NAME,ELE,POW,ACC,STA,DESC);@dolist/inline iter(%6,last(%i0,`))={@nspemit %#=align(4 12 8 3 3 10,pueblize(%i0,setr(pueblo,+%5 %i0)),pueblize(get(u(maindb)/%4`%i0),%q<pueblo>),iter(get(u(maindb)/%4`%i0`ELEMENT),u(RET`ELENAME,%i0)),get(u(maindb)/%4`%i0`POWER),get(u(maindb)/%4`%i0`ACCURACY),if(words(reglattr(u(maindb)/^%4`%i0`(INFLICTS|CLEARS|ADOPTS|CANCELS)`\\d+$)),Yes,No),get(u(maindb)/%4`%i0`DESC))}
  355.  
  356. &ATK`MAIN`CATEGORY u(csc)=@switch/inline %0=Uncategorized,{@include u(csc)/%5`MAIN`UNCATEGORIZED},{@include u(csc)/VAL`CATEGORY=%0,%4;@nspemit %#=u(RFN`HEADER,%3 Database: %q<category> Entries);@include u(csc)/%5`CASCADE=%0,%1,%2,%3,%4,%5,u(DBFUN`CATSEARCH,%4,%q<catnum>);@nspemit %#=u(RFN`HEADER)}
  357.  
  358. &ATK`SET u(csc)=@include u(csc)/VAL`ATKSLOT=%0;@include u(csc)/DB`SEARCH=%q<slot>,%4,1,1;@switch/inline words(%1,/)=1,{@include u(csc)/DB`SEARCH=%1,%4;@include u(ccs)/INC`VERIFY={ansi(hr,WARNING:) This will copy DB [u(RET`ATKNAME`FORMAL,u(maindb),%q<slot>)] to ID Slot %q<id>. Current attack there: [u(RET`ATKNAME`FORMAL,u(maindb),%q<id>)]. Are you sure? enter the same command again to continue.},DB %4 %q<slot> %q<id>,v(VAR`MSGHEAD);@include u(csc)/SET`ATK`ID=u(maindb),%q<slot>,%q<id>},{@include u(csc)/SET`ATK`STRING=u(maindb),%q<slot>,%1}
  359.  
  360. &ATK`PARA u(csc)=@include u(csc)/VAL`ATKSLOT=%0;@include u(csc)/DB`SEARCH=%q<slot>,%4;@include u(csc)/SET`ATK`PARA=u(maindb),,%q<id>,%1
  361.  
  362. &ATK`RENAME u(csc)=@include u(csc)/ITM`RENAME
  363. &ATK`WIPE u(csc)=@include u(csc)/ITM`WIPE
  364. &ATK`CATEGORY u(csc)=@include u(csc)/ITM`CATEGORY;@include u(csc)/INC`PMSG=%#,{Changed DB [u(RET`ATKNAME`FORMAL,u(maindb),%q<id>)]'s Category to: %q<catlist>};@include u(csc)/INC`AMSG={Changed DB [u(RET`ATKNAME`FORMAL,u(maindb),%q<id>)]'s Category to: %q<catlist>},%#
  365. &ATK`DESC u(csc)=@include u(csc)/ITM`DESC
  366.  
  367. &ATK`MAKECATEGORY u(csc)=@include u(csc)/CAT`MAKE
  368. &ATK`RENCATEGORY u(csc)=@include u(csc)/CAT`RENAME
  369. &ATK`DELCATEGORY u(csc)=@include u(csc)/CAT`DEL
  370. &ATK`CATDESC u(csc)=@include u(csc)/CAT`DESC
  371.  
  372. &ATK`TAGS u(csc)=@switch/inline t(strlen(%0))[valnum(%0)]=11,{@include u(csc)/%5`TAG`TAGLIST},0*,{@include u(csc)/%5`TAG`TAGS},10,{@include u(csc)/%5`TAG`TAGLIST}
  373. &ATK`TAG`TAGS u(csc)=@include u(csc)/TAG`LIST
  374. &ATK`TAG`TAGLIST u(csc)=@include u(csc)/VAL`TAG=%0,%4;@nspemit %#=u(RFN`HEADER,%3 Database: %q<tag> Tagged Entries);@include u(csc)/%5`CASCADE=%0,%1,%2,%3,%4,%5,u(DBFUN`TAGSEARCH,%4,%q<tagnum>);@nspemit %#=u(RFN`HEADER)
  375.  
  376. &ATK`ADDTAG u(csc)=@include u(csc)/ITM`TAG;@include u(csc)/INC`PMSG=%#,{Changed DB [u(RET`ATKNAME`FORMAL,u(maindb),%q<id>)]'s Tags to: %q<taglist>};@include u(csc)/INC`AMSG={Changed DB [u(RET`ATKNAME`FORMAL,u(maindb),%q<id>)]'s Tags to: %q<taglist>},%#
  377. &ATK`MAKETAG u(csc)=@include u(csc)/TAG`MAKE
  378. &ATK`RENTAG u(csc)=@include u(csc)/TAG`RENAME
  379. &ATK`DELTAG u(csc)=@include u(csc)/TAG`DEL
  380. &ATK`TAGDESC u(csc)=@include u(csc)/TAG`DESC
  381.  
  382. @@ ****** EFFECT SECTION
  383. &EFF`MAIN u(csc)=@switch/inline t(strlen(%0))[valnum(%0)]=11,{@include u(csc)/%5`MAIN`ITEM},0*,{@include u(csc)/%5`MAIN`CATLIST},10,{@include u(csc)/%5`MAIN`CATEGORY}
  384.  
  385. &EFF`MAIN`CATLIST u(csc)=@include u(csc)/CAT`LIST
  386.  
  387. &EFF`MAIN`UNCATEGORIZED u(csc)=@nspemit %#=u(RFN`HEADER,%3 Database: Uncategorized Entries);@include u(csc)/%5`CASCADE=%0,%1,%2,%3,%4,%5,u(DBFUN`UNCATSEARCH,%4);@nspemit %#=u(RFN`HEADER)
  388.  
  389. &EFF`CASCADE u(csc)=@nspemit %#=align(4 12 8 3 3 3 10,ID,NAME,ELE,POW,ACC,STA,DESC);@dolist/inline iter(%6,last(%i0,`))={@nspemit %#=align(4 12 8 3 3 10,pueblize(%i0,setr(pueblo,+%5 %i0)),pueblize(get(u(maindb)/%4`%i0),%q<pueblo>),iter(get(u(maindb)/%4`%i0`ELEMENT),u(RET`ELENAME,%i0)),get(u(maindb)/%4`%i0`POWER),get(u(maindb)/%4`%i0`ACCURACY),if(words(reglattr(u(maindb)/^%4`%i0`(INFLICTS|CLEARS|ADOPTS|CANCELS)`\\d+$)),Yes,No),get(u(maindb)/%4`%i0`DESC))}
  390.  
  391. &EFF`MAIN`ITEM u(csc)=@include u(csc)/DB`SEARCH=%0,%4;@nspemit %#=u(RFN`HEADER,u(RET`EFFNAME`FORMAL,u(maindb),%q<id>));@nspemit %#=align(21 13,iter(ELEMENT TYPE POWER ACCURACY,align(>10 10,%i0:,switch(%i0,ELEMENT,iter(get(u(maindb)/%4`%q<id>`ELEMENT),u(RET`ELENAME,%i0)),TYPE,u(RET`TYPNAME,get(u(maindb)/%4`%q<id>`TYPE)),get(u(maindb)/%4`%q<id>`%i0))),%b,%r),);@switch/inline t(strlen(setr(effects,align(36 36,u(ATK`FUN`STATUSCOLADM,u(maindb),%4`%q<id>,INFLICTS),u(ATK`FUN`STATUSCOLADM,u(maindb),%4`%q<id>,CLEARS)))))=1,{@nspemit %#=%R[align(36 36,INFLICTS,CLEARS)];@nspemit %#=%q<effects>};@switch/inline t(strlen(setr(effects,align(36 36,u(ATK`FUN`STATUSCOLADM,u(maindb),%4`%q<id>,ADOPTS),u(ATK`FUN`STATUSCOLADM,u(maindb),%4`%q<id>,CANCELS)))))=1,{@nspemit %#=%R[align(36 36,ADOPTS,CANCELS)];@nspemit %#=%q<effects>};@nspemit %#=u(RFN`HEADER)
  392.  
  393. &EFF`FUN`STATUSCOLADM u(csc)=trim(iter(sortkey(#lambda/last(\%0,`),lattr(%0/%1`%2`*),n),align(20 4,pueblize([last(%i0,`)]: '[u(RET`EFFNAME,u(maindb),last(%i0,`))]',+eff [last(%i0,`)]),strfirstof(get(%0/%i0),DEF)\%),%b,%r),%r)
  394.  
  395. &EFF`MAIN`CATEGORY u(csc)=@switch/inline %0=Uncategorized,{@include u(csc)/%5`MAIN`UNCATEGORIZED},{@include u(csc)/VAL`CATEGORY=%0,%4;@nspemit %#=u(RFN`HEADER,%3 Database: %q<category> Entries);@include u(csc)/%5`CASCADE=%0,%1,%2,%3,%4,%5,u(DBFUN`CATSEARCH,%4,%q<catnum>);@nspemit %#=u(RFN`HEADER)}
  396.  
  397. &EFF`ADD u(csc)=@include u(csc)/ITM`ADD
  398.  
  399. &EFF`PARA u(csc)=@include u(csc)/VAL`ATKSLOT=%0;@include u(csc)/DB`SEARCH=%q<slot>,%4;@include u(csc)/SET`EFF`PARA=u(maindb),%4`%q<id>,%q<id>,%1
  400.  
  401. &EFF`RENAME u(csc)=@include u(csc)/ITM`RENAME
  402. &EFF`WIPE u(csc)=@include u(csc)/ITM`WIPE
  403. &EFF`CATEGORY u(csc)=@include u(csc)/ITM`CATEGORY;@include u(csc)/INC`PMSG=%#,{Changed DB [u(RET`EFFNAME`FORMAL,u(maindb),%q<id>)]'s Category to: %q<catlist>};@include u(csc)/INC`AMSG={Changed DB [u(RET`EFFNAME`FORMAL,u(maindb),%q<id>)]'s Category to: %q<catlist>},%#
  404. &EFF`DESC u(csc)=@include u(csc)/ITM`DESC
  405.  
  406. &EFF`MAKECATEGORY u(csc)=@include u(csc)/CAT`MAKE
  407. &EFF`RENCATEGORY u(csc)=@include u(csc)/CAT`RENAME
  408. &EFF`DELCATEGORY u(csc)=@include u(csc)/CAT`DEL
  409. &EFF`CATDESC u(csc)=@include u(csc)/CAT`DESC
  410.  
  411. &EFF`TAGS u(csc)=@switch/inline t(strlen(%0))[valnum(%0)]=11,{@include u(csc)/%5`TAG`TAGLIST},0*,{@include u(csc)/%5`TAG`TAGS},10,{@include u(csc)/%5`TAG`TAGLIST}
  412. &EFF`TAG`TAGS u(csc)=@include u(csc)/TAG`LIST
  413. &EFF`TAG`TAGLIST u(csc)=@include u(csc)/VAL`TAG=%0,%4;@nspemit %#=u(RFN`HEADER,%3 Database: %q<tag> Tagged Entries);@include u(csc)/%5`CASCADE=%0,%1,%2,%3,%4,%5,u(DBFUN`TAGSEARCH,%4,%q<tagnum>);@nspemit %#=u(RFN`HEADER)
  414.  
  415. &EFF`ADDTAG u(csc)=@include u(csc)/ITM`TAG;@include u(csc)/INC`PMSG=%#,{Changed DB [u(RET`EFFNAME`FORMAL,u(maindb),%q<id>)]'s Tags to: %q<taglist>};@include u(csc)/INC`AMSG={Changed DB [u(RET`EFFNAME`FORMAL,u(maindb),%q<id>)]'s Tags to: %q<taglist>},%#
  416. &EFF`MAKETAG u(csc)=@include u(csc)/TAG`MAKE
  417. &EFF`RENTAG u(csc)=@include u(csc)/TAG`RENAME
  418. &EFF`DELTAG u(csc)=@include u(csc)/TAG`DEL
  419. &EFF`TAGDESC u(csc)=@include u(csc)/TAG`DESC
  420.  
  421.  
  422. @@ ****** FORM SECTION
  423. &FRM`MAIN u(csc)=@switch/inline t(strlen(%0))[valnum(%0)]=11,{@include u(csc)/%5`MAIN`ITEM},0*,{@include u(csc)/%5`MAIN`CATLIST},10,{@include u(csc)/%5`MAIN`CATEGORY}
  424.  
  425. &FRM`MAIN`CATLIST u(csc)=@include u(csc)/CAT`LIST
  426.  
  427. &FRM`MAIN`UNCATEGORIZED u(csc)=@nspemit %#=u(RFN`HEADER,%3 Database: Uncategorized Entries);@include u(csc)/%5`CASCADE=%0,%1,%2,%3,%4,%5,u(DBFUN`UNCATSEARCH,%4);@nspemit %#=u(RFN`HEADER)
  428.  
  429. &FRM`CASCADE u(csc)=@nspemit %#=align(4 12 8 3 3 3 10,ID,NAME,ELE,POW,ACC,STA,DESC);@dolist/inline iter(%6,last(%i0,`))={@nspemit %#=align(4 12 8 3 3 10,pueblize(%i0,setr(pueblo,+%5 %i0)),pueblize(get(u(maindb)/%4`%i0),%q<pueblo>),iter(get(u(maindb)/%4`%i0`ELEMENT),u(RET`ELENAME,%i0)),get(u(maindb)/%4`%i0`POWER),get(u(maindb)/%4`%i0`ACCURACY),if(words(reglattr(u(maindb)/^%4`%i0`(INFLICTS|CLEARS|ADOPTS|CANCELS)`\\d+$)),Yes,No),get(u(maindb)/%4`%i0`DESC))}
  430.  
  431. &FRM`MAIN`ITEM u(csc)=@include u(csc)/DB`SEARCH=%0,%4;@nspemit %#=u(RFN`HEADER,u(RET`EFFNAME`FORMAL,u(maindb),%q<id>));@nspemit %#=align(21 13,iter(ELEMENT TYPE POWER ACCURACY,align(>10 10,%i0:,switch(%i0,ELEMENT,iter(get(u(maindb)/%4`%q<id>`ELEMENT),u(RET`ELENAME,%i0)),TYPE,u(RET`TYPNAME,get(u(maindb)/%4`%q<id>`TYPE)),get(u(maindb)/%4`%q<id>`%i0))),%b,%r),);@switch/inline t(strlen(setr(effects,align(36 36,u(ATK`FUN`STATUSCOLADM,u(maindb),%4`%q<id>,INFLICTS),u(ATK`FUN`STATUSCOLADM,u(maindb),%4`%q<id>,CLEARS)))))=1,{@nspemit %#=%R[align(36 36,INFLICTS,CLEARS)];@nspemit %#=%q<effects>};@switch/inline t(strlen(setr(effects,align(36 36,u(ATK`FUN`STATUSCOLADM,u(maindb),%4`%q<id>,ADOPTS),u(ATK`FUN`STATUSCOLADM,u(maindb),%4`%q<id>,CANCELS)))))=1,{@nspemit %#=%R[align(36 36,ADOPTS,CANCELS)];@nspemit %#=%q<effects>};@nspemit %#=u(RFN`HEADER)
  432.  
  433. &FRM`FUN`STATUSCOLADM u(csc)=trim(iter(sortkey(#lambda/last(\%0,`),lattr(%0/%1`%2`*),n),align(20 4,pueblize([last(%i0,`)]: '[u(RET`EFFNAME,u(maindb),last(%i0,`))]',+eff [last(%i0,`)]),strfirstof(get(%0/%i0),DEF)\%),%b,%r),%r)
  434.  
  435. &FRM`MAIN`CATEGORY u(csc)=@switch/inline %0=Uncategorized,{@include u(csc)/%5`MAIN`UNCATEGORIZED},{@include u(csc)/VAL`CATEGORY=%0,%4;@nspemit %#=u(RFN`HEADER,%3 Database: %q<category> Entries);@include u(csc)/%5`CASCADE=%0,%1,%2,%3,%4,%5,u(DBFUN`CATSEARCH,%4,%q<catnum>);@nspemit %#=u(RFN`HEADER)}
  436.  
  437. &FRM`ADD u(csc)=@include u(csc)/ITM`ADD
  438.  
  439. &FRM`SET u(csc)=@include u(csc)/VAL`ATKSLOT=before(%0,/);@include u(csc)/DB`SEARCH=%q<slot>,%4;@include u(ccs)/INC`PARTIAL=elements(%0,2,/),STAT|CLASS|WEAK|RESIST|NULL|ATK|PARA,|,v(VAR`MSGHEAD),choice,choice;@include u(csc)/FRM`SET`%q<choice>=elements(%0,3 4 5 6 7 8 9,/,/),%1
  440.  
  441. &FRM`SET`STAT u(csc)=@include u(csc)/SET`FORM`STAT=u(maindb),%q<id>,%0,%1
  442. &FRM`SET`CLASS u(csc)=@include u(csc)/SET`FORM`CLASS=u(maindb),%q<id>,%1
  443. &FRM`SET`ATK u(csc)=@include u(csc)/VAL`ATKSLOT=%0;@include u(csc)/SET`FORM`ATK`STRING=u(maindb),%q<id>,%q<slot>,%1
  444. &FRM`SET`PARA u(csc)=@include u(csc)/VAL`ATKSLOT=%0;@include u(csc)/SET`ATK`PARA=u(maindb),%q<id>,%q<slot>,%1
  445.  
  446. &FRM`SET`WEAK u(csc)=@include u(csc)/SET`FORM`ELELIKE=u(maindb),%q<id>,%1,WEAK
  447. &FRM`SET`RESIST u(csc)=@include u(csc)/SET`FORM`ELELIKE=u(maindb),%q<id>,%1,RESIST
  448. &FRM`SET`NULL u(csc)=@include u(csc)/SET`FORM`ELELIKE=u(maindb),%q<id>,%1,NULL
  449.  
  450. &FRM`SET`STAT u(csc)=@include u(csc)/SET`FORM`ELELIKE=u(maindb),%q<id>,%0,%1
  451.  
  452. &FRM`RENAME u(csc)=@include u(csc)/ITM`RENAME
  453. &FRM`WIPE u(csc)=@include u(csc)/ITM`WIPE
  454. &FRM`CATEGORY u(csc)=@include u(csc)/ITM`CATEGORY;@include u(csc)/INC`PMSG=%#,{Changed DB [u(RET`FRMNAME`FORMAL,u(maindb),%q<id>)]'s Category to: %q<catlist>};@include u(csc)/INC`AMSG={Changed DB [u(RET`FRMNAME`FORMAL,u(maindb),%q<id>)]'s Category to: %q<catlist>},%#
  455. &FRM`DESC u(csc)=@include u(csc)/ITM`DESC
  456.  
  457. &FRM`MAKECATEGORY u(csc)=@include u(csc)/CAT`MAKE
  458. &FRM`RENCATEGORY u(csc)=@include u(csc)/CAT`RENAME
  459. &FRM`DELCATEGORY u(csc)=@include u(csc)/CAT`DEL
  460. &FRM`CATDESC u(csc)=@include u(csc)/CAT`DESC
  461.  
  462. &FRM`TAGS u(csc)=@switch/inline t(strlen(%0))[valnum(%0)]=11,{@include u(csc)/%5`TAG`TAGLIST},0*,{@include u(csc)/%5`TAG`TAGS},10,{@include u(csc)/%5`TAG`TAGLIST}
  463. &FRM`TAG`TAGS u(csc)=@include u(csc)/TAG`LIST
  464. &FRM`TAG`TAGLIST u(csc)=@include u(csc)/VAL`TAG=%0,%4;@nspemit %#=u(RFN`HEADER,%3 Database: %q<tag> Tagged Entries);@include u(csc)/%5`CASCADE=%0,%1,%2,%3,%4,%5,u(DBFUN`TAGSEARCH,%4,%q<tagnum>);@nspemit %#=u(RFN`HEADER)
  465.  
  466. &FRM`ADDTAG u(csc)=@include u(csc)/ITM`TAG;@include u(csc)/INC`PMSG=%#,{Changed DB [u(RET`FRMNAME`FORMAL,u(maindb),%q<id>)]'s Tags to: %q<taglist>};@include u(csc)/INC`AMSG={Changed DB [u(RET`FRMNAME`FORMAL,u(maindb),%q<id>)]'s Tags to: %q<taglist>},%#
  467. &FRM`MAKETAG u(csc)=@include u(csc)/TAG`MAKE
  468. &FRM`RENTAG u(csc)=@include u(csc)/TAG`RENAME
  469. &FRM`DELTAG u(csc)=@include u(csc)/TAG`DEL
  470. &FRM`TAGDESC u(csc)=@include u(csc)/TAG`DESC
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement