Jump to content
  • 0

Class Specialization by Euphy


Yoona

Question


  • Group:  Members
  • Topic Count:  153
  • Topics Per Day:  0.04
  • Content Count:  567
  • Reputation:   18
  • Joined:  04/15/13
  • Last Seen:  

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); }
}
Link to comment
Share on other sites

3 answers to this question

Recommended Posts


  • Group:  Members
  • Topic Count:  18
  • Topics Per Day:  0.00
  • Content Count:  2044
  • Reputation:   682
  • Joined:  10/09/12
  • Last Seen:  

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
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  72
  • Topics Per Day:  0.02
  • Content Count:  2997
  • Reputation:   1130
  • Joined:  05/27/12
  • Last Seen:  

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
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  153
  • Topics Per Day:  0.04
  • Content Count:  567
  • Reputation:   18
  • Joined:  04/15/13
  • Last Seen:  

@Annieruru damn it is nice :) by the way thanks for the support!

 

 

@Euphy thanks for the script ! 

Link to comment
Share on other sites

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.

×
×
  • Create New...