View Single Post
Old 03-02-2018, 05:59 AM   #4
ericbsmith
 
ericbsmith's Avatar
 
Join Date: Aug 2004
Location: Binghamton, NY, USA. Near the river Styx in the 5th Circle.
Default Re: Divorcing Magery from Skill Ranks

Magery has always been a tough one due to the complexity of tracking Magery with different limitations for different colleges and other limitations. Dropping the following into a custom datafile and adding that data file to your data set should do the trick. Note that I include a place for you to reset the cost of Magery below, you'll need to change the cost(10/20) to whatever cost you desire - my suggestion would be cost(5/10), but that's up to you.


Code:
Version=3
//  The version information above MUST be the first line of the data file
LoadAfter="GURPS Magic 4e.gdf", "GURPS Thaumatology 4e.gdf"


[ATTRIBUTES]
#ReplaceTags in "ST:Magery" with "gives()"

[ADVANTAGES]
#ReplaceTags in "AD:Magery" with "cost(10/20)"

[MODIFIERS]
<Magery>
One College Only, -40%, group(Magery), page(B67),_
	gives(_
			-Owner::Level to ST:Magery,_
			+Owner::Level to (ST:Magery One)_
		),_
	x(_
		#InputReplace("Please enter the name of the college:", "One", , "One College Only"),_
		#Message(Use this limitation *ONLY* on the Magery advantage. It will cause errors if used on any other trait (including the Magery 0 advantage).) _
	)

One College Only (%College%), -40%,group(Magery), page(B67),_
	gives(_
			-Owner::Level to ST:Magery,_
			+Owner::Level to (ST:Magery %CollegeList%)_
		),_
	x(_
	#Message(Use this limitation *ONLY* on the Magery advantage. It will cause errors if used on any other trait (including the Magery 0 advantage).),_
	#ChoiceList(_
			name(College),_
			title(One College Magery),_
			text(Choose which college your Magery is limited to:),_
			picksallowed(1),_
			method(bynumber),_
			list(_
				#grouplist(GR:AllCollegesMagical, flags(NoPrefix), prepend("), append("))_
			)_
		)_
	)

[MODIFIERS]
<Magery>
Limited Colleges (%CollegesList%), -40%/-30%, upto(1), levelnames(,), group(Magery), page(Th24), formula(-10% * (5 - (%CollegesCost4% + %CollegesCost3% + %CollegesCost2% + %CollegesCost1%))), forceformula(yes),_
	gives(_
			-Owner::Level to ST:Magery,_
			+Owner::Level to (%CollegesAliasList%)_
		),_
	x(_
		#Message(Use this limitation *ONLY* on the Magery advantage. It will cause errors if used on any other trait (including the Magery 0 advantage).),_
		#ChoiceList(_
			name(Colleges),_
			title(Limited Colleges Magery),_
			text(Choose up to four colleges which your Magery is limited to:),_
			picksallowed(atleast 1, upto 4),_
			method(bynumber),_
			list(_
				"Air"=1,_
				"Animal"=1,_
				"Body Control"=1,_
				"Communication & Empathy"=1,_
				"Earth"=1,_
				"Enchantment"=1,_
				"Fire"=1,_
				"Food"=1,_
				"Gate"=1,_
				"Healing"=1,_
				"Illusion & Creation"=1,_
				"Knowledge"=1,_
				"Light & Darkness"=1,_
				"Making & Breaking"=1,_
				"Meta-Spells"=1,_
				"Mind Control"=1,_
				"Movement"=1,_
				"Necromancy"=1,_
				"Plant"=1,_
				"Protection & Warning"=1,_
				"Sound"=1,_
				"Technological"=1,_
				"Water"=1,_
				"Weather"=1 _
			),_
			aliaslist(_
				"ST:Magery Air",_
				"ST:Magery Animal",_
				"ST:Magery Body Control",_
				"ST:Magery Communication & Empathy",_
				"ST:Magery Earth",_
				"ST:Magery Enchantment",_
				"ST:Magery Fire",_
				"ST:Magery Food",_
				"ST:Magery Gate",_
				"ST:Magery Healing",_
				"ST:Magery Illusion & Creation",_
				"ST:Magery Knowledge",_
				"ST:Magery Light & Darkness",_
				"ST:Magery Making & Breaking",_
				"ST:Magery Meta-Spells",_
				"ST:Magery Mind Control",_
				"ST:Magery Movement",_
				"ST:Magery Necromancy",_
				"ST:Magery Plant",_
				"ST:Magery Protection & Warning",_
				"ST:Magery Sound",_
				"ST:Magery Technological",_
				"ST:Magery Water",_
				"ST:Magery Weather" _
			)_
		)_
	), noresync(yes)

One-Spell Magery, -80%/-75%, group(Magery), upto(16), page(Th25), mods(One-Spell Magery Magery), ownerlevel(owner::level),_
	levelnames(, Two-Spells, Three-Spells, Four-Spells, Five-Spells, Six-Spells, Seven-Spells, Eight-Spells, Nine-Spells, Ten-Spells, Eleven-Spells, Twelve-Spells, Thirteen-Spells, Fourteen-Spells, Fifteen-Spells, Sixteen-Spells),_
	gives(_
			=-owner::level to ST:Magery,_
			=+owner::level to "ST:One-Spell Magery Magery"_
		),_
	x(_
		#message(Use this limitation *ONLY* on the Magery advantage. It will cause errors if used on any other trait.),_
		#message(In order for the Magery level to be added to the individual spells you will need to add modifiers to this modifier selecting which spell(s) it affects.),_
		#buildit _
		)

One-Spell Magery (%SpellsList%), -80%/-75%, upto(1), levelnames(,), group(Magery), page(Th25), formula(-85 + (5 * ((%SpellsCost16% + %SpellsCost15% + %SpellsCost14% + %SpellsCost13% + %SpellsCost12% + %SpellsCost11% + %SpellsCost10% + %SpellsCost9% + %SpellsCost8% + %SpellsCost7% + %SpellsCost6% + %SpellsCost5% + %SpellsCost4% + %SpellsCost3% + %SpellsCost2% + %SpellsCost1%)))), forceformula(yes),_
	gives(_
			=-Owner::Level to "ST:Magery"_
		),_
	x(_
		#Message(Use this limitation *ONLY* on the Magery advantage. It will cause errors if used on any other trait (including the Magery 0 advantage).),_
		#Message(If you choose any spells which require specialization you will need to manually edit the gives() tag of this modifier to correctly give a bonus to those spell(s).),_
		#ChoiceList(_
			name(Spells),_
			title(One-Spell Magery),_
			text(Choose up to sixteen spells which your Magery is limited to:),_
			picksallowed(atleast 1, upto 16),_
			method(bynumber),_
			list(_
					#grouplist(GR:AllSpellsMagical, flags(NoPrefix), prepend("), append("=1))_
				),_
			aliaslist(_
					#grouplist(GR:AllSpellsMagical)_
			)_
		)_
	), noresync(yes)
__________________
Eric B. Smith GURPS Data File Coordinator
GURPSLand
I shall pull the pin from this healing grenade and...
Kaboom-baya.
ericbsmith is offline   Reply With Quote