Jump to content
Sign in to follow this  
OmarAcero

Support for Star Emperor and Soul Reaper?

Recommended Posts

Do we even have rebellion and ninja coded?

 

As for the other 2 itd probably just be a matter of adding skill ids with a 2018/19 client , you have it all and dont know it really 


Then we'd have 4 empty jobs but still have the animations at least

 

edit: Im done with work so ill probably take a look at these this month, if i can get a new client to work

Edited by lllaaazzz

Share this post


Link to post
Share on other sites

Look ill even show you how to do it, and ill even answer any questions you may have after reading this if you still have some. 

1)Go to your ENGLISH TRANSLATION GRF

>LUAFILES514

>LUA FILES

>SKILLINFOZ

Extract skillid.lub and open it in notepad

You want it to look like this

	RL_HAMMER_OF_GOD = 2571,
	RL_R_TRIP_PLUSATK = 2572,
	RL_B_FLICKER_ATK = 2573,
	SJ_LIGHTOFMOON = 2574,
	SJ_LUNARSTANCE = 2575,
	SJ_FULLMOONKICK = 2576,
	SJ_LIGHTOFSTAR = 2577,
	SJ_STARSTANCE = 2578,
	SJ_NEWMOONKICK = 2579,
	SJ_FLASHKICK = 2580,
	SJ_STAREMPEROR = 2581,
	SJ_NOVAEXPLOSING = 2582,
	SJ_UNIVERSESTANCE = 2583,
	SJ_FALLINGSTAR = 2584,
	SJ_GRAVITYCONTROL = 2585,
	SJ_BOOKOFDIMENSION = 2586,
	SJ_BOOKOFCREATINGSTAR = 2587,
	SJ_DOCUMENT = 2588,
	SJ_PURIFY = 2589,
	SJ_LIGHTOFSUN = 2590,
	SJ_SUNSTANCE = 2591,
	SJ_SOLARBURST = 2592,
	SJ_PROMINENCEKICK = 2593,
	SJ_FALLINGSTAR_ATK = 2594,
	SJ_FALLINGSTAR_ATK2 = 2595,
	SP_SOULGOLEM = 2596,
	SP_SOULSHADOW = 2597,
	SP_SOULFALCON = 2598,
	SP_SOULFAIRY = 2599,
	SP_CURSEEXPLOSION = 2600,
	SP_SOULCURSE = 2601,
	SP_SPA = 2602,
	SP_SHA = 2603,
	SP_SWHOO = 2604,
	SP_SOULUNITY = 2605,
	SP_SOULDIVISION = 2606,
	SP_SOULREAPER = 2607,
	SP_SOULREVOLVE = 2608,
	SP_SOULCOLLECT = 2609,
	SP_SOULEXPLOSION = 2610,
	SP_SOULENERGY = 2611,
	SP_KAUTE = 2612,

refer to this for all your ids

2) Fill in your DB > Skill_DB (re or pre re)

{
	Id: 2574
	Name: "SJ_LIGHTOFMOON"
	Description: "Light of Moon"
	MaxLevel: 5
	Hit: "BDT_SKILL"
	SkillType: {
		Self: true
	}
	AttackType: "Weapon"
	DamageType: {
		NoDamage: true
	}
	SkillData1: {
		Lv1: 20000
		Lv2: 30000
		Lv3: 40000
		Lv4: 50000
		Lv5: 60000
	}
	CoolDown: 0
	Requirements: {
		SPCost: 8
	}
},
{
	Id: 2575
	Name: "SJ_LUNARSTANCE"
	Description: "Lunar Stance"
	MaxLevel: 3
	Hit: "BDT_SKILL"
	SkillType: {
		Self: true
	}
	AttackType: "Weapon"
	DamageType: {
		NoDamage: true
	}
	Requirements: {
		SPCost: 1
	}
},
{
	Id: 2576
	Name: "SJ_FULLMOONKICK"
	Description: "Full Moon Kick"
	MaxLevel: 7
	Hit: "BDT_SKILL"
	SkillType: {
		Self: true
	}
	SkillInfo: {
		AllowReproduce: true
	}
	AttackType: "Weapon"
	Element: "Ele_Weapon"
	DamageType: {
		SplashArea: true
	}
	SplashRange: 7
	CastTime: 0
	CoolDown: 0
	Requirements: {
		SPCost: {
			Lv1: 1
			Lv2: 1
			Lv3: 1
			Lv4: 1
			Lv5: 1
			Lv6: 1
			Lv7: 1
		}
	}
},
{
	Id: 2577
	Name: "SJ_LIGHTOFSTAR"
	Description: "Light of Star"
	MaxLevel: 5
	Hit: "BDT_SKILL"
	SkillType: {
		Self: true
	}
	AttackType: "Weapon"
	DamageType: {
		NoDamage: true
	}
	SkillData1: {
		Lv1: 20000
		Lv2: 30000
		Lv3: 40000
		Lv4: 50000
		Lv5: 60000
	}
	CoolDown: 0
	Requirements: {
		SPCost: 8
	}
},
{
	Id: 2578
	Name: "SJ_STARSTANCE"
	Description: "Star Stance"
	MaxLevel: 3
	Hit: "BDT_SKILL"
	SkillType: {
		Self: true
	}
	AttackType: "Weapon"
	DamageType: {
		NoDamage: true
	}
	Requirements: {
		SPCost: 1
	}
},
{
	Id: 2579
	Name: "SJ_NEWMOONKICK"
	Description: "New Moon Kick"
	MaxLevel: 7
	Hit: "BDT_SKILL"
	SkillType: {
		Self: true
	}
	SkillInfo: {
		AllowReproduce: true
	}
	AttackType: "Weapon"
	Element: "Ele_Weapon"
	DamageType: {
		SplashArea: true
	}
	SplashRange: 7
	CastTime: 0
	CoolDown: 0
	Requirements: {
		SPCost: {
			Lv1: 1
			Lv2: 1
			Lv3: 1
			Lv4: 1
			Lv5: 1
			Lv6: 1
			Lv7: 1
		}
	}
},
{
	Id: 2580
	Name: "SJ_FLASHKICK"
	Description: "Flash Kick"
	MaxLevel: 7
	Range: 7
	Hit: "BDT_SKILL"
	SkillType: {
		Enemy: true
	}
	SkillInfo: {
		AllowReproduce: true
	}
	AttackType: "Weapon"
	Element: "Ele_Weapon"
	CastTime: 0
	CoolDown: 0
	SkillData1: {
		Lv1: 4000
		Lv2: 5000
		Lv3: 6000
		Lv4: 7000
		Lv5: 8000
		Lv6: 9000
		Lv7: 10000
	}
	Requirements: {
		SPCost: {
			Lv1: 1
			Lv2: 1
			Lv3: 1
			Lv4: 1
			Lv5: 1
			Lv6: 1
			Lv7: 1
		}
	}
},

You can like at 3ceam emulator, he has it all filled in , but in rathena database but its really simple and anyone who knows ragnarok should be able to tell if its a simple bash skill with a teleport or something from a buff or stance, you can just ask me if you dont know.

3)go to SRC>MAP

Open skill.h

Im being really specific about it cause i dont really trust this thing but:

