-
Posts
64 -
Joined
-
Last visited
-
Days Won
8
Community Answers
-
joecalis's post in Modifying Spider Web into like Ankle Snare behavior (I'm so close this time around) was marked as the answer
Try to change this:
if (unit->group->skill_id == PF_SPIDERWEB && unit->bl.id != srcunit->bl.id && unit->group->src_id == src->id) { //skill_delunitgroup(unit->group); // This one is instant Delete unit->limit = min(unit->limit,1000); // This one you can change "1000" to change the timing (lower number = faster deletion) unit->group->limit = unit->limit; return 1; } to this:
if (unit->group->skill_id == PF_SPIDERWEB && unit->bl.id != srcunit->bl.id && unit->group->src_id == src->id && unit->group->val2) { //skill_delunitgroup(unit->group); // This one is instant Delete unit->limit = min(unit->limit,1000); // This one you can change "1000" to change the timing (lower number = faster deletion) unit->group->limit = unit->limit; return 1; }
-
joecalis's post in How do I go about modifying Signum Crucis (Acolyte's skill) to make it affect other monsters? was marked as the answer
in status.cpp
Find:
case SC_SIGNUMCRUCIS: // Only affects demons and undead element (but not players) if((!undead_flag && status->race!=RC_DEMON) || bl->type == BL_PC) return 0; break; Change To:
case SC_SIGNUMCRUCIS: // Now affects all monsters (but not players) if(bl->type == BL_PC) return 0; break;
-
joecalis's post in modify @iteminfo/@ii (w/ Picture) was marked as the answer
If you have itemlink commands by Cydh implemented you just have to edit
in atcommand.cpp
Find:
struct item_data * item_data = item_array[i]; sprintf(atcmd_output, msg_txt(sd,1277), // Item: '%s'/'%s'[%d] (%hu) Type: %s | Extra Effect: %s item_data->name,item_data->jname,item_data->slot,item_data->nameid, (item_data->type != IT_AMMO) ? itemdb_typename((enum item_types)item_data->type) : itemdb_typename_ammo((enum e_item_ammo)item_data->look), (item_data->script==NULL)? msg_txt(sd,1278) : msg_txt(sd,1279) // None / With script ); Change To:
struct item_data * item_data = item_array[i]; sprintf(atcmd_output, "Item: '%s'/'%s' (%hu)", // msg_txt(sd, 1277) item_data->name, createItemLink(item_data->nameid, 0, NULL).c_str(),item_data->nameid);
-
joecalis's post in Hit and Flee in Pre-Renewal was marked as the answer
For Hit calculation, if you are on Renewal (150 + Dex + Level) is the right formula as it says here on the code:
// Hit stat = status->hit; stat += level + status->dex + (bl->type == BL_PC ? status->luk / 3 + 175 : 150); //base level + ( every 1 dex = +1 hit ) + (every 3 luk = +1 hit) + 175 for BL_PC(Player) types otherwise base level + dex + 150 (175 + Dex + Level + Floor(Luk / 3)) Formula only applies to BL_PC types aka Players
If you are on Pre-Renewal it's just (Level + Dex):
// Hit stat = status->hit; stat += level + status->dex; For Flee on Renewal is (Level + Agi + 100):
// Flee stat = status->flee; stat += level + status->agi + (bl->type == BL_MER ? 0 : bl->type == BL_PC ? status->luk / 5 : 0) + 100; //base level + ( every 1 agi = +1 flee ) + (every 5 luk = +1 flee) + 100 of BL_PC(Player) otherwise base level + agi + 100 and on Pre-Renewal is (Level + Agi):
// Flee stat = status->flee; stat += level + status->agi;
-
joecalis's post in SpecialEffect Affecting Explosion was marked as the answer
Change it to this:
case ALL_ODINS_POWER: if( sd != NULL ) { if(skill_id == ALL_ODINS_POWER){ clif_specialeffect(bl, 75, AREA); clif_specialeffect(bl, 99, AREA); } clif_skill_nodamage(bl, bl, skillid, skilllv, sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); } break;
-
joecalis's post in Berserk/Frenzy Changes was marked as the answer
In battle.cpp search for void battle_drain
under uint8 i = 0;
add the code:
struct status_change *sc;
sc = status_get_sc(&sd->bl);
it should look like this now:
uint8 i = 0; struct status_change *sc; sc = status_get_sc(&sd->bl); if (!CHK_RACE(race) && !CHK_CLASS(class_)) return; now after the line battle_vanish(sd, tbl, &d);
add this code:
if (sc && sc->count){
if (sc->data[SC_BERSERK])
return;
}
it should now look like this:
// Check for vanish HP/SP. !CHECKME: Which first, drain or vanish? battle_vanish(sd, tbl, &d); if (sc && sc->count){ if (sc->data[SC_BERSERK]) return; } // Check for drain HP/SP and there you go, no more lifesteal.
-
joecalis's post in Doram/Summoner class damage to be reduce by RC_PLAYER was marked as the answer
That's because Summoner isn't counted as either of those, according to the status.cpp file at status_calc_pc_ summoner class is considered as RC_BRUTE:
base_status->race = ((battle_config.summoner_trait&1) && (sd->class_&MAPID_BASEMASK) == MAPID_SUMMONER) ? RC_BRUTE : RC_PLAYER; Maybe you could tinker with that.
Or just change the summoner trait from player.conf
// Adjust the summoner class' special traits. // 0: Summoners behave like other classes. // 1: Summoners belong to brute race instead of demi-human // 2: Summoners are small size instead of medium // 3: Both of the above (official value) summoner_trait: 3