Jump to content
  • 0

Class Specialization by Euphy


Question

Posted

I just want to remove the resetting of base level :)

 

 

here the script : thanks!

//===== eAthena Script =======================================
//= Class Specialization
//===== By: ==================================================
//= Euphy
//===== Current Version: =====================================
//= 1.2
//===== Description: =========================================
//= A class expansion system allowing characters to
//= "specialize" in a particular aspect of their job.
//============================================================

prontera,166,173,3	script	Class Specialization	440,{
function Option;

// --------------------- Config ---------------------
//  Max: Maximum base level, maximum job level,
//		and maximum job level for Super Novices.
// SReq: Items required to specialize.
//		Format is "ID1,Count1,ID2,Count2,..."
//		If no requirements, use a single 0.
// DReq: Zeny, in MILLIONS, to despecialize.
//		If no requirement, use 0.

	setarray .Max[0],255,120,90;
	setarray .SReq[0],30002,100;
	set .DReq,10;
	set .n$,"[Class Specialization]";

// --------------------------------------------------

	mes .n$;
	if (BaseLevel < .Max[0]) {
		mes "You must be level " + .Max[0] + " to use this feature."; close; }
	if (Class != 23 && (Class < 4008 || Class > 4022)) {
		mes "This feature is not available for your class."; close; }
	if ((JobLevel < .Max[1]) || (Class == 23 && JobLevel < .Max[2])) {
		mes "You must master your class before using this feature."; close; }

	mes "So you've mastered your class~"; sleep2 500;
	mes "The process of ^0055ffspecialization^000000 can greatly enhance your attributes."; mes " "; sleep2 750;
	mes "^ff0000You may only choose once, so think carefully before deciding.^000000"; sleep2 750;
	next;
	if(select("I want to specialize.:I'll think about it.")==2) goto Closing;
	mes .n$;
	for (set .@i,3350; .@i<=3377; set .@i,.@i+1)
		if (countitem(.@i)>0) { sleep2 1000; goto Despecialize; }
	sleep2 500;

	if (getarraysize(.SReq)) {
		mes "The process is not simple."; sleep2 1000;
		mes "I require the following items:"; sleep2 750;
		set .@i,0;
		while (.@i < getarraysize(.SReq)) {
			mes "  ~ ^FF0000"+getitemname(.SReq[.@i])+"^000000 [^0055ff"+countitem(.SReq[.@i])+"^000000/"+.SReq[.@i+1]+"]"; sleep2 100;
			set .@i, .@i+2; }
		next;
		if(select("I've got them all.:I'll come back later.")==2) close;
		set .@i,0;
		while (.@i < getarraysize(.SReq)) {
			if (countitem(.SReq[.@i]) < .SReq[.@i+1]) {
				mes .n$; sleep2 500;
				mes "You're missing some items."; sleep2 500;
				mes "I'll need all the materials";
				mes "for this to work.";
				close; }
		set .@i, .@i+2; }
		mes .n$; }

	switch(Class){
		case 23: Option("Ultra Novice","Heightened magical powers",3372,"Hyper Novice","Insurmountable in strength",3373);
		case 4008: Option("Slayer","Agile sword-bearer",3350,"Lancer","Spear expert",3351);
		case 4009: Option("Cardinal","Divine healer",3354,"Battle Priest","Powerful acolyte-warrior",3355);
		case 4010: Option("Evoker","Bolt-oriented magician",3364,"Sorcerer","Area-oriented spellcaster",3365);
		case 4011: Option("Goldsmith","Master forger",3376,"Battlesmith","Impulsive axeman",3377);
		case 4012: Option("Scout","Swift archer",3368,"Ranger","Dagger-wielder",3369);
		case 4013: Option("Virus","Strength in poison",3362,"Reaver","High-defense killer",3363);
		case 4015: Option("Guardian","Unstoppable tank",3352,"Templar","Holy mercenary",3353);
		case 4016: Option("Brawler","Lethal combos",3356,"Zealot","Fanatic striker",3357);
		case 4017: Option("Geomancer","Single-spell sorcerer",3366,"Enchanter","Melee assaulter",3367);
		case 4018: Option("Raider","Cunning marksman",3374,"Backstabber","Delusive assassin",3375);
		case 4019: Option("Apothecary","Potion-brewer",3370,"Terrorist","Malicious bomber",3371);
		case 4020: Option("Minstrel","Gifted bard",3358,"Jester","Musical killer",3359);
		case 4021: Option("Performer","Gifted dancer",3360,"Siren","Musical killer",3361);
		default: mes "Something went wrong. Try again."; close; }

function Option {
	mes "^0055ff > "+getarg(0);
		sleep2 200;
	mes "^777777 > "+getarg(1)+".";
	mes " ";
		sleep2 200;
	mes "^0055ff > "+getarg(3);
		sleep2 200;
	mes "^777777 > "+getarg(4)+".^000000";
	set @menu$,"^0055ff"+getarg(0)+":"+getarg(3)+":^777777Cancel^000000";
		sleep2 1000;
	next;
	switch(select(@menu$)) {
		case 1: set @sring,getarg(2); set @sclass$,getarg(0); goto SConfirm;
		case 2: set @sring,getarg(5); set @sclass$,getarg(3); goto SConfirm;
		case 3: goto Closing; }
}

SConfirm:
	mes .n$;
	mes "Are you sure you want to specialize as the ^0055ff" + @sclass$ + "^000000 class?"; mes " "; sleep2 500;
	mes "^ff0000Your base level will be reset.  This cannot be undone.^000000";
	next;
	if(select("I need more time to think.:Yes!")==1) goto Closing;
	progressbar "",2;
	specialeffect2 248;
	if (getarraysize(.SReq)) {
		set .@i,0;
		while (.@i < getarraysize(.SReq)) {
			delitem .SReq[.@i], .SReq[.@i+1];
			set .@i, .@i+2; }
	}
	mes .n$;
	mes "...finished!"; sleep2 500;
	mes "Here's your ^0055ff" + getitemname(@sring) + "^000000."; sleep2 200;
	getitem @sring,1;
	set BaseLevel,1;
	ResetStatus;
	set StatusPoint,100; sleep2 200;
	nude;
	equip @sring;
	close;

Despecialize:
	mes "You've already specialized!"; sleep2 1000;
	if (.DReq) {
		mes " ";
		mes "^777777There is a way to switch, if you really want to... but it's costly.^000000"; sleep2 1000;
		next;
		if(select("Okay, never mind.:I still want to switch!")==1) close;
		mes .n$; sleep2 1000;
		mes "...okay."; sleep2 800;
		mes "To undo the specialization process, I'll need ^ff0000" + .DReq + " million Zeny^000000 to";
		mes "obtain all the materials I need."; mes " "; sleep2 1000;
		mes "Are you sure?"; sleep2 1000;
		next;
		if(select("What? No way!:Yes.")==1) goto Closing;
		mes .n$;
		if (Zeny < (.DReq*1000000)) {
			sleep2 500;
			mes "You don't have enough Zeny."; sleep2 500;
			mes "It's an expensive procedure, so please reconsider.";
			close; }
	} else {
		mes "Your ring will be deleted if you despecialize."; sleep2 1000;
		next;
		if(select("Oh, never mind then.:Let me despecialize!")==1) close;
		mes .n$; sleep2 1000;
		mes "Do you really want to despecialize?"; sleep2 500;
		next;
		if(select("No, I've changed my mind.:Yes.")==1) close;
		mes .n$; }
	progressbar "", 2;
	specialeffect2 338;
	set Zeny, Zeny - (.DReq*1000000);
	for (set .@i,3350; .@i<=3377; set .@i,.@i+1)
		if (countitem(.@i)>0) delitem .@i,1;
	mes "...finished!"; sleep2 1000;
	mes "^777777(I hope you don't regret this...)^000000"; sleep2 1000;
	close;

Closing:
	mes .n$;
	mes "Come back when you've";
	mes "made your decision.";
	close;
}

function	script	SpecEffect	{
	function dd	{
		while(.@j<=getarg(2)){
			set .@j, .@j+1;
			specialeffect2 getarg(0);
			sleep2(getarg(1)); }
		return; }
	if(@effectdelay < gettimetick(2)) {
		set @effectdelay, gettimetick(2)+5;
		dd(54,10,2); dd(55,10,2); dd(668,10,2); dd(58,10,2); dd(377,10,2); dd(500,20,2); }
}

3 answers to this question

Recommended Posts

Posted (edited)

hmm ... the idea of this script is nice ... especially the names of the job

remove this line

set BaseLevel,1;

set StatusPoint,100;

change into

set StatusPoint, StatusPoint + 100;

edit: btw you should know that you should set this to no

// Use the contents of db/statpoint.txt when doing a stats reset and leveling up? (Note 1)

// If no, an equation will be used which preserves statpoints earned/lost

// through external means (ie: stat point buyers/sellers)

use_statpoint_table: yes

Edited by AnnieRuru
  • Upvote 1
Posted

hmm ... the idea of this script is nice ... especially the names of the job

I took the names from a (dead) server I used to play (and they're credited in my releases topic) XD.

And wow, that's an old script. One of the first ones I wrote, I think...

  • Upvote 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...