RL_HAMMER_OF_GOD,
	RL_R_TRIP_PLUSATK,
	RL_B_FLICKER_ATK,

	SJ_LIGHTOFMOON = 2574,
	SJ_LUNARSTANCE = 2575,
	SJ_FULLMOONKICK = 2576,
	SJ_LIGHTOFSTAR = 2577,
	SJ_STARSTANCE = 2578,
	SJ_NEWMOONKICK = 2579,
	SJ_FLASHKICK = 2580,
	SJ_STAREMPEROR = 2581,
	SJ_NOVAEXPLOSING = 2582,
	SJ_UNIVERSESTANCE = 2583,
	SJ_FALLINGSTAR = 2584,
	SJ_GRAVITYCONTROL = 2585,
	SJ_BOOKOFDIMENSION = 2586,
	SJ_BOOKOFCREATINGSTAR = 2587,
	SJ_DOCUMENT = 2588,
	SJ_PURIFY = 2589,
	SJ_LIGHTOFSUN = 2590,
	SJ_SUNSTANCE = 2591,
	SJ_SOLARBURST = 2592,
	SJ_PROMINENCEKICK = 2593,
	SJ_FALLINGSTAR_ATK = 2594,
	SJ_FALLINGSTAR_ATK2 = 2595,

	SP_SOULGOLEM = 2596,
	SP_SOULSHADOW = 2597,
	SP_SOULFALCON = 2598,
	SP_SOULFAIRY = 2599,
	SP_CURSEEXPLOSION = 2600,
	SP_SOULCURSE = 2601,
	SP_SPA = 2602,
	SP_SHA = 2603,
	SP_SWHOO = 2604,
	SP_SOULUNITY = 2605,
	SP_SOULDIVISION = 2606,
	SP_SOULREAPER = 2607,
	SP_SOULREVOLVE = 2608,
	SP_SOULCOLLECT = 2609,
	SP_SOULEXPLOSION = 2610,
	SP_SOULENERGY = 2611,
	SP_KAUTE = 2612,

	KO_YAMIKUMO = 3001,
	KO_RIGHT,
	KO_LEFT,
	KO_JYUMONJIKIRI,
	KO_SETSUDAN,
	KO_BAKURETSU,
	KO_HAPPOKUNAI,
	KO_MUCHANAGE,
	KO_HUUMARANKA,
	KO_MAKIBISHI,
	KO_MEIKYOUSISUI,
	KO_ZANZOU,
	KO_KYOUGAKU,
	KO_JYUSATSU,
	KO_KAHU_ENTEN,
	KO_HYOUHU_HUBUKI,
	KO_KAZEHU_SEIRAN,
	KO_DOHU_KOUKAI,
	KO_KAIHOU,
	KO_ZENKAI,
	KO_GENWAKU,
	KO_IZAYOI,
	KG_KAGEHUMI,
	KG_KYOMU,
	KG_KAGEMUSYA,
	OB_ZANGETSU,
	OB_OBOROGENSOU,
	OB_OBOROGENSOU_TRANSITION_ATK,
	OB_AKAITSUKI,

4)go to skill.c in same folder

I added these right above magnum break

case SJ_LUNARSTANCE:
		case SJ_LIGHTOFSTAR:
		case SJ_STARSTANCE:
		case SJ_LIGHTOFMOON:
			clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
			break;
			
		case SM_MAGNUM:
		case MS_MAGNUM:
			if( flag&1 ) {
				//Damage depends on distance, so add it to flag if it is > 1
				skill->attack(skill->get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag|SD_ANIMATION|distance_bl(src, bl));
			}
			break;

now i have accesss to all the buff's visual effects, these are realllly simple things to script though i just dont need it

and for our attack skills... 

