From 705f81523f8b6e0c91eff0317f13547fbd1ea669 Mon Sep 17 00:00:00 2001 From: Stefan Beller Date: Sun, 2 Jan 2011 22:31:04 +0100 Subject: adding the *getunactivatedpoolskilllist function to the server This function is a simple copy of getskillpoollist. It was extended, so it checks if that skill is activated. If so, it wont be returned. reviewed by: fate --- src/map/script.c | 51 ++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 42 insertions(+), 9 deletions(-) (limited to 'src/map/script.c') diff --git a/src/map/script.c b/src/map/script.c index 58c4b33..ad175c3 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -278,6 +278,7 @@ int buildin_getinventorylist (struct script_state *st); int buildin_getskilllist (struct script_state *st); int buildin_get_pool_skills (struct script_state *st); // [fate] int buildin_get_activated_pool_skills (struct script_state *st); // [fate] +int buildin_get_unactivated_pool_skills (struct script_state *st); // [PO] int buildin_activate_pool_skill (struct script_state *st); // [fate] int buildin_deactivate_pool_skill (struct script_state *st); // [fate] int buildin_check_pool_skill (struct script_state *st); // [fate] @@ -670,6 +671,8 @@ struct { buildin_get_activated_pool_skills, "getactivatedpoolskilllist", ""}, { + buildin_get_unactivated_pool_skills, "getunactivatedpoolskilllist", ""}, + { buildin_activate_pool_skill, "poolskill", "i"}, { buildin_deactivate_pool_skill, "unpoolskill", "i"}, @@ -3835,12 +3838,12 @@ int buildin_getskilllv (struct script_state *st) } /*========================================== - * getgdskilllv(Guild_ID, Skill_ID); - * skill_id = 10000 : GD_APPROVAL - * 10001 : GD_KAFRACONTACT - * 10002 : GD_GUARDIANRESEARCH - * 10003 : GD_CHARISMA - * 10004 : GD_EXTENSION + * getgdskilllv(Guild_ID, Skill_ID); + * skill_id = 10000 : GD_APPROVAL + * 10001 : GD_KAFRACONTACT + * 10002 : GD_GUARDIANRESEARCH + * 10003 : GD_CHARISMA + * 10004 : GD_EXTENSION *------------------------------------------ */ int buildin_getgdskilllv (struct script_state *st) @@ -4103,7 +4106,7 @@ int buildin_savepoint (struct script_state *st) /*========================================== * gettimetick(type) - * + * * type The type of time measurement. * Specify 0 for the system tick, 1 for * seconds elapsed today, or 2 for seconds @@ -4134,7 +4137,7 @@ int buildin_gettimetick (struct script_state *st) /* Asgard Version */ case 2: push_val (st->stack, C_INT, (int) time (NULL)); break; - /* System tick (unsigned int, and yes, it will wrap). */ + /* System tick (unsigned int, and yes, it will wrap). */ case 0: default: push_val (st->stack, C_INT, gettick ()); @@ -6575,6 +6578,36 @@ int buildin_get_activated_pool_skills (struct script_state *st) extern int skill_pool_skills[]; extern int skill_pool_skills_size; +int buildin_get_unactivated_pool_skills (struct script_state *st) +{ + struct map_session_data *sd = script_rid2sd (st); + int i, count = 0; + + if (!sd) + return 0; + + for (i = 0; i < skill_pool_skills_size; i++) + { + int skill_id = skill_pool_skills[i]; + + if (sd->status.skill[skill_id].id == skill_id && !(sd->status.skill[skill_id].flags & SKILL_POOL_ACTIVATED)) + { + pc_setreg (sd, add_str ("@skilllist_id") + (count << 24), + sd->status.skill[skill_id].id); + pc_setreg (sd, add_str ("@skilllist_lv") + (count << 24), + sd->status.skill[skill_id].lv); + pc_setreg (sd, add_str ("@skilllist_flag") + (count << 24), + sd->status.skill[skill_id].flags); + pc_setregstr (sd, add_str ("@skilllist_name$") + (count << 24), + skill_name (skill_id)); + ++count; + } + } + pc_setreg (sd, add_str ("@skilllist_count"), count); + + return 0; +} + int buildin_get_pool_skills (struct script_state *st) { struct map_session_data *sd = script_rid2sd (st); @@ -7935,7 +7968,7 @@ static int script_autosave_mapreg (int tid, unsigned int tick, int id, } /*========================================== - * + * *------------------------------------------ */ static int set_posword (char *p) -- cgit v1.2.3-60-g2f50