Sub to determine maximum skill possible - Very Beta

Macro depository for macros written before the user variable changes that broke all of them.

Moderator: MacroQuest Developers

GoatFoot
a lesser mummy
a lesser mummy
Posts: 68
Joined: Fri Jan 17, 2003 1:48 am

Sub to determine maximum skill possible - Very Beta

Post by GoatFoot » Fri Jan 17, 2003 8:39 am

This is a sub I wrote to determe the maximum possible skill at any
given level for all clickable skills. Need to add Bst, Pally and
SK skill maxes.

hrmmm, all my inequalities are screwed. If I was awake, I'd figure it out.

Code: Select all

|  Determine Current Skill Cap
|  GoatFoot - Jan 13, 2003
|  zieggenfus[at]yahoo[dotcom]
|  Usage: /call SkillMax "Skill"
|  Returns current skill cap on success
|  Returns -1 if skill is not known
|  Returns 0 if skill isn't found - Prob indicates an error.
|  
|  Missing Beastlord, Paladin, Shadow Knight

#define SKM_Class l0
#define SKM_Level l1
#define SKM_CurrentCap l2
#define SKM_LevelCap l3

#define Unknown -1

sub skillmax

/if n $char(ability,"$p0")==Unknown /return Unknown
/varset SKM_Class $char(class)
/varset SKM_Level $char(level)
/varset SKM_LevelCap 0

| As far as I've been able to determine, 
| all "clickable" skills use this formula

/varcalc SKM_CurrentCap $SKM_Level*5+5

| Combat Skills

/if "$p0"=="Archery" {
	/if $SKM_Class==Ranger /varset SKM_LevelCap $if(n,$SKM_Level<51,240,240)
	/if $SKM_Class==Rogue /varset SKM_LevelCap $if(n,$SKM_Level<51,200,240)
	/if $SKM_Class==Warrior /varset SKM_LevelCap $if(n,$SKM_Level<51,200,240)
}
/if "$p0"=="Bash" {
	/if $SKM_Class==Cleric /varset SKM_LevelCap $if(n,$SKM_Level<51,180,200)
	/if $SKM_Class==Warrior /varset SKM_LevelCap $if(n,$SKM_Level<51,220,240)
}
/if "$p0"=="Bind Wound" {
	/if $SKM_Class==Bard /varset SKM_LevelCap $if(n,$SKM_Level<51,150,200)
	/if $SKM_Class==Cleric /varset SKM_LevelCap $if(n,$SKM_Level<51,200,201)
	/if $SKM_Class==Druid /varset SKM_LevelCap $if(n,$SKM_Level<51,200,200)
	/if $SKM_Class==Enchanter /varset SKM_LevelCap $if(n,$SKM_Level<51,100,100)
	/if $SKM_Class==Magician /varset SKM_LevelCap $if(n,$SKM_Level<51,100,100)
	/if $SKM_Class==Necromancer /varset SKM_LevelCap $if(n,$SKM_Level<51,100,100)
	/if $SKM_Class==Monk /varset SKM_LevelCap $if(n,$SKM_Level<51,200,210)
	/if $SKM_Class==Ranger /varset SKM_LevelCap $if(n,$SKM_Level<51,150,200)
	/if $SKM_Class==Rogue /varset SKM_LevelCap $if(n,$SKM_Level<51,176,210)
	/if $SKM_Class==Shaman /varset SKM_LevelCap $if(n,$SKM_Level<51,200,200)
	/if $SKM_Class==Wizard /varset SKM_LevelCap $if(n,$SKM_Level<51,100,100)
	/if $SKM_Class==Warrior /varset SKM_LevelCap $if(n,$SKM_Level<51,175,210)
}
/if "$p0"=="Disarm" {
	/if $SKM_Class==Monk /varset SKM_LevelCap $if(n,$SKM_Level<51,200,200)
	/if $SKM_Class==Ranger /varset SKM_LevelCap $if(n,$SKM_Level<51,55,55)
	/if $SKM_Class==Rogue /varset SKM_LevelCap $if(n,$SKM_Level<51,200,200)
	/if $SKM_Class==Warrior /varset SKM_LevelCap $if(n,$SKM_Level<51,200,200)
}
/if "$p0"=="Dragon Punch" /varset SKM_LevelCap $if(n,$SKM_Level<51,200,225)
/if "$p0"=="Eagle Strike" /varset SKM_LevelCap $if(n,$SKM_Level<51,200,225)
/if "$p0"=="Feign Death" /varset SKM_LevelCap $if(n,$SKM_Level<51,200,200)
/if "$p0"=="Flying Kick" /varset SKM_LevelCap $if(n,$SKM_Level<51,200,225)
/if "$p0"=="Kick" {
	/if $SKM_Class==Monk /varset SKM_LevelCap $if(n,$SKM_Level<51,200,250)
	/if $SKM_Class==Warrior /varset SKM_LevelCap $if(n,$SKM_Level<51,149,210)
}
/if "$p0"=="Instill Doubt" {
	/if $SKM_Class==Bard /varset SKM_LevelCap $if(n,$SKM_Level<51,100,100)
	/if $SKM_Class==Monk /varset SKM_LevelCap $if(n,$SKM_Level<51,200,200)
	/if $SKM_Class==Rogue /varset SKM_LevelCap $if(n,$SKM_Level<51,200,200)
}
/if "$p0"=="Mend" /varset SKM_LevelCap $if(n,$SKM_Level<51,200,200)
/if "$p0"=="Round Kick" /varset SKM_LevelCap $if(n,$SKM_Level<51,200,225)
/if "$p0"=="Slam" {
	/if $SKM_Class==Warrior /varset SKM_LevelCap $if(n,$SKM_Level<51,220,240)
}
/if "$p0"=="Taunt" {
	/if $SKM_Class==Ranger /varset SKM_LevelCap $if(n,$SKM_Level<51,150,150)
	/if $SKM_Class==Warrior /varset SKM_LevelCap $if(n,$SKM_Level<51,200,200)
}
/if "$p0"=="Throwing" {
	/if $SKM_Class==Bard /varset SKM_LevelCap $if(n,$SKM_Level<51,113,113)
	/if $SKM_Class==Enchanter /varset SKM_LevelCap $if(n,$SKM_Level<51,75,75)
	/if $SKM_Class==Magician /varset SKM_LevelCap $if(n,$SKM_Level<51,75,75)
	/if $SKM_Class==Monk /varset SKM_LevelCap $if(n,$SKM_Level<51,113,200)
	/if $SKM_Class==Ranger /varset SKM_LevelCap $if(n,$SKM_Level<51,113,113)
	/if $SKM_Class==Rogue /varset SKM_LevelCap $if(n,$SKM_Level<51,220,250)
	/if $SKM_Class==Wizard /varset SKM_LevelCap $if(n,$SKM_Level<51,75,75)
}
/if "$p0"=="Tiger Claw" /varset SKM_LevelCap $if(n,$SKM_Level<51,200,225)

| Arcane Skills

/if "$p0"=="Abjuration" /varset SKM_LevelCap $if(n,$SKM_Level<51,235,235)
/if "$p0"=="Alteration" /varset SKM_LevelCap $if(n,$SKM_Level<51,235,235)
/if "$p0"=="Conjuration" /varset SKM_LevelCap $if(n,$SKM_Level<51,235,235)
/if "$p0"=="Divination" /varset SKM_LevelCap $if(n,$SKM_Level<51,235,235)
/if "$p0"=="Evocation" /varset SKM_LevelCap $if(n,$SKM_Level<51,235,235)
/if "$p0"=="Channeling" {
	/varset SKM_LevelCap $if(n,$SKM_Level<51,200,220)
	/if $SKM_Class==Ranger /varset SKM_LevelCap $if(n,$SKM_Level<51,200,215)
}
/if "$p0"=="Meditate" {
	/varset SKM_LevelCap $if(n,$SKM_Level<51,235,252)
	/if $SKM_Class==Bard /varset SKM_LevelCap $if(n,$SKM_Level<51,1,1)
	/if $SKM_Class==Ranger /varset SKM_LevelCap $if(n,$SKM_Level<51,185,226)
}
/if "$p0"=="Research" /varset SKM_LevelCap $if(n,$SKM_Level<51,200,200)
/if "$p0"=="Specialisation" /varset SKM_LevelCap $if(n,$SKM_Level<51,235,235)

| Music Skills

/if "$p0"=="Singing" /varset SKM_LevelCap $if(n,$SKM_Level<51,235,235)
/if "$p0"=="Percussion" /varset SKM_LevelCap $if(n,$SKM_Level<51,235,235)
/if "$p0"=="String" /varset SKM_LevelCap $if(n,$SKM_Level<51,235,235)
/if "$p0"=="Brass" /varset SKM_LevelCap $if(n,$SKM_Level<51,235,235)
/if "$p0"=="Wind" /varset SKM_LevelCap $if(n,$SKM_Level<51,235,235)

| Misc Skills