since fullmoonkick is an splash attack from our skill_db (we wanna make it like arrow storm but centered on ourself so we set the

 SkillType: {
        Self: true
    }

and set our splash to 7 ) 

	case AS_GRIMTOOTH:
		case MC_CARTREVOLUTION:
		case NPC_SPLASHATTACK:
			flag |= SD_PREAMBLE; // a fake packet will be sent for the first target to be hit
			FALLTHROUGH
		case AS_SPLASHER:
		case SM_CANNONSHOT:
		case HT_BLITZBEAT:
		case SOUL_BLAST:
		case AM_WATER:
		case AC_SHOWER:
		case MA_SHOWER:
		case LG_BANISHINGPOINT:
		case MG_NAPALMBEAT:
		case MG_FIREBALL:
		case RG_RAID:
		case HW_NAPALMVULCAN:
		case NJ_HUUMA:
		case NJ_BAKUENRYU:
		case ASC_METEORASSAULT:
		case GS_DESPERADO:
		case GS_SPREADATTACK:
		case NPC_PULSESTRIKE:
		case NPC_HELLJUDGEMENT:
		case SM_SLOWSHOT:
		case NPC_VAMPIRE_GIFT:
		case WL_SOULEXPANSION:
		case SJ_FULLMOONKICK:
		case SJ_NEWMOONKICK:
		case WL_CRIMSONROCK:
		case WL_COMET:
		case WL_JACKFROST:
		case RA_ARROWSTORM:
		case RA_WUGDASH:
		case NC_VULCANARM:
		case NC_ARMSCANNON:
		case NC_SELFDESTRUCTION:
		case NC_AXETORNADO:
		case GC_ROLLINGCUTTER:
		case GC_COUNTERSLASH:
		case LG_MOONSLASHER:
		case LG_EARTHDRIVE:
		case SR_TIGERCANNON:
		case SR_RAMPAGEBLASTER:
		case SR_SKYNETBLOW:
		case SR_WINDMILL:
		case SR_RIDEINLIGHTNING:
		case WM_REVERBERATION:
		case SO_VARETYR_SPEAR:
		case GN_CART_TORNADO:
		case GN_CARTCANNON:
		case KO_HAPPOKUNAI:
		case KO_HUUMARANKA:
		case KO_MUCHANAGE:
		case KO_BAKURETSU:
		case GN_ILLUSIONDOPING:
		case MH_XENO_SLASHER:
		case SU_SCRATCH:
		case GS_RAPIDSHOWER:
		case GS_SLAM:
		case RL_AM_BLAST:
		case SU_LUNATICCARROTBEAT:
			if (flag&1) { //Recursive invocation
				// skill->area_temp[0] holds number of targets in area
				// skill->area_temp[1] holds the id of the original target
				// skill->area_temp[2] counts how many targets have already been processed
				int sflag = skill->area_temp[0] & 0xFFF, heal;
				struct status_change *tsc = status->get_sc(bl);
				if( flag&SD_LEVEL )
					sflag |= SD_LEVEL; // -1 will be used in packets instead of the skill level
				if( (skill->area_temp[1] != bl->id && !(skill->get_inf2(skill_id)&INF2_NPC_SKILL)) || flag&SD_ANIMATION )
					sflag |= SD_ANIMATION; // original target gets no animation (as well as all NPC skills)

				if ( tsc && tsc->data[SC_HOVERING] && ( skill_id == SR_WINDMILL || skill_id == LG_MOONSLASHER ) )
					break;

I added it above arrow storm since thats what im trying to make

 

not sure what flash kick looks like but needs some work but most single target skills would just require this (read basic custom skill tutorial and learn about adding bolts)

		case WM_SEVERE_RAINSTORM_MELEE:
		case WM_GREAT_ECHO:
		case GN_SLINGITEM_RANGEMELEEATK:
		case KO_SETSUDAN:
		case GC_DARKCROW:
		case NPC_CONRAY:
		case LG_OVERBRAND_BRANDISH:
		case PA_PRESSURE:
		case LG_OVERBRAND:
		case KN_LIGHTNINGSWING:
		case SJ_FLASHKICK:
			skill->attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag);
		break;

5) then you wanna do your battle damage calculators, go to battle.c

Doesnt really matter where you put this but ill just put it on top of the ranger


				case SJ_FULLMOONKICK:
					skillratio += 900 + 80 * skill_lv;
					RE_LVL_DMOD(100);
					break;


/**
					* Ranger
					**/
				case RA_ARROWSTORM:
					skillratio += 900 + 80 * skill_lv;
					RE_LVL_DMOD(100);
					break;
				case RA_AIMEDBOLT:
					skillratio += 400 + 50 * skill_lv;
					RE_LVL_DMOD(100);
					break;
				case RA_CLUSTERBOMB:
					skillratio += 100 + 100 * skill_lv;
					break;
				case RA_WUGDASH:// ATK 300%
					skillratio = 300;
					if( sc && sc->data[SC_DANCE_WITH_WUG] )
						skillratio += 10 * sc->data[SC_DANCE_WITH_WUG]->val1 * (2 + battle->calc_chorusbonus(sd));
					break;

