Index: /trunk/dawn/starter.mmo/genesis/dbdict.py =================================================================== --- /trunk/dawn/starter.mmo/genesis/dbdict.py (revision 5) +++ /trunk/dawn/starter.mmo/genesis/dbdict.py (revision 150) @@ -1358,5 +1358,5 @@ self.damage.append((stage,type,amount)) - def addStat(self,stage,stat,value): + def addStat(self,stage,stat,value,skillMod = ""): if stat == 'slow' and value < 0: value = -value @@ -1364,5 +1364,5 @@ value = -value - self.stats.append((stage,stat,value)) + self.stats.append((stage,stat,value,skillMod)) def addPermanentStat(self,stat,value): @@ -1398,5 +1398,5 @@ for st in self.stats: - EffectStat(stage = st[0],statname=st[1],value=st[2],effectProto=proto) + EffectStat(stage = st[0],statname=st[1],value=st[2],skillMod=st[3],effectProto=proto) for st in self.permStats: Index: /trunk/dawn/mud/world/effect.py =================================================================== --- /trunk/dawn/mud/world/effect.py (revision 2) +++ /trunk/dawn/mud/world/effect.py (revision 150) @@ -104,4 +104,5 @@ value = FloatCol() stage = IntCol() + skillMod = StringCol() effectProto = ForeignKey('EffectProto') @@ -772,5 +773,5 @@ class Effect: - def __init__(self,parent,src,dst,proto,time,mod=1.0,fromStore=False): + def __init__(self,parent,src,dst,proto,time,mod=1.0,fromStore=False,skillMult=""): self.effectProto = proto self.time = time @@ -825,6 +826,11 @@ if src.player: src.player.sendGameText(RPG_MSG_GAME_DENIED,"%s's casting has been interrupted!\\n"%(src.name)) - - value = st.value*self.mod + + if st.skillMod != "": + mod = src.skillLevels.get(st.skillMod,1.0) + value = st.value*mod + else: + value = st.value*self.mod + if not fromStore and st.statname == 'health' and value < 0: if dst.player and value < -24000: @@ -882,5 +888,9 @@ for st in proto.stats: if st.stage == RPG_EFFECT_STAGE_BEGIN: - value = st.value*self.mod + if st.skillMod != "": + mod = src.skillLevels.get(st.skillMod,1.0) + value = st.value*mod + else: + value = st.value*self.mod if st.statname == 'health' and value < 0: if dst.player and value < -24000: