From 505d310c38ab4c2ce80edb082a609959ee0ec5e6 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 25 Sep 2018 01:52:30 +0300 Subject: Hercules update. --- src/emap/init.c | 4 ++-- src/emap/pc.c | 19 +++++++++++++------ src/emap/script.c | 22 +++++++++++----------- src/emap/script_buildins.c | 7 +++++++ src/emap/skill.c | 4 ++-- 5 files changed, 35 insertions(+), 21 deletions(-) diff --git a/src/emap/init.c b/src/emap/init.c index 510d40b..647f56a 100644 --- a/src/emap/init.c +++ b/src/emap/init.c @@ -361,8 +361,8 @@ HPExport void plugin_init (void) itemdb->isidentified = eitemdb_isidentified; itemdb->isidentified2 = eitemdb_isidentified2; - langScriptId = script->add_str("Lang"); - mountScriptId = script->add_str("mount"); + langScriptId = script->add_variable("Lang"); + mountScriptId = script->add_variable("mount"); isInit = true; } diff --git a/src/emap/pc.c b/src/emap/pc.c index afea705..e54b9e7 100644 --- a/src/emap/pc.c +++ b/src/emap/pc.c @@ -733,6 +733,11 @@ bool epc_adoption_pre(struct map_session_data **p1_sdPtr, pc->skill(p1_sd, WE_CALLBABY, 1, SKILL_GRANT_PERMANENT); pc->skill(p2_sd, WE_CALLBABY, 1, SKILL_GRANT_PERMANENT); + // Achievements [Smokexyz/Hercules] + achievement->validate_adopt(p1_sd, true); // Parent 1 + achievement->validate_adopt(p2_sd, true); // Parent 2 + achievement->validate_adopt(b_sd, false); // Baby + hookStop(); return true; } @@ -833,13 +838,13 @@ int epc_jobchange(struct map_session_data *sd, { // changing from 1st to 2nd job sd->change_level_2nd = sd->status.job_level; - pc_setglobalreg(sd, script->add_str("jobchange_level"), sd->change_level_2nd); + pc_setglobalreg(sd, script->add_variable("jobchange_level"), sd->change_level_2nd); } else if ((job & JOBL_THIRD) != 0 && (sd->job & JOBL_THIRD) == 0) { // changing from 2nd to 3rd job sd->change_level_3rd = sd->status.job_level; - pc_setglobalreg(sd, script->add_str("jobchange_level_3rd"), sd->change_level_3rd); + pc_setglobalreg(sd, script->add_variable("jobchange_level_3rd"), sd->change_level_3rd); } */ @@ -854,8 +859,8 @@ int epc_jobchange(struct map_session_data *sd, clif->deleteskill(sd, sd->cloneskill_id); } sd->cloneskill_id = 0; - pc_setglobalreg(sd, script->add_str("CLONE_SKILL"), 0); - pc_setglobalreg(sd, script->add_str("CLONE_SKILL_LV"), 0); + pc_setglobalreg(sd, script->add_variable("CLONE_SKILL"), 0); + pc_setglobalreg(sd, script->add_variable("CLONE_SKILL_LV"), 0); } if(sd->reproduceskill_id) @@ -869,8 +874,8 @@ int epc_jobchange(struct map_session_data *sd, clif->deleteskill(sd, sd->reproduceskill_id); } sd->reproduceskill_id = 0; - pc_setglobalreg(sd, script->add_str("REPRODUCE_SKILL"),0); - pc_setglobalreg(sd, script->add_str("REPRODUCE_SKILL_LV"),0); + pc_setglobalreg(sd, script->add_variable("REPRODUCE_SKILL"),0); + pc_setglobalreg(sd, script->add_variable("REPRODUCE_SKILL_LV"),0); } /* @@ -1012,6 +1017,8 @@ int epc_jobchange(struct map_session_data *sd, quest->questinfo_refresh(sd); + achievement->validate_jobchange(sd); // Achievements [Smokexyz/Hercules] + return 0; } diff --git a/src/emap/script.c b/src/emap/script.c index 4bc427b..5e8d1ae 100644 --- a/src/emap/script.c +++ b/src/emap/script.c @@ -410,7 +410,7 @@ void escript_run_use_script_pre(struct map_session_data **sdPtr, const int oid = *oidPtr; if (oid == 0) { - pc->setreg(sd, script->add_str("@useType"), 0); + pc->setreg(sd, script->add_variable("@useType"), 0); script->current_item_id = itemData->nameid; script->run(itemData->script, 0, sd->bl.id, oid); script->current_item_id = 0; @@ -425,11 +425,11 @@ void escript_run_use_script_pre(struct map_session_data **sdPtr, return; } - pc->setreg(sd, script->add_str("@useType"), data->tmpUseType); + pc->setreg(sd, script->add_variable("@useType"), data->tmpUseType); script->current_item_id = itemData->nameid; script->run(itemData->script, 0, sd->bl.id, oid); script->current_item_id = 0; - pc->setreg(sd, script->add_str("@useType"), 0); + pc->setreg(sd, script->add_variable("@useType"), 0); data->tmpUseType = 0; } hookStop(); @@ -444,11 +444,11 @@ void script_run_item_amount_script(TBL_PC *sd, return; script->current_item_id = itemId; - pc->setreg(sd, script->add_str("@itemId"), itemId); - pc->setreg(sd, script->add_str("@itemAmount"), amount); + pc->setreg(sd, script->add_variable("@itemId"), itemId); + pc->setreg(sd, script->add_variable("@itemAmount"), amount); script->run(itemScript, 0, sd->bl.id, npc->fake_nd->bl.id); - pc->setreg(sd, script->add_str("@itemId"), 0); - pc->setreg(sd, script->add_str("@itemAmount"), 0); + pc->setreg(sd, script->add_variable("@itemId"), 0); + pc->setreg(sd, script->add_variable("@itemAmount"), 0); script->current_item_id = 0; } @@ -461,10 +461,10 @@ void script_run_card_script(TBL_PC *sd, return; script->current_item_id = itemId; - pc->setreg(sd, script->add_str("@itemId"), itemId); - pc->setreg(sd, script->add_str("@cardId"), cardId); + pc->setreg(sd, script->add_variable("@itemId"), itemId); + pc->setreg(sd, script->add_variable("@cardId"), cardId); script->run(itemScript, 0, sd->bl.id, npc->fake_nd->bl.id); - pc->setreg(sd, script->add_str("@itemId"), 0); - pc->setreg(sd, script->add_str("@cardId"), 0); + pc->setreg(sd, script->add_variable("@itemId"), 0); + pc->setreg(sd, script->add_variable("@cardId"), 0); script->current_item_id = 0; } diff --git a/src/emap/script_buildins.c b/src/emap/script_buildins.c index 78fb940..02b26cd 100644 --- a/src/emap/script_buildins.c +++ b/src/emap/script_buildins.c @@ -1094,6 +1094,9 @@ BUILDIN(failedRefIndex) if (sd->status.inventory[n].nameid <= 0 || sd->status.inventory[n].amount <= 0) return false; + // Call before changing refine to 0. + achievement->validate_refine(sd, n, false); + sd->status.inventory[n].refine = 0; if (sd->status.inventory[n].equip) pc->unequipitem(sd, n, PCUNEQUIPITEM_RECALC|PCUNEQUIPITEM_FORCE); @@ -1124,6 +1127,9 @@ BUILDIN(downRefIndex) clif->delitem(sd, n, 1, DELITEM_MATERIALCHANGE); logs->pick_pc(sd, LOG_TYPE_SCRIPT, 1, &sd->status.inventory[n], sd->inventory_data[n]); clif->additem(sd, n, 1, 0); + + achievement->validate_refine(sd, n, false); // Achievements [Smokexyz/Hercules] + clif->misceffect(&sd->bl, 2); return true; } @@ -1152,6 +1158,7 @@ BUILDIN(successRefIndex) logs->pick_pc(sd, LOG_TYPE_SCRIPT, 1, &sd->status.inventory[n],sd->inventory_data[n]); clif->additem(sd, n, 1, 0); clif->misceffect(&sd->bl, 3); + achievement->validate_refine(sd, i, true); // Achievements [Smokexyz/Hercules] if (sd->status.inventory[n].refine == 10 && sd->status.inventory[n].card[0] == CARD0_FORGE && diff --git a/src/emap/skill.c b/src/emap/skill.c index a45792f..20e4a82 100644 --- a/src/emap/skill.c +++ b/src/emap/skill.c @@ -59,8 +59,8 @@ int eskill_check_condition_castend_post(int retVal, struct event_data* ev = node->data; if (ev) { - pc->setreg(sd, script->add_str("@skillId"), skill_id); - pc->setreg(sd, script->add_str("@skillLv"), skill_lv); + pc->setreg(sd, script->add_variable("@skillId"), skill_id); + pc->setreg(sd, script->add_variable("@skillLv"), skill_lv); script->run(ev->nd->u.scr.script, ev->pos, sd->bl.id, ev->nd->bl.id); } node = node->next; -- cgit v1.2.3-70-g09d2