Dont really know what this re_lvl_dmod thing is but whatever 

6) open visual studio or whatever you use to recompile your stuff, and rebuild the solution or whatever you did to get your "run-server.bat" working 

7)Now we are going back to step 1........... open your grf editor and your english translation

same folder as before luafiles514>luafiles>skillinfoz

extract skillinfolist or skillinfo (not skillinfo_f)

doesnt matter where but this is how we get our icons and stuff

[SKID.RL_HAMMER_OF_GOD] = {
		"RL_HAMMER_OF_GOD",
		SkillName = "Hammer of God",
		MaxLv = 5,
		SpAmount = { 35, 40, 45, 50, 55 },
		bSeperateLv = true,
		AttackRange = { 7, 8, 9, 10, 11 },
		_NeedSkillList = {
			{ SKID.RL_RICHS_COIN, 1 },
			{ SKID.RL_AM_BLAST, 3 }
		}
	},
	[SKID.SJ_LIGHTOFMOON] = {
		"SJ_LIGHTOFMOON",
		SkillName = "Light of Moon",
		MaxLv = 5,
		SpAmount = { 8 },
		bSeperateLv = true,
		AttackRange = { 1 }
	},
	[SKID.SJ_LUNARSTANCE] = {
		"SJ_LUNARSTANCE",
		SkillName = "Lunar Stance",
		MaxLv = 3,
		SpAmount = { 1 },
		bSeperateLv = true,
		AttackRange = { 1 }
	},
	[SKID.SJ_FULLMOONKICK] = {
		"SJ_FULLMOONKICK",
		SkillName = "Full Moon Kick",
		MaxLv = 7,
		SpAmount = { 1, 1, 1, 1, 1, 1, 1 },
		bSeperateLv = true,
		AttackRange = { 7 }
	},
	[SKID.SJ_LIGHTOFSTAR] = {
		"SJ_LIGHTOFSTAR",
		SkillName = "Light of Star",
		MaxLv = 5,
		SpAmount = { 8 },
		bSeperateLv = true,
		AttackRange = { 1 }
	},
	[SKID.SJ_STARSTANCE] = {
		"SJ_STARSTANCE",
		SkillName = "Star Stance",
		MaxLv = 3,
		SpAmount = { 1 },
		bSeperateLv = true,
		AttackRange = { 1 }
	},
	[SKID.SJ_NEWMOONKICK] = {
		"SJ_NEWMOONKICK",
		SkillName = "New Moon Kick",
		MaxLv = 7,
		SpAmount = { 1, 1, 1, 1, 1, 1, 1 },
		bSeperateLv = true,
		AttackRange = { 7 }
	},
	[SKID.SJ_FLASHKICK] = {
		"SJ_FLASHKICK",
		SkillName = "Flash Kick",
		MaxLv = 7,
		SpAmount = { 1, 1, 1, 1, 1, 1, 1 },
		bSeperateLv = true,
		AttackRange = { 7 }
	},

 

make sure you add skillid.lub/lua and skillinfolist.lub/lua back to your grf

save

8)do the same with your skilldescript but you should get it by now

 

 

 

Go in game and make an item with all these skills to test,

Go read a tutorial on adding jobs if your game didnt come with it

 

Congrats youve caught up to the hercules team 

 

Edited by lllaaazzz

Share this post


Link to post
Share on other sites

actually after playing around with rolling cutter i can definitly tell you that animations are linked to status, so things like crimson mark and flash kick need their respective statuses. . . Im not sure what the would be named but probably same name as before GC_ROLLINGCUTTER > SC_ROLLINGCUTTE (the counter is linked to the status)

Share this post


Link to post
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
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  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.

Loading...
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.