@@ @@ Updated d6 System @@ Softcoded by Dahan @@ @@ Common Functions Object(#11TLVXn) @@ Type: THING Flags: LINK_OK VISUAL SAFE NO_COMMAND @@ Owner: Dahan(#3PWXeAC"cm) Zone: *NOTHING* Pennies: Unlimited @@ Parent: *NOTHING* @@ Basic Lock [#3i]: =Dahan(#3PWXeAC"cm) @@ Powers: @@ Warnings checked: none @@ Created: Thu Sep 30 22:36:01 2004 @@ Last Modification: Thu Sep 30 23:42:21 2004 @@ Home: New Arrivals(#0RLX) @@ Location: Storage Locker - 192(#192TWe) @create Common Functions Object @lock/Basic Common Functions Object==%# @set Common Functions Object = LINK_OK @set Common Functions Object = VISUAL @set Common Functions Object = SAFE @set Common Functions Object = NO_COMMAND @DESCRIBE Common Functions Object=%tThis object contains many common functions that I tend to use in my code. &FN_BORDER Common Functions Object=[@@(0 - Text, 1 - Color, 2 - Width)][setq(2,sub(%2,4))][iter([iter(edit(edit(%0,%r,|),%t,%b%b),wrap(itext(0),%q2,%q2,|),|,|)],%r[ansi(%1,|)] [ljust(itext(0),%q2)] [ansi(%1,|)],|,)] &FN_GETLISTITEM Common Functions Object=[switch(grab(%0,* [%1],|),,0,first(#$))] &FN_SETLISTITEM Common Functions Object=[sortby(FN_Sort,setdiff([setunion([switch(ulocal(FN_Val,%1),0,,[#$] [%2])],[switch(grab(%0,* [%2],|),,%0,setdiff(%0,#$,|))],|)],,|),|)] &FN_SORT Common Functions Object=[comp(rest(%0),rest(%1))] &FN_SORTNCOL Common Functions Object=[@@(0 - list, 1 - delimiter, 2 - # columns)][ulocal(FN_SortNCol2,sort(%0,a,%1),%1,%2)] &FN_SORTNCOL2 Common Functions Object=[@@(0 - list, 1 - delimiter, 2 - # columns)][setq(1,ceil(fdiv(words(%0,%1),%2)))][elements(%0[ifelse(comp(%1,%b),repeat([%1]%b,%2),repeat(%b_,%2))],[iter(lnum(mul(%2,%q1)),[add(1,mul(mod(itext(0),%2),%q1),mod(div(itext(0),%2),%q1))])],%1)] &FN_VAL Common Functions Object=ifelse(isnum(%0),add(%0,0),val(%0)) &FN_XLISTITEM Common Functions Object=[ulocal(FN_SetListItem,%0,first([%3](ulocal(FN_GetListItem,%0,%2),%1)),%2)] @VA Common Functions Object=- @VB Common Functions Object=- think [set(Common Functions Object,VA:[ansi(gh,-)])] think [set(Common Functions Object,VB:[ansi(rh,-)])] @@ GLOBAL: d6 Commands(#38TWX) @@ Type: THING Flags: WIZARD SAFE @@ Owner: Dahan(#3PWXeAC"cm) Zone: *NOTHING* Pennies: Unlimited @@ Parent: *NOTHING* @@ Powers: @@ Warnings checked: none @@ Created: Thu Sep 30 23:13:31 2004 @@ Last Modification: Mon Nov 01 22:45:33 2004 @@ Contents: @@ d6 Database(#39TWXn) @@ d6 Help(#42TWn) @@ Home: Master Room(#2RFi) @@ Location: Master Room(#2RFi) @create GLOBAL: d6 Commands @set GLOBAL: d6 Commands = WIZARD @set GLOBAL: d6 Commands = SAFE @set GLOBAL: d6 Commands = !NO_COMMAND @ACONNECT GLOBAL: d6 Commands=think [ulocal([v(DB_Data)]/FN_Update,%#)] &CMD_ADDABILITY GLOBAL: d6 Commands=$+addability *=*:@pemit %#=[ulocal([v(DB_Data)]/FN_AddAbility,%#,secure(%0),secure(%1))] &CMD_ADDWOUND GLOBAL: d6 Commands=$+addwound *=*:@pemit %#=[ulocal([v(DB_Data)]/FN_AddWound,%#,secure(%0),secure(%1))] &CMD_ATTACK GLOBAL: d6 Commands=$attack *:@pemit %#=[ulocal([v(DB_Data)]/FN_Attack,%#,secure(%0))] &CMD_ATTACK2 GLOBAL: d6 Commands=$+attack *:@pemit %#=[ulocal([v(DB_Data)]/FN_Attack,%#,secure(%0))] &CMD_COMBINE GLOBAL: d6 Commands=$+acom:@pemit %#=[ulocal([v(DB_Data)]/FN_Combine,%#)] &CMD_DELABILITY GLOBAL: d6 Commands=$+delability *=*:@pemit %#=[ulocal([v(DB_Data)]/FN_DelAbility,%#,secure(%0),secure(%1))] &CMD_DELWOUND GLOBAL: d6 Commands=$+delwound *=*:@pemit %#=[ulocal([v(DB_Data)]/FN_DelWound,%#,secure(%0),secure(%1))] &CMD_DICE GLOBAL: d6 Commands=$+dice *:@pemit %#=[ulocal([v(DB_Data)]/FN_Dice,%#,secure(%0),1)] &CMD_DICE2 GLOBAL: d6 Commands=$+dice/silent *:@pemit %#=[ulocal([v(DB_Data)]/FN_Dice,%#,secure(%0),0)] &CMD_DIVIDE GLOBAL: d6 Commands=$+adiv * *:@pemit %#=[ulocal([v(DB_Data)]/FN_Divide,%#,secure(%0),secure(%1))] &CMD_GIVEFP GLOBAL: d6 Commands=$+givefp *=*:@pemit %#=[ulocal([v(DB_Data)]/FN_GiveFP,%#,secure(%0),secure(%1))] &CMD_GIVEXP GLOBAL: d6 Commands=$+givecp *=*:@pemit %#=[ulocal([v(DB_Data)]/FN_GiveXP,%#,secure(%0),secure(%1))] &CMD_GIVEXP2 GLOBAL: d6 Commands=$+givexp *=*:@pemit %#=[ulocal([v(DB_Data)]/FN_GiveXP,%#,secure(%0),secure(%1))] &CMD_HELP GLOBAL: d6 Commands=$+skills*:@pemit %#=[ulocal([v(DB_Data)]/FN_Help,%#,secure(%0))] &CMD_HELP2 GLOBAL: d6 Commands=$+sinfo*:@pemit %#=[ulocal([v(DB_Data)]/FN_Help,%#,secure(%0))] &CMD_LOAD GLOBAL: d6 Commands=$load *=* *:@pemit %#=[ulocal([v(DB_Data)]/FN_Load,%#,secure(%0),secure(%1),secure(%2))] &CMD_LOAD2 GLOBAL: d6 Commands=$+load *=* *:@pemit %#=[ulocal([v(DB_Data)]/FN_Load,%#,secure(%0),secure(%1),secure(%2))] &CMD_NEWABILITY GLOBAL: d6 Commands=$+newability *:@pemit %#=[ulocal([v(DB_Data)]/FN_NewAbility,%#,secure(%0))] &CMD_NEWATTR GLOBAL: d6 Commands=$+newattr *=*:@pemit %#=[ulocal([v(DB_Data)]/FN_NewAttr,%#,secure(%0),%1)] &CMD_NEWRACE GLOBAL: d6 Commands=$+newrace *=*/*:@pemit %#=[ulocal([v(DB_Data)]/FN_NewRace,%#,secure(%0),secure(%1),secure(%2))] &CMD_NEWSKILL GLOBAL: d6 Commands=$+newskill *=*/*:@pemit %#=[ulocal([v(DB_Data)]/FN_NewSkill,%#,secure(%0),secure(%1),%2)] &CMD_NEWSPEC GLOBAL: d6 Commands=$+newspec *=*:@pemit %#=[ulocal([v(DB_Data)]/FN_NewSpec,%#,secure(%0),secure(%1))] &CMD_RAISE GLOBAL: d6 Commands=$+raise *:@pemit %#=[ulocal([v(DB_Data)]/FN_Raise,%#,secure(%0))] &CMD_RAISE2 GLOBAL: d6 Commands=$+raise/cost * to *:@pemit %#=[ulocal([v(DB_Data)]/FN_RaiseCost,%#,secure(%0),secure(%1))] &CMD_RAISE3 GLOBAL: d6 Commands=$+raise/cost *=*:@pemit %#=[ulocal([v(DB_Data)]/FN_RaiseCost,%#,secure(%0),secure(%1))] &CMD_RAISE4 GLOBAL: d6 Commands=$+raise/faster *:@pemit %#=[ulocal([v(DB_Data)]/FN_RaiseFaster,%#,secure(%0))] &CMD_READY GLOBAL: d6 Commands=$ready *:@pemit %#=[ulocal([v(DB_Data)]/FN_Wield,%#,secure(%0))] &CMD_READY2 GLOBAL: d6 Commands=$+ready *:@pemit %#=[ulocal([v(DB_Data)]/FN_Wield,%#,secure(%0))] &CMD_RELOAD GLOBAL: d6 Commands=$reload *:@pemit %#=[ulocal([v(DB_Data)]/FN_Reload,%#,secure(%0))] &CMD_RELOAD2 GLOBAL: d6 Commands=$+reload *:@pemit %#=[ulocal([v(DB_Data)]/FN_Reload,%#,secure(%0))] &CMD_REMABILITY GLOBAL: d6 Commands=$+remability *:@pemit %#=[ulocal([v(DB_Data)]/FN_RemAbility,%#,secure(%0))] &CMD_REMATTR GLOBAL: d6 Commands=$+remattr *:@pemit %#=[ulocal([v(DB_Data)]/FN_RemAttr,%#,secure(%0))] &CMD_REMRACE GLOBAL: d6 Commands=$+remrace *:@pemit %#=[ulocal([v(DB_Data)]/FN_RemRace,%#,secure(%0))] &CMD_REMSKILL GLOBAL: d6 Commands=$+remskill *:@pemit %#=[ulocal([v(DB_Data)]/FN_RemSkill,%#,secure(%0))] &CMD_REMSPEC GLOBAL: d6 Commands=$+remspec *=*:@pemit %#=[ulocal([v(DB_Data)]/FN_RemSpec,%#,secure(%0),secure(%1))] &CMD_ROLL GLOBAL: d6 Commands=$+roll *:@pemit %#=[ulocal([v(DB_Data)]/FN_Roll,%#,ifelse(gt(words(secure(%0),/),1),first(secure(%0),/),%#),last(secure(%0),/),1)] &CMD_ROLL2 GLOBAL: d6 Commands=$+roll/silent *:@pemit %#=[ulocal([v(DB_Data)]/FN_Roll,%#,ifelse(gt(words(secure(%0),/),1),first(secure(%0),/),%#),last(secure(%0),/),0)] &CMD_ROLLALL GLOBAL: d6 Commands=$+rollall *:@pemit %#=[ulocal([v(DB_Data)]/FN_RollAll,%#,secure(%0),1)] &CMD_ROLLALL2 GLOBAL: d6 Commands=$+rollall/silent *:@pemit %#=[ulocal([v(DB_Data)]/FN_RollAll,%#,secure(%0),0)] &CMD_SELECT GLOBAL: d6 Commands=$+select *:@pemit %#=[ulocal([v(DB_Data)]/FN_Select,%#,get(%#/DD6_Weapon),secure(%0))] &CMD_SETMAXBP GLOBAL: d6 Commands=$+setmaxbp *=*:@pemit %#=[ulocal([v(DB_Data)]/FN_SetMaxBP,%#,secure(%0),secure(%1))] &CMD_SETMOVE GLOBAL: d6 Commands=$+setmove * to *:@pemit %#=[ulocal([v(DB_Data)]/FN_SetMove,%#,secure(%0),secure(%1))] &CMD_SETMOVE2 GLOBAL: d6 Commands=$+setmove *=*:@pemit %#=[ulocal([v(DB_Data)]/FN_SetMove,%#,secure(%0),secure(%1))] &CMD_SETRACE GLOBAL: d6 Commands=$+setrace */*=*:@pemit %#=[ulocal([v(DB_Data)]/FN_SetRace,%#,secure(%0),secure(%1),secure(%2))] &CMD_SETSKILL GLOBAL: d6 Commands=$+setskill */* to *:@pemit %#=[ulocal([v(DB_Data)]/FN_Set,%#,secure(%0),secure(%1),secure(%2))] &CMD_SETSKILL2 GLOBAL: d6 Commands=$+setskill */*=*:@pemit %#=[ulocal([v(DB_Data)]/FN_Set,%#,secure(%0),secure(%1),secure(%2))] &CMD_SETWOUND GLOBAL: d6 Commands=$+setwound *=*:@pemit %#=[ulocal([v(DB_Data)]/FN_SetHStatus,%#,secure(%0),secure(%1))] &CMD_SETWOUNDS GLOBAL: d6 Commands=$+setwounds *=*:@pemit %#=[ulocal([v(DB_Data)]/FN_SetHStatus,%#,secure(%0),secure(%1))] &CMD_SHEET GLOBAL: d6 Commands=$+sheet*:@pemit %#=[ulocal([v(DB_Data)]/FN_Sheet,%#,secure(%0))] &CMD_SHEETMAIL GLOBAL: d6 Commands=$+sheetmail *:@swi [setq(0,pmatch(secure(%0)))][isdbref(%q0)]=0,{@pemit %#=[get(v(DB_Data)/VB)] [u(v(DB_Data)/MSG_Target)]},1,{@pemit %#={[get(v(DB_Data)/VA)] You have mailed your sheet to [name(%q0)].};@mail [%q0]=[%N]'s +sheet/[u(v(DB_Data)/FN_Sheet,%#,%#)] &CMD_SPEAK GLOBAL: d6 Commands=$+speak *:@pemit %#=[ulocal([v(DB_Data)]/FN_Speak,%#,secure(%0))] &CMD_UNLOAD GLOBAL: d6 Commands=$unload *:@pemit %#=[ulocal([v(DB_Data)]/FN_Unload_All,%#,secure(%0))] &CMD_UNLOAD2 GLOBAL: d6 Commands=$+unload *:@pemit %#=[ulocal([v(DB_Data)]/FN_Unload_All,%#,secure(%0))] &CMD_UNREADY GLOBAL: d6 Commands=$unready*:@pemit %#=[ulocal([v(DB_Data)]/FN_Unwield,%#)] &CMD_UNREADY2 GLOBAL: d6 Commands=$+unready*:@pemit %#=[ulocal([v(DB_Data)]/FN_Unwield,%#)] &CMD_UNWEAR GLOBAL: d6 Commands=$remove*:@pemit %#=[ulocal([v(DB_Data)]/FN_Unwear,%#,secure(%0))] &CMD_UNWEAR2 GLOBAL: d6 Commands=$+remove*:@pemit %#=[ulocal([v(DB_Data)]/FN_Unwear,%#,secure(%0))] &CMD_UNWEAR3 GLOBAL: d6 Commands=$unwear*:@pemit %#=[ulocal([v(DB_Data)]/FN_Unwear,%#,secure(%0))] &CMD_UNWEAR4 GLOBAL: d6 Commands=$+unwear*:@pemit %#=[ulocal([v(DB_Data)]/FN_Unwear,%#,secure(%0))] &CMD_USECP GLOBAL: d6 Commands=$+usecp:@pemit %#=[ulocal([v(DB_Data)]/FN_UseCP,%#)] &CMD_WEAR GLOBAL: d6 Commands=$wear *:@pemit %#=[ulocal([v(DB_Data)]/FN_Wear,%#,secure(%0))] &CMD_WEAR2 GLOBAL: d6 Commands=$+wear *:@pemit %#=[ulocal([v(DB_Data)]/FN_Wear,%#,secure(%0))] &CREDITS GLOBAL: d6 Commands=Coded by Dahan@BTF &DB_DATA GLOBAL: d6 Commands=#39 @DESCRIBE GLOBAL: d6 Commands=%tThis object contains most of the skill-related global commands. &LIST_OOC GLOBAL: d6 Commands=#3:1096597249 @@ GLOBAL: Languages(#1173T) @@ Type: THING Flags: @@ Owner: Dahan(#3PWXeAC"cm) Zone: *NOTHING* Pennies: Unlimited @@ Parent: *NOTHING* @@ Powers: @@ Warnings checked: none @@ Created: Mon Nov 01 15:45:49 2004 @@ Last Modification: Wed Nov 03 12:05:55 2004 @@ Home: Dahan's Dungeon(#47Rn) @@ Location: Master Room(#2RFi) @create GLOBAL: Languages @set GLOBAL: Languages = !NO_COMMAND &CMD_EMIT GLOBAL: Languages=$@emit *: &CMD_POSE GLOBAL: Languages=$pose *: &CMD_SAY GLOBAL: Languages=$say *: &CMD_SEMIPOSE GLOBAL: Languages=$semipose *: @DESCRIBE GLOBAL: Languages=This global commands object holds placeholders for @hook/ignore'd commands, so players don't get Huh? messages when the @hook/ignore works. @@ GLOBAL: Noms(#43TWX) @@ Type: THING Flags: WIZARD SAFE @@ Owner: Dahan(#3PWXeAC"cm) Zone: *NOTHING* Pennies: Unlimited @@ Parent: *NOTHING* @@ Powers: @@ Warnings checked: none @@ Created: Thu Sep 30 23:27:39 2004 @@ Last Modification: Thu Nov 11 14:50:54 2004 @@ Contents: @@ Nom Help(#45TWXn) @@ Nom Database(#44TWXn) @@ Nom Storage(#46TXn) @@ Home: Skills Selection(#35Rn) @@ Location: Master Room(#2RFi) @create GLOBAL: Noms @set GLOBAL: Noms = WIZARD @set GLOBAL: Noms = SAFE @set GLOBAL: Noms = !NO_COMMAND &CMD_ADDAWARD GLOBAL: Noms=$+nom/addaward *=*/*:@pemit %#=[ulocal([v(DB_Data)]/FN_AddNomAward,%#,secure(%0),secure(%1),secure(%2))] &CMD_APPROVE GLOBAL: Noms=$+nom/approve *:@pemit %#=[ulocal([v(DB_Data)]/FN_Nom_Approve,%#,secure(%0))] &CMD_AWARD GLOBAL: Noms=$+nom/award:@pemit %#=[ulocal([v(DB_Data)]/FN_Nom_Award,%#,%#)] &CMD_AWARD2 GLOBAL: Noms=$+nom/award *:@pemit %#=[ulocal([v(DB_Data)]/FN_Nom_Award,%#,secure(%0))] &CMD_AWARDS GLOBAL: Noms=$+nom/awards:@pemit %#=[ulocal([v(DB_Data)]/FN_Nom_Levels,%#)] &CMD_CHECK GLOBAL: Noms=$+nom/check:@pemit %#=[ulocal([v(DB_Data)]/FN_Nom_Check,%#)] &CMD_CYCLE GLOBAL: Noms=$+nom/cycle:@pemit %#=[ulocal([v(DB_Data)]/FN_Nom_Cycle,%#)] &CMD_DELAWARD GLOBAL: Noms=$+nom/delaward *:@pemit %#=[ulocal([v(DB_Data)]/FN_DelNomAward,%#,secure(%0))] &CMD_HELP GLOBAL: Noms=$+nom/help*:@pemit %#=[ulocal([v(DB_Data)]/FN_Help,%#,secure(%0))] &CMD_LEADERS GLOBAL: Noms=$+nom/leaders:@pemit %#=[ulocal([v(DB_Data)]/FN_Nom_Leaders,%#,10)] &CMD_LEADERS2 GLOBAL: Noms=$+nom/leaders *:@pemit %#=[ulocal([v(DB_Data)]/FN_Nom_Leaders,%#,secure(%0))] &CMD_LEFT GLOBAL: Noms=$+nom*/left:@pemit %#=[ulocal([v(DB_Data)]/FN_Nom_Left,%#,%#)] &CMD_LEFT2 GLOBAL: Noms=$+nom*/left *:@pemit %#=[ulocal([v(DB_Data)]/FN_Nom_Left,%#,secure(%1))] &CMD_LEVELS GLOBAL: Noms=$+nom/levels:@pemit %#=[ulocal([v(DB_Data)]/FN_Nom_Levels,%#)] &CMD_LIST GLOBAL: Noms=$+nom/list:@pemit %#=[ulocal([v(DB_Data)]/FN_Nom_List,%#)] &CMD_REJECT GLOBAL: Noms=$+nom/reject *:@pemit %#=[ulocal([v(DB_Data)]/FN_Nom_Reject,%#,secure(%0))] &CMD_SUBMIT GLOBAL: Noms=$+nom *=*:@pemit %#=[ulocal([v(DB_Data)]/FN_NomSubmit,%#,secure(%0),%1)] &CMD_TOTALS GLOBAL: Noms=$+nom/totals:@pemit %#=[ulocal([v(DB_Data)]/FN_Nom_Totals,%#)] &CMD_VIEW GLOBAL: Noms=$+nom/view *:@pemit %#=[ulocal([v(DB_Data)]/FN_Nom_View,%#,secure(%0))] &CMD_WEEKMAX GLOBAL: Noms=$+nom/weekmax *:@pemit %#=[ulocal([v(DB_Data)]/FN_Nom_WeekMax,%#,secure(%0))] &CMD_WORDMIN GLOBAL: Noms=$+nom/wordmin *:@pemit %#=[ulocal([v(DB_Data)]/FN_Nom_WordMin,%#,secure(%0))] &DB_DATA GLOBAL: Noms=#44 @DESCRIBE GLOBAL: Noms=%tThis object cotains most of the nom-related global commands. @@ d6 Database(#39TWXn) @@ Type: THING Flags: WIZARD SAFE NO_COMMAND @@ Owner: Dahan(#3PWXeAC"cm) Zone: *NOTHING* Pennies: Unlimited @@ Parent: Common Functions Object(#11TLVXn) @@ Powers: @@ Warnings checked: none @@ Created: Thu Sep 30 23:13:51 2004 @@ Last Modification: Thu Nov 11 03:53:25 2004 @@ Home: Skills Selection(#35Rn) @@ Location: GLOBAL: d6 Commands(#38TWX) @create d6 Database @parent d6 Database=Common Functions Object @set d6 Database = WIZARD @set d6 Database = SAFE @set d6 Database = NO_COMMAND @AENTER d6 Database=@swi [ulocal(FN_IsAmmo,%#)]=1,{@nuke [%#]}, &CFG_WOUNDS d6 Database=0 &CLR_BORDER d6 Database=r @COMMENT d6 Database=CFG_Wounds - 0 for body point system/1 for wound system.%rFN_BPRoll/FN_BPRoll2 - Rolls max body points on attr increases.%rCLR_Border - sets border color of +sheet/+sinfo. &DB_AMMO d6 Database=#837 &DB_ARMOR d6 Database=#1096 &DB_GARBAGE d6 Database=#1092 &DB_HELP d6 Database=#42 &DB_UNARMED d6 Database=#838 &DB_WEAPON d6 Database=#836 @DESCRIBE d6 Database=DB_*%t- Database number.%rFN_*%t- u-function.%rFUN_*%t- global function.%rLIST_*%t- A list.%rMSG_*%t- An error message.%r%rVA%t- Prefix for errorless skills output.%rVB%t- Prefix for skills error outputs. &FN_ADDABILITY d6 Database=[@@(0 - %#, 1 - target, 2 - ability)][setq(1,ulocal(FN_PMatch,%1))][setq(2,grab(v(List_Abilities),[squish(edit(%2,%b,_),_)]*))][switch([ulocal(FN_IsWiz,%0)][isdbref(%q1)][t(%q2)][not(match(get(%q1/DD6_Abilities),%q2))],0*,[ulocal(MSG_Wiz)],10*,[ulocal(MSG_Target)],110*,[%vb] That is not a known special ability.,1110*,[%vb] [name(%q1)] already has the '[edit(%q2,_,%b)]' special ability.,1111,[%va] You have added the '[edit(%q2,_,%b)]' special ability to [name(%q1)].[null([set(%q1,DD6_Abilities:[setunion(get(%q1/DD6_Abilities),%q2)])])],[ulocal(MSG_Crit)])] &FN_ADDLOG d6 Database=[@@(0 - %#, 1 - target, 2 - log entry)][null([set(%1,DD6_Log:[ifelse(strlen(get(%1/DD6_Log)),[get(%1/DD6_Log)]|,)][secs()]^[%0]^[name(%0)]^[%2])][pemit(v(List_Log),[ansi(g,<)][ansi(bh,Skills)][ansi(g,>)] [name(%0)] \([%0]\) altered [name(%1)] \([%1]\): [last(get(%1/DD6_Log),^)])])] &FN_ADDWOUND d6 Database=[ifelse(v(CFG_Wounds),ulocal(FN_AddWound_Wounds,%0,%1,%2),ulocal(FN_AddWound_BP,%0,%1,%2))] &FN_ADDWOUND_BP d6 Database=[@@(0 - %#, 1 - target, 2 - # hit points)][setq(1,ulocal(FN_Pmatch,%1))][setq(2,val(%2))][switch([or(ulocal(FN_IsWiz,%0),match(%q1,%0))][gt(%q2,0)],0*,[ulocal(MSG_Wiz)],10,[%vb] That is not a positive number of wound points.,11,[null([ulocal(FN_AddLog,%0,%q1,ADDWOUND [%q2])][set(%q1,DD6_Skills:[ulocal(FN_xListItem,get(%q1/DD6_Skills),%q2,BPDmg,add)])])][%va] You deduct [%q2] wound points from [ifelse(match(%q1,%0),yourself,name(%q1))]. There are [sub(ulocal(FN_BPMax,%0),ulocal(FN_BPDmg,%0))] left. [ifelse(match(%q1,%0),You are,[name(%q1)] is)] now [ulocal(FN_HStatus_BP,%q1)].[ifelse(match(%q1,%0),,[oemit([loc(%q1)]/[%0],[%va] [name(%q1)] has lost [%q2] wound points. [capstr(subj(%q1))] is now [ulocal(FN_HStatus_BP,%q1)].)])],[ulocal(MSG_Crit)])] &FN_ADDWOUND_WOUNDS d6 Database=[@@(0 - %#, 1 - target, 2 - wound level)][setq(1,ulocal(FN_Pmatch,%1))][setq(2,grab(Stunned Wounded Incapacitated Mortally_Wounded Killed,[squish(edit(%2,%b,_),_)]*))][setq(3,ulocal(FN_GetListItem,get(%q1/DD6_Skills),HStatus))][setq(4,min(5,switch(%q2,Stunned,%q3,Wounded,[add(lte(%q3,3),%q3)],Incapacitated,[max(3,add(1,%q3))],Mortally_Wounded,[max(4,add(1,%q3))],Killed,5)))][switch([cor(match(%q1,%0),ulocal(FN_IsWiz,%0))][isdbref(%q1)][t(%q2)],0*,[ulocal(MSG_Wiz)],10*,[ulocal(MSG_Target)],110*,[%vb] That is not a valid wound level.,111,[null([ulocal(FN_AddLog,%0,%q1,ADDWOUND [%q2])][ifelse(gt(%q4,%q3),[set(%q1,DD6_Skills:[ulocal(FN_SetListItem,get(%q1/DD6_Skills),%q4,HStatus)])],)])][oemit([loc(%q1)]/[%0],[setr(5,[%va] [ifelse(match(%q1,%0),[name(%q1)] has accepted,[name(%0)] has given [name(%q1)])] a [ansi(wh,edit(%q2,_,%b))] level injury. [capstr(subj(%q1))] is [ifelse([gt(%q4,%q3)],now,still)] [ansi(rh,edit(ulocal(FN_HStatus,%q1),_,%b))].)])][%q5],[ulocal(MSG_Crit)])] &FN_ATTACK d6 Database=[@@(0 - %#, 1 - Target at Modifier)][setq(1,ucstr(squish(edit(%1,%b,_),_)))][ulocal(FN_Attack2,%0,before(%q1,_AT_),after(%q1,_AT_))] &FN_ATTACK2 d6 Database=[@@(0 - %#, 1 - Target, 2 - Modifier)][setq(1,ulocal(FN_Pmatch,%1))][setq(2,ucstr(squish(edit(%2,%b,_),_)))][setq(3,get(%0/DD6_Weapon))][ifelse(ulocal(FN_IsWeapon,%q3),,setq(3,[v(DB_Unarmed)]))][ifelse(eq(2,words(%q2,D)),[setq(4,val(before(%q2,D)))][setq(5,val(after(%q2,D)))],[setq(4,0)][setq(5,val(%q2))])][setq(6,val(%2))][setq(7,ulocal(%q3/FN_Ammo_Num))][setq(8,ulocal(%q3/FN_Ammo_Type))][switch([isdbref(%q1)][ulocal(FN_IsWeapon,%q3)][t(match(loc(%0),loc(%q1)))][gte(ulocal(FN_GetListItem,get(%q3/List_Ammo),%q8),%q7)],0*,[ulocal(MSG_Target)],10*,[ulocal(MSG_Weapon,%q3)],110*,[%vb] [name(%q1)] is nowhere in sight.,1110*,[%vb] You don't have enough ammo to do that.,1111,[remit(loc(%0),[%va] [ulocal(%q3/FN_MSG_Attack,%0,%q1,[ulocal(FN_RollStat,add(val(ulocal(FN_GetStat,%#,ulocal(FN_GrabStat,ulocal(%q3/FN_Skill,%0)))),mul(3,%q4)),%q5)],%q4,%q5)])][set(%q3,List_Ammo:[ulocal(FN_xListItem,get(%q3/List_Ammo),%q7,%q8,sub)])],[ulocal(MSG_Crit)])] &FN_BPDMG d6 Database=[ulocal(FN_GetListItem,get(%0/DD6_Skills),BPDmg)] &FN_BPMAX d6 Database=[ulocal(FN_GetListItem,get(%0/DD6_Skills),BPMax)] &FN_BPROLL d6 Database=[null([ifelse(v(CFG_Wounds),,[ifelse(cand(match(Strength,%1),not(ulocal(FN_InChargen,%0))),[switch([ulocal(FN_BPRoll2,%0)],>[ulocal(FN_BPMax,%0)],[pemit(%0,[%va] Your maximum body points has increased to [#$].)][ulocal(FN_AddLog,%0,%0,BPROLL [#$])][set(%0,DD6_Skills:[ulocal(FN_SetListItem,get(%0/DD6_Skills),#$,BPMax)])],)],)])])] &FN_BPROLL2 d6 Database=[first(ulocal(FN_RollSkill,%0,Strength,0,20))] &FN_COLORPIP d6 Database=[ansi([switch(%0,>21,c,>13,g,>8,y,r)]h,ulocal(FN_Pip2d6,%0))] &FN_COMBINE d6 Database=[@@(0 - %#)][setq(1,squish(iter(lcon(%0),ifelse(ulocal(FN_IsAmmo,itext(0)),itext(0),))))][switch([gte(words(%q1),2)],0*,[%vb] You do not have two or more ammunition containers to combine.,1,[%va] You combine all your ammunition into one container.[setq(2,)][iter(%q1,iter(get([itext(0)]/List_Ammo),setq(2,ulocal(FN_xListItem,%q2,first(itext(0)),rest(itext(0)),add)),|,),,)][set([first(%q1)],List_Ammo:[%q2])][ulocal(FN_NameAmmo,first(%q1))][iter([rest(%q1)],ulocal(FN_Nuke,itext(0)),,)],[ulocal(MSG_Crit)])] &FN_CONVDAYS d6 Database=[convsecs(sub(mul(%0,86400),61200))] &FN_COST d6 Database=[@@(0 - attr/skill, 1 - initial pips, 2 - final pips)][setq(0,ulocal(FN_GrabStat,%0))][setq(2,switch([t(match(v(List_Attrs),%q0))][ulocal(FN_IsAdvanced,%q0)][words(%q0,:)],1*,10,01*,2,002,0.5,1))][mul(sign(sub(%2,%1)),ifelse(cand(eq(%2,3),lt(%1,3)),ceil(%q2),[lmath(add,iter(lnum(min(%1,%2),sub(max(%1,%2),1)),ceil(mul(%q2,div(itext(0),3)))))]))] &FN_COST_MOVE d6 Database=[@@(0 - initial value, 1 - final value)][mul(ifelse(gt(%1,%0),1,-1),lmath(add,lnum(min(%0,%1),sub(max(%0,%1),1))))] &FN_D6 d6 Database=[@@(0 - # of d6)][switch(%0,>21,lmath(add,[ifelse(mod(%0,20),die(mod(%0,20),6),0)] [iter(lnum(div(%0,20)),die(20,6))]),>0,die(%0,6),0)] &FN_D62PIP d6 Database=[@@(0 - convert ad6+b into # of pips)][add(mul(val(before(ucstr(%0),D)),3),ulocal(FN_Val,after(ucstr(%0),D)))] &FN_DAYS d6 Database=[div(add(61200,secs()),86400)] &FN_DECOMP d6 Database=[@@(0 - %#)][pemit(%0,@@ Attributes%r)][iter(v(list_attrs),[pemit(%0,+newattr [##]=[edit(edit(get([v(DB_Help)]/Attr_[##]),%r,%%r),%t,%%t)])])][pemit(%0,%r@@ Skills%r)][iter(v(List_Skills),[pemit(%0,+newskill [first(##)]=[rest(##)]/[edit(edit(get([v(DB_Help)]/Skill_[first(##)]),%r,%%r),%t,%%t)])],|,)][pemit(%0,%r@@ End of List)] &FN_DELABILITY d6 Database=[@@(0 - %#, 1 - target, 2 - ability)][setq(1,ulocal(FN_PMatch,%1))][setq(2,grab(v(List_Abilities),[squish(edit(%2,%b,_),_)]*))][switch([ulocal(FN_IsWiz,%0)][isdbref(%q1)][t(%q2)][t(match(get(%q1/DD6_Abilities),%q2))],0*,[ulocal(MSG_Wiz)],10*,[ulocal(MSG_Target)],110*,[%vb] That is not a known special ability.,1110*,[%vb] [name(%q1)] didn't have the '[edit(%q2,_,%b)]' special ability.,1111,[%va] You have removed the '[edit(%q2,_,%b)]' special ability from [name(%q1)].[null([set(%q1,DD6_Abilities:[setdiff(get(%q1/DD6_Abilities),%q2)])])],[ulocal(MSG_Crit)])] &FN_DELWOUND d6 Database=[@@(0 - %#, 1 - target, 2 - # hit points)][ifelse(v(CFG_Wounds),[ansi(rh,-)] This command is disabled while a wound system is in effect.,[setq(1,ulocal(FN_Pmatch,%1))][setq(3,ulocal(FN_BPDmg,%q1))][setq(2,val(min(%q3,%2)))][switch([ulocal(FN_IsWiz,%0)][gt(%q3,0)][gt(%q2,0)],0*,[ulocal(MSG_Wiz)],10*,[%vb] [name(%q1)] isn't wounded.,110,[%vb] That is not a positive number of wound points.,111,[null([ulocal(FN_AddLog,%0,%q1,DELWOUND [%q2])][set(%q1,DD6_Skills:[ulocal(FN_xListItem,get(%q1/DD6_Skills),%q2,BPDmg,sub)])])][%va] You restore [%q2] wound points on [ifelse(match(%q1,%0),yourself. You are,[name(%q1)]. [name(%q1)] is)] now [ulocal(FN_HStatus_BP,%q1)].[ifelse(match(%q1,%0),,[oemit([loc(%q1)]/[%0],[%va] [name(%q1)] has restored [%q2] wound points. [name(%q1)] is now [ulocal(FN_HStatus_BP,%q1)].)])],[ulocal(MSG_Crit)])])] &FN_DICE d6 Database=[@@(0 - %#, 1 - diceString, 2 - isLoud)][null([setq(5,)][setq(6,)][iter(ucstr(edit(%1,-,+-,%b,)),[setq(3,before(##,D))][setq(4,after(##,D))][switch([isint(##)][isnum(%q3)][isnum(%q4)],1*,[setq(5,[%q5]+[ansi(yh,##)])][setq(6,[%q6] [##])],011,[setq(6,[%q6] [setr(7,ulocal(FN_Die,%q3,%q4))])][setq(5,[%q5]+[ansi(yh,[%q3]D[abs(%q4)])] [ansi(wh,\()][ansi(ch,%q7)][ansi(wh,\))])],010,[setq(7,ulocal(FN_RollStat,mul(abs(%q3),3),0))][setq(5,[%q5]+[ansi(yh,[%q3]D)] [ansi(wh,\()][ansi(ch,first(%q7))] WD [ansi(ch,rest(%q7))][ansi(wh,\))])][setq(6,[%q6] [mul(sign(%q3),first(%q7))])],[setq(3,ulocal(FN_GrabStat,last([ifelse(match(-,mid(##,0,1)),[after(##,-)],##)],/)))][setq(4,ifelse(gt(words(##,/),1),ulocal(FN_PMatch,first([ifelse(match(-,mid(##,0,1)),[after(##,-)],##)],/)),%0))][ifelse(cand(isdbref(%q4),t(%q3),cor(ulocal(FN_IsRoy,%0),match(%0,%q4))),[setq(7,ulocal(FN_RollStat,ulocal(FN_GetStat,%q4,%q3),0))][setq(5,[%q5]+[ifelse(match(-,mid(##,0,1)),-,)][ansi(yh,[ifelse(match(%0,%q4),your,[name(%q4)]'s)] [edit(%q3,_,%b)])] [ansi(wh,\()][ansi(ch,first(%q7))] WD [ansi(ch,rest(%q7))][ansi(wh,\))])][setq(6,[%q6] [mul(ifelse(match(-,mid(##,0,1)),-1,1),first(%q7))])],)])],+)][setq(5,edit(edit(rest(%q5,+),+,%b+%b),+ -,-%b))])][ifelse(words(%q6),[%va] You roll [%q5] for a total of [ansi(yh,lmath(add,%q6))].,[%vb] You didn't enter any dice to roll properly.)][ifelse(cand(%2,words(%q6)),[oemit([loc(%0)]/[%0],[%va] [name(%0)] rolls [%q5] for a total of [ansi(yh,lmath(add,%q6))].)],)] &FN_DIE d6 Database=[@@(0 - # of dice, 1 - # of sides on die)][mul(sign(%0),switch(abs(%0),>20,lmath(add,[ifelse(mod(#$,20),die(mod(#$,20),%1),0)] [iter(lnum(div(#$,20)),die(20,%1))]),>0,die(#$,%1),0))] &FN_DIVIDE d6 Database=[@@(0 - %#, 1 - <#>, 2 - ammo type)][setq(1,max(1,val(%1)))][setq(2,squish(edit(%2,%b,_),_))][iter(filter(FN_IsAmmo,lcon(%0)),[setq(3,grab(get(itext(0)/List_Ammo),* [%q2]*,|))][ifelse(or(gt(first(%q3),%q1),cand(eq(first(%q3),%q1),gt(words(get([itext(0)]/List_Ammo),|),1))),[setq(4,itext(0))][setq(5,rest(%q3))],)],,)][ifelse(isdbref(%q4),[ifelse([isdbref(setr(6,ulocal(FN_MakeAmmo,[%q1] [%q5])))],[%va] You seperate [%q1] [edit(%q5,_,%b)] into its own pile.[null([set(%q4,List_Ammo:[ulocal(FN_xListItem,get([%q4]/List_Ammo),%q1,%q5,sub)])][ulocal(FN_NameAmmo,%q4)][tel(%q6,%0)])],[%vb] Unable to comply. [name(owner(%!))] may be out of quota. [%q1] [%q5])],[%vb] You do not have a unit of ammunition with more than [%q1] [%q2].)] &FN_FOOTER d6 Database=[ansi(v(CLR_Border),'-[repeat(=,74)]-')][ifelse(match(%#,owner(%!)),%r[ansi(mh,%?)],)] &FN_GETATTR d6 Database=[@@(0 - Target, 1 - Attribute)][ulocal(FN_GetListItem,get(%0/DD6_Skills),%1)] &FN_GETSKILL d6 Database=[add(ulocal(FN_GetListItem,get(%0/DD6_Skills),%1),ulocal(FN_GetStat,%0,extract(grab(v(List_Skills),[%1] *,|),2,1)))] &FN_GETSPEC d6 Database=[add(ulocal(FN_GetSkill,%0,first(%1,:)),ulocal(FN_GetListItem,get(%0/DD6_Skills),%1))] &FN_GETSTAT d6 Database=[@@(0 - Target, 1 - Attr/Skill)][setq(1,ulocal(FN_GrabStat,%1))][switch([t(match(v(List_Attrs),%q1))][t(%q1)][words(%q1,:)],1*,[ulocal(FN_GetAttr,%0,%q1)],011,[ulocal(FN_GetSkill,%0,%q1)],012,[ulocal(FN_GetSpec,%0,%q1)],#-1)] &FN_GETWEAPON d6 Database=[switch([isdbref(%0)][ulocal(FN_IsWeapon,get(%0/DD6_Weapon))],0*,#-1 Invalid target.,11,[get(%0/DD6_Weapon)],#-1)] &FN_GIVEFP d6 Database=[@@(0 - %#, 1 - target, 2 - xp)][setq(1,ulocal(FN_Pmatch,%1))][setq(2,val(%2))][switch([ulocal(FN_IsWiz,%0)][isdbref(%q1)],0*,[ulocal(MSG_Wiz)],10,[ulocal(MSG_Target)],11,[set(%q1,DD6_Skills:[ulocal(FN_xListItem,get(%q1/DD6_Skills),%q2,FP,add)])][%va] You give [%q2] fate points to [name(%q1)] for a total of [ulocal(FN_GetListItem,get(%q1/DD6_SKills),FP)] fate points.[pemit(%q1,[%va] %N has given you [%q2] fate points.)],[ulocal(MSG_Crit)])] &FN_GIVEXP d6 Database=[@@(0 - %#, 1 - target, 2 - xp)][setq(1,ulocal(FN_Pmatch,%1))][setq(2,ulocal(FN_Val,%2))][switch([ulocal(FN_IsWiz,%0)][isdbref(%q1)],0*,[ulocal(MSG_Wiz)],10,[ulocal(MSG_Target)],11,[set(%q1,DD6_Skills:[ulocal(FN_xListItem,get(%q1/DD6_Skills),%q2,CP,add)])][%va] You give [%q2] character points to [name(%q1)] for a total of [ulocal(FN_GetListItem,get(%q1/DD6_SKills),CP)] character points.[pemit(%q1,[%va] %N has given you [%q2] character points.)],[ulocal(MSG_Crit)])] &FN_GRABSTAT d6 Database=[setq(0,[squish(edit(first(%0,:),%b,_),_)])][setq(1,[squish(edit(rest(%0,:),%b,_),_)])][ifelse(t(%q1),[switch([setr(2,first(grab(v(List_Skills),[%q0]*,|)))]:[grab(rest(v(SPEC_[%q2]),|),[%q1]*)],:,,*:,,:*,,#$)],first([grab([v(List_Attrs)],[%q0]*)] [grab(v(List_Skills),[%q0]*,|)]))] &FN_HEADER d6 Database=[center([ansi(rh,. o O)] [ansi(wh,%0)] [ansi(rh,O o .)],78)]%r[ansi(v(CLR_Border),.-[repeat(=,74)]-.)] &FN_HELP d6 Database=[@@(0 - %#, 1 - Entry)][setq(0,squish(edit(%1,%b,_),_))][setq(1,grab([lattr([v(DB_Help)]/HELP_*)],HELP_[%q0]*))][setq(2,first(grab(v(List_Skills),[%q0]*,|)))][setq(3,grab(v(List_Attrs),[%q0]*))][setq(4,grab(v(List_Races),* [%q0]*,|))][switch([t(%q0)][t(%q1)][t(%q2)][t(%q3)][t(%q4)],10001*,[ulocal(FN_Help_Race,%q4)],1001*,[ulocal(FN_Help_Attr,%q3)],101*,[ulocal(FN_Help_Skill,%q2)],11*,[ulocal(FN_Help_Topic,%q1)],0*,[ulocal([v(DB_Help)]/HELP)],[ulocal(MSG_Help)])] &FN_HELP_ATTR d6 Database=[ulocal(FN_Header,Attribute: [edit(%0,_,%b)])][ulocal([v(DB_Help)]/FN_Border,[ansi(yh,Skills:)] [iter(graball(v(List_Skills),* [%0],|),edit(first(itext(0)),_,%b),|,\,%b)].%r%r[u([v(DB_Help)]/Attr_[%0])])]%r[ulocal(FN_Footer)] &FN_HELP_RACE d6 Database=[ulocal(FN_Header,Race: [rest(%0)])][ulocal([v(DB_Help)]/FN_Border,[ansi(yh,Attribute Dice:)] [edit(ulocal(FN_pip2d6,first(%0)),+0,)][set(%!,Race:[rest(%0)])][iter(edit(v(List_Attrs),Advanced_Skills,),%r[ansi(yh,[ucstr(itext(0))]:)] [edit(ulocal(FN_pip2d6,ulocal(FN_Min_Attr,%!,itext(0))),+0,)]/[edit(ulocal(FN_pip2d6,ulocal(FN_Max_Attr,%!,itext(0))),+0,)],,)]%r[ansi(yh,Move:)] [ulocal(FN_Min_Move,%!)]/[ulocal(FN_Max_Move,%!)] meters/round%r%r[ulocal([v(DB_Help)]/Race_[rest(%0)])])]%r[ulocal(FN_Footer)] &FN_HELP_SKILL d6 Database=[ulocal(FN_Header,Skill: [edit(%0,_,%b)])][ulocal([v(DB_Help)]/FN_Border,[ansi(yh,Base Attribute:)] [edit(rest(grab(v(List_Skills),[%0] *,|)),_,%b)].[switch(v(SPEC_[%0]),,,%r[ansi(yh,Specializations:)] [ifelse(strlen(first(#$,|)),[first(#$,|)] --%b,)][iter(rest(#$,|),edit(first(itext(0)),_,%b),%b,\,%b)].)]%r[ulocal([v(DB_Help)]/Skill_[%0])])]%r[ulocal(FN_Footer)] &FN_HELP_TOPIC d6 Database=[ulocal(FN_Header,[edit(after(%0,HELP_),_,%b)])][ulocal([v(DB_Help)]/[%0])]%r[ulocal(FN_Footer)] &FN_HSTATUS d6 Database=[rest(grab(v(List_HStatus),[ulocal(FN_GetListItem,get(%0/DD6_Skills),HStatus)] *,|))] &FN_HSTATUS_BP d6 Database=[switch(div(mul(100,sub(ulocal(FN_BPMax,%0),ulocal(FN_BPDmg,%0))),[ulocal(FN_BPMax,%0)]),<0,Dead,0,Dead,<10,Mortally Wounded,<20,Incapacitated,<40,Severely Wounded,<60,Wounded,<80,Stunned,Healthy)] &FN_ILINE d6 Database=[ansi(v(CLR_Border),>---<)] [ansi(mh,%0)] [ansi(v(CLR_Border),>[repeat(-,sub(69,strlen(%0)))]<)] &FN_INCHARGEN d6 Database=[@@(0 - Target)][match(#35,loc(%0))] &FN_ISADMIN d6 Database=[hasflag(owner(%0),Wizard)] &FN_ISADVANCED d6 Database=[t(match(grab(v(List_Skills),[first(%0,:)] *,|),Advanced_Skills))] &FN_ISALIVE d6 Database=1 &FN_ISAMMO d6 Database=[and(not(hasflag(%0,Safe)),match(lparent(%0),v(DB_Ammo)))] &FN_ISARMOR d6 Database=[t(match(lparent(%0),v(DB_Armor)))] &FN_ISFS d6 Database=[t(match(get(%0/DD6_Abilities),Force-Sensitive))] &FN_ISROY d6 Database=[or(ulocal(FN_IsWiz,%0),hasflag(owner(%0),Royalty))] &FN_ISWEAPON d6 Database=[t(match(lparent(%0),v(DB_Weapon)))] &FN_ISWIZ d6 Database=[hasflag(owner(%0),Wizard)] &FN_LIMIT d6 Database=[@@(0 - Target, 1 - Stat, 2 - pips)][ifelse(match(v(List_Attrs),%1),[setq(1,iter(graball(v(List_Skills),* [%1],|),setunion(itext(0),graball(v(List_Skills),* [first(itext(0))],|),|),|,|))][setq(3,sub(%2,ulocal(FN_GetAttr,%0,%1)))][squish([ifelse(gt(%2,ulocal(FN_Max_Attr,%0,%1)),%1,)] [iter(%q1,ifelse(gt(add(%q3,ulocal(FN_GetSkill,%0,first(itext(0)))),ulocal(FN_Max_Skill)),first(itext(0)),),|,%b)])],[ifelse(gt(%2,ulocal(FN_Max_Skill,%0,%1)),%1,)])] &FN_LIST_SKILLS d6 Database=[iter(v(List_Attrs),[itext(0)] [iter(graball(v(List_Skills),* [itext(0)],|),first(itext(0)),|,%b)])] &FN_LOAD d6 Database=[@@(0 - %#, 1 - Weapon, 2 - Amount, 3 - Ammo Type)][setq(1,locate(%0,%1,iX))][setq(2,max(1,val(%2)))][setq(3,grab(iter(get(%q1/List_Max_Ammo),rest(itext(0)),|,%b),[squish(edit(%3,%b,_),_)]*))][setq(4,grab(get(%q1/List_Max_Ammo),* [%q3]*,|))][setq(5,sub(first(%q4),lmath(add,iter(rest(%q4),ulocal(FN_GetListItem,get(%q1/List_Ammo),itext(0))))))][setq(6,first(iter(lcon(%0),ifelse(and(ulocal(FN_IsAmmo,itext(0)),gte(ulocal(FN_GetListItem,get(itext(0)/List_Ammo),%q3),%q2)),itext(0),))))][switch([ulocal(FN_IsWeapon,%q1)][t(%q3)][lte(%q2,%q5)][t(%q6)],0*,[ulocal(MSG_Weapon,%q1)],10*,[%vb] Your [name(%q1)] doesn't accept that kind of ammo.,110*,[%vb] Your [name(%q1)] cannot accept [ifelse(%q5,more than [%q5],any)] more [edit(%q3,_,%b)][ifelse(eq(1,%q5),,s)].,1110*,[%vb] You do not have [%q2] [edit(%q3,_,%b)][ifelse(eq(1,%q2),,s)] in your inventory.,1111,[remit(loc(%0),[%va] [ulocal(%q1/MSG_Load,%0,%q2,%q3)])][@@([%va] You load [%q2] [edit(%q3,_,%b)][ifelse(eq(1,%q2),,s)] into your [name(%q1)].)][set(%q1,List_Ammo:[ulocal(FN_xListItem,get(%q1/List_Ammo),%q2,%q3,add)])][set(%q6,List_Ammo:[ulocal(FN_xListItem,get(%q6/List_Ammo),%q2,%q3,sub)])][ifelse(t(get(%q6/List_Ammo)),,ulocal(FN_Nuke,%q6))],[ulocal(MSG_Crit)])] &FN_MAKEAMMO d6 Database=[setr(0,create(Ammo Box))][null([parent(%q0,v(DB_Ammo))][ifelse(%0,[set(%q0,List_Ammo:[%0])],)][ulocal(FN_NameAmmo,%q0)])] &FN_MAX_ATTR d6 Database=[@@(0 - %#, 1 - Attribute)][ifelse(ulocal(FN_Prereq,%0,%1),[switch(grab(v(List_Max_Attr),* [squish([get(%0/Race)]-[%1])],|),,12,first(#$))],0)] &FN_MAX_MOVE d6 Database=[@@(0 - %#)][switch(grab(v(List_Max_Move),* [get(%0/Race)],|),,12,first(#$))] &FN_MAX_SKILL d6 Database=[@@(0 - %#, 1 - Skill)][ifelse(ulocal(FN_Prereq,%0,%1),[min(36,[add(9,ulocal(FN_GetAttr,%0,rest(grab(v(List_Skills),[first(%1,:)] *,|))))])],0)] &FN_MIN_ATTR d6 Database=[@@(0 - %#, 1 - Attribute)][ifelse(ulocal(FN_Prereq,%0,%1),[switch(grab(v(List_Min_Attr),* [squish([get(%0/Race)]-[%1])],|),,6,first(#$))],0)] &FN_MIN_MOVE d6 Database=[@@(0 - %#)][switch(grab(v(List_Min_Move),* [get(%0/Race)],|),,10,first(#$))] &FN_NAMEAMMO d6 Database=[@@(0 - dbref)][name(%0,[ifelse(eq(1,words(get(%0/List_Ammo),|)),Ammo: [edit(rest(get(%0/List_Ammo)),_,%b)][ifelse(eq(1,first(get(%0/List_Ammo))),,s)],Ammo Box)] \([edit(%0,#,)]\))] &FN_NEWABILITY d6 Database=[@@(0 - %#, 1 - ability)][setq(1,squish(edit(%1,%b,_),_))][switch([ulocal(FN_IsWiz,%0)][t(match(v(List_Abilities),%q1))],0*,[ulocal(MSG_Wiz)],11*,[%vb] The [edit(%q1,_,%b)] special ability already exists.,10,[%va] You have added the '[edit(%q1,_,%b)]' special ability to the system.[null([set(%!,List_Abilities:[setunion(v(List_Abilities),%q1)])])],[ulocal(MSG_Crit)])] &FN_NEWATTR d6 Database=[@@(0 - %#, 1 - Attribute, 2 - Desc)][setq(1,iter(edit(%1,_,%b,|,%b,:,%b),capstr(lcstr(itext(0))),,_))][switch([ulocal(FN_IsWiz,%0)][not(match(v(List_Attrs),%q1))],0*,[ulocal(MSG_Wiz)],10,[%vb] That attribute already exists.,11,[%va] You have added the '[edit(%q1,_,%b)]' attribute.[set(%!,List_Attrs:[setunion(v(List_Attrs),%q1)])][set(v(DB_Help),Attr_[%q1]:[%2])],[ulocal(MSG_Crit)])] &FN_NEWRACE d6 Database=[@@(0 - %#, 1 - race, 2 - dice, 3 - desc)][setq(1,squish(%1))][setq(2,max(1,ulocal(FN_d62Pip,%2)))][switch([ulocal(FN_IsWiz,%0)][not(ulocal(FN_GetListItem,v(List_Races),%q1))],0*,[ulocal(MSG_Wiz)],10*,[%vb] The [%q1] race already exists.,11,[%va] You have added the '[%q1]' race to the system. Please review it by typing [ansi(rh,+sinfo)] [ansi(y,%q1)]\, and use the [ansi(rh,+setrace)] command to configure it.[null([set(%!,List_Races:[ulocal(FN_SetListItem,v(List_Races),%q2,%q1)])][set(v(DB_Help),RACE_[edit(%q1,%b,_)]:[%3])])],[ulocal(MSG_Crit)])] &FN_NEWSKILL d6 Database=[@@(0 - %#, 1 - skill, 2 - attribute, 3 - desc)][setq(1,squish(edit(%1,%b,_,|,,:,),_))][setq(2,grab(v(List_Attrs),[squish(edit(%2,%b,_),_)]*))][switch([ulocal(FN_IsWiz,%0)][t(%q2)][not(match(v(List_Skills),[%q1] *,|))][not(match(v(List_Attrs),[%q1]))],0*,[ulocal(MSG_Wiz)],10*,[%vb] That is not an attribute.,110*,[%vb] That skill already exists.,1110*,[%vb] That attribute already exists.,1111,[%va] You have added the '[edit(%q1,_,%b)]' skill\, based on '[edit(%q2,_,%b)]'.[set(%!,List_Skills:[setunion(v(List_Skills),[%q1] [%q2],|)])][set(v(DB_Help),Skill_[%q1]:[%3])],[ulocal(MSG_Crit)])] &FN_NEWSPEC d6 Database=[@@(0 - %#, 1 - skill, 2 - specialization)][setq(1,first(grab(v(List_Skills),[squish(edit(%1,%b,_),_)]*,|)))][setq(2,squish(edit(%2,%b,_,:,,|,),_))][switch([ulocal(FN_IsWiz,%0)][t(%q1)][t(match(rest(v(SPEC_[%q1]),|),%q2))],0*,[ulocal(MSG_Wiz)],10*,[ulocal(MSG_Stat)],111,[%vb] [edit([%q1]:[capstr(%q2)],_,%b)] already exists.,110,[%va] You have added [edit([%q1]:[capstr(%q2)],_,%b)] to the system.[null([set(%!,SPEC_[%q1]:[first(v(SPEC_[%q1]),|)]|[setunion(rest(v(SPEC_[%q1]),|),%q2)])])],[ulocal(MSG_Crit)])] &FN_NUKE d6 Database=[wipe(%0/*)][tel(%0,v(DB_Garbage))] &FN_PIP2D6 d6 Database=[@@(0 - # of pips to convert to d6 format)][div(%0,3)]D+[fmod(%0,3)] &FN_PMATCH d6 Database=[switch(pmatch(squish(%0)),#-1,locate(%#,squish(%0),PTahilmna),#$)] &FN_PREREQ d6 Database=[@@(0 - player, 1 - attr/skill)][cor(not(hasattr(%!,P_[first(%1,:)])),ulocal(P_[first(%1,:)],%0,rest(%1,:)))] &FN_RAISE d6 Database=[@@(0 - %#, 1 - Attr/Skill)][setq(1,ulocal(FN_GrabStat,%1))][switch([match(Move,squish(%1))][t(%q1)][ulocal(FN_Prereq,%0,%q1)][t(match(v(List_Attrs),%q1))][words(%q1,:)],1*,[ulocal(FN_Raise_Move,%0)],010*,[%vb] You do not meet the prerequisites to improve [edit(%q1,_,%b)].,0111*,[ulocal(FN_Raise_Attr,%0,%q1)],01101,[ulocal(FN_Raise_Skill,%0,%q1)],01102,[ulocal(FN_Raise_Spec,%0,%q1)],[ulocal(MSG_Stat)])] &FN_RAISE_ATTR d6 Database=[@@(0 - %#, 1 - Attr)][setq(2,ulocal(FN_GetAttr,%0,%1))][setq(3,add(%q2,1))][setq(4,ulocal(FN_Cost,%1,%q2,%q3))][setq(5,sub(ulocal(FN_GetListItem,get(%0/DD6_Timer),days:[%1]),ulocal(FN_Days)))][setq(6,ulocal(FN_Max_Attr,%0,%1))][switch([not(match(Advanced_Skills,%1))][gte(ulocal(FN_GetListItem,get(%0/DD6_Skills),CP),%q4)][lte(%q5,0)][lte(first(ulocal(FN_RollStat,%q2,0)),first(ulocal(FN_RollStat,ulocal(FN_Max_Attr,%0,%1))))],0*,[%vb] The Advanced Skills attribute cannot be improved.,10*,[%vb] You lack the [%q4] character points to afford that.,110*,[%vb] You cannot attempt to raise [ansi(wh,edit(%1,_,%b))] for another [%q5] days.,1110,[%va] You fail to raise your [ansi(wh,edit(%1,_,%b))] at the cost of [div(%q4,2)] character points.[null([ulocal(FN_AddLog,%0,%0,FAILED_RAISE [%1] to [ulocal(FN_Pip2d6,%q3)] at cost [%q4].)][set(%0,DD6_Skills:[ulocal(FN_xListItem,get(%0/DD6_Skills),div(%q4,2),CP,sub)])][set(%0,DD6_Timer:[ulocal(FN_SetListItem,get(%0/DD6_Timer),[add(ulocal(FN_Days),mul(7,%q4))],days:[%1])])])],1111,[%va] You raise your [ansi(wh,edit(%1,_,%b))] to [ulocal(FN_ColorPip,%q3)] at the cost of [%q4] character points.[null([ulocal(FN_AddLog,%0,%0,RAISE [%1] to [ulocal(FN_Pip2d6,%q3)] at cost [%q4].)][set(%0,DD6_Skills:[ulocal(FN_xListItem,get(%0/DD6_Skills),%q4,CP,sub)])][set(%0,DD6_Timer:[ulocal(FN_SetListItem,get(%0/DD6_Timer),[add(ulocal(FN_Days),mul(7,%q4))],days:[%1])])][ulocal(FN_SetAttr,%0,%1,%q3)])],[ulocal(MSG_Crit)])] &FN_RAISECOST d6 Database=[@@(0 - %#, 1 - Attr/skill, 2 - level)][setq(1,switch(grab(v(List_Attrs),[squish(edit(%1,%b,_),_)]*),,first(grab(v(List_Skills),[squish(edit(%1,%b,_),_)]* *,|)),#$))][setq(2,ulocal(FN_d62pip,%2))][setq(3,ulocal(FN_GetStat,%0,%q1))][setq(4,ulocal(FN_Cost,%q1,%q3,%q2))][switch([t(%q1)][neq(%q2,%q3)][gt(%q2,%q3)],0*,[ulocal(MSG_Stat)],10*,[%vb] Your [edit(%q1,_,%b)] is currently [ulocal(FN_ColorPip,%q2)].,110*,[%vb] You would regain [abs(%q4)] character points by having your [edit(%q1,_,%b)] lowered from [ulocal(FN_ColorPip,%q3)] to [ulocal(FN_ColorPip,%q2)].,111,[%va] It would cost you [%q4] character points to raise your [edit(%q1,_,%b)] from [ulocal(FN_ColorPip,%q3)] to [ulocal(FN_ColorPip,%q2)].,[ulocal(MSG_Crit)])] &FN_RAISEFASTER d6 Database=[@@(0 - %#, 1 - Skill)][setq(1,switch([%1],Move,Move,ulocal(FN_GrabStat,%1)))][setq(2,sub(ulocal(FN_GetListItem,get(%0/DD6_Timer),days:[%q1]),ulocal(FN_Days)))][switch([t(%q1)][gte(%q2,1)][gte(ulocal(FN_GetListItem,get(%0/DD6_Skills),CP),1)][gt(%q2,switch([t(match([v(List_Attrs)] Move,%q1))][ulocal(FN_IsAdvanced,%q1)],1*,7,01*,7,1))],0*,[ulocal(MSG_Stat)],10*,[%vb] You are not currently training [%q1].,110*,[%vb] You any character points to spend on this.,1110*,[%vb] You cannot lower the remaining training time of [%q1] any more.,1111,[%va] You spend a character point to speed up your training of [%q1].[null([ulocal(FN_AddLog,%0,%0,RAISEFASTER [%q1] at cost 1.)][set(%0,DD6_Skills:[ulocal(FN_xListItem,get(%0/DD6_Skills),1,CP,sub)])][set(%0,DD6_Timer:[ulocal(FN_xListItem,get(%0/DD6_Timer),1,days:[%q1],sub)])])],[ulocal(MSG_Crit)])] &FN_RAISE_MOVE d6 Database=[@@(0 - %#)][setq(1,ulocal(FN_GetListItem,get(%0/DD6_Skills),Move))][setq(2,add(%q1,1))][setq(3,sub(ulocal(FN_GetListItem,get(%0/DD6_Timer),days:Move),ulocal(FN_Days)))][setq(4,ulocal(FN_Max_Move,%0))][setq(5,ulocal(FN_Cost_Move,%q1,%q2))][switch([gte(ulocal(FN_GetListItem,get(%0/DD6_Skills),CP),%q5)][lte(%q3,0)][lte(%q2,%q4)],0*,[%vb] You lack the [%q5] character points to afford that.,10*,[%vb] You cannot raise your Move for another [%q3] days.,110*,[%vb] You may not raise your Move over [%q4].,111,[%va] You have improved your Move to [%q2].[null([ulocal(FN_AddLog,%0,%0,RAISE Move to [ulocal(FN_Pip2d6,%q2)] at cost [%q5].)][set(%0,DD6_Skills:[ulocal(FN_SetListItem,[ulocal(FN_xListItem,get(%0/DD6_Skills),%q5,CP,sub)],%q2,Move)])][set(%0,DD6_Timer:[ulocal(FN_SetListItem,get(%0/DD6_Timer),[add(mul(7,%q5),ulocal(FN_Days))],days:Move)])])],,[ulocal(MSG_Crit)])] &FN_RAISE_SKILL d6 Database=[@@(0 - %#, 1 - Skill)][setq(2,ulocal(FN_GetSkill,%0,%1))][setq(3,max(3,add(%q2,1)))][setq(4,ulocal(FN_Cost,%1,%q2,%q3))][setq(5,sub(ulocal(FN_GetListItem,get(%0/DD6_Timer),days:[%1]),ulocal(FN_Days)))][setq(6,ulocal(FN_Max_Skill,%0,%1))][switch([gte(ulocal(FN_GetListItem,get(%0/DD6_Skills),CP),%q4)][lte(%q5,0)][lte(%q3,%q6)],0*,[%vb] You lack the [%q4] character points to afford that.,10*,[%vb] You cannot raise [ansi(wh,edit(%1,_,%b))] for another [%q5] days.,110,[%vb] You may not raise your [edit(%1,_,%b)] skill over [ulocal(FN_ColorPip,%q6)].,111,[%va] You raise your [ansi(wh,edit(%1,_,%b))] to [ulocal(FN_ColorPip,%q3)] at the cost of [%q4] character points.[null([ulocal(FN_AddLog,%0,%0,RAISE [%q1] to [ulocal(FN_Pip2d6,%q3)] at cost [%q4].)][set(%0,DD6_Skills:[ulocal(FN_xListItem,get(%0/DD6_Skills),%q4,CP,sub)])][set(%0,DD6_Timer:[ulocal(FN_SetListItem,get(%0/DD6_Timer),[add(ulocal(FN_Days),mul(1,%q4))],days:[%1])])][ulocal(FN_SetSkill,%0,%1,%q3)])],[ulocal(MSG_Crit)])] &FN_RAISE_SPEC d6 Database=[@@(0 - %#, 1 - Skill:Spec)][setq(2,ulocal(FN_GetSpec,%0,%1))][setq(3,max(3,add(%q2,1)))][setq(4,ulocal(FN_Cost,%1,%q2,%q3))][setq(5,sub(ulocal(FN_GetListItem,get(%0/DD6_Timer),days:[%1]),ulocal(FN_Days)))][setq(6,ulocal(FN_Max_Skill,%0,%1))][switch([gte(ulocal(FN_GetListItem,get(%0/DD6_Skills),CP),%q4)][lte(%q5,0)][lte(%q3,%q6)],0*,[%vb] You lack the [%q4] character points to afford that.,10*,[%vb] You cannot raise [ansi(wh,edit(%1,_,%b))] for another [%q5] days.,110,[%vb] You may not raise your [edit(%1,_,%b)] skill over [ulocal(FN_ColorPip,%q6)].,111,[%va] You raise your [ansi(wh,edit(%1,_,%b))] to [ulocal(FN_ColorPip,%q3)] at the cost of [%q4] character points.[null([ulocal(FN_AddLog,%0,%0,RAISE [%q1] to [ulocal(FN_Pip2d6,%q3)] at cost [%q4].)][set(%0,DD6_Skills:[ulocal(FN_xListItem,get(%0/DD6_Skills),%q4,CP,sub)])][set(%0,DD6_Timer:[ulocal(FN_SetListItem,get(%0/DD6_Timer),[add(ulocal(FN_Days),mul(1,%q4))],days:[%1])])][ulocal(FN_SetSpec,%0,%1,%q3)])],[ulocal(MSG_Crit)])][ulocal(FN_AddLog,%0,%0,RAISE [%q1] to [ulocal(FN_Pip2d6,%q3)] at cost [%q4].)] &FN_RELOAD d6 Database=[@@(0 - %#, 1 - Weapon)][setq(1,locate(%0,%1,iX))][setq(2,get(%q1/List_Max_Ammo))][switch([isdbref(%q1)][and(eq(2,words(%q2)),eq(1,words(%q2,|)))],11,[ulocal(FN_Load,%0,%1,sub(first(%q2),ulocal(FN_GetListItem,get(%q1/List_Ammo),rest(%q2))),rest(%q2))],10,[%vb] [name(%q1)] must be reloaded via the +load command.,0*,[%vb] You do not have that in your inventory.,[ulocal(MSG_Crit)])] &FN_REMABILITY d6 Database=[@@(0 - %#, 1 - ability)][setq(1,grab(v(List_Abilities),squish(edit(%1,%b,_),_)))][switch([ulocal(FN_IsWiz,%0)][cand(t(%q1),match(v(List_Abilities),%q1))],0*,[ulocal(MSG_Wiz)],10*,[%vb] That special ability doesn't exist.,11,[%va] You have removed the '[edit(%q1,_,%b)]' special ability from the system.[null([set(%!,List_Abilities:[setdiff(v(List_Abilities),%q1)])])],[ulocal(MSG_Crit)])] &FN_REMATTR d6 Database=[@@(0 - %#, 1 - Attribute)][setq(1,grab(v(List_Attrs),[squish(edit(%1,%b,_),_)]))][switch([ulocal(FN_IsWiz,%0)][t(%q1)],0*,[ulocal(MSG_Wiz)],10,[ulocal(MSG_Attr)],11,[%va] You have removed the '[edit(%q1,_,%b)]' attribute.[set(%!,List_Attrs:[setdiff(v(List_Attrs),%q1)])][wipe(v(DB_Help)/ATTR_[%q1])][wipe(%!/P_[%q1])][iter(graball(v(List_Skills),* [%q1],|),%r[ulocal(FN_RemSkill,%0,first(itext(0)))],|,)],[ulocal(MSG_Crit)])] &FN_REMRACE d6 Database=[@@(0 - %#, 1 - race)][setq(1,grab(v(List_Races),* [%1],|))][ifelse(ulocal(FN_IsWiz,%0),[ifelse(t(%q1),[%va] You remove the [rest(%q1)] race from the system.[null([set(%!,List_Races:[setdiff(v(List_Races),%q1,|)])][set(%!,List_Max_Attr:[setdiff(v(List_Max_Attr),graball(v(List_Max_Attr),[rest(%q1)]-*,|),|)])][set(%!,List_Max_Move:[ulocal(FN_SetListItem,v(List_Max_Move),0,rest(%q1))])][set(%!,List_Min_Attr:[setdiff(v(List_Min_Attr),graball(v(List_Min_Attr),[rest(%q1)]-*,|),|)])][set(%!,List_Min_Move:[ulocal(FN_SetListItem,v(List_Min_Move),0,rest(%q1))])][wipe([v(DB_Help)]/RACE_[squish(edit(%1,%b,_),_)])])],[ulocal(MSG_Race)])],[ulocal(MSG_Wiz)])] &FN_REMSKILL d6 Database=[@@(0 - %#, 1 - skill)][setq(1,grab(v(List_Skills),[squish(edit(%1,%b,_),_)] *,|))][setq(2,graball(v(List_Skills),* [first(%q1)],|))][switch([ulocal(FN_IsWiz,%0)][t(%q1)],0*,[ulocal(MSG_Wiz)],10,[ulocal(MSG_Stat)],11,[iter(setunion(%q1,%q2,|),[wipe(%!/SPEC_[first(itext(0))])][wipe([v(DB_Help)]/SKILL_[first(itext(0))])][%va] You have removed the '[edit(first(itext(0)),_,%b)]' skill from the skills system.,|,%r)][set(%!,List_Skills:[setdiff(v(List_Skills),setunion(%q1,%q2,|),|)])],[ulocal(MSG_Crit)])] &FN_REMSPEC d6 Database=[@@(0 - %#, 1 - skill, 2 - specialization)][setq(1,first(grab(v(List_Skills),[squish(edit(%1,%b,_),_)]*,|)))][setq(2,grab(rest(v(SPEC_[%q1]),|),[squish(edit(%2,%b,_),_)]))][switch([ulocal(FN_IsWiz,%0)][t(%q1)][t(%q2)],0*,[ulocal(MSG_Wiz)],10*,[ulocal(MSG_Stat)],110,[%vb] [edit([%q1]:[squish(%2)],_,%b)] doesn't exist.,111,[%va] You have removed [edit([%q1]:[capstr(%q2)],_,%b)] from the system.[null([set(%!,SPEC_[%q1]:[first(v(SPEC_[%q1]),|)]|[setdiff(rest(v(SPEC_[%q1]),|),%q2)])])],[ulocal(MSG_Crit)])] &FN_ROLL d6 Database=[@@(0 - %#, 1 - Target, 2 - Attr/Skill at Modifier, 3 - IsLoud)][setq(1,ulocal(FN_Pmatch,%1))][setq(2,ucstr(squish(edit(%2,%b,_),_)))][setq(3,ulocal(FN_GrabStat,before(%q2,_AT_)))][switch([or(match(%0,%q1),ulocal(FN_IsRoy,%0))][isdbref(%q1)][t(%q3)][ulocal(FN_Prereq,%q1,%q3)],0*,[ulocal(MSG_Admin)],10*,[ulocal(MSG_Target)],110*,[ulocal(MSG_Stat)],1110*,[%vb] You do not meet the prerequisites of [edit(%q3,_,%b)].,1111,[setq(4,after(%q2,_AT_))][ifelse(eq(2,words(%q4,D)),[setq(5,val(before(%q4,D)))][setq(6,val(after(%q4,D)))],[setq(5,0)][setq(6,val(%q4))])][setq(7,ulocal(FN_GetStat,%q1,%q3))][setq(8,ulocal(FN_RollStat,add(%q7,mul(3,%q5)),%q6))][%va] [ifelse(match(%0,%q1),You roll your,You roll [name(%q1)]'s)] [setr(9,[edit(%q3,_,%b)] [ansi(wh,\()][ulocal(FN_ColorPip,%q7)][ansi(wh,\))][ifelse(or(%q5,%q6),%bwith a modifier of [ifelse(%q5,[%q5]D,)][switch(%q6,>0,+[%q6],0,,[%q6])],)] [ifelse(cand(extract(%q8,2,1),%q7),for a total of [ansi(yh,first(%q8))] [ansi(wh,\()]Wild Die: [ansi(switch(extract(%q8,2,1),>6,gh,>1,yh,rh),extract(%q8,2,1))][ansi(wh,\))]\, perhaps enough for a [ulocal(FN_RollDesc,first(%q8))] task.,and fails for lack of dice.)])][ifelse(t(%3),oemit([loc(%q1)]/[%0],[%va] [name(%0)] rolls [ifelse(match(%0,%q1),[poss(%0)],[name(%q1)]'s)] [%q9]),)],[ulocal(MSG_Crit)])] &FN_ROLLALL d6 Database=[@@(0 - %#, 1 - Attr/Skill at Modifier, 2 - IsLoud)][setq(1,ucstr(squish(edit(%1,%b,_),_)))][setq(2,ulocal(FN_GrabStat,before(%q1,_AT_)))][setq(3,after(%q1,_AT_))][ifelse(eq(2,words(%q3,D)),[setq(4,val(before(%q3,D)))][setq(5,val(after(%q3,D)))],[setq(4,0)][setq(5,val(%q3))])][switch([ulocal(FN_IsRoy,%0)][t(%q2)][t(%2)],0*,[ulocal(MSG_Admin)],10*,[ulocal(MSG_Stat)],110,[ulocal(FN_RollAll2,%0,%q2,%q4,%q5)],111,[remit(loc(%0),ulocal(FN_RollAll2,%0,%q2,%q4,%q5))],[ulocal(MSG_Crit)])] &FN_ROLLALL2 d6 Database=[@@(0 - %#, 1 - Attr/Skill, 2 - dice mod, 3 - flat mod)][setq(0,iter(setinter(lwho(),lcon(loc(%0))),ifelse(ulocal(FN_IsAlive,##),##,)))][setq(1,sortby(FN_Sort_Rolls,iter(%q0,[ulocal(FN_RollSkill,%0,%1,%2,%3)] [##],,|),|))]%r[center([ansi(rh,. o O)] [ansi(wh,[%1] Rolls[ifelse(or(%2,%3),%bat [ifelse(%2,[%2]D,)][switch(sign(%3),1,+[%3],-1,[%3],)],)])] [ansi(rh,O o .)],48)]%r[ansi(v(CLR_Border),.----.----.[repeat(-,31)].----.%r|)][ansi(wh,Roll)][ansi(v(CLR_Border),|)] [ansi(wh,WD)] [ansi(v(CLR_Border),|)] [ljust(ansi(wh,Player),30)][ansi(v(CLR_Border),|)][ansi(wh,Idle)][ansi(v(CLR_Border),|%r>----+----+[repeat(-,31)]+----<)][iter(%q1,%r[ansi(v(CLR_Border),|)][rjust(first(##),3)] [ansi(v(CLR_Border),|)][rjust(extract(##,2,1),3)] [ansi(v(CLR_Border),|)] [ljust([name(extract(##,3,1))][ansi(wh,\()][get(extract(##,3,1)/alias)][ansi(wh,\))],30)][ansi(v(CLR_Border),|)][rjust(ansi(switch(idle(extract(##,3,1)),>3600,r,>60,y,w),ansi(switch(idle(extract(##,3,1)),>900,r,>60,y,w),first(timestring(idle(extract(##,3,1)))))),4)][ansi(v(CLR_Border),|)],|,)]%r[ansi(v(CLR_Border),'----'----'[repeat(-,31)]'----')] &FN_ROLLDESC d6 Database=[switch(%0,>25,Heroic,>20,Very Difficult,>15,Difficult,>10,Moderate,>5,Easy,>0,Very Easy,Brain Damaged)] &FN_ROLLSKILL d6 Database=[setq(0,ulocal(FN_PMatch,%0))][setq(1,ulocal(FN_GetStat,%q0,%1))][switch([t(%q0)][isnum(%q1)],0*,#-1 Invalid target,10,#-1 Invalid attribute or skill,11,ulocal(FN_RollStat,add(%q1,mul(3,%2)),%3),#-1 Critical Failure)] &FN_ROLLSTAT d6 Database=[@@(0 - pips, 1 - number)][ifelse(gte(%0,3),[lmath(add,[%1] [mod(%0,3)] [setr(0,ulocal(FN_WildDie))] [ulocal(FN_Die,sub(div(%0,3),1),6)])] [%q0],[add(%0,%1)] 0)] &FN_SELECT d6 Database=[@@(0 - %#, 1 - Weapon, 2 - Setting)][setq(1,ifelse(isdbref(%1),%1,v(DB_Unarmed)))][setq(2,grab(get(%q1/List_Settings),[squish(edit(%2,%b,_),_)]*))][switch([ulocal(FN_IsWeapon,%q1)][t(%q2)][neq(0,comp(%q2,get(%q1/Setting)))],0*,[ulocal(MSG_Weapon,%q1)],10*,[%vb] Invalid setting. Valid weapon setting\(s\) for [name(%q1)] are: [iter(get(%q1/List_Settings),edit(##,_,%b),,\,%b)].,110,[%vb] Your [name(%q1)] is already on the '[%q2]' setting.,111,[remit(loc(%0),[%va] [ulocal(%q1/MSG_Select,%0,%q2)])][ifelse(match(v(DB_Unarmed),%q1),[set(%0,DD6_Setting:[%q2])],[set(%q1,Setting:[%q2])])],[ulocal(MSG_Crit)])] &FN_SET d6 Database=[@@(0 - %#, 1 - Target, 2 - Attr/Skill, 3 - # pips)][setq(1,ulocal(FN_Pmatch,%1))][setq(2,ulocal(FN_GrabStat,%2))][setq(3,ulocal(FN_d62pip,%3))][setq(4,ulocal(FN_Cost,%q2,ulocal(FN_GetStat,%q1,%q2),%q3))][switch([ulocal(FN_IsWiz,%0)][isdbref(%q1)][t(%q2)],0*,[ulocal(MSG_Wiz)],10*,[ulocal(MSG_Target)],110,[ulocal(MSG_Stat)],111,[%va] You set [ifelse(match(%0,%q1),your,[name(%q1)]'s)] [setr(5,[edit(%q2,_,%b)] to [ulocal(FN_ColorPip,%q3)] [ifelse(gt(%q4,0),at the cost,with a refund)] of [abs(%q4)] character points.)][null([ulocal(FN_AddLog,%0,%q1,SET [%q2] to [ulocal(FN_Pip2d6,%q3)] at cost [%q4])][ulocal(FN_SetStat,%q1,%q2,%q3)][set(%q1,DD6_Timer:[ulocal(FN_SetListItem,get(%q1/DD6_Timer),0,days:[%q2])])][set(%q1,DD6_Skills:[ulocal(FN_xListItem,get(%q1/DD6_Skills),%q4,CP,sub)])][pemit(setdiff(%q1,%0),[%va] %N sets your [%q5])])],[ulocal(MSG_Crit)])] &FN_SETATTR d6 Database=[@@(0 - Target, 1 - Attribute, 2 - # pips)][set(%0,DD6_Skills:[ulocal(FN_SetListItem,get(%0/DD6_Skills),%2,%1)])][ulocal(FN_BPRoll,%0,%1)] &FN_SETHSTATUS d6 Database=[@@(0 - %#, 1 - target, 2 - new health status)][ifelse(v(CFG_Wounds),[setq(1,ulocal(FN_Pmatch,%1))][setq(2,grab(v(List_HStatus),* [squish(edit(%2,%b,_),_)]*,|))][switch([ulocal(FN_IsWiz,%0)][t(%q2)],0*,[ulocal(MSG_Wiz)],10,[%vb] That is not a valid state of health. Use one of the following: [iter(v(List_HStatus),edit(rest(##),_,%b),|,\,%b)].,11,[%va] You have made [name(%q1)] [ansi(rh,edit(rest(%q2),_,%b))].[null([ulocal(FN_AddLog,%0,%q1,SETWOUNDS [rest(%q2)])][pemit(%q1,[%va] [name(%0)] has made you [ansi(rh,edit(rest(%q2),_,%b))].)][set(%q1,DD6_Skills:[ulocal(FN_SetListItem,get(%q1/DD6_Skills),first(%q2),HStatus)])])],[ulocal(MSG_Crit)])],[%vb] This command is disabled while a body point health system is in effect.)] &FN_SETMAXBP d6 Database=[@@(0 - %#, 1 - target, 2 - max body points)][ifelse(v(CFG_Wounds),[ansi(rh,-)] This command is disabled while a wound system is in effect.,[setq(1,ulocal(FN_Pmatch,%1))][setq(2,val(%2))][switch([ulocal(FN_IsWiz,%0)][isdbref(%q1)],0*,[ulocal(MSG_Wiz)],10,[ulocal(MSG_Target)],11,[%va] You have set [name(%q1)]'s maximum body points to [%q2].[null([ulocal(FN_AddLog,%0,%q1,SETMAXBP [%q2])][pemit(%q1,[%va] [name(%0)] has set your maximum body points to [%q2].)][set(%q1,DD6_Skills:[ulocal(FN_SetListItem,get(%q1/DD6_Skills),%q2,BPMax)])])],[ulocal(MSG_Crit)])])] &FN_SETMOVE d6 Database=[@@(0 - %#, 1 - Target, 2 - <#>)][setq(1,ulocal(FN_Pmatch,%1))][setq(2,val(%2))][setq(3,[ulocal(FN_Cost_Move,ulocal(FN_GetListItem,get(%1/DD6_Skills),Move),%q2)])][switch([ulocal(FN_IsWiz,%0)][isdbref(%q1)],0*,[ulocal(MSG_Wiz)],10*,[ulocal(MSG_Target)],11,[%va] You set [name(%q1)]'s [setr(4,Move to [%q2] [ifelse(gte(%q3,0),at the cost of,with a refund of)] [abs(%q3)] Character Point[ifelse(eq(%q3,1),,s)].)][null([ulocal(FN_AddLog,%0,%q1,SETMOVE [%q2] at cost [%q3])][set(%1,DD6_Skills:[ulocal(FN_SetListItem,ulocal(FN_xListItem,get(%1/DD6_Skills),%q3,CP,sub),%2,Move)])][set(%1,DD6_Timer:[ulocal(FN_SetListItem,get(%1/DD6_Timer),0,Move)])][pemit(%1,[%va] [name(%0)] sets your [%q4])])],[ulocal(MSG_Crit)])] &FN_SETRACE d6 Database=[@@(0 - %#, 1 - race, 2 - attr, 3 - value)][setq(1,rest(grab(v(List_Races),* [squish(%1)]*,|)))][ifelse(ulocal(FN_IsWiz,%0),[ifelse(t(%q1),[switch(first(%2),min,ulocal(FN_SetRace_Min,%0,%q1,rest(%2),%3),max,ulocal(FN_SetRace_Max,%0,%q1,rest(%2),%3),desc*,ulocal(FN_SetRace_Desc,%0,%q1,%3),dice,ulocal(FN_SetRace_Dice,%0,%q1,%3),[%vb] Invalid selection.)],[ulocal(MSG_Race)])],[ulocal(MSG_Wiz)])] &FN_SETRACE_DESC d6 Database=[@@(0 - %#, 1 - race, 2 - desc)][setq(1,squish(edit(%q1,%b,_),_))][%va] You change the description of the [%1] race.[null([set([v(DB_Help)],RACE_[%q1]:[%2])])] &FN_SETRACE_DICE d6 Database=[@@(0 - %#, 1 - race, 2 - die code)][setq(2,max(1,ulocal(FN_d62Pip,%2)))][%va] You set the attribute dice of the [%1] race to [ulocal(FN_Pip2d6,%q2)].[null([set(%!,List_Races:[ulocal(FN_SetListItem,v(List_Races),%q2,%1)])])] &FN_SETRACE_MAX d6 Database=[@@(0 - %#, 1 - race, 2 - attr/Move, 3 - value)][setq(2,grab(v(List_Attrs),[squish(%2)]*))][switch([match(Move,%2)][t(%q2)],1*,[setq(3,max(0,val(%3)))][%va] The maximum Move rating of the [%1] race is now [%q3].[null([set(%!,List_Max_Move:[ulocal(FN_SetListItem,v(List_Max_Move),%q3,%1)])])],01,[setq(3,max(0,ulocal(FN_d62Pip,%3)))][%va] The maximum [%q2] of the [%1] race is now [ulocal(FN_Pip2d6,%q3)].[null([set(%!,List_Max_Attr:[ulocal(FN_SetListItem,v(List_Max_Attr),%q3,[%1]-[%q2])])])],[ulocal(MSG_Crit)])] &FN_SETRACE_MIN d6 Database=[@@(0 - %#, 1 - race, 2 - attr/Move, 3 - value)][setq(2,grab(v(List_Attrs),[squish(%2)]*))][switch([match(Move,%2)][t(%q2)],1*,[setq(3,max(0,val(%3)))][%va] The minimum Move rating of the [%1] race is now [%q3].[null([set(%!,List_Min_Move:[ulocal(FN_SetListItem,v(List_Min_Move),%q3,%1)])])],01,[setq(3,max(0,ulocal(FN_d62Pip,%3)))][%va] The minimum [%q2] of the [%1] race is now [ulocal(FN_Pip2d6,%q3)].[null([set(%!,List_Min_Attr:[ulocal(FN_SetListItem,v(List_Min_Attr),%q3,[%1]-[%q2])])])],[ulocal(MSG_Crit)])] &FN_SETSKILL d6 Database=[@@(0 - Target, 1 - Skill, 2 - # pips)][setq(3,sub(%2,ulocal(FN_GetSkill,%0,%1)))][setq(4,ulocal(FN_xListItem,get(%0/DD6_Skills),%q3,%q1,add))][iter(graball(get(%0/DD6_Skills),* [%1]:*,|),[setq(4,ifelse([gt(sub(first(itext(0)),%q3),0)],[ulocal(FN_xListItem,%q4,%q3,rest(itext(0)),sub)],[ulocal(FN_SetListItem,%q4,0,rest(itext(0)))]))],|,)][set(%0,DD6_Skills:[%q4])] &FN_SETSPEC d6 Database=[@@(0 - Target, 1 - Skill, 2 - # pips)][set(%0,DD6_Skills:[ulocal(FN_SetListItem,get(%0/DD6_Skills),[sub(%2,sub(ulocal(FN_GetSpec,%0,%1),ulocal(FN_GetListItem,get(%0/DD6_Skills),%1)))],%1,add)])] &FN_SETSTAT d6 Database=[@@(0 - Target, 1 - Attr/Skill, 2 - # pips)][setq(1,ulocal(FN_GrabStat,%1))][switch([t(match(v(List_Attrs),%q1))][t(%q1)][words(%q1,:)],1*,[ulocal(FN_SetAttr,%0,%q1,%2)],011,[ulocal(FN_SetSkill,%0,%q1,%2)],012,[ulocal(FN_SetSpec,%0,%q1,%2)],#-1)] &FN_SHEET d6 Database=[@@(0 - %#, 1 - argument)][setq(1,lcstr(%1))][ifelse(match(/,mid(%q1,0,1)),[setq(2,first(after(%q1,/)))][setq(3,rest(after(%q1,/)))],[setq(2,)][setq(3,%q1)])][setq(4,ifelse(t(%q3),ulocal(FN_PMatch,%q3),%0))][switch([not(match(mail,first(%q1)))][t(%q4)][or(match(%0,%q4),ulocal(FN_IsRoy,%0))][t(%q2)],0*,,10*,[ulocal(MSG_Target)],110*,[ulocal(MSG_Admin)],1110,[ulocal(FN_Sheet_Body,%q4)],1111,[ulocal(FN_Sheet2,%0,%q4,%q2)],[ulocal(MSG_Crit)])] &FN_SHEET2 d6 Database=[@@(0 - %#, 1 - Target, 2 - Switch)][setq(3,abilities biography description full health log skills training weapons)][setq(2,grab(%q3,[%2]*))][ifelse(t(%q2),[ulocal(FN_Sheet_Header,%1)][switch(%q2,abilities,[ulocal(FN_Sheet_Abilities,%1)],skills,%r[ulocal(FN_Sheet_Skills_Full,%1)],weapons,[ulocal(FN_Sheet_Weapons,%1)],%r[ulocal(FN_Sheet_[%q2],%1)])]%r[ulocal(FN_Footer)],[%vb] Invalid switch. Please use one of the following: [iter(%q3,itext(0),,\,%b)].)] &FN_SHEET_ABILITIES d6 Database=[ifelse(words(get(%0/DD6_Abilities)),%r[ulocal(FN_ILine,Advantages\, Disadvantages\, & Special Abilities)][iter(ulocal(FN_SortNCol,get(%0/DD6_Abilities),%b,2),[ifelse(mod(inum(0),2),%r[ansi(v(CLR_Border),|)]%b,)][ljust(edit(itext(0),_,%b),37)][ifelse(mod(inum(0),2),,[ansi(v(CLR_Border),|)])])],)] &FN_SHEET_BIOGRAPHY d6 Database=[ulocal(FN_ILine,Biography)][ulocal(FN_Border,[objeval(%0,u(Biography))],v(CLR_Border),78)] &FN_SHEET_BODY d6 Database=[ulocal(FN_Sheet_Header,%0)]%r[ulocal(FN_Sheet_Health,%0)]%r[ulocal(FN_Sheet_Skills,%0)][ulocal(FN_Sheet_Abilities,%0)][ulocal(FN_Sheet_Weapons,%0)]%r[ulocal(FN_Footer)] &FN_SHEET_DESCRIPTION d6 Database=[ulocal(FN_ILine,Description)][ulocal(FN_Border,[objeval(%0,u(describe))],v(CLR_Border),78)] &FN_SHEET_FMTSKILLS d6 Database=[@@(0 - level type name|repeat)][ulocal(FN_ILine,Skills)][iter(ulocal(FN_SortNCol2,edit(%0,0 0 Advanced_Skills|,),|,2),[ifelse(mod(#@,2),%r[ansi(v(CLR_Border),|)]%b,%b%b)][setq(1,edit(extract(itext(0),3,1),_,%b))][switch(extract(itext(0),2,1),0,[ljust(ansi(wh,%q1),30)][ljust(ulocal(FN_ColorPip,first(itext(0))),6)],1,%b%b[ljust(ansi(w,%q1),28)][ljust(ulocal(FN_ColorPip,first(itext(0))),6)],2,%b%b%b%b[ljust(ansi(w,%q1),26)][ljust(ulocal(FN_ColorPip,first(itext(0))),6)],space(36))][ifelse(mod(#@,2),,%b[ansi(v(CLR_Border),|)])],|,)] &FN_SHEET_FULL d6 Database=[ulocal(FN_Sheet_Health,%0)]%r[ulocal(FN_Sheet_Skills,%0)][ulocal(FN_Sheet_Abilities,%0)][ulocal(FN_Sheet_Weapons,%0)]%r[ulocal(FN_Sheet_Description,%0)]%r[ulocal(FN_Sheet_Biography,%0)] &FN_SHEET_HEADER d6 Database=[setq(1,Race:[default(%0/Race,N/A)]|Sex:[switch(poss(%0),his,Male,her,Female,N/A)][switch([ulocal(FN_GetListItem,get(%0/DD6_Physical),Height)],0,,|Height:[#$] meters)][switch([ulocal(FN_GetListItem,get(%0/DD6_Physical),Weight)],0,,|Weight:[#$] kilograms)][switch([ulocal(FN_GetListItem,get(%0/DD6_Skills),Move)],0,,|Move:[#$] meters/round)][iter(CP^Character Points|FP^Fate Points,[switch(ulocal(FN_GetListItem,get(%0/DD6_Skills),first(##,^)),0,,|[rest(##,^)]:[#$])],|,)][iter(Attr_Dice^Attribute Dice|Skill_Dice^Skill Dice|Scale^Scale,[switch(ulocal(FN_GetListItem,get(%0/DD6_Skills),first(##,^)),0,,|[rest(##,^)]:[ulocal(FN_pip2d6,#$)])],|,)])][ulocal(FN_Header,name(%0))][iter(%q1,[ifelse(mod(sub(#@,1),3),,%r[ansi(v(CLR_Border),|)]%b)][ljust([ansi(wh,[first(##,:)]:)] [rest(##,:)],25)][ifelse(mod(#@,3),,[ansi(v(CLR_Border),|)])],|,)][switch(mod(words(%q1,|),3),0,,1,[space(50)][ansi(v(CLR_Border),|)],2,[space(25)][ansi(v(CLR_Border),|)])] &FN_SHEET_HEALTH d6 Database=[ifelse(v(CFG_Wounds),ulocal(FN_Sheet_Health_Wounds,%0),ulocal(FN_Sheet_Health_BP2,%0))] &FN_SHEET_HEALTH_BP d6 Database=[ulocal(FN_ILine,Health)]%r[ansi(v(CLR_Border),|)] [ljust([ansi(wh,Body Points:)] [setr(0,sub(setr(1,ulocal(FN_BPMax,%0)),ulocal(FN_BPDmg,%0)))]/[%q1],25)][ansi(wh,\[)][ifelse(eq(%q1,0),[setq(0,1)][setq(1,1)],)][ljust(ansi(switch(div(mul(100,%q0),%q1),>75,Gg,>30,Yy,Rr),repeat(#,div(mul(47,%q0),%q1))),47)][ansi(wh,\])] [ansi(v(CLR_Border),|)] &FN_SHEET_HEALTH_BP2 d6 Database=[ulocal(FN_ILine,Health)]%r[ansi(v(CLR_Border),|)] [ljust([ansi(wh,Body Points:)] [setr(0,sub(setr(1,ulocal(FN_BPMax,%0)),ulocal(FN_BPDmg,%0)))]/[%q1],25)][ansi(wh,\[)][ifelse(eq(%q1,0),[setq(0,1)][setq(1,1)],)][setq(2,div(mul(47,max(0,%q0)),%q1))][setq(4,w)][setq(5,wh)][setq(3,switch(div(mul(100,%q0),%q1),<0,Dead[setq(5,rh)],0,Dead[setq(5,rh)],<10,Mortally Wounded[setq(4,Ryh)],<20,Incapacitated[setq(4,Rwh)],<40,Severely Wounded[setq(4,Yrh)],<60,Wounded[setq(4,Ywh)],<80,Stunned[setq(4,Gyh)],Healthy[setq(4,Gwh)]))][ansi(%q4,mid(center(%q3,47),0,%q2))][ansi(%q5,mid(center(%q3,47),%q2,47))][ansi(wh,\])] [ansi(v(CLR_Border),|)] &FN_SHEET_HEALTH_WOUNDS d6 Database=[ulocal(FN_ILine,Health)]%r[ansi(v(CLR_Border),|)] [ljust([ansi(wh,Health:)] [edit(ulocal(FN_HStatus,%0),_,%b)],25)][ljust(\([ansi(c,extract(Unharmed\, but may be stunned or unconscious|-1D to all skill & attribute rolls|-2D to all skill & attribute rolls|Cannot use skills\, slow and groggy|Prone\, unconscious\, may die soon|Mostly dead,[add(1,ulocal(FN_GetListItem,get(%0/DD6_Skills),HStatus))],1,|))]\),49)] [ansi(v(CLR_Border),|)] &FN_SHEET_LOG d6 Database=[ulocal(FN_ILine,Change Log)][iter(get(%0/DD6_Log),%r[ansi(v(CLR_Border),|)] [rjust(timefmt($m/$d/$y,extract(##,1,1,^)),8)]: [ljust(ansi(ifelse(match(extract(##,3,1,^),name(extract(##,2,1,^)),|),w,c),extract(##,3,1,^)),18)] [ljust(extract(##,4,1,^),46)][ansi(v(CLR_Border),|)],|,)] &FN_SHEET_SKILLS d6 Database=[ifelse(gt(add(words(v(List_Skills),|),words(v(List_Attrs))),40),ulocal(FN_Sheet_Skills_Select,%0),ulocal(FN_Sheet_Skills_Full,%0))] &FN_SHEET_SKILLS_FULL d6 Database=[setq(0,get(%0/DD6_Skills))][setq(0,iter(v(List_Attrs),[setr(1,u(FN_GetListItem,%q0,itext(0)))] 0 [itext(0)][iter(graball(v(List_Skills),* [itext(0)],|),|[setr(2,add(%q1,u(FN_GetListItem,%q0,first(itext(0)))))] 1 [first(itext(0))][iter(graball(%q0,* [first(itext(0))]:*,|),|[add(%q2,first(itext(0)))] 2 [capstr(rest(itext(0),:))],|,)],|,)],,|))][ulocal(FN_Sheet_FmtSkills,%q0)] &FN_SHEET_SKILLS_SELECT d6 Database=[setq(9,get(%0/DD6_Skills))][setq(4,setdiff(iter(%q9,switch(grab(v(List_Skills),[rest(first(itext(0),:))] *,|),,,#$),|,|),,|))][setq(0,[iter(v(List_Attrs),[setr(1,ulocal(FN_GetListItem,%q9,itext(0)))] 0 [itext(0)][iter(graball(%q4,* [itext(0)],|),|[setr(2,add(%q1,ulocal(FN_GetListItem,%q9,first(itext(0)))))] 1 [first(itext(0))][iter(graball(%q9,* [first(itext(0))]:*,|),|[add(%q2,first(itext(0)))] 2 [capstr(rest(itext(0),:))],|,)],|,)],,|)])][ulocal(FN_Sheet_FmtSkills,%q0)] &FN_SHEET_TRAINING d6 Database=[ulocal(FN_Update,%0)][setq(0,sortby(FN_Sort_Rest,get(%0/DD6_Timer),|))][ulocal(FN_ILine,Training Times)][ifelse(words(%q0),[iter(%q0,[ifelse(mod(#@,2),%r[ansi(v(CLR_Border),|)]%b,%b%b)][edit(rest(##,:),_,%b)][rjust([switch(first(rest(##),:),days,[ansi(rh,[sub(first(##),ulocal(FN_Days))] days)],secs,[ansi(rh,first(timestring(sub(first(##),secs()))))],)],sub(36,strlen(rest(##,:))))][ifelse(mod(#@,2),,%b[ansi(v(CLR_Border),|)])],|,)][ifelse(mod(words(%q0,|),2),[space(39)][ansi(v(CLR_Border),|)],)],%r[ansi(v(CLR_Border),|)] [center([ansi(rh,No attributes or skills in training.)],74)] [ansi(v(CLR_Border),|)])] &FN_SHEET_WEAPONS d6 Database=[setq(0,sortby(FN_Sort_Names,iter(lcon(%0),ifelse(ulocal(FN_IsWeapon,itext(0)),itext(0),))))][ifelse(words(%q0),%r[ulocal(FN_ILine,Weapons)][iter(%q0,[ifelse(mod(sub(#@,1),2),,%r[ansi(v(CLR_Border),|)])]%b[ljust(name(##),36)]%b[ifelse(mod(#@,2),,[ansi(v(CLR_Border),|)])],,)][switch(mod(words(%q0),2),0,,[space(mul(38,mod(sub(2,#$),2)))][ansi(v(CLR_Border),|)])],)] &FN_SORT_FIRST d6 Database=sign(sub(first(%1),first(%0))) &FN_SORT_NAMES d6 Database=comp(name(%0),name(%1)) &FN_SORT_REST d6 Database=comp(rest(%1),rest(%0)) &FN_SORT_ROLLS d6 Database=[sign(switch(sub(first(%1),first(%0)),0,sub(extract(%1,2,1),extract(%0,2,1)),#$))] &FN_SPEAK d6 Database=[@@(0 - %#, 1 - language)][setq(1,grab(v(Spec_Languages),[squish(edit(%1,%b,_),_)]*))][switch([t(%q1)][not(match(get(%0/DD6_Lingo),%q1,|))][cor(0,ulocal(FN_GetListItem,get(%0/DD6_Skills),Languages:[%q1]))],0*,[%vb] That is not a valid language. Try one of the following: [iter(v(Spec_Languages),edit(itext(0),_,%b),,\,%b)].,10*,[%vb] You are already speaking [edit(%q1,_,%b)].,110*,[%vb] You have no idea how to speak [edit(%q1,_,%b)].,111,[%va] You chose to speak [edit(%q1,_,%b)].[null([set(%0,DD6_Lingo:[%q1])])],[ulocal(MSG_Crit)])] &FN_STATTYPE d6 Database=[switch([t(match(v(List_Attrs),%0))][t(match(v(List_Skills),[%0]*,|))],1*,Attribute,01,Skill,#-1)] &FN_UNLOAD_ALL d6 Database=[@@(0 - %#, 1 - Weapon)][setq(1,locate(%0,%1,iX))][setq(2,first(iter(lcon(%0),ifelse(ulocal(FN_IsAmmo,itext(0)),itext(0),))))][switch([ulocal(FN_IsWeapon,%q1)][t(get(%q1/List_Ammo))][t(ulocal(%q1/FN_Can_Unload))],0*,[ulocal(MSG_Weapon,%q1)],10*,[%vb] [name(%q1)] wasn't loaded.,110*,[%vb] [name(%q1)] cannot be unloaded.,111,[remit(loc(%0),[%va] [ulocal(%q1/MSG_Unload,%0)])][ifelse(isdbref(%q2),,[setq(2,ulocal(FN_MakeAmmo))][tel(%q2,%0)])][setq(3,get(%q2/List_Ammo))][iter(get(%q1/List_Ammo),setq(3,ulocal(FN_xListItem,%q3,first(itext(0)),rest(itext(0)),add)),|,)][set(%q2,List_Ammo:[%q3])][wipe(%q1/List_Ammo)],[ulocal(MSG_Crit)])] &FN_UNWEAR d6 Database=[@@(0 - %#)][setq(1,get(%0/DD6_Armor))][switch([isdbref(%q1)],0,[%vb] You do not have any armor worn.,1,[remit(%l,[%va] [ulocal(%q1/MSG_Unwear,%0)])][null([lock(%q1/drop,)][lock(%q1/give,)][wipe(%0/DD6_Armor)])],[ulocal(MSG_Crit)])] &FN_UNWIELD d6 Database=[@@(0 - %#)][setq(1,get(%0/DD6_Weapon))][switch([isdbref(%q1)],0,[%vb] You do not have a weapon readied.,1,[remit(%l,[%va] [ulocal(%q1/MSG_Unwield,%0)])][null([lock(%q1/drop,)][lock(%q1/give,)][wipe(%0/DD6_Weapon)])],[ulocal(MSG_Crit)])] &FN_UPDATE d6 Database=[set(%0,DD6_Timer:[setdiff(iter(get(%0/DD6_Timer),[switch(first(rest(itext(0)),:),days,[ifelse(gt(first(itext(0)),ulocal(FN_Days)),|[itext(0)],)],secs,[ifelse(gte(first(itext(0)),secs()),|[itext(0)],)],|[itext(0)])],|,),,|)])] &FN_USECP d6 Database=[@@(0 - %#)][switch([gte(ulocal(FN_GetListItem,get(%0/DD6_Skills),CP),1)],0,[%vb] You don't have a character point to spend.,1,[%va] You use a character point to improve a roll by [setr(1,ulocal(FN_WildDie))] points.[oemit([loc(%0)]/[%0],[%va] %N uses a character point to improve a roll by [%q1] points.)][set(%0,DD6_Skills:[ulocal(FN_xListItem,get(%0/DD6_Skills),1,CP,sub)])],[ulocal(MSG_Crit)])] &FN_WEAR d6 Database=[@@(0 - %#, 1 - Armor)][setq(1,locate(%0,%1,iX))][switch([isdbref(%q1)][ulocal(FN_IsArmor,%q1)][not(ulocal(FN_IsArmor,get(%0/DD6_Armor)))],0*,[%vb] No such item could be found.,10*,[ulocal(MSG_Armor,%q1)],110*,[%vb] You already have your '[name(get(%0/DD6_Armor))]' worn.,111,[remit(%l,[%va] [ulocal(%q1/MSG_Wear,%0)])][null([lock(%q1/drop,=[%q1])][lock(%q1/give,=[%q1])][set(%0,DD6_Armor:[%q1])])],[ulocal(MSG_Crit)])] &FN_WIELD d6 Database=[@@(0 - %#, 1 - Weapon)][setq(1,locate(%0,%1,iX))][switch([isdbref(%q1)][ulocal(FN_IsWeapon,%q1)][not(ulocal(FN_IsWeapon,get(%0/DD6_Weapon)))],0*,[%vb] No such item could be found.,10*,[ulocal(MSG_Weapon,%q1)],110*,[%vb] You already have your '[name(get(%0/DD6_Weapon))]' readied.,111,[remit(%l,[%va] [ulocal(%q1/MSG_Wield,%0)])][null([lock(%q1/drop,=[%q1])][lock(%q1/give,=[%q1])][set(%0,DD6_Weapon:[%q1])])],[ulocal(MSG_Crit)])] &FN_WILDDIE d6 Database=[switch(die(1,6),6,add(6,ulocal(FN_WildDie)),#$)] &FUN_GETSKILL d6 Database=[ifelse(ulocal(FN_IsWiz,%@),ulocal(FN_Pip2d6,ulocal(FN_GetStat,ulocal(FN_PMatch,secure(%0)),secure(%1))),#-1 Permission denied)] &FUN_GETSKILL2 d6 Database=[ifelse(ulocal(FN_IsWiz,%@),ulocal(FN_GetStat,ulocal(FN_PMatch,secure(%0)),secure(%1)),#-1 Permission denied)] &FUN_GETWEAPON d6 Database=[@@(0 - player)][ulocal(FN_GetWeapon,ulocal(FN_PMatch,secure(%0)))] &FUN_ROLLSKILL d6 Database=[@@(0 - Player, 1 - Skill, 2 - <#>D, 3 - D+<#>)][ifelse(ulocal(FN_IsWiz,%@),ulocal(FN_RollSkill,secure(%0),secure(%1),val(secure(%2)),val(secure(%3))),#-1 Permission denied)] &FUN_ROLLSTAT d6 Database=[@@(0 - # pips, 1 - modifier)][ifelse(ulocal(FN_IsWiz,%@),[ulocal(FN_RollStat,val(secure(%0)),val(secure(%1)))],#-1 Permission denied)] &LIST_ABILITIES d6 Database=Blind Claws Deaf Pilgrim &LIST_ATTRS d6 Database=Agility Knowledge Mechanical Perception Strength Technical &LIST_HSTATUS d6 Database=0 Healthy|1 Wounded|2 Wounded_Twice|3 Incapacitated|4 Mortally_Wounded|5 Killed &LIST_LOG d6 Database= &LIST_MAX_ATTR d6 Database=15 Kilrathi-Strength &LIST_MAX_MOVE d6 Database=9 Ewok|10 Sluissi|15 Wookiee|10 Gamorrean &LIST_MIN_ATTR d6 Database=9 Kilrathi-Strength &LIST_MIN_MOVE d6 Database=7 Ewok|8 Sluissi|9 Mon_Calamari|11 Wookiee|7 Gamorrean &LIST_RACES d6 Database=33 Kilrathi|36 Firekkan|36 Human &LIST_SKILLS d6 Database=Acrobatics Agility|Aliens Knowledge|Armor_Repair Technical|Artist Perception|Astrography Knowledge|Bargain Perception|Brawling Agility|Bureaucracy Knowledge|Business Knowledge|Climb/Jump Strength|Command Perception|Communications Mechanical|Computer_Interface/Repair Technical|Con Perception|Cultures Knowledge|Demolitions Technical|Dodge Agility|Exoskeleton_Operation Mechanical|Exoskeleton_Repair Technical|Firearms Agility|Firearms_Repair Technical|Flight_Systems_Repair Technical|Flying/0-G Agility|Forgery Perception|Gambling Perception|Gunnery Mechanical|Gunnery_Repair Technical|Hide Perception|Intimidation Knowledge|Investigation Perception|Know-how Perception|Languages Knowledge|Lift Strength|Medicine Technical|Melee_Weapons Agility|Missile_Weapons Agility|Music Perception|Navigation Mechanical|Personal_Equipment_Repair Technical|Persuasion Perception|Piloting Mechanical|Riding Agility|Robot_Interface/Repair Technical|Running Agility|Scholar Knowledge|Search Perception|Security_Regulations Knowledge|Security Technical|Sensors Mechanical|Shields Mechanical|Sleight_of_Hand Agility|Sneak Perception|Stamina Strength|Streetwise Knowledge|Survival Knowledge|Swim Strength|Tactics Knowledge|Throwing Agility|Vehicle_Operation Mechanical|Vehicle_Repair Technical|Willpower Knowledge &MSG_ADMIN d6 Database=[%vb] You are not an admin. &MSG_ARMOR d6 Database=[%vb] [ifelse(isdbref(%0),name(%0),That)] is not wearable. &MSG_ATTR d6 Database=[%vb] That is not a valid attribute. &MSG_CRIT d6 Database=[%vb] Please report this error at once. &MSG_HELP d6 Database=[%vb] That is not a valid entry. &MSG_RACE d6 Database=[%vb] That is not a valid race. &MSG_STAT d6 Database=[%vb] That is not a valid skill or attribute. &MSG_TARGET d6 Database=[%vb] No such target could be found. &MSG_WEAPON d6 Database=[%vb] [ifelse(isdbref(%0),name(%0),That)] is not a weapon. &MSG_WIZ d6 Database=[%vb] You are not a wizard. &P_ALIENS d6 Database=[not(match(get(%0/Race),%1))] &P_ARTIST d6 Database=[t(words(%1))] &P_LANGUAGES d6 Database=[t(words(%1))] &P_MUSIC d6 Database=[t(words(%1))] &P_SCHOLAR d6 Database=[t(words(%1))] &SPEC_ALIENS d6 Database=An alien race or species|Firekkan Human Kilrathi &SPEC_ARTIST d6 Database=An art medium|cinematography painting photography poetry sculpture &SPEC_CLIMB/JUMP d6 Database=|climbing jumping &SPEC_CON d6 Database=|disguise &SPEC_FIREARMS d6 Database=Type or model of firearm|assault_rifles pistols pulse_pistols pulse_rifles rifles shotguns submachine_guns &SPEC_FIREARMS_REPAIR d6 Database=Type or model of firearm|assault_rifles pistols pulse_pistols pulse_rifles rifles shotguns submachine_guns &SPEC_FLIGHT_SYSTEMS_REPAIR d6 Database=Model of spacecraft or aircraft|Bengal Bloodfang Broadsword Centurion Clydesdale Crossbow Demon Diligent Dorkathi Dorkir Drakhri Dralthi Drayman Exeter Ferret Fralthi Fralthra Free_Trader Galaxy Gilgamesh Gothri Gratha Grikath Hhriss Hornet Jalkehi Jalthi Jrathek Kamekh Krant Lumbari Morningstar Orion Ralari Ralatha Rapier Raptor Sabre Salthi Sartha Scimitar Snakier Strakha Talon Tarsus Venture Waterloo &SPEC_GAMBLING d6 Database=A particular game|blackjack craps poker &SPEC_HIDE d6 Database=|camouflage &SPEC_KNOW-HOW d6 Database=|cooking sewing &SPEC_LANGUAGES d6 Database=A particular language|Arabic Chinese Danish Dutch English Esperanto French Gaelic German Greek Hebrew Hindi Icelandic Italian Japanese Kilrathi Korean Latin Lithuanian Mongolian Navajo Polish Portuguese Romanian Russian Sanskrit Spanish Swahili Swedish Turkish Welsh &SPEC_MELEE_WEAPONS d6 Database=Type or model of melee weapon|axes bladestaffs clubs kithi-ka_blades knives spears staves swords whips &SPEC_MISSILE_WEAPONS d6 Database=Type or model of missile weapon|blowguns bows crossbows slings &SPEC_MUSIC d6 Database=A musical intrument|accordion bagpipes balalaika banjo bass_guitar bassoon bugle cello clarinet cornet drums flute french_horn guitar harmonica harp keyboard mandolin oboe piccolo saxophone singing trombone trumpet tuba viola violin zither &SPEC_PILOTING d6 Database=Model of spacecraft or aircraft|Bengal Bloodfang Broadsword Centurion Clydesdale Crossbow Demon Diligent Dorkathi Dorkir Drakhri Dralthi Drayman Exeter Ferret Fralthi Fralthra Free_Trader Galaxy Gilgamesh Gothri Gratha Grikath Hhriss Hornet Jalkehi Jalthi Jrathek Kamekh Krant Lumbari Morningstar Orion Ralari Ralatha Rapier Raptor Sabre Salthi Sartha Scimitar Snakier Strakha Talon Tarsus Venture Waterloo &SPEC_RIDING d6 Database=Type of animal|bulls camels donkeys elephants horses &SPEC_SCHOLAR d6 Database=Field of study|anthropology archaeology architecture art astronomy biology botany cardiology cartography chemistry economics engineering entomology ettiquette geology government history literature mathematics medicine neurology philosophy physics psychology quantum_theory religion virology &SPEC_SLEIGHT_OF_HAND d6 Database=|open_locks pick_pockets &SPEC_TACTICS d6 Database=Type of military unit|capital_ships fleets ground_assault squads &SPEC_THROWING d6 Database=Item to be thrown|boomerangs darts grenades knives spears throwing_stars &SPEC_VEHICLE_OPERATION d6 Database=Type or model of ground vehicle|bicycles canoes cars kayaks motorcycles sailboats submarines trucks &SPEC_VEHICLE_REPAIR d6 Database=Type or model of ground vehicle|bicycles canoes cars kayaks motorcycles sailboats submarines trucks @STARTUP d6 Database=@drain %!;@notify %!;@dolist DD6_Abilities DD6_Armor DD6_Backup DD6_Physical DD6_Skills DD6_Timer DD6_Weapon Race={@attribute/access/retroactive [##]=no_command no_inherit no_clone mortal_dark wizard};@dolist [lattr(%!/FUN_*)]={@function [rest(##,_)]=%!,##} &TR_BACKUP d6 Database=@tr %!/TR_Backup2=[search(all,eval,\[hasattr(##,DD6_Skills)\])] &TR_BACKUP2 d6 Database=@dolist %0=@cpattr ##/DD6_Skills=##/DD6_Backup &TR_HEAL d6 Database=@tr %!/TR_Heal2=[search(all,eplayer,\[and(ulocal(FN_IsAlive,##),match(get(##/DD6_Skills),*BPDmg*))\])] &TR_HEAL2 d6 Database=say Healing: [iter(%0,[set(##,DD6_Skills:[ulocal(FN_xListItem,get(##/DD6_Skills),1,BPDmg,sub)])][pemit(##,[%va] You have regained a single wound point due to natural healing.)][name(##)],,\,%b)]. @@ Language System(#1174TIWn) @@ Type: THING Flags: TRUST WIZARD NO_COMMAND @@ Owner: Dahan(#3PWXeAC"cm) Zone: *NOTHING* Pennies: Unlimited @@ Parent: Common Functions Object(#11TLVXn) @@ Powers: @@ Warnings checked: none @@ Created: Mon Nov 01 15:48:38 2004 @@ Last Modification: Tue Nov 02 22:24:17 2004 @@ Home: Dahan's Dungeon(#47Rn) @@ Location: Storage Locker - 192(#192TWe) @create Language System @parent Language System=Common Functions Object @set Language System = TRUST @set Language System = WIZARD @set Language System = NO_COMMAND &FN_FULL Language System=[@@(0 - enactor, 1 - listener, 2 - language, 3 - message)][objeval(%0,pemit(%1,[%3] [ansi(gh,<)][ansi(bh,%2)][ansi(gh,>)]))] &FN_GIBBERISH Language System=[setq(1,ifelse(hasattr(%!,LANG_[%1]),v(LANG_[%1]),v(LANG_Basic)))][ansi(xh,[capstr(iter(lcstr(edit(secure(%2),.,%b,-,%b,',,?,%b,!,%b,:,%b)),[extract(%q1,add(1,mod(u(FN_Word_Num,soundex(itext(0))),words(%q1))),1)]))].)] &FN_ISFLUENT Language System=[@@(0 - player, 1 - language)][cor(not(ulocal(FN_IsIC,%0)),gte(getskill2(%0,Languages:[%1]),18))] &FN_ISIC Language System=[cand(match(get(%0/Status),IC),not(match(#99,zone(loc(%0)))))] &FN_ISTRAINED Language System=[@@(0 - player, 1 - language)][t(ulocal(FN_GetListItem,get(%0/DD6_Skills),Languages:[%1]))] &FN_LEMIT Language System=[@@(0 - %@, 1 - targets, 2 - language, 3 - message)][setq(3,objeval(%#,%3))][iter(%1,[switch([ulocal(FN_IsFluent,itext(0),%2)][ulocal(FN_IsTrained,itext(0),%2)],1*,[ulocal(FN_Full,%0,itext(0),%2,%q3)],01,[ulocal(FN_Partial,%0,itext(0),%2,%q3)],00,[ulocal(FN_Untrained,%0,itext(0),%2,%q3)],)],)],,)] &FN_PARTIAL Language System=[@@(0 - enactor, 1 - listener, 2 - language, 3 - message)][setq(4,first(rollskill(%1,Language:[%2])))][setq(3,iter(%q3,[ifelse(mod(inum(0),2),itext(0),[iter(itext(0),ulocal(FN_Word,%q4,itext(0)))])],","))][objeval(%0,pemit(%1,[edit(%q3,... ...,...,... ... ...,...,... ... ... ...,...)] [ansi(gh,<)][ansi(bh,%2)][ansi(gh,>)][ifelse(orflags(%1,Wr),%r[ansi(wh,Translation:)] [%3],)]))] &FN_UNTRAINED Language System=[@@(0 - enactor, 1 - listener, 2 - language, 3 - message)][setq(3,iter(%q3,[ifelse(mod(inum(0),2),itext(0),[ansi(rh,squish(repeat(...%b,min(5,max(1,div(words(itext(0)),3))))))])],","))][objeval(%0,pemit(%1,[%q3] [ansi(gh,<)][ansi(bh,%2)][ansi(gh,>)][ifelse(orflags(%1,Wr),%r[ansi(wh,Translation:)] [%3],)]))] &FN_WORD Language System=[ifelse(gte(%0,add(fdiv(strlen(%1),1),die(4,6))),%1,...)] &FUN_LPEMIT Language System=[@@(0 - player, 1 - lang, 2 - message)][ifelse(cor(orflags(owner(%@),Wr),haspower(owner(%@),builder)),[ulocal(FN_LEmit,%@,%0,%1,%2)],#-1 Permission denied.)] &FUN_LREMIT Language System=[@@(0 - room, 1 - lang, 2 - message)][ifelse(cor(orflags(owner(%@),Wr),haspower(owner(%@),builder)),[ulocal(FN_LEmit,%@,lcon(%0),%1,%2)],#-1 Permission denied.)] &HOOK_EMIT Language System=[ifelse(cand(ulocal(FN_IsIC,%#),gt(words(%c,"),1)),0[null(ulocal(FN_LEmit,%#,[lcon(loc(%#))],[default(%#/DD6_Lingo,English)],[objeval(%#,s(ifelse(match(mid(%c,0,1),@),rest(%c),after(%c,\\))))]))],1)] &HOOK_POSE Language System=[ifelse(cand(ulocal(FN_IsIC,%#),gt(words(%c,"),1)),0[null(ulocal(FN_LEmit,%#,[lcon(loc(%#))],[default(%#/DD6_Lingo,English)],[name(%#)] [objeval(%#,s(switch(left(%c,1),:,after(%c,:),rest(%c))))]))],1)] &HOOK_SAY Language System=[ifelse(ulocal(FN_IsIC,%#),0[null(ulocal(FN_LEmit,%#,[lcon(loc(%#))],[default(%#/DD6_Lingo,English)],[name(%#)] says\, "[objeval(%#,s(switch(left(%c,1),",after(%c,"),rest(%c))))]"))],1)] &HOOK_SEMIPOSE Language System=[ifelse(cand(ulocal(FN_IsIC,%#),gt(words(%c,"),1)),0[null(ulocal(FN_LEmit,%#,[lcon(loc(%#))],[default(%#/DD6_Lingo,English)],[name(%#)][objeval(%#,s(switch(left(%c,1),;,after(%c,;),rest(%c))))]))],1)] &OLD_FN_LEMIT Language System=[@@(0 - %@, 1 - targets, 2 - language, 3 - message)][setq(1,objeval(#5563,[%3]))][setq(2,grab(v(List_Languages),%2))][ifelse(gt(words(%q1,"),1),[ifelse(t(%q2),[setq(3,[iter(%q1,ifelse(mod(inum(0),2),itext(0),ulocal(FN_Gibberish,%0,%q2,itext(0))),",")])][setq(4,[ifelse(match(Basic,%q2),,%b[ansi(rh,\[)][ansi(c,Language:)] [ansi(wh,%q2)][ansi(rh,\])])])][iter([%1] ,[setq(5,[ifelse([ulocal(FN_HasSkills,itext(0))],[ifelse([match(get([itext(0)]/DSS_Languages),%q2)],[%q1][%q4],[%q3][%q4][ifelse(ulocal(FN_IsAdmin,itext(0)),%r[ansi(c,Admin Translation:)] [%q1],)])],[%q1])])][ifelse(not(match(lparent(itext(0)),v(db_droidparent))),[objeval(%0,pemit(itext(0),%q5))],[u(itext(0)/fn_translate,%0,%1,%2,%q1,itext(0))])])],#-1 Invalid language)],[objeval(%0,pemit([%1] ,%q1))])] @STARTUP Language System=@drain %!;@notify %!;@dolist DD6_Lingo={@attribute/access/retroactive [##]=no_command no_inherit no_clone mortal_dark wizard};@dolist [lattr(%!/FUN_*)]={@function [rest(##,_)]=%!,##};@dolist HOOK_POSE HOOK_SAY HOOK_SEMIPOSE={@hook/ignore [rest(##,_)]=%!,##};@hook/ignore @emit=%!,HOOK_EMIT @@ Nom Database(#44TWXn) @@ Type: THING Flags: WIZARD SAFE NO_COMMAND @@ Owner: Dahan(#3PWXeAC"cm) Zone: *NOTHING* Pennies: Unlimited @@ Parent: Common Functions Object(#11TLVXn) @@ Powers: @@ Warnings checked: none @@ Created: Thu Sep 30 23:28:16 2004 @@ Last Modification: Thu Sep 30 23:29:40 2004 @@ Home: OOC Nexus(#17RXn) @@ Location: GLOBAL: Noms(#43TWX) @create Nom Database @parent Nom Database=Common Functions Object @set Nom Database = WIZARD @set Nom Database = SAFE @set Nom Database = NO_COMMAND &CLR_BORDER Nom Database=m &DB_HELP Nom Database=#45 &DB_NOM Nom Database=#46 @DESCRIBE Nom Database=DB_*%t- Database number.%rFN_*%t- u-function.%rFUN_*%t- global function.%rLIST_*%t- A list.%rMSG_*%t- An error message.%r%rVA%t- Prefix for errorless output.%rVB%t- Prefix for error outputs. &FN_ADDNOMAWARD Nom Database=[@@(0 - %#, 1 - Text, 2 - Color, 3 - # noms)][setq(1,left(squish(edit(%1,_,%b)),30))][setq(2,squish(%2))][setq(2,edit(setinter(b B c C f F g G h H i I m M n r R u U w W x X y Y,iter(lnum(strlen(%q2)),mid(%q2,itext(0),1))),%b,))][setq(3,abs(val(%3)))][setq(4,grab(v(List_NomAwards),[%q3] *,|))][switch([ulocal(FN_IsWiz,%0)][not(words(%q4))],0*,[ulocal(MSG_Wiz)],10,[%vb] The [ansi(extract(%q4,2,1),extract(%q4,3,1000))] award already exists for [first(%q4)] noms.,11,[%va] You have added the [ansi(%q2,%q1)] nom award\, requiring a minimum of [%q3] noms.[set(%!,List_NomAwards:[sortby(FN_Sort_First,setunion(v(List_NomAwards),[%q3] [%q2] [%q1],|),|)])],[ulocal(MSG_Crit)])] &FN_ADDXP Nom Database=[@@(0 - Target, 1 - Amount)][set(%0,DD6_Skills:[ulocal(FN_xListItem,get(%0/DD6_Skills),val(%1),CP,add)])] &FN_DELNOMAWARD Nom Database=[@@(0 - %#, 1 - # noms)][setq(1,val(%1))][setq(2,grab(v(List_NomAwards),[val(%1)] *,|))][switch([ulocal(FN_IsWiz,%0)][t(words(%q2))],0*,[ulocal(MSG_Wiz)],10,[%vb] No award exists that needs [%q1] noms.,11,[%va] You have removed the [ansi(extract(%q2,2,1),extract(%q2,3,1000))] nom award\, that required a minimum of [%q1] noms.[set(%!,List_NomAwards:[sortby(FN_Sort_First,setdiff(v(List_NomAwards),[%q2],|),|)])],[ulocal(MSG_Crit)])] &FN_FOOTER Nom Database=[ansi(v(CLR_Border),'-[repeat(=,74)]-')] &FN_HEADER Nom Database=[center([ansi(rh,. o O)] [ansi(wh,%0)] [ansi(rh,O o .)],78)]%r[ansi(v(CLR_Border),.-[repeat(=,74)]-.)] &FN_HELP Nom Database=[@@(0 - %#, 1 - Entry)][setq(0,squish(edit(%1,%b,_),_))][setq(1,lattr([v(DB_Help)]/HELP_*))][setq(2,grab(%q1,HELP_[%q0]*))][setq(3,grab(%q1,HELP_*/[%q0]*))][setq(4,grab(%q1,HELP_*[%q0]*))][switch([t(%q0)][t(%q2)][t(%q3)][t(%q4)],0*,[ulocal([v(DB_Help)]/HELP)],11*,[ulocal(FN_Help_Topic,%q2)],101*,[ulocal(FN_Help_Topic,%q3)],1001,[ulocal(FN_Help_Topic,%q4)],[ulocal(MSG_Help)])] &FN_HELP_TOPIC Nom Database=[ulocal(FN_Header,[edit(after(%0,HELP_),_,%b)])][ulocal([v(DB_Help)]/[%0])]%r[ulocal(FN_Footer)] &FN_ISROY Nom Database=[or(ulocal(FN_IsWiz,%0),hasflag(owner(%0,Royalty)))] &FN_ISWIZ Nom Database=[hasflag(owner(%0),Wizard)] &FN_NOMALLOW Nom Database=[wipe([v(DB_Nom)]/[%0])][ulocal(FN_AddXP,extract(%0,3,1,_),2)][set(extract(%0,3,1,_),Nom_Total:[add(1,val(get([extract(%0,3,1,_)]/Nom_Total)))])] &FN_NOM_APPROVE Nom Database=[@@(0 - %#, 1 - nom)][setq(1,ulocal(FN_NomRef,%1))][switch([ulocal(FN_IsWiz,%0)][t(%q1)],0*,[ulocal(MSG_Wiz)],10,[ulocal(MSG_Nom)],11,[%va] You have approved [name(extract(%q1,2,1,_))]'s nomination for [name(extract(%q1,3,1,_))].[ulocal(FN_NomAllow,%q1)],[ulocal(MSG_Crit)])] &FN_NOMAWARD Nom Database=[@@(0 - Target)][setq(1,[val(get(%0/Nom_Total))])][setq(2,-1 xh No award)][iter(v(List_NomAwards),ifelse(and(gte(%q1,first(##)),gte(first(##),first(%q2))),setq(2,##),),|,)][ansi(extract(%q2,2,1),extract(%q2,3,1000))] &FN_NOM_AWARD Nom Database=[@@(0 - %#, 1 - target)][setq(1,ulocal(FN_Pmatch,%1))][setq(2,val(get(%0/Nom_Total)))][switch([match(%0,%q1)][ulocal(FN_IsWiz,%0)],00,[ulocal(MSG_Wiz)],01,[%va] [name(%q1)]'s nom award is [ulocal(FN_NomAward,%q1)] [ansi(wh,\()][%q2] noms received[ansi(wh,\))].,1*,[%va] Your nom award is [ulocal(FN_NomAward,%q1)] [ansi(wh,\()][%q2] noms received[ansi(wh,\))].,[ulocal(MSG_Crit)])] &FN_NOM_CHECK Nom Database=[@@(0 - %#)][setq(1,lattr([v(DB_Nom)]/NOM_[%0]_*))][ifelse(words(%q1),[%va] This cycle you have nominated: [iter(%q1,name(extract(itext(0),3,1,_)),,\,%b)].,[%va] You have not nominated anybody this cycle.)] &FN_NOM_CYCLE Nom Database=[@@(0 - %#)][switch([ulocal(FN_IsWiz,%0)],0*,[ulocal(MSG_Wiz)],1,[%va] You end the current nom cycle and begin the next one.[iter(lattr([v(DB_Nom)]/Nom_*_*),ulocal(FN_NomAllow,itext(0)),,)][iter(get([v(DB_Nom)]/List_PCs),[set(itext(0),Nom_Used:0)],,)][wipe([v(DB_Nom)]/List_PCs)][set(v(DB_Nom),LastCycle:[secs()])],[ulocal(MSG_Crit)])] &FN_NOM_LEADERS Nom Database=[@@(0 - %#, 1 - # to show)][setq(2,setdiff(search(all,eplayers,\[hasattr(##,Nom_Total)\]),#-1))][setq(1,min(words(%q2),val(%1)))][switch([ulocal(FN_IsWiz,%0)],0*,[ulocal(MSG_Wiz)],1,[setq(3,extract(sortby(FN_Sort_First,iter(%q2,[val(get([itext(0)]/Nom_Total))] [itext(0)],,|),|),1,%q1,|))][ulocal(FN_Header,Top [%q1] Most Nominated Players)]%r[ansi(v(CLR_Border),|)][rjust(Noms,5)] [ansi(v(CLR_Border),|)] [ljust(Name \(Alias\),31)][ansi(v(CLR_Border),|)][center(Nom Award,26)][ansi(v(CLR_Border),|)][rjust(Age,8)] [ansi(v(CLR_Border),|%r>[repeat(-,6)]+[repeat(-,32)]+[repeat(-,26)]+[repeat(-,9)]<)][iter(%q3,%r[ansi(v(CLR_Border),|)][rjust(first(itext(0)),5)] [ansi(v(CLR_Border),|)] [ljust(left([ansi(rh,name(rest(itext(0))))]\([ansi(c,get(rest(itext(0))/Alias))]\),30),30)] [ansi(v(CLR_Border),|)][center(ulocal(FN_NomAward,rest(itext(0))),25)] [ansi(v(CLR_Border),|)] [rjust([first(timestring(sub(secs(),convtime(ctime(rest(itext(0)))))))],7)] [ansi(v(CLR_Border),|)],|,)]%r[ulocal(FN_Footer,mudname())],[ulocal(MSG_Crit)])] &FN_NOM_LEFT Nom Database=[@@(0 - %#, 1 - target)][setq(1,ulocal(FN_Pmatch,%1))][setq(2,[sub([val(v(Nom_Max))],[val(get(%q1/Nom_Used))])])][switch([gt(val(v(Nom_Max)),0)][match(%0,%q1)][ulocal(FN_IsWiz,%0)],0*,[%va] There is no limit as to how many people anyone may nominate this cycle.,100,[ulocal(MSG_Wiz)],101,[%va] [name(%q1)] has [%q2] noms remaining to give this cycle.,11*,[%va] You have [%q2] remaining noms to give this cycle.,[ulocal(MSG_Crit)])] &FN_NOM_LEVELS Nom Database=[setq(1,[val(get(%0/Nom_Total))])][center([ansi(rh,. o O)] [ansi(wh,Nom Levels)] [ansi(rh,O o .)],41)]%r[ansi(v(CLR_Border),.[repeat(-,39)].%r|)][ansi(wh,[rjust(Total,7)] [center(Award,30)])] [ansi(v(CLR_Border),|%r>[rjust(~~~~~,7)] [repeat(~,30)] <)][iter(v(List_NomAwards),%r[ansi(v(CLR_Border),|)]%b%b[ansi(ifelse(gte(%q1,first(##)),Gwh,w),rjust(first(##),5))] [center(ansi(extract(##,2,1),rest(rest(##))),30)] [ansi(v(CLR_Border),|)],|,)]%r[ansi(v(CLR_Border),'[repeat(-,39)]')] &FN_NOM_LIST Nom Database=[ifelse([ulocal(FN_IsRoy,%0)],[ulocal(FN_Nom_List2,%0)],[ulocal(MSG_Admin)])] &FN_NOM_LIST1 Nom Database=[pemit(%0,[ulocal(FN_Header,Pending Nominations)])][iter(sortby(FN_Sort_Noms,lattr([v(DB_Nom)]/Nom_*)),[pemit(%0,[ansi(v(CLR_Border),|)]%b[ansi(wh,\[)][rjust(inum(0),3)][ansi(wh,\])]%b[ljust([setr(1,[ansi(c,[name(extract(itext(0),2,1,_))] for [name(extract(itext(0),3,1,_))])] \([timefmt($m/$d/$y,first(get([v(DB_Nom)]/[itext(0)]),|))]\))]: [setq(2,wrap(rest(get([v(DB_Nom)]/[itext(0)]),|),68,sub(66,strlen(%q1)),|))][first(%q2,|)],68)]%b[ansi(v(CLR_Border),|)][iter(rest(%q2,|),%r[ansi(v(CLR_Border),|)][space(7)][ljust(itext(0),68)] [ansi(v(CLR_Border),|)],|,)])])][pemit(%0,[ansi(v(CLR_Border),|[space(76)]|%r|)][center([ansi(rh,Noms [ifelse(isnum(get([v(DB_Nom)]/LastCycle)),were last cycled [timefmt($A\, $B $d\, $Y at $I:$m $p,get([v(DB_Nom)]/LastCycle))].,have never been cycled.)])],76)][ansi(v(CLR_Border),|)]%r[ulocal(FN_Footer,name(%!))])] &FN_NOM_LIST2 Nom Database=[setq(1,sortby(FN_Sort_Noms,lattr([v(DB_Nom)]/Nom_*)))][setq(2,sortby(FN_Sort_Names,setunion(iter(%q1,extract(itext(0),2,1,_)),)))][ulocal(FN_Header,Pending Nominations)][iter(%q2,%r[ansi(v(CLR_Border),|)] [ljust([ansi(rh,name(itext(0)))]\([get(itext(0)/Alias)]\),20)][setq(3,wrap(iter(graball(%q1,*_[itext(0)]_*),[name(extract(itext(0),3,1,_))]\([ansi(wh,match(%q1,itext(0)))]\),,\,%b),54,54,|))][ljust(first(%q3,|),54)] [ansi(v(CLR_Border),|)][iter(rest(%q3,|),%r[ansi(v(CLR_Border),|)][space(21)][ljust(itext(0),54)] [ansi(v(CLR_Border),|)],|,)])]%r[ansi(v(CLR_Border),|[space(76)]|%r|)][center([ansi(rh,Noms [ifelse(isnum(get([v(DB_Nom)]/LastCycle)),were last cycled [timefmt($A\, $B $d\, $Y at $I:$m $p,get([v(DB_Nom)]/LastCycle))].,have never been cycled.)])],76)][ansi(v(CLR_Border),|)]%r[ulocal(FN_Footer,name(%!))] &FN_NOMREF Nom Database=[extract(sortby(FN_Sort_Noms,lattr([v(DB_Nom)]/Nom_*_*)),val(%0),1)] &FN_NOM_REJECT Nom Database=[@@(0 - %#, 1 - nom)][setq(1,ulocal(FN_NomRef,%1))][switch([ulocal(FN_IsWiz,%0)][t(%q1)],0*,[ulocal(MSG_Wiz)],10,[ulocal(MSG_Nom)],11,[%va] You have rejected [name(extract(%q1,2,1,_))]'s nomination for [name(extract(%q1,3,1,_))].[wipe([v(DB_Nom)]/[%q1])],[ulocal(MSG_Crit)])] &FN_NOMSUBMIT Nom Database=[@@(0 - %#, 1 - target, 2 - reason)][setq(1,ulocal(FN_Pmatch,%1))][setq(2,squish(secure(%2)))][switch([isdbref(%q1)][and(hastype(%0,Player),not(or(haspower(%0,builder),haspower(%0,guest),hasflag(%0,Unregistered))))][and(not(match(%q1,%0)),comp(get(%0/LastSite),get(%q1/LastSite)))][gte(words(%q2),[val(v(Nom_Min))])][not(hasattr(v(DB_Nom),Nom_[%0]_[%q1]))][or(lt(val(v(Nom_Max)),0),lt([val(get(%0/Nom_Used))],val(v(Nom_Max))))],0*,[ulocal(MSG_Target)],10*,[%vb] Guests\, builders\, and players who haven't completed chargen may not submit noms.,110*,[%vb] You may not nominate yourself or your alts.,1110*,[%vb] Your reason must be [val(v(Nom_Min))] words or longer.,11110*,[%vb] You have already nominated [name(%q1)] this cycle.,111110*,[%vb] You may only nominate [val(v(Nom_Max))] players per cycle.,111111,[%va] You have nominated [name(%q1)].[set(%0,Nom_Used:[add(1,val(get(%0/Nom_Used)))])][set(v(DB_Nom),Nom_[%0]_[%q1]:[secs()]|[%q2])][set(v(DB_Nom),List_PCs:[setunion(get([v(DB_Nom)]/List_PCs),%0)])],[ulocal(MSG_Crit)])] &FN_NOM_TOTALS Nom Database=[ifelse([ulocal(FN_IsRoy,%0)],[setq(1,lattr([v(DB_Nom)]/Nom_*_*))][setq(2,setunion(iter(%q1,extract(itext(0),3,1,_)),))][setq(3,sortby(FN_Sort_First,iter(%q2,[words(graball(%q1,NOM_*_[itext(0)]))] [itext(0)],,|),|))][center([ansi(rh,. o O)] [ansi(wh,Nom Leaders)] [ansi(rh,O o .)],40)]%r[ansi(v(CLR_Border),.-====-v-[repeat(=,30)]-.%r|)] Noms [ansi(v(CLR_Border),|)] [ljust(Player,30)] [ansi(v(CLR_Border),|%r>~~~~~~+~[repeat(~,30)]~<)][iter(%q3,%r[ansi(v(CLR_Border),|)] [rjust(ansi(c,first(itext(0))),4)] [ansi(v(CLR_Border),|)] [ljust([ansi(rh,name(rest(itext(0))))]\([get([rest(itext(0))]/alias)]\),30)] [ansi(v(CLR_Border),|)],|,)]%r[ansi(v(CLR_Border),'-====-^-[repeat(=,30)]-')],[ulocal(Msg_Admin)])] &FN_NOM_VIEW Nom Database=[ifelse([ulocal(FN_IsRoy,%0)],[ulocal(FN_Nom_View1,%0,extract(sortby(FN_Sort_Noms,lattr([v(DB_Nom)]/Nom_*)),val(%1),1),%1)],[ulocal(MSG_Admin)])] &FN_NOM_VIEW1 Nom Database=[switch([t(%1)][match(%2,all)],1*,[ulocal(FN_Header,[name(extract(%1,2,1,_))]'s +Nom for [name(extract(%1,3,1,_))] on [timefmt($m/$d/$y,first(get([v(DB_Nom)]/[%1]),|))])][iter(wrap(rest(get([v(DB_Nom)]/[%1]),|),74,74,|),%r[ansi(v(CLR_Border),|)] [ljust(itext(0),74)] [ansi(v(CLR_Border),|)],|,)]%r[ulocal(FN_Footer,name(%!))],01,[ulocal(FN_Nom_List1,%0)],00,[%vb] That is not a valid +nom number.)] &FN_NOM_WEEKMAX Nom Database=[@@(0 - %#, 1 - max noms per cycle)][setq(1,val(%1))][switch([ulocal(FN_IsWiz,%0)],0*,[ulocal(MSG_Wiz)],1,[%va] You have set the maximum number of people players may +nom per cycle to [%q1].[set(%!,Nom_Max:[%q1])],[ulocal(MSG_Crit)])] &FN_NOM_WORDMIN Nom Database=[@@(0 - %#, 1 - minimum words per nom)][setq(1,val(%1))][switch([ulocal(FN_IsWiz,%0)],0*,[ulocal(MSG_Wiz)],1,[%va] You have set the minimum of number of words required per nom to [%q1].[set(%!,Nom_Min:[%q1])],[ulocal(MSG_Crit)])] &FN_PMATCH Nom Database=[switch(pmatch(squish(%0)),#-1,locate(%#,squish(%0),PTahilmna),#$)] &FN_SORT_FIRST Nom Database=sign(sub(first(%1),first(%0))) &FN_SORT_NAMES Nom Database=comp(name(%0),name(%1)) &FN_SORT_NOMS Nom Database=comp([name(extract(%0,2,1,_))][name(extract(%0,3,1,_))],[name(extract(%1,2,1,_))][name(extract(%1,3,1,_))]) &LIST_NOMAWARDS Nom Database=100 Bhw Blue Ribbon|50 hRw Red Ribbon|25 hwY Gold Ribbon|20 ch Silver Star|10 hy Gold Star|5 hm Bronze Star|0 hx No award &MSG_ADMIN Nom Database=[%vb] You are not an admin. &MSG_CRIT Nom Database=[%vb] Please report this error at once. &MSG_HELP Nom Database=[%vb] That is not a valid entry. &MSG_NOM Nom Database=[%vb] That is not a valid nom number. &MSG_WIZ Nom Database=[%vb] You are not a wizard. &NOM_MAX Nom Database=-1 &NOM_MIN Nom Database=8 @STARTUP Nom Database=@drain %!;@notify %!;@dolist Nom_Total Nom_Used={@attribute/access/retroactive [##]=no_command no_inherit no_clone mortal_dark wizard};@dolist [lattr(%!/FUN_*)]={@function [rest(##,_)]=%!,##} @@ d6 Help(#42TWn) @@ Type: THING Flags: WIZARD NO_COMMAND @@ Owner: Dahan(#3PWXeAC"cm) Zone: *NOTHING* Pennies: Unlimited @@ Parent: Common Functions Object(#11TLVXn) @@ Powers: @@ Warnings checked: none @@ Created: Thu Sep 30 23:21:06 2004 @@ Last Modification: Thu Nov 11 14:50:54 2004 @@ Home: Papi(#20PWwenACMc) @@ Location: GLOBAL: d6 Commands(#38TWX) @create d6 Help @parent d6 Help=Common Functions Object @set d6 Help = WIZARD @set d6 Help = NO_COMMAND &ATTR_AGILITY d6 Help=Agile players are both quick and controlled in their movements, and have a strong sense of balance. &ATTR_KNOWLEDGE d6 Help=This attribute measures how smart or well educated a character is. &ATTR_MECHANICAL d6 Help=Short for 'mechanical aptitude', this skill measures how well you can operate vehicles and machines. &ATTR_PERCEPTION d6 Help=This attribute measures how perceptive a character is, both how sharp their sense are and well well they can 'read' people and their reactions. &ATTR_STRENGTH d6 Help=This attribute represents how fit, tough and strong a character is. &ATTR_TECHNICAL d6 Help=Short for 'Technical Aptitude', this skill represents how well you work with technology. &DB_DATA d6 Help=#39 @DESCRIBE d6 Help=This object contains the help files for the skills system.%r%t[words(lattr(%!/HELP_*))] regular +sinfo entries.%r%t[words(lattr(%!/ATTR_*))] attribute entries.%r%t[words(lattr(%!/SKILL_*))] skill entries. &FN_BORDER d6 Help=[iter([iter(edit(%0,%r,|,%t,%b%b),wrap(itext(0),74,74,|),|,|)],%r[ansi(get([v(DB_Data)]/CLR_Border),|)] [ljust(itext(0),74)] [ansi(get([v(DB_Data)]/CLR_Border),|)],|,)] &FN_HELPLINE d6 Help=%r[ansi(get([v(DB_Data)]/CLR_Border),|)] [ansi(ifelse(hasattr(%!,HELP_[edit(%0,%b,_)]),wh,c),ucstr(%0))][rjust(ansi(ifelse(t(lattr(%!/*_[edit(squish(%0),%b,_)])),w,c),%1),sub(74,strlen(%0)),.)] [ansi(get([v(DB_Data)]/CLR_Border),|)] &HELP d6 Help=[ulocal([v(DB_Data)]/FN_Header,Table of Contents)][ulocal(FN_HelpLine,About d6,Comments about this RPG system)][ulocal(FN_HelpLine,Traits,Explains what is displayed on a character sheet)][ulocal(FN_HelpLine,Rules,The rules behind d6)][ulocal(FN_HelpLine,Global Commands,Common skills commands)][ulocal(FN_HelpLine,Functions,Documentation for skill-related functions)][ulocal(FN_HelpLine,Index,An index of all available topics)]%r[ulocal([v(DB_Data)]/FN_Footer)] &HELP_ABOUT_D6 d6 Help=[ulocal(FN_Border,%b%bThis skills system is based loosely on the 'D6 Classic System' by West End Games. Anyone interested in learning more about the D6 System in general or about West End Games should visit their website at: [ansi(c,http://www.westendgames.com/)]. This version is designed to run on PennMUSH\, to be easily configured by without much coding knowledge.)] &HELP_+ACOM d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+acom)]%r%r%b%bThis command will combine all the ammunition containers in your inventory into a single object.])] &HELP_ACTIONS d6 Help=[ulocal(FN_Border,[%tAn action is a limited and specific task that a character may attempt. Actions may include reloading a weapon, drawing a weapon, making a single attack against another player, avoiding an attack, using a skill, or moving a certain distance \(see "Move"\), etc. Some actions are "free actions", which means they don't count towards the Multiple Action Penalty \(see "Multiple Actions"\). Other actions may take longer than a single round, and will need to be preformed for several rounds in a row.])] &HELP_+ADDABILITY d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+addability)] [ansi(y,)][ansi(rh,=)][ansi(y,)]%r%r%b%bThis command allows an admin to add a special ability to a player.])] &HELP_+ADDWOUND d6 Help=[ifelse(get([v(DB_Data)]/CFG_Wounds),[ulocal(FN_Border,[%b%b[ansi(rh,+addwound)] [ansi(y,)][ansi(rh,=)][ansi(y,)]%r%r%b%bThis command allows a player to accept an injury unto himself, or an admin to give a player an injury. Valid wounds are: Stunned, Wounded, Incapacitated, Mortally Wounded & Killed.%r%r[ansi(rh,Note:)] Stuns are not tracked by the system, given their short term nature. It is the responsibility of players and judges to handle rules related to Stunned players.])],[ulocal(FN_Border,[%b%b[ansi(rh,+addwound)] [ansi(y,)][ansi(rh,=)][ansi(y,<#>)]%r%r%b%bThis command allows a player to take damage. Players may only specify themself, while admins may specify anyone.])])] &HELP_+ADIV d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+adiv)] [ansi(y,<#> )]%r%r%b%bThis command will find an ammunition container in your inventory, and seperate the specified amount of ammunition into a new ammunition container.])] &HELP_+ATTACK d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+attack)] [ansi(y,)] [ansi(ch,\[)][ansi(rh,at)] [ansi(y,)][ansi(ch,\])]%r%r%b%bUse this command to attack somebody or something with your readied weapon, or with your bare hands should you have no weapon ready. This command will handle ammo depletion, the to-hit roll, and the damage roll. It is up to the judge to handle defensive rolls and to determine whether the attack succeeds. Modifiers work the same way as in the +roll command.])] &HELP_ATTRIBUTES d6 Help=[ulocal(FN_Border,[%tAttributes represent a characters natural abilities, such as Strength of Agility. They are rarely the result of training or education, often resulting simply from genetics and natural talents.%r%tImproving attributes is difficult and prone to failure. There are maximum and minimum levels for an attribute, based ussually on race and perhaps gender. When making the attempt, roll your current attribute die code against your maximum level for that attribute. If your roll is less than or equal to the maximum attribute level roll, the attribute goes up 1 pip. Otherwise, you fail to improve the attribute and waste the entire training time and half the CP cost. When an attribute is improved, all skills and specializations based on that attribute also go up.%r%r%t%tCP cost to successfully improve 1 pip: 10 * # of dice in attribute.%r%t%tTime to improve 1 pip: 7 days per CP.%r%rExample: Bob is a Human with a Strength of 3D. Humans have a maximum Strength level of 4D. Bob rolls his 3D against 4D. If the 3D roll is less than or equal to the 4D roll, he will spend 30 CPs & 210 days improving his Strength to 3D+1. If the 4D roll is higher, he will lose 15 CPs and 210 days in the attempt.])] &HELP_BODY_POINTS d6 Help=[ulocal(FN_Border,[%tBody Points are a very simple way of determining how injured a character is. When a character has all their body points, they are unharmed. Should a character's body points reach zero, they are near death or dying. Usually a Fate Point is needed to ensure that a character with zero body points survives, but as [mudname()] is a consent based MUSH, there may be exceptions. A judge or gamemaster may also rule that a wound is non-lethal and reduce the damage an attack makes so as not to kill.])] &HELP_CHARACTER_POINTS d6 Help=[ulocal(FN_Border,[%tCharacter points are awarded to players for their efforts, activity and roleplaying on this game. They may be used to permanently improve attributes, skills, specializations or move score via the [ansi(rh,+raise)] command, or used for short term bonuses via the [ansi(rh,+usecp)] command.])] &HELP_+DELABILITY d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+delability)] [ansi(y,)][ansi(rh,=)][ansi(y,)]%r%r%b%bThis command allows an admin remove a player's special ability.])] &HELP_+DELWOUND d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+delwound)] [ansi(y,)][ansi(rh,=)][ansi(y,<#>)]%r%r%b%bThis command allows an admin to deduct damage from a player.])] &HELP_+DICE d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+dice)] [ansi(y,)]%r%b%b[ansi(rh,+dice/silent)] [ansi(y,)]%r%r%b%bAnyone may use this command to add together a series of attribute or skill checks, dice rolls, or integers. Negative arguments will be subtracted from the total. Only members of the staff may roll other player's attributes and skills. Any nonsense arguments are ignored.%r%rExample:%r%b%bA member of the staff wielded a magic sword that grants a 1d4+1 bonus to his attack decides to attack Bob, but is under a spell that makes him suffer a -1D penalty to his actions. He resolves whether the attack hits with the following:%r%r+dice Swords+1D4+1-1D-Bob/Melee Parry%r[ansi(gh,-)] You roll [ansi(yh,your Swords)] [ansi(wh,\()][ansi(ch,2)] WD [ansi(ch,1)][ansi(wh,\))] + [ansi(yh,1D4)] [ansi(wh,\()][ansi(ch,1)][ansi(wh,\))] + [ansi(yh,1)] - [ansi(yh,1D)] [ansi(wh,\()][ansi(ch,4)] WD [ansi(ch,4)][ansi(wh,\))] - [ansi(yh,Bob's Melee Parry)] [ansi(wh,\()][ansi(ch,10)] WD [ansi(ch,5)][ansi(wh,\))] for a total of [ansi(yh,-10)].%r%r%b%bAs you can see, the results of every die roll is displayed in the output, including wild dice. This allows us to see that our attacker failed rather badly in his attack and complications may have arisen. &HELP_DIE_CODES d6 Help=[ulocal(FN_Border,[%tWhen a player attempts to preform some task, dice are often rolled to determine success or failure. The d6 System uses six-sided dice, to which a constant number \(called pips\) is added. A notation called die codes is used to describe how many dice and pips should be used in a roll, and takes the format <#>D+<#>. For example, the die code 3D+2 means one should roll 3 six-sided dice and add 2 to the total to determine the outcome of the roll.])] &HELP_DIFFICULTY_NUMBERS d6 Help=[ulocal(FN_Border,[%tTo determine whether a roll succeeds or fails, it may be compared against a difficulty number selected by the judge or gamemaster. If the roll is greater than or equal to the difficulty number, it succeeds. The following table is a guide for selecting difficulty numbers:%r%r[ansi(yh,[center(Range,7)][center(Term,16)]Example)]%r[ansi(get([v(DB_Data)]/CLR_Border),[center(~~~~~,7)][center(~~~~,16)]~~~~~~~)][iter(1-5^Very Easy^Computer Interface/Repair: Find the on/off switch.|6-10^Easy^Throwing: Hit the dartboard with a dart.|11-15^Moderate^Vehicle Repair: Replace the spark plugs.|16-20^Difficult^Forgery: Create a passable fake ID card.|21-25^Very Difficult^Swim: Save a drowning character.|26-30^Heroic^Climb/Jump: Stop yourself in mid-fall.|31+^Heroic+^Lift: Lift a metric ton over your head.,%r[center(extract(itext(0),1,1,^),7)][center(extract(itext(0),2,1,^),16)][extract(itext(0),3,1,^)],|,)]%r%r%tNote: It is up to the gamemaster or judge to select a specific difficulty number for a task. A character will fail a Moderate task if they only rolled 12 and the judge selected 13 as the difficulty number.])] &HELP_FATE_POINTS d6 Help=[ulocal(FN_Border,[%tFate points are a fairly rare and valuable commodity. You only get one when you create your character, and are seldom handed out afterwards.%r%tOne use for Fate Points is to /double/ your attribute or skill dice when making a check. To use a Fate Point in this way, simply clear it with a judge or admin /before/ making the roll, then make the roll with doubled dice. Please note that any modifiers or penalties are applied after this doubling.])] &HELP_FUNCTIONS d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,getskill\()][ansi(y,)][ansi(rh,\,)][ansi(y,)][ansi(rh,\))]%r%b%b[ansi(rh,getskill2\()][ansi(y,)][ansi(rh,\,)][ansi(y,)][ansi(rh,\))]%r%b%b[ansi(rh,rollskill\()][iter( <#_dice> <#_pips>,ansi(y,edit(##,_,%b)),,ansi(rh,\,))][ansi(rh,\))]%r%b%b[ansi(rh,rollstat\()][ansi(y,<# pips>)][ansi(rh,\,)][ansi(y,)][ansi(rh,\))]%r%b%b[ansi(rh,lpemit\()][iter(players language message,ansi(y,<[##]>),,[ansi(rh,\,)])][ansi(rh,\))]%r%b%b[ansi(rh,lremit\()][iter(room language message,ansi(y,<[##]>),,[ansi(rh,\,)])][ansi(rh,\))]%r%r%b%bFor more information about any function, see [ansi(rh,+sinfo)] [ansi(y,)]])] &HELP_GETSKILL d6 Help=[ulocal(FN_Border,%b%b[ansi(rh,getskill\()][ansi(y,)][ansi(rh,\,)][ansi(y,)][ansi(rh,\))]%r%r%b%bThis function will return a player's attribute or skill in <#>D+<#> notation.)] &HELP_GETSKILL2 d6 Help=[ulocal(FN_Border,%b%b[ansi(rh,getskill2\()][ansi(y,)][ansi(rh,\,)][ansi(y,)][ansi(rh,\))]%r%r%b%bThis function is much like the getskill\(\)\, except it returns the answer in # of pips notation.)] &HELP_+GIVECP d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+givecp)] [ansi(y,)][ansi(rh,=)][ansi(y,<#>)]%r%r%b%bThis command allows an admin to award character points to a player. It may also be used to dock character points, should a negative number be used.])] &HELP_+GIVEFP d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+givefp)] [ansi(y,)][ansi(rh,=)][ansi(y,<#>)]%r%r%b%bThis command allows an admin to award fate points to a player. It may also be used to dock fate points, should a negative number be used.])] &HELP_GLOBAL_COMMANDS d6 Help=[ulocal(FN_Border,[%b%bThe following commands may be used by anyone. However, some are of limited in use should any player involved not completed chargen, while others are of expanded use to members of the staff.%r[iter(+acom +addwound +adiv +attack +dice +load +raise +ready +reload +roll +select +sheet +sheetmail +speak +unload +unready +unwear +usecp +wear,[ifelse([mod(sub(#@,1),4)],,%r)][ljust(ansi(wh,ucstr(itext(0))),18)],,)]%r%rThe following commands may only be used by the staff.%r[iter([setunion(+addability +delability +givecp +givefp +newability +newattr +newrace +newskill +newspec +remabilitiy +remattr +remrace +remskill +remspec +rollall +setmove +setrace +setskill ,ifelse(get([v(DB_Data)]/CFG_Wounds),+setwounds,+delwound +setmaxbp))],[ifelse([mod(sub(#@,1),4)],,%r)][ljust(ansi(wh,ucstr(itext(0))),18)],,)]%r%rTo learn about any command, type [ansi(rh,+sinfo)] [ansi(y,)].])] &HELP_HEALTH d6 Help=[ulocal(FN_Border,[%tIn the Health section of the sheet, a character's overall state of health summed up into one of the following terms: Healthy, Stunned, Wounded, Severely Wounded, Incapacitated, Mortally Wounded, or Dead. When a character is injured, they should react in a way consistant with their new state of health. Characters who become Incapacitated or worse generally fall unconscious.%r%r[ansi(yh,[center(Health,17)]Comments)]%r[ansi(get([v(DB_Data)]/CLR_Border),[center(~~~~~~~~,17)]~~~~~~~~)][iter(Healthy^No serious injuries.|Stunned^May suffer -1D to rolls for the round.|Wounded^-1D to most rolls.|Severely Wounded^-2D to most rolls.|Incapacitated^May fall unconscious. -3D to rolls when awakened.|Mortally Wounded^May fall unconscious. -4D to rolls when awakened.|Dead^Mostly dead. Might be resurrected.,%r[center(first(itext(0),^),17)][rest(itext(0),^)],|,)] ])] &HELP_INDEX d6 Help=[iter(ulocal([v(DB_Data)]/FN_SortNCol,lattr(%!/HELP_*),%b,4),[ifelse(mod(dec(#@),4),,%r[ansi(get([v(DB_Data)]/CLR_Border),|)]%b)][ljust(left(edit(after(itext(0),HELP_),_,%b),18),18)][ifelse(mod(#@,4),,%b%b%b[ansi(get([v(DB_Data)]/CLR_Border),|)])],,)]%r[ansi(get([v(DB_Data)]/CLR_Border),|[space(76)]|)][ulocal(FN_Border,[ansi(rh,Note:)] There is also an +sinfo file for every one of the [words(get([v(DB_Data)]/List_Attrs))] attributes\, [words(get([v(DB_Data)]/List_Skills),|)] skills\, [words(get([v(DB_Data)]/List_Powers),|)] force powers\, and [words(get([v(DB_Data)]/List_Races),|)] races.)] &HELP_LIST_ATTRIBUTES d6 Help=[iter(get([v(DB_Data)]/List_Attrs),[setq(0,wrap(v(Attr_[itext(0)]),72,sub(72,strlen(itext(0))),|))]%r[ansi(get([v(DB_Data)]/CLR_Border),|)] [ljust([ansi(yh,[edit(itext(0),_,%b)]:)] [first(%q0,|)],75)][ansi(get([v(DB_Data)]/CLR_Border),|)][iter(rest(%q0,|),%r[ansi(get([v(DB_Data)]/CLR_Border),|)]%b%b%b[ljust(itext(0),73)][ansi(get([v(DB_Data)]/CLR_Border),|)],|,)],,)] &HELP_LIST_RACES d6 Help=[setq(0,ulocal([v(DB_Data)]/FN_SortNCol,iter(get([v(DB_Data)]/List_Races),rest(##),|,|),|,3))][iter(%q0,[ifelse(mod(sub(#@,1),3),,%r[ansi(get([v(DB_Data)]/CLR_Border),|)]%b)][ljust(edit(itext(0),_,%b),25)][ifelse(mod(#@,3),,[ansi(get([v(DB_Data)]/CLR_Border),|)])],|,)][ulocal(FN_Border,[%r%bTo learn about any one of these [words(get([v(DB_Data)]/List_Races),|)] races, type [ansi(rh,+sinfo)] [ansi(y,)]])] &HELP_LIST_SKILLS d6 Help=[setq(0,ulocal([v(DB_Data)]/FN_SortNCol,[iter(get([v(DB_Data)]/List_Skills),first(##),|,%b)],%b,3))][iter(%q0,[ifelse(mod(sub(#@,1),3),,%r[ansi(get([v(DB_Data)]/CLR_Border),|)]%b)][ljust([ansi(ifelse(gte(words(v(Skill_[##])),3),w,c),left([edit(##,_,%b)],24))][ifelse(hasattr(v(DB_Data),SPEC_[##]),ansi(yh,*),)],25)][ifelse(mod(#@,3),,[ansi(get([v(DB_Data)]/CLR_Border),|)])],,)][ulocal(FN_Border,[%r%b[ansi(yh,*)] - These skills have specializations.%r%bTo learn about any one of these [words(get([v(DB_Data)]/List_Skills),|)] skills, type [ansi(rh,+sinfo)] [ansi(y,)]])] &HELP_LIST_SPECIAL_ABILITIES d6 Help=[iter([ulocal([v(DB_Data)]/FN_SortNCol,get([v(DB_Data)]/List_Abilities),%b,2)],[ifelse(mod(inum(0),2),%r[ansi(get([v(DB_Data)]/CLR_Border),|)]%b,)][ljust([ansi(w,edit(##,_,%b))],37)][ifelse(mod(inum(0),2),,%b[ansi(get([v(DB_Data)]/CLR_Border),|)])],,)][ulocal(FN_Border,[%r%bMost special abilities are described in the racial +sinfo entries. Others should be simple enough to understand.])] &HELP_+LOAD d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+load)] [ansi(y,)][ansi(rh,=)][ansi(y,<#> )]%r%r%b%bThis command will load the given amount and type of ammo into the specified weapon, if possible. All of the ammunition will come from one ammo container in your inventory.])] &HELP_LPEMIT d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,lpemit\()][iter(players language message,ansi(y,<[##]>),,[ansi(rh,\,)])][ansi(rh,\))]%r%r%b%bShort for language personal emit, this function may be used to properly pemit messages in any given spoken language. Please note that only the contents enclosed by quotation marks will be or not be shown based on the target's Language skill.])] &HELP_LREMIT d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,lremit\()][iter(room language message,ansi(y,<[##]>),,[ansi(rh,\,)])][ansi(rh,\))]%r%r%b%bShort for language room emit, this function may be used to properly remit messages in any given spoken language. Please note that only the contents enclosed by quotation marks will be or not be shown based on the target's Language skill.])] &HELP_MODIFIERS d6 Help=[ulocal(FN_Border,[%tA modifier is a number or die code that is added to a roll and/or difficulty number, and is used when a task is easier or harder than usual. A modifier of +5 or -5 represents a reasonable advantage or disadvantage based on the situation, while a +10 or -10 modifier represents a signifigant advantage or disadvantage. Modifiers of +15 or -15 represent a near overwhelming advantage, such as shooting blind. Common modifiers include the Multiple Action Penalty \(see "Multiple Actions"\), and range penalties for ranged attacks \(see "Range Modifiers"\).])] &HELP_MOVE d6 Help=[ulocal(FN_Border,[%tMove represents how fast a character walks or run on average. It is measured in meters per round, where a round is 5 seconds. This is a typical walking pace for the player. In combat, use the table below for distance traveled that round:%r%r[ansi(yh,[center(Distance,17)]Comments)]%r[ansi(get([v(DB_Data)]/CLR_Border),[center(~~~~~~~~,17)]~~~~~~~~)][iter(0.5 * Move^Taking a few steps. Free action|1.0 * Move^Walking. Counts as one action|2.0 * Move^Jogging. -1D to all rolls this round|4.0 * Move^Running. May not attack or avoid attacks this round,%r[center(first(itext(0),^),17)][rest(itext(0),^)].,|,)]%r%r%tThe Running skill complements Move, representing a character's balance and ability to pace oneself. It may be used to resolve who ran the fastest between players of similiar speed should it matter.%r%tMove may be improved 1 meter at a time, but may never exceed racial limits.%r%r%t%tCP cost to improve Move by 1 meter/round: Current Move%r%t%tTime to improve Move by 1 meter/round: CP cost * 7 days. ])] &HELP_MULTIPLE_ACTIONS d6 Help=[ulocal(FN_Border,[%tWhen a player takes more than one action per round, the Multiple Action Penalty is invoked. For every action beyond the first, -1D is added to ALL attribute, skill, and specialization \(except damage and damage resistance\) rolls made that round. Please note that "free actions" do not count when determining the Multiple Action Penalty.%r%tFor instance, let us say Tom wants to actively dodge ranged attacks, draw his pistol, and shoot at Dick and Harry while screaming obscenities. This counts as four actions: using Dodge, drawing a weapon, and making two attacks. Speaking a few words counts as a free action. This means that Tom will be taking a -3D modifier to his Dodge and Firearms:pistols rolls.])] &HELP_+NEWABILITY d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+newability)] [ansi(y,)]%r%r%b%bThis command allows an admin to add a new special ability to the system.])] &HELP_+NEWATTR d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+newattr)] [ansi(y,)][ansi(rh,=)][ansi(y,)]%r%r%b%bThis command allows an admin to create a new attribute.])] &HELP_+NEWRACE d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+newrace)] [ansi(y,)][ansi(rh,=)][ansi(y,)][ansi(rh,/)][ansi(y,)]%r%r%b%bThis command allows an admin to easily add a new race into the system.])] &HELP_+NEWSKILL d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+newskill)] [ansi(y,)][ansi(rh,=)][iter( ,ansi(y,##),,[ansi(rh,/)])]%r%r%b%bThis command allows an admin to create a new skill, based on said attribute. The description will appear in that skill's help file.])] &HELP_+NEWSPEC d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+newspec)] [ansi(y,)][ansi(rh,=)][ansi(y,)]%r%r%b%bThis command allows an admin to create a new specialization for a skill.])] &HELP_OPPOSED_ROLLS d6 Help=[ulocal(FN_Border,[%tSometimes when two or more characters are at odds with each other, an opposed roll is used to determine which character, if any, succeeds. The character with the higher roll usually succeeds, though sometimes there is also a difficulty number the character has to beat. Should the rolls tie, it is up to the judge or gamemaster to determine what happened.])] &HELP_+RAISE d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+raise)] [ansi(y,)]%r%b%b[ansi(rh,+raise/cost)] [ansi(y,)] [ansi(rh,to)] [ansi(y,<#>D+<#>)]%r%b%b[ansi(rh,+raise/faster)] [ansi(y,)]%r%r%b%bThe first version of this command will raise the specified attribute or skill, provided you have the character points needed to do so. Raising an attribute will raise all skills and specializations dependant on it. Raising a skill will not raise dependant specializations, though a specialization will never be lower than its dependant skill.%r%b%bThe second version with the cost switch will only report the character point cost related to raising a skill, without actually doing so.%r%b%bThe +raise/faster option allows you to shave 1 day from the training time of a skill, at the cost of 1 character point.])] &HELP_RANGE_MODIFIERS d6 Help=[ulocal(FN_Border,[%tMost ranged weapons will list three numbers for their range, such as 10/20/40 meters. These refer to the maximum short, medium, long ranges for that weapon. Weapons cannot hit anything beyond long range. Refer to the table below to see what modifier should be added to the attack roll:%r%r[space(25)][ansi(yh,[center(Modifier,10)]Range)]%r[space(25)][ansi(get([v(DB_Data)]/CLR_Border),[center(~~~~~~~~,10)]~~~~~)][iter(-^Short Range|-1D^Medium Range|-2D^Long Range,%r[space(25)][center(first(itext(0),^),10)][rest(itext(0),^)],|,)]%r%r%tIn addition, a judge or gamemaster may rule that an attack in very close proximity at point blank range, and may assign a bonus or penalty to the attack roll, or declare that it automatically hits. If this sounds confusing, think about a weapon fired inches away from its target.])] &HELP_+READY d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+ready)] [ansi(y,)]%r%r%b%bUse this command to ready or wield your weapon of choice.])] &HELP_+RELOAD d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+reload)] [ansi(y,)]%r%r%b%bThis handy command is a simplier version of the +load command, except it is limited to weapons with a single ammunition magazine that accepts only one type of ammo.])] &HELP_+REMABILITY d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+remability)] [ansi(y,)]%r%r%b%bThis command allows an admin to remove an existing special ability to the system.])] &HELP_+REMATTR d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+remattr)] [ansi(y,)]%r%r%b%bThis command allows an admin to delete an attribute from the game, as well as all skills dependent on that attribute. It's a very dangerous command, so you must type in the attribute name in full.])] &HELP_+REMRACE d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+remrace)] [ansi(y,)]%r%r%b%bThis command allows an admin to completely remove a race from the system. Players of that race will not have their sheets altered, but will find it impossible to improve their attributes and move rating. Please note that due to the dangerous nature of this command, the full race name must be typed in.])] &HELP_+REMSKILL d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+remskill)] [ansi(y,)]%r%r%b%bThis admin command will completely remove a skill from the skills system. Since this is usually a big deal, you must type out the skill name in full. Any specializations of that skill are also removed from the system.])] &HELP_+REMSPEC d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+remspec)] [ansi(y,)][ansi(rh,=)][ansi(y,)]%r%r%b%bThis command allows an admin to remove a given specialization for a skill.])] &HELP_RESOLVING_ATTACKS d6 Help=[ulocal(FN_Border,[%tAt attack refers to a single attack action made either with a weapon or unarmed. Attacks may either be melee or ranged.%r%tHow the weapon \(if any\) is used in the attack determines which skill the attacker needs to roll to determine if they successfully hit or not.%r%tHowever, before the attack roll, the defender should first be asked if they wish to dodge, parry, or ignore the attack. Should they choose to dodge, the defender will roll their Dodge skill \(though at a -5 penalty vs melee attacks\). Should they choose to parry, the defender rolls the appropriate skill to the defenders currently held weapon \(if any\). Most ranged attacks cannot be parried. Unarmed parries are at a -5 penalty vs armed attacks, while armed parries are at +5 vs unarmed attacks. Should the defender choose to ignore the attack, the attacker's roll must be 10 or more to succeed.%r%tShould the attack succeed, the weapon's damage is rolled. The defender rolls a damage resistance roll, which consists of Strength + Armor. The victim receives the \(damage roll - damage resistance roll\) damage to their Body Points. Should the total be negative or zero, the blow was glancing and no real damage is done.])] &HELP_+ROLL d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+roll)] [ansi(y,)] [ansi(ch,\[)][ansi(rh,at)] [ansi(y,)][ansi(ch,\])]%r%b%b[ansi(rh,+roll)] [ansi(y,)][ansi(rh,/)][ansi(y,)] [ansi(ch,\[)][ansi(rh,at)] [ansi(y,)][ansi(ch,\])]%r%b%b[ansi(rh,+roll/silent)] [ansi(y,)] [ansi(ch,\[)][ansi(rh,at)] [ansi(y,)][ansi(ch,\])]%r%b%b[ansi(rh,+roll/silent)] [ansi(y,)][ansi(rh,/)][ansi(y,)] [ansi(ch,\[)][ansi(rh,at)] [ansi(y,)][ansi(ch,\])]%r%r%b%bUse this command to roll any given skill or attribute. The silent switch will prevent others from seeing the results of the roll Only admins may roll the attributes or skills of other players.%r%b%bModifiers may be given in the form <#>, <#>D, <#>D+<#>, or <#>D-<#>. A modifier with a negative number of dice means that many fewer six-sided dice should be rolled. For example, a skill at 4D with a modifier of -1D would only roll 3 six-sided dice. Should an attribute or skill level lack a positive number of dice\, the roll will automatically fail.%r%b%bOne of the dice in any given roll is called the Wild Die, which has some special rules to represent good or bad luck. Should the wild die come up a six, six is added to the total and the wild die is rolled again. If the wild die comes up a one on the first roll, then the judge has several options of how to treat it.])] &HELP_+ROLLALL d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+rollall)] [ansi(y,)] [ansi(ch,\[)][ansi(rh,at)] [ansi(y,)][ansi(ch,\])]%r%b%b[ansi(rh,+rollall/silent)] [ansi(y,)] [ansi(ch,\[)][ansi(rh,at)] [ansi(y,)][ansi(ch,\])]%r%r%b%bThis command allows an admin or judge to make a mass skill or attribute check with ease. The silent switch will prevent others from seeing the results of the roll. The results are sorted by highest rolls, followed by highest wild die rolls. Please note that this will make a check for ALL non-dead players at your location, including hidden or dark wizards. So if you're a dark wizard hiding, you might want to kill..um, @set yourself DEAD.%r%b%bModifiers may be given in the form <#>, <#>D, <#>D+<#>, or <#>D-<#>. A modifier with a negative number of dice means that many fewer six-sided dice should be rolled. For example, a skill at 4D with a modifier of -1D would only roll 3 six-sided dice. Should an attribute or skill level lack a positive number of dice\, the roll will automatically fail.%r%b%bOne of the dice in any given roll is called the Wild Die, which has some special rules to represent good or bad luck. Should the wild die come up a six, six is added to the total and the wild die is rolled again. If the wild die comes up a one on the first roll, then the judge has several options of how to treat it.])] &HELP_ROLLSKILL d6 Help=[ulocal(FN_Border,%b%b[ansi(rh,rollskill\()][iter( <#_dice> <#_pips>,ansi(y,edit(##,_,%b)),,ansi(rh,\,))][ansi(rh,\))]%r%r%b%bThis function will preform a skill check based on the player's attribute or skill\, plus a <# dice>D+<# pips> modifier. It will return two numbers\, the first being the result of the skill check and the second being the total given from the wild die.)] &HELP_ROLLSTAT d6 Help=[ulocal(FN_Border,%b%b[ansi(rh,rollstat\()][ansi(y,<# pips>)][ansi(rh,\,)][ansi(y,)][ansi(rh,\))]%r%r%b%bThis function will preform a standard D+ dice roll\, where <# pips> = 3 * A + B and is a constant number.)] &HELP_ROUNDS d6 Help=[ulocal(FN_Border,[%tA round lasts for five seconds, and is used in situations \(like combat\) where every second counts. Typically a judge is called in on these situations, who determines \(ussually based on a Perception roll\) the order in which characters may act. Once a round is completed, the next round begins until it is no longer necessary to use rounds.])] &HELP_RULES d6 Help=[setq(0,ulocal(FN_SortNCol2,Die Codes|Wild Die|Difficulty Numbers|Opposed Rolls|Modifiers|Rounds|Actions|Multiple Actions|Resolving Attacks|Range Modifiers|Scale|Health,|,3))][iter(%q0,[ifelse(mod(sub(#@,1),3),,%r[ansi(get([v(DB_Data)]/CLR_Border),|)]%b)][ljust(ansi(ifelse(hasattr(%!,HELP_[edit(itext(0),%b,_)]),w,c),itext(0)),25)][ifelse(mod(#@,3),,[ansi(get([v(DB_Data)]/CLR_Border),|)])],|,)][ulocal(FN_Border,[%r%bTo learn about any one of these topics, type [ansi(rh,+sinfo)] [ansi(y,)]])] &HELP_SCALE d6 Help=[ulocal(FN_Border,[%tScale is a way of measuring the size of a combatant as a die code. When two combatants of dissimilar scale fight, the smaller of the two receives the difference in scale as a bonus to hit and avoid being hit. The larger party however receives the difference in scale as a bonus to damage and resisting damage. As only the difference in scale matters, Scale die codes may be negative.])] &HELP_+SELECT d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+select)] [ansi(y,)]%r%r%b%bUse this command to select a setting for your weapon. You must have your weapon ready to use this command.%r%b%bNote: If the 'unarmed attack' object is configured to have multiple settings\, you may select your 'unarmed attack' setting. This is an easy way of handling cheep and common weapons.])] &HELP_+SETMAXBP d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+setmaxbp)] [ansi(y,)][ansi(rh,=)][ansi(y,<#>)]%r%r%b%bThis command allows an admin to change a player's maximum body points.])] &HELP_+SETMOVE d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+setmove)] [ansi(y,)] [ansi(rh,to)] [ansi(y,<#>)]%r%b%b[ansi(rh,+setmove)] [ansi(y,)][ansi(rh,=)][ansi(y,<#>)]%r%r%b%bThis command allows an admin to set a player's Move, along with the appropriate refund/cost of character points. Please note that this command does not enforce racial Move limits.])] &HELP_+SETRACE d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+setrace)] [ansi(y,)][ansi(rh,/)][ansi(y,desc)][ansi(rh,=)][ansi(y,)]%r%b%b[ansi(rh,+setrace)] [ansi(y,)][ansi(rh,/)][ansi(y,dice)][ansi(rh,=)][ansi(y,)]%r%b%b[ansi(rh,+setrace)] [ansi(y,)][ansi(rh,/)][ansi(y,max )][ansi(rh,=)][ansi(y,)]%r%b%b[ansi(rh,+setrace)] [ansi(y,)][ansi(rh,/)][ansi(y,max move)][ansi(rh,=)][ansi(y,<#>)]%r%b%b[ansi(rh,+setrace)] [ansi(y,)][ansi(rh,/)][ansi(y,min )][ansi(rh,=)][ansi(y,)]%r%b%b[ansi(rh,+setrace)] [ansi(y,)][ansi(rh,/)][ansi(y,min move)][ansi(rh,=)][ansi(y,<#>)]%r%r%bThis admin command allows a wizard to easily modify some racial constants. Please note that this will not directly alter any player data.])] &HELP_+SETSKILL d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+setskill)] [ansi(y,)][ansi(rh,/)][ansi(y,)] [ansi(rh,to)] [ansi(y,<#>D+<#>)]%r%b%b[ansi(rh,+setskill)] [ansi(y,)][ansi(rh,/)][ansi(y,)][ansi(rh,=)][ansi(y,<#>D+<#>)]%r%r%b%bThis command allows an admin to set a player's skill or attribute to the given level, along with the appropriate refund/cost of character points. Please note that you can set a skill below its parent attribute's value.])] &HELP_+SETWOUNDS d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+setwounds)] [ansi(y,)][ansi(rh,=)][ansi(y,)]%r%r%b%bThis command allows an admin to set a player's state of health. Valid wound levels include: Healthy, Wounded, Wounded Twice, Incapacitated, Mortally Wounded, Killed.])] &HELP_+SHEET d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+sheet)] [ansi(y,\[\])]%r%b%b[ansi(rh,+sheet/abilities)] [ansi(y,\[\])]%r%b%b[ansi(rh,+sheet/biography)] [ansi(y,\[\])]%r%b%b[ansi(rh,+sheet/description)] [ansi(y,\[\])]%r%b%b[ansi(rh,+sheet/full)] [ansi(y,\[\])]%r%b%b[ansi(rh,+sheet/health)] [ansi(y,\[\])]%r%b%b[ansi(rh,+sheet/log)] [ansi(y,\[\])]%r%b%b[ansi(rh,+sheet/skills)] [ansi(y,\[\])]%r%b%b[ansi(rh,+sheet/training)] [ansi(y,\[\])]%r%b%b[ansi(rh,+sheet/weapons)] [ansi(y,\[\])]%r%r%b%bThe +sheet command is used to display a character sheet. Only members of the staff have the power to view the character sheets of others. There are a variety of switches that only display a limited version of the character sheet, though occasionally more expanded in its area. For instance, +sheet may not display all the skills that exist in the system, while +sheet/skills always will. Please note that +sheet/training that will display any training times in effect, doesn't appear anywhere on +sheet.])] &HELP_+SHEETMAIL d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+sheetmail)] %r%r%b%bThis command allows you to @mail your sheet to another player. This is the only way to share your sheet with other players who are not members of the staff.])] &HELP_SKILLS d6 Help=[ulocal(FN_Border,[%tSkills represent a characters training and abilities in a specific area, such as Piloting or Business. All untrained skills have the same die codes as the attribute it is based on.%r%tA character's level in a skill is represented in a die code such as 3D+1, which just means that to use the skill one rolls 3 six-sided dice and adds one to the total, which is then compared to a difficulty number. If the skill roll is higher, then the character succeeds. The number of six-sided dice to roll is often refered to as # of dice. The other number, the constant, is refered to as number of pips. Please note that 3 pips are automatically converted into 1D.%r%r%t%tCP cost to improve 1 pip: # of dice.%r%t%tTime to improve one pip: 1 day per CP.%r%rExample: To raise Music from 5D+1 to 5D+2 will take 5 CPs & 5 days.])] &HELP_+SPEAK d6 Help=[ulocal(FN_Border,[%b%b[ansi(rh,+speak)] [ansi(y,)]%r%r%b%bThis command is used to select which language you speak in by default. No special commands though are needed to actually speak in a language though. Just use the say and pose commands normally.])] &HELP_SPECIAL_ABILITIES d6 Help=[ulocal(FN_Border,[%tSpecial abilities are used to list certain natural talents or disabilities a character may have. Most are based on one's species or race, though a few may represent something special about the character. For example, a mermaid may have 'Water-Breathing' as a special ability, which allows her to breathe underwater and is common to all Merfolk. Or a player may be set with the 'Blind' special ability to make it clear to anyone looking at her sheet that she can't see.])] &HELP_SPECIALIZATIONS d6 Help=[ulocal(FN_Border,[%tA specialization is to a skill as a skill is to an attribute, more of less. All untrained specializations have the same number of dice as their parent skill. While specializations do NOT go up when their parent skill is improved, they will disappear should they have the same die code or less.%r%tSpecializations represents a character's ability in a particular subset of a skill. For example, let us say there was a Music skill which represented one's ability to make music, whether it be by singing, drums, or the trumpet. A specialization might be Music:trumpet, which would be used when playing the trumpet but not when playing the drums.%r%r%t%tCP cost to improve 1 pip: half the # of dice, rounded up.%r%t%tTime to improve 1 pip: 1 day per CP.%r%rExample: To raise Music:trumpet from 5D+2 to 6D will take 3 CPs & 3 days.])] &HELP_TRAITS d6 Help=[ulocal(FN_HelpLine,Character Points,Common reward for roleplaying)][ulocal(FN_HelpLine,Fate Points,Special reward for roleplaying)][ulocal(FN_HelpLine,Move,Measure of how fast you can move)][ulocal(FN_HelpLine,Body Points,A simple way of handling wounds)][ulocal(FN_HelpLine,Attributes,Measure of general abilities)][ulocal(FN_HelpLine,Skills,Measure of specific abilities)][ulocal(FN_HelpLine,Specializations,Measure of more specific abilities)][ulocal(FN_HelpLine,Special Abilities,Various advantanges & disadvantages)] &HELP_+UNLOAD d6 Help=[ulocal(FN_Border,[%b%b[ans