/if "$p0"=="Alcohol Tolerance" /varset SKM_LevelCap $if(n,$SKM_Level<51,200,200)
/if "$p0"=="Beg" /varset SKM_LevelCap $if(n,$SKM_Level<51,200,200)
/if "$p0"=="Sense Heading" /varset SKM_LevelCap $if(n,$SKM_Level<51,200,200)
/if "$p0"=="Swimming" /varset SKM_LevelCap $if(n,$SKM_Level<51,200,200)
/if "$p0"=="Apply Poison" /varset SKM_LevelCap $if(n,$SKM_Level<51,200,200)
/if "$p0"=="Disarm Traps" {
	/if $SKM_Class==Bard /varset SKM_LevelCap $if(n,$SKM_Level<51,100,100)
	/if $SKM_Class==Rogue /varset SKM_LevelCap $if(n,$SKM_Level<51,200,200)
}
/if "$p0"=="Fishing" /varset SKM_LevelCap $if(n,$SKM_Level<51,200,200)
/if "$p0"=="Forage" {
	/if $SKM_Class==Bard /varset SKM_LevelCap $if(n,$SKM_Level<51,55,55)
	/if $SKM_Class==Druid /varset SKM_LevelCap $if(n,$SKM_Level<51,200,200)
	/if $SKM_Class==Ranger /varset SKM_LevelCap $if(n,$SKM_Level<51,200,200)
}
/if "$p0"=="Hide" {
	/if $SKM_Class==Bard /varset SKM_LevelCap $if(n,$SKM_Level<51,40,40)
	/if $SKM_Class==Ranger /varset SKM_LevelCap $if(n,$SKM_Level<51,75,75)
	/if $SKM_Class==Rogue /varset SKM_LevelCap $if(n,$SKM_Level<51,200,200)
}
/if "$p0"=="Pick Lock" {
	/if $SKM_Class==Bard /varset SKM_LevelCap $if(n,$SKM_Level<51,100,100)
	/if $SKM_Class==Rogue /varset SKM_LevelCap $if(n,$SKM_Level<51,200,210)
}
/if "$p0"=="Pick Pocket" /varset SKM_LevelCap $if(n,$SKM_Level<51,200,200)
/if "$p0"=="Safe Fall" {
	/if $SKM_Class==Bard /varset SKM_LevelCap $if(n,$SKM_Level<51,40,40)
	/if $SKM_Class==Monk /varset SKM_LevelCap $if(n,$SKM_Level<51,200,200)
	/if $SKM_Class==Rogue /varset SKM_LevelCap $if(n,$SKM_Level<51,94,94)
}
/if "$p0"=="Sense Traps" {
	/if $SKM_Class==Bard /varset SKM_LevelCap $if(n,$SKM_Level<51,75,75)
	/if $SKM_Class==Rogue /varset SKM_LevelCap $if(n,$SKM_Level<51,200,200)
}
/if "$p0"=="Sneak" {
	/if $SKM_Class==Bard /varset SKM_LevelCap $if(n,$SKM_Level<51,75,75)
	/if $SKM_Class==Monk /varset SKM_LevelCap $if(n,$SKM_Level<51,113,113)
	/if $SKM_Class==Ranger /varset SKM_LevelCap $if(n,$SKM_Level<51,75,75)
	/if $SKM_Class==Rogue /varset SKM_LevelCap $if(n,$SKM_Level<51,200,200)
}
/if "$p0"=="Track" {
	/if $SKM_Class==Bard /varset SKM_LevelCap $if(n,$SKM_Level<51,100,100)
	/if $SKM_Class==Druid /varset SKM_LevelCap $if(n,$SKM_Level<51,125,125)
	/if $SKM_Class==Ranger /varset SKM_LevelCap $if(n,$SKM_Level<51,200,200)
}

/if n $SKM_LevelCap>0 {
	/return $if(n,$SKM_CurrentCap<$SKM_LevelCap,$SKM_CurrentCap,$SKM_LevelCap)
}

/return 0

| /call doAbility "Ability" [#]
| Will perform the specified action as expected,
| unless a second parameter is specified.  If
| a second parameter is specified, the action
| will be taken only if the PC's current skill
| level is less than possible maximum.

sub doAbility
    /if n $char(ability,"$p0")<1 /return
    /if $p1=="" {
   	 /doability "$p0"
	 /return
    }
    /call skillmax "$p0"
    /if n $char(skill,"$p0")<$return {
    	/doability "$p0"
    }
/return

User avatar
SingleServing
a hill giant
a hill giant
Posts: 195
Joined: Tue Dec 17, 2002 11:00 pm

Spell Caps

Post by SingleServing » Fri Jan 17, 2003 9:35 pm

You might want to think about doing something like


/varcalc MaxSkill ($char(level)*5)+5
/if n $maxskill>235 /if n $char(level)<51 /varset Maxskill 235
/if n $maxskill>252 /varset MaxSkill 252


I don't know real numbers just makin them up as I go.

Oh you might want to check for a tradeskill over 200 also to set the rest of the tradeskill caps to 200. Those with AA's can perform their own editing =)
[color=DarkBlue]Everything,[/color] [color=DarkBlue][b]is[/b][/color] [color=black]black[/color] [color=DarkBlue]and[/color] [color=white]white[/color][color=DarkBlue], when you zoom out it looks[/color] [color=gray]grey[/color][color=DarkBlue].[/color]