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 331 times, submitted by unknown.