viewing paste Unknown #1283 | Athena

Posted on the
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
Index: conf/battle/exp.conf
===================================================================
--- conf/battle/exp.conf    (revision 16816)
+++ conf/battle/exp.conf    (working copy)
@@ -89,3 +89,10 @@
 // If no, an equation will be used which preserves statpoints earned/lost 
 // through external means (ie: stat point buyers/sellers)
 use_statpoint_table: yes
+
+// Should the master and/or the homunculus stop receiving exp when idle? (uses party.conf's idle_no_share setting to determine the time to be considered idle) [clydelion]
+// 0 = Off
+// 1 = Master only
+// 2 = Homunculus only
+// 3 = Both
+prevent_idle_exp: 150
\ No newline at end of file
Index: conf/battle/homunc.conf
===================================================================
--- conf/battle/homunc.conf (revision 16816)
+++ conf/battle/homunc.conf (working copy)
@@ -43,3 +43,6 @@
 
 // Max level for Homunculus S
 homunculus_S_max_level: 150
+
+// Does the master gain job exp when a monster is killed by homunculus only? [clydelion]
+homunculus_job_exp: yes
\ No newline at end of file
Index: src/map/battle.c
===================================================================
--- src/map/battle.c    (revision 16816)
+++ src/map/battle.c    (working copy)
@@ -5738,6 +5738,8 @@
    { "atcommand_mobinfo_type",             &battle_config.atcommand_mobinfo_type,          0,      0,      1               },
    { "homunculus_max_level",               &battle_config.hom_max_level,                   99,     0,      MAX_LEVEL,      },
    { "homunculus_S_max_level",             &battle_config.hom_S_max_level,                 150,    0,      MAX_LEVEL,      },
+   { "homunculus_job_exp",                 &battle_config.homunculus_job_exp,              0,      0,      1,              }, [clydelion]
+   { "prevent_idle_exp",                   &battle_config.prevent_idle_exp,                0,      0,      3,              }, [clydelion]
 };
 #ifndef STATS_OPT_OUT
 /**
Index: src/map/battle.h
===================================================================
--- src/map/battle.h    (revision 16816)
+++ src/map/battle.h    (working copy)
@@ -480,6 +480,9 @@
    int atcommand_suggestions_enabled;
     int min_npc_vending_distance;
    int atcommand_mobinfo_type;
+
+   int homunculus_job_exp; [clydelion]
+   int prevent_idle_exp; [clydelion]
 } battle_config;
 
 void do_init_battle(void);
Index: src/map/homunculus.c
===================================================================
--- src/map/homunculus.c    (revision 16816)
+++ src/map/homunculus.c    (working copy)
@@ -435,6 +435,7 @@
 int merc_hom_gainexp(struct homun_data *hd,int exp)
 {
    int m_class;
+   TBL_PC * sd = hd->master; [clydelion]
 
    if(hd->homunculus.vaporize)
        return 1;
@@ -450,6 +451,8 @@
        hd->homunculus.exp = 0;
        return 0;
    }
+   if( battle_config.prevent_idle_exp > 1  && pc_isidle(sd) ) [clydelion]
+       return 0;
 
    hd->homunculus.exp += exp;
 
Index: src/map/mob.c
===================================================================
--- src/map/mob.c   (revision 16816)
+++ src/map/mob.c   (working copy)
@@ -2301,7 +2301,10 @@
                if(!md->db->mexp)
                    party_renewal_exp_mod(&base_exp,&job_exp,tmpsd[i]->status.base_level,md->level);
 #endif
-                   pc_gainexp(tmpsd[i], &md->bl, base_exp, job_exp, false);
+                   if(homkillonly && !battle_config.homunculus_job_exp) [clydelion]
+                       pc_gainexp(tmpsd[i], &md->bl, base_exp, 0, false);
+                   else
+                       pc_gainexp(tmpsd[i], &md->bl, base_exp, job_exp, false);
                }
            }
            if(zeny) // zeny from mobs [Valaris]
Index: src/map/pc.c
===================================================================
--- src/map/pc.c    (revision 16816)
+++ src/map/pc.c    (working copy)
@@ -5557,7 +5557,7 @@
    if (sd->sc.data[SC_JEXPBOOST])
        bonus += sd->sc.data[SC_JEXPBOOST]->val1;
 
-   *job_exp = (unsigned int) cap_value(*job_exp + (double)*job_exp * bonus/100., 1, UINT_MAX);
+   *job_exp = (unsigned int) cap_value(*job_exp + (double)*job_exp * bonus/100., 0, UINT_MAX); [clydelion]
 
    return;
 }
@@ -5575,7 +5575,8 @@
 
    if(!battle_config.pvp_exp && map[sd->bl.m].flag.pvp)  // [MouseJstr]
        return 0; // no exp on pvp maps
-
+   if ( ( battle_config.prevent_idle_exp == 1 || battle_config.prevent_idle_exp == 3 ) && pc_isidle(sd) && !quest) [clydelion]
+       return 0;
    if(sd->status.guild_id>0)
        base_exp-=guild_payexp(sd,base_exp);
Viewed 793 times, submitted by Guest.