home *** CD-ROM | disk | FTP | other *** search
/ PC PowerPlay 56 / CDPowerplay56Disc2.iso / demos / blade / data1.cab / Program_Executable_Files / Lib / Basic_Funcs.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2000-10-27  |  30.5 KB  |  744 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 1.5)
  3.  
  4. import Bladex
  5. import AuxTran
  6. import Actions
  7. import Blood
  8. import Damage
  9. import AniSound
  10. import Reference
  11. import pdb
  12. import CharStats
  13. import copy
  14. import ItemTypes
  15. import netgame
  16. import whrandom
  17. import MenuText
  18. import AuxFuncs
  19. import GenFX
  20. import Auras
  21. import ObjStore
  22. import GameStateAux
  23. import BInput
  24. import InitDataField
  25. new_combo_sound = Bladex.CreateSound('..\\..\\Sounds\\sesgado-lava.wav', 'NewComboSound')
  26. new_combo_sound.Volume = 1.0
  27. new_combo_sound.MinDistance = 5000
  28. new_combo_sound.MaxDistance = 20000
  29. RestoreEnergyTime = 1.0 / 20.0
  30. EnergyMin = 14.0
  31. RestoreEnergyRateMin = 0.005
  32. RestoreEnergyRateMax = 0.095
  33.  
  34. def RestoreEnergyFunc(EntityName):
  35.     Bladex.AddScheduledFunc(Bladex.GetTime() + RestoreEnergyTime, RestoreEnergyFunc, (EntityName,), 'PlayerRestoreEnergy')
  36.     pj = Bladex.GetEntity(EntityName)
  37.     if pj:
  38.         max_energy = CharStats.GetCharMaxEnergy(pj.Kind, pj.Level)
  39.         prev_energy = pj.Energy
  40.         if pj.InAttack:
  41.             energy2lose = min(pj.Data.LoseEnergyRate * RestoreEnergyTime, pj.Data.Energy2Lose)
  42.             pj.Energy = max(prev_energy - energy2lose, -max_energy * Reference.ENERGY_LOW_LEVEL)
  43.             pj.Data.Energy2Lose = pj.Data.Energy2Lose - energy2lose
  44.             if pj.Energy <= 0.0 and pj.AnmPos > 0.8:
  45.                 pj.Gof = 0
  46.                 pj.Gob = 0
  47.                 pj.Tl = 0
  48.                 pj.Tr = 0
  49.                 pj.InterruptCombat()
  50.                 pj.RaiseEvent('Interrupt')
  51.             
  52.         else:
  53.             energyF = pow(1.0 - pj.Level / (CharStats.GetMaxLevel() * 1.0), 2)
  54.             RestoreEnergyRate = energyF * (RestoreEnergyRateMax - RestoreEnergyRateMin) + RestoreEnergyRateMin
  55.             new_energy = max(min(prev_energy + RestoreEnergyRate * max_energy - pj.Data.Energy2Lose, max_energy), -max_energy * Reference.ENERGY_LOW_LEVEL)
  56.             pj.Energy = new_energy
  57.             pj.Data.Energy2Lose = 0.0
  58.     
  59.  
  60.  
  61. class PlayerPerson:
  62.     ObjId = 0
  63.     NPC = 0
  64.     Name = 'Unnamed'
  65.     DamageFactorNone = -0.001
  66.     DamageFactorLight = 0.1
  67.     DamageFactorHeavy = 0.35
  68.     TakeBleedingImpact = 0
  69.     ThrownBy = None
  70.     PowerPotion = 0
  71.     FAttack = 1.0
  72.     FDefense = 1.0
  73.     AimPressed = 0
  74.     stuff_onback_b4 = 0
  75.     toggle4t_clearback = 0
  76.     LoseEnergyRate = 0.0
  77.     Energy2Lose = 0.0
  78.     last_frwdup = -1
  79.     last_brwdup = -1
  80.     armour_level = 0
  81.     armour_prot_factor = 0
  82.     Poisoned = 0
  83.     NoFXOnHit = 1
  84.     Resistances = None
  85.     ObjectsTaken = []
  86.     LevelUpParticleData = []
  87.     Invincibility = 0
  88.     InventoryActive = 1
  89.     
  90.     def __init__(self, me):
  91.         self.InventoryActive = me.Name[0:6] != 'Player'
  92.         self.ObjId = ObjStore.GetNewId()
  93.         ObjStore.ObjectsStore[self.ObjId] = self
  94.         self.ObjectsTaken = []
  95.         self.LevelUpParticleData = []
  96.         self.Name = me.Name
  97.         me.DamageFunc = Damage.CalculateDamage
  98.         me.AttackFunc = Damage.CalculateFatigue
  99.         me.TakeFunc = self.TakeFunc
  100.         me.ThrowFunc = self.ThrowFunc
  101.         me.HitFunc = self.HitFunc
  102.         me.ImDeadFunc = self.PCImDead
  103.         me.NewComboFunc = self.StdNewCombo
  104.         me.BigFallFunc = self.StdBigFall
  105.         me.Life = CharStats.GetCharMaxLife(me.Kind, me.Level)
  106.         me.Energy = CharStats.GetCharMaxEnergy(me.Kind, me.Level)
  107.         me.AddAnmEventFunc('TakeArrow', Actions.TakeArrowEventHandler)
  108.         me.AddAnmEventFunc('CheckRefireBow', Actions.CheckRefireBowEventHandler)
  109.         me.AddAnmEventFunc('W2hToLeft', Actions.W2hToLeftHandler)
  110.         me.AddAnmEventFunc('W2hToRight', Actions.W2hToRightHandler)
  111.         me.AddAnmEventFunc('LaunchTrail', self.LaunchTrail)
  112.         me.AddAnmEventFunc('Start_Weapon', Actions.Start_Weapon)
  113.         me.AddAnmEventFunc('Stop_Weapon', Actions.Stop_Weapon)
  114.         me.AddAnmEventFunc('Start_Trail', Actions.Start_Trail)
  115.         me.AddAnmEventFunc('Stop_Trail', Actions.Stop_Trail)
  116.         me.AddAnmEventFunc('GraspString', Actions.GraspString)
  117.         me.AddAnmEventFunc('UnGraspString', Actions.UnGraspString)
  118.         me.MutilateFunc = self.MutilateFunc
  119.         self.Resistances = copy.copy(CharStats.GetCharResistances(me.Kind))
  120.         self.ResetSounds(self.Name)
  121.         if self.Name[0:6] == 'Player':
  122.             self.LevelUpParticleData = []
  123.             for i in range(30):
  124.                 r = 255
  125.                 g = 255
  126.                 b = 255
  127.                 a = 255.0 * traux
  128.                 size = 200.0 * aux
  129.                 self.LevelUpParticleData.append(a)
  130.                 self.LevelUpParticleData.append(size)
  131.                 Bladex.SetParticleGVal('LevelUpParticle', i, r, g, b, a, size)
  132.             
  133.             Bladex.AddScheduledFunc(Bladex.GetTime() + RestoreEnergyTime, RestoreEnergyFunc, (self.Name,), 'PlayerRestoreEnergy')
  134.         
  135.  
  136.     
  137.     def __del__(self):
  138.         del ObjStore.ObjectsStore[self.ObjId]
  139.  
  140.     
  141.     def ResetSounds(self, EntityName):
  142.         me = Bladex.GetEntity(EntityName)
  143.         kind = me.Kind[:len(me.Kind) - 2]
  144.         if kind == 'Barbarian':
  145.             AniSound.AsignarSonidosBarbaro(EntityName)
  146.         elif kind == 'Knight':
  147.             AniSound.AsignarSonidosCaballero(EntityName)
  148.         elif kind == 'Dwarf':
  149.             AniSound.AsignarSonidosEnano(EntityName)
  150.         elif kind == 'Amazon':
  151.             AniSound.AsignarSonidosAmazona(EntityName)
  152.         
  153.  
  154.     
  155.     def GetNewMembers(self):
  156.         bases = self.__class__.__bases__
  157.         new_members = { }
  158.         for i in bases:
  159.             base_dict = i.__dict__
  160.             for j in base_dict.keys():
  161.                 pass
  162.             
  163.         
  164.  
  165.     
  166.     def persistent_id(self):
  167.         return self.ObjId
  168.  
  169.     
  170.     def __getstate__(self):
  171.         return (1, {
  172.             'PlayerPerson': (self.ObjId, self.NPC, self.Name, self.DamageFactorNone, self.DamageFactorLight, self.DamageFactorHeavy, self.TakeBleedingImpact, self.ThrownBy, self.PowerPotion, self.FAttack, self.FDefense, self.AimPressed, self.stuff_onback_b4, self.toggle4t_clearback, self.last_frwdup, self.last_brwdup, self.LoseEnergyRate, self.Energy2Lose, self.Resistances, self.armour_level, self.armour_prot_factor, self.Poisoned, self.ObjectsTaken, self.Invincibility, self.InventoryActive, GameStateAux.SaveNewMembers(self)) })
  173.  
  174.     
  175.     def persistent_check(self):
  176.         me = Bladex.GetEntity(self.Name)
  177.         if not me:
  178.             return 0
  179.         
  180.         return 1
  181.  
  182.     
  183.     def __setstate__(self, parm):
  184.         version = parm[0]
  185.         if version == 1:
  186.             parms = parm[1]['PlayerPerson']
  187.             self.ObjId = parms[0]
  188.             ObjStore.ObjectsStore[self.ObjId] = self
  189.             self.NPC = parms[1]
  190.             self.Name = parms[2]
  191.             self.DamageFactorNone = parms[3]
  192.             self.DamageFactorLight = parms[4]
  193.             self.DamageFactorHeavy = parms[5]
  194.             self.TakeBleedingImpact = parms[6]
  195.             self.ThrownBy = parms[7]
  196.             self.PowerPotion = parms[8]
  197.             self.FAttack = parms[9]
  198.             self.FDefense = parms[10]
  199.             self.AimPressed = parms[11]
  200.             self.stuff_onback_b4 = parms[12]
  201.             self.toggle4t_clearback = parms[13]
  202.             self.last_frwdup = parms[14]
  203.             self.last_brwdup = parms[15]
  204.             self.LoseEnergyRate = parms[16]
  205.             self.Energy2Lose = parms[17]
  206.             self.Resistances = parms[18]
  207.             self.armour_level = parms[19]
  208.             self.armour_prot_factor = parms[20]
  209.             self.Poisoned = parms[21]
  210.             self.ObjectsTaken = parms[22]
  211.             self.Invincibility = parms[23]
  212.             self.InventoryActive = parms[24]
  213.             GameStateAux.LoadNewMembers(self, parms[25])
  214.         else:
  215.             print 'ERROR, Incorrect version'
  216.             self.ObjId = ObjStore.GetNewId()
  217.             ObjStore.ObjectsStore[self.ObjId] = self
  218.         if self.Name[0:6] == 'Player':
  219.             self.LevelUpParticleData = []
  220.             for i in range(30):
  221.                 r = 255
  222.                 g = 255
  223.                 b = 255
  224.                 a = 255.0 * traux
  225.                 size = 200.0 * aux
  226.                 self.LevelUpParticleData.append(a)
  227.                 self.LevelUpParticleData.append(size)
  228.                 Bladex.SetParticleGVal('LevelUpParticle', i, r, g, b, a, size)
  229.             
  230.             Bladex.AddScheduledFunc(Bladex.GetTime() + RestoreEnergyTime, RestoreEnergyFunc, (self.Name,), 'PlayerRestoreEnergy')
  231.         
  232.         me = Bladex.GetEntity(self.Name)
  233.         if not me:
  234.             print 'PlayerPerson.__setstate__() Warning, can not get entity', self.Name
  235.             return None
  236.         
  237.         me.DamageFunc = Damage.CalculateDamage
  238.         me.TakeFunc = self.TakeFunc
  239.         me.ThrowFunc = self.ThrowFunc
  240.         me.HitFunc = self.HitFunc
  241.         me.ImDeadFunc = self.PCImDead
  242.         me.NewComboFunc = self.StdNewCombo
  243.         me.BigFallFunc = self.StdBigFall
  244.         me.AttackFunc = Damage.CalculateFatigue
  245.         me.AddAnmEventFunc('TakeArrow', Actions.TakeArrowEventHandler)
  246.         me.AddAnmEventFunc('CheckRefireBow', Actions.CheckRefireBowEventHandler)
  247.         me.AddAnmEventFunc('W2hToLeft', Actions.W2hToLeftHandler)
  248.         me.AddAnmEventFunc('W2hToRight', Actions.W2hToRightHandler)
  249.         me.AddAnmEventFunc('LaunchTrail', self.LaunchTrail)
  250.         me.AddAnmEventFunc('Start_Weapon', Actions.Start_Weapon)
  251.         me.AddAnmEventFunc('Stop_Weapon', Actions.Stop_Weapon)
  252.         me.AddAnmEventFunc('Start_Trail', Actions.Start_Trail)
  253.         me.AddAnmEventFunc('Stop_Trail', Actions.Stop_Trail)
  254.         me.MutilateFunc = self.MutilateFunc
  255.         self.NoFXOnHit = 1
  256.         self.ResetSounds(self.Name)
  257.  
  258.     
  259.     def MutilateFunc(self, EntityName, obj_name, x, y, z, nx, ny, nz, node):
  260.         print EntityName + ': MutilateFunc'
  261.         me = Bladex.GetEntity(EntityName)
  262.         if me and me.Kind != 'Skeleton':
  263.             Blood.Mutilate(EntityName, obj_name, x, y, z, nx, ny, nz, node)
  264.         
  265.         limb = Bladex.GetEntity(obj_name)
  266.         InitDataField.Initialise(limb)
  267.         limb.Data.NoFXOnHit = 1
  268.         print limb.Mass, node
  269.         if limb.Mass > 1.5 and limb.Mass < 7.0:
  270.             Reference.EntitiesSelectionData[obj_name] = Reference.DefaultSelectionData['Limb']
  271.             Reference.EntitiesObjectData[obj_name] = Reference.DefaultObjectData['Limb']
  272.         
  273.  
  274.     
  275.     def TakeFunc(self, MyName):
  276.         Actions.StdUse(MyName)
  277.  
  278.     
  279.     def ThrowFunc(self, MyName):
  280.         Actions.StdThrowObject(MyName)
  281.  
  282.     
  283.     def HitFunc(self, EntityName, WeaponName, Cx, Cy, Cz, Px, Py, Pz, WeaponCx, WeaponCy, WeaponCz, WeaponDx, WeaponDy, WeaponDz):
  284.         if self.TakeBleedingImpact:
  285.             Blood.BleedingImpact(Bladex.GetEntity(EntityName), Cx, Cy, Cz, Px, Py, Pz, Bladex.GetEntity(WeaponName), WeaponCx, WeaponCy, WeaponCz, WeaponDx, WeaponDy, WeaponDz)
  286.             self.TakeBleedingImpact = 0
  287.         
  288.  
  289.     
  290.     def ReSpawn(self, EntityName):
  291.         print 'Respawn Func'
  292.         me = Bladex.GetEntity(EntityName)
  293.         right = me.InvRight
  294.         left = me.InvLeft
  295.         rightback = me.InvRightBack
  296.         leftback = me.InvLeftBack
  297.         self.UnlinkAll(EntityName, '')
  298.         inv = me.GetInventory()
  299.         if rightback:
  300.             inv.LinkRightHand(rightback)
  301.             inv.LinkBack(rightback)
  302.         
  303.         if leftback:
  304.             inv.LinkLeftHand(leftback)
  305.             inv.LinkBack(leftback)
  306.         
  307.         if right:
  308.             inv.LinkRightHand(right)
  309.         
  310.         if left:
  311.             inv.LinkLeftHand(left)
  312.         
  313.         me.Life = CharStats.GetCharMaxLife(me.Kind, me.Level)
  314.         me.Energy = CharStats.GetCharMaxEnergy(me.Kind, me.Level)
  315.         me.ResetWounds()
  316.         if self.Poisoned:
  317.             self.UnVenom()
  318.         
  319.         (x, y, z) = me.Position
  320.         import darfuncs
  321.         darfuncs.CleanArea(x, y, z, 5000.0)
  322.         if netgame.GetNetState() == 0:
  323.             Bladex.AddScheduledFunc(Bladex.GetTime() + 0.2, self.RelinkCamera, (), 'RelinkCamera')
  324.         
  325.         angle = me.Angle
  326.         me.Orientation = (0.0, 3.62407746479e-007, 0.707107365131, -0.707106947899)
  327.         me.Angle = angle
  328.  
  329.     
  330.     def RelinkCamera(self):
  331.         cam = Bladex.GetEntity('Camera')
  332.         cam.SetPersonView('Player1')
  333.  
  334.     
  335.     def UnlinkAll(self, EntityName, EventName):
  336.         me = Bladex.GetEntity(EntityName)
  337.         me.UnlinkChildren()
  338.  
  339.     
  340.     def GetResistance(self, DamageType):
  341.         if self.Resistances.has_key(DamageType):
  342.             resistance = self.Resistances[DamageType]
  343.         else:
  344.             resistance = 0.0
  345.         resistance = min(max(resistance, 0.0), 1.0)
  346.         me = Bladex.GetEntity(self.Name)
  347.         return resistance
  348.  
  349.     
  350.     def UnVenom(self):
  351.         self.Poisoned = 0
  352.  
  353.     
  354.     def ReVenom(self, EntityName, VenomStrength, TimeRemaining, Frequency, Poisoner):
  355.         if self.Poisoned:
  356.             if BInput.GetInputManager().GetInputActionsSet() != 'Default':
  357.                 Bladex.AddScheduledFunc(Bladex.GetTime() + Frequency, self.ReVenom, (EntityName, VenomStrength, TimeRemaining, Frequency, Poisoner), self.Name + 'ReVenom')
  358.             else:
  359.                 NextTimeRemaining = TimeRemaining - Frequency
  360.                 me = Bladex.GetEntity(EntityName)
  361.                 if me and me.Life > 0:
  362.                     special_resistance = self.GetResistance('Venom')
  363.                     if special_resistance < 1.0:
  364.                         if NextTimeRemaining > 0.0:
  365.                             Bladex.AddScheduledFunc(Bladex.GetTime() + Frequency, self.ReVenom, (EntityName, VenomStrength, NextTimeRemaining, Frequency, Poisoner), self.Name + 'ReVenom')
  366.                         else:
  367.                             VenomStrength = VenomStrength * (TimeRemaining / Frequency)
  368.                             self.Poisoned = self.Poisoned - 1
  369.                             if not (self.Poisoned):
  370.                                 self.UnVenom()
  371.                             
  372.                         current_venom_damage = VenomStrength - VenomStrength * special_resistance
  373.                         me.Life = me.Life - current_venom_damage
  374.                         if me.Life <= 0:
  375.                             enemy = Bladex.GetEntity(Poisoner)
  376.                             if enemy:
  377.                                 
  378.                                 try:
  379.                                     enemy.Data.OnKilledEnemy(EntityName)
  380.                                 except:
  381.                                     pass
  382.  
  383.                             
  384.                         
  385.                     else:
  386.                         self.UnVenom()
  387.                 
  388.         
  389.  
  390.     
  391.     def EnVenom(self, EntityName, VenomStrength, Poisoner):
  392.         me = Bladex.GetEntity(EntityName)
  393.         if me and me.Life > 0:
  394.             special_resistance = self.GetResistance('Venom')
  395.             if special_resistance < 1.0:
  396.                 time = Bladex.GetTime()
  397.                 if not (self.Poisoned):
  398.                     aura = Auras.MakeAura(EntityName, 0.7, (55, 0.1, 1.0, 1, 0, 0), (), (), (2, 0.0, 0.35, 0.0, 0.2, 0.0, 0.0, 0.35, 0.0, 0.1, 1.0))
  399.                     aura.Data.AddEvent(time + 0.2, (45, 1.0, 1.0, 1, 0, 0), (), (), (2, 0.0, 0.35, 0.0, 0.2, 0.0, 0.0, 0.35, 0.0, 0.1, 1.0))
  400.                     aura.Data.AddEvent(time + 0.7, (5, 0.1, 1.0, 1, 0, 0), (), (), (2, 0.0, 0.35, 0.0, 0.2, 0.0, 0.0, 0.35, 0.0, 0.1, 1.0))
  401.                 
  402.                 self.Poisoned = self.Poisoned + 1
  403.                 VenomTime = 60.0
  404.                 Frequency = 5.0
  405.                 Bladex.AddScheduledFunc(time + Frequency, self.ReVenom, (EntityName, VenomStrength, VenomTime, Frequency, Poisoner), self.Name + 'ReVenom')
  406.             
  407.         
  408.  
  409.     
  410.     def LaunchTrail(self, EntityName, EventName):
  411.         me = Bladex.GetEntity(EntityName)
  412.         if me and me.InvRight:
  413.             (x, y, z) = me.Rel2AbsPoint(1000.0, 0.0, 0.0)
  414.             trail = ItemTypes.MakeHalfmoonTrail(EntityName + 'Trail', x, y, z, EntityName)
  415.             trail.Data.ThrowReleaseEventHandler(EntityName, '')
  416.         
  417.  
  418.     
  419.     def PCImDead(self, EntityName):
  420.         me = Bladex.GetEntity(EntityName)
  421.         me.AddAnmEventFunc('UnlinkAll', self.UnlinkAll)
  422.         already_death = 0
  423.         Damage.DropInvalidObjectsOnImpact(EntityName)
  424.         anim_name = me.AnimName
  425.         if anim_name[0] == 'D' or anim_name[0] == 'd':
  426.             if (anim_name[1] == 'T' or anim_name[1] == 't') and anim_name[2] == 'H' or anim_name[2] == 'h':
  427.                 already_death = 1
  428.             
  429.         if already_death == 0:
  430.             death_anim = 'dth0'
  431.             if me.MutilationsMask == 2:
  432.                 dth_prob = whrandom.uniform(0.0, 1.0)
  433.                 if dth_prob < 0.142:
  434.                     death_anim = 'dth_c1'
  435.                 elif dth_prob < 0.286:
  436.                     death_anim = 'dth_c2'
  437.                 elif dth_prob < 0.428:
  438.                     death_anim = 'dth_c3'
  439.                 elif dth_prob < 0.571:
  440.                     death_anim = 'dth_c4'
  441.                 elif dth_prob < 0.714:
  442.                     death_anim = 'dth_c5'
  443.                 elif dth_prob < 0.857:
  444.                     death_anim = 'dth_c6'
  445.                 else:
  446.                     death_anim = 'dth_c7'
  447.             else:
  448.                 dth_prob = whrandom.uniform(0.0, 1.0)
  449.                 if dth_prob < 0.142:
  450.                     death_anim = 'dth_n00'
  451.                 elif dth_prob < 0.286:
  452.                     death_anim = 'dth_n01'
  453.                 elif dth_prob < 0.428:
  454.                     death_anim = 'dth_n02'
  455.                 elif dth_prob < 0.571:
  456.                     death_anim = 'dth_n03'
  457.                 elif dth_prob < 0.714:
  458.                     death_anim = 'dth_n04'
  459.                 elif dth_prob < 0.857:
  460.                     death_anim = 'dth_n05'
  461.                 else:
  462.                     death_anim = 'dth_n06'
  463.             me.Wuea = Reference.WUEA_ENDED
  464.             launch_new = 1
  465.             if (me.MutilationsMask == 512 or me.MutilationsMask == 256) and Bladex.AnmTypeRSteps(EntityName, death_anim) > 1:
  466.                 launch_new = 0
  467.             elif (me.MutilationsMask == 128 or me.MutilationsMask == 64) and Bladex.AnmTypeLSteps(EntityName, death_anim) > 1:
  468.                 launch_new = 0
  469.             
  470.             if launch_new == 1:
  471.                 me.LaunchAnmType(death_anim)
  472.             
  473.             if me.AnimName != death_anim:
  474.                 me.LaunchAnmType('dth0')
  475.                 if me.AnimName != 'dth0':
  476.                     print 'BUG? -> Basdic_Funcs.py , def PCImDead()'
  477.                 
  478.             
  479.         
  480.         cam = Bladex.GetEntity('Camera')
  481.         if EntityName == cam.ETarget:
  482.             cam.SType = 0
  483.             cam.TType = 2
  484.             cam.ETarget = 'Player1'
  485.         
  486.         if Reference.DEMO_MODE == 0:
  487.             if not (self.NPC) and netgame.GetNetState() == 0:
  488.                 if Reference.PYTHON_DEBUG >= 2:
  489.                     if me.Wuea == Reference.WUEA_ENDED:
  490.                         print 'Respawning now!, no death anim'
  491.                         self.ReSpawn(EntityName)
  492.                     else:
  493.                         me.AnmEndedFunc = self.ReSpawn
  494.                 else:
  495.                     import SaveGame
  496.                     
  497.                     try:
  498.                         object = Bladex.GetEntity(me.InvLeft)
  499.                         if me.InvLeft and object and not (object.TestHit):
  500.                             Actions.RemoveFromInventory(me, object, 'DropLeftEvent')
  501.                             object.Impulse(0.0, 0.0, 0.0)
  502.                     except AttributeError:
  503.                         pdb.set_trace()
  504.  
  505.                     
  506.                     try:
  507.                         object = Bladex.GetEntity(me.InvRight)
  508.                         if me.InvRight and object and not (object.TestHit):
  509.                             Actions.RemoveFromInventory(me, object, 'DropRightEvent')
  510.                             object.Impulse(0.0, 0.0, 0.0)
  511.                     except AttributeError:
  512.                         pdb.set_trace()
  513.  
  514.                     if me.Wuea == Reference.WUEA_ENDED:
  515.                         print 'no death anim... So Fade an go!'
  516.                         SaveGame.MenuStart(EntityName)
  517.                     else:
  518.                         me.AnmEndedFunc = SaveGame.MenuStart
  519.             
  520.         elif not (self.NPC) and netgame.GetNetState() == 0:
  521.             Bladex.AddScheduledFunc(Bladex.GetTime() + 5.0, Bladex.LoadLevel, (Bladex.GetCurrentMap(),), 'ReloadAfterDeath')
  522.         
  523.  
  524.     
  525.     def OnKilledEnemy(self, KilledEntityName):
  526.         Reference.debugprint('OnKilledEnemy')
  527.         KilledEntity = Bladex.GetEntity(KilledEntityName)
  528.         if KilledEntity is None:
  529.             print 'OnKilledEnemy(): Error: None Entity'
  530.             return None
  531.         
  532.         me = Bladex.GetEntity(self.Name)
  533.         me.PartialLevel = me.PartialLevel + CharStats.GetCharExperienceReward(KilledEntity.CharType, KilledEntity.Level)
  534.         LevelLimit = CharStats.GetCharExperienceCost(me.CharType, me.Level)
  535.         if self.Name == 'Player1':
  536.             import Scorer
  537.             if me.PartialLevel >= LevelLimit:
  538.                 me.PartialLevel = me.PartialLevel - LevelLimit
  539.                 me.Level = me.Level + 1
  540.                 Scorer.LevelUp()
  541.                 Scorer.SetLevelLimits(0, CharStats.GetCharExperienceCost(me.CharType, me.Level))
  542.                 maxsize = 40 + 5 * me.Level
  543.                 maxPPS = 60 + 22 * me.Level
  544.                 maxint = 0.2 + 0.15 * me.Level
  545.                 AuraParams = (5, 0, 1, 0, 0, 1)
  546.                 AuraGradient = (2, 0.4, 0.6, 1.0, 0.5, 0.0, 0.1, 0.2, 1.0, 0.0, 0.8)
  547.                 AuraVar1Args = (5, maxsize, 0, 1, 0.5)
  548.                 AuraVar2Args = (maxsize, 5, 1, 0, 1.0)
  549.                 PSParams = (self.LevelUpParticleData, 'LevelUpParticle', 30, 50, 150, 255, maxPPS, -600, 0.0, 2, 2, 0.4, 30, 0.5)
  550.                 GenFX.LevelUpFX('Player1', 0, AuraParams, AuraGradient, AuraVar1Args, AuraVar2Args, PSParams, maxint, 'Timer15', 15, '..\\..\\Sounds\\aparicion-escudo.wav')
  551.                 if me.Life > 0:
  552.                     me.ResetWounds()
  553.                     me.Life = CharStats.GetCharMaxLife(me.Kind, me.Level)
  554.                 
  555.                 Scorer.SlideTBS(0)
  556.             
  557.             if netgame.GetNetState() == 0:
  558.                 Scorer.SetLevelBarValue(me.PartialLevel)
  559.             
  560.         
  561.  
  562.     
  563.     def RespondToHit(self, EntityName, AttackerName, DamagePoints, DamageZone, Shielded):
  564.         me = Bladex.GetEntity(EntityName)
  565.         weapon_flag = Reference.W_FLAG_1H
  566.         if me.InvRight:
  567.             weapon_flag = Reference.GiveWeaponFlag(me.InvRight)
  568.         
  569.         if DamagePoints <= 0 and Shielded and me.GetInventory().GetMagicShield():
  570.             return None
  571.         
  572.         if me and me.Life > 0:
  573.             damage_factor = DamagePoints / (me.Life + DamagePoints)
  574.             if damage_factor > me.Data.DamageFactorNone:
  575.                 if DamageZone >= 0 and DamageZone < 32:
  576.                     me.SetWoundedZone(DamageZone, 1)
  577.                 
  578.                 do_not_abort = 0
  579.                 if me.AnimName == 'df_s_broken' or me.AnimName == 'sword_broken':
  580.                     do_not_abort = 1
  581.                 
  582.                 if do_not_abort == 0:
  583.                     Damage.DropInvalidObjectsOnImpact(EntityName)
  584.                     me.Wuea = Reference.WUEA_ENDED
  585.                     if me.InCombat:
  586.                         me.InterruptCombat()
  587.                         if Shielded:
  588.                             if damage_factor <= (me.Data.DamageFactorLight + me.Data.DamageFactorHeavy) / 2.0:
  589.                                 Reference.debugprint('Launching .df_01')
  590.                                 if weapon_flag == Reference.W_FLAG_2W:
  591.                                     me.LaunchAnmType('df_01_2w')
  592.                                 elif weapon_flag == Reference.W_FLAG_AXE:
  593.                                     me.LaunchAnmType('df_01_axe')
  594.                                 elif weapon_flag == Reference.W_FLAG_SP:
  595.                                     me.LaunchAnmType('df_01_spear')
  596.                                 else:
  597.                                     me.LaunchAnmType('df_01')
  598.                             else:
  599.                                 Reference.debugprint('Launching .df_02')
  600.                                 if weapon_flag == Reference.W_FLAG_2W:
  601.                                     me.LaunchAnmType('df_02_2w')
  602.                                 elif weapon_flag == Reference.W_FLAG_AXE:
  603.                                     me.LaunchAnmType('df_02_axe')
  604.                                 elif weapon_flag == Reference.W_FLAG_SP:
  605.                                     me.LaunchAnmType('df_02_spear')
  606.                                 else:
  607.                                     me.LaunchAnmType('df_02')
  608.                         elif damage_factor <= me.Data.DamageFactorLight:
  609.                             Reference.debugprint('Launching .hurt_f_lite')
  610.                             me.LaunchAnmType('hurt_f_lite')
  611.                         elif damage_factor >= me.Data.DamageFactorHeavy:
  612.                             Reference.debugprint('Launching .hurt_f_big')
  613.                             me.LaunchAnmType('hurt_f_big')
  614.                         elif DamageZone == Reference.BODY_HEAD:
  615.                             Reference.debugprint('Launching .hurt_f_head')
  616.                             me.LaunchAnmType('hurt_f_head')
  617.                         elif DamageZone == Reference.BODY_FRONT:
  618.                             Reference.debugprint('Launching .hurt_f_breast')
  619.                             me.LaunchAnmType('hurt_f_breast')
  620.                         elif DamageZone == Reference.BODY_BACK:
  621.                             Reference.debugprint('Launching .hurt_f_back')
  622.                             me.LaunchAnmType('hurt_f_back')
  623.                         elif DamageZone == Reference.BODY_RARM or DamageZone == Reference.BODY_RHAND:
  624.                             Reference.debugprint('Launching .hurt_f_r_arm')
  625.                             me.LaunchAnmType('hurt_f_r_arm')
  626.                         elif DamageZone == Reference.BODY_LARM or DamageZone == Reference.BODY_LHAND:
  627.                             Reference.debugprint('Launching .hurt_f_l_arm')
  628.                             me.LaunchAnmType('hurt_f_l_arm')
  629.                         elif DamageZone == Reference.BODY_RLEG or DamageZone == Reference.BODY_RFOOT:
  630.                             Reference.debugprint('Launching .hurt_f_r_leg')
  631.                             me.LaunchAnmType('hurt_f_r_leg')
  632.                         elif DamageZone == Reference.BODY_LLEG or DamageZone == Reference.BODY_LFOOT:
  633.                             Reference.debugprint('Launching .hurt_f_l_leg')
  634.                             me.LaunchAnmType('hurt_f_l_leg')
  635.                         
  636.                     elif me.Run:
  637.                         Reference.debugprint('Launching .hurt_jog')
  638.                         me.LaunchAnmType('hurt_jog')
  639.                     elif Shielded:
  640.                         if damage_factor <= (me.Data.DamageFactorLight + me.Data.DamageFactorHeavy) / 2.0:
  641.                             Reference.debugprint('Launching .df_01')
  642.                             if weapon_flag == Reference.W_FLAG_2W:
  643.                                 me.LaunchAnmType('df_01_2w')
  644.                             elif weapon_flag == Reference.W_FLAG_AXE:
  645.                                 me.LaunchAnmType('df_01_axe')
  646.                             elif weapon_flag == Reference.W_FLAG_SP:
  647.                                 me.LaunchAnmType('df_01_spear')
  648.                             else:
  649.                                 me.LaunchAnmType('df_01')
  650.                         else:
  651.                             Reference.debugprint('Launching .df_02')
  652.                             if weapon_flag == Reference.W_FLAG_2W:
  653.                                 me.LaunchAnmType('df_02_2w')
  654.                             elif weapon_flag == Reference.W_FLAG_AXE:
  655.                                 me.LaunchAnmType('df_02_axe')
  656.                             elif weapon_flag == Reference.W_FLAG_SP:
  657.                                 me.LaunchAnmType('df_02_spear')
  658.                             else:
  659.                                 me.LaunchAnmType('df_02')
  660.                     elif DamageZone == Reference.BODY_HEAD:
  661.                         Reference.debugprint('Launching .hurt_head')
  662.                         me.LaunchAnmType('hurt_head')
  663.                     elif DamageZone == Reference.BODY_FRONT:
  664.                         Reference.debugprint('Launching .hurt_breast')
  665.                         me.LaunchAnmType('hurt_breast')
  666.                     elif DamageZone == Reference.BODY_BACK:
  667.                         Reference.debugprint('Launching .hurt_back')
  668.                         me.LaunchAnmType('hurt_back')
  669.                     elif DamageZone == Reference.BODY_RARM or DamageZone == Reference.BODY_RHAND:
  670.                         Reference.debugprint('Launching .hurt_r_arm')
  671.                         me.LaunchAnmType('hurt_r_arm')
  672.                     elif DamageZone == Reference.BODY_LARM or DamageZone == Reference.BODY_LHAND:
  673.                         Reference.debugprint('Launching .hurt_l_arm')
  674.                         me.LaunchAnmType('hurt_l_arm')
  675.                     elif DamageZone == Reference.BODY_RLEG or DamageZone == Reference.BODY_RFOOT:
  676.                         Reference.debugprint('Launching .hurt_r_leg')
  677.                         me.LaunchAnmType('hurt_r_leg')
  678.                     elif DamageZone == Reference.BODY_LLEG or DamageZone == Reference.BODY_LFOOT:
  679.                         Reference.debugprint('Launching .hurt_l_leg')
  680.                         me.LaunchAnmType('hurt_l_leg')
  681.                     
  682.                 
  683.             
  684.         
  685.  
  686.     
  687.     def StdNewCombo(self, EntityName, ComboName):
  688.         if netgame.GetNetState() == 0:
  689.             import GameText
  690.             me = Bladex.GetEntity(EntityName)
  691.             if EntityName != 'Player1':
  692.                 return None
  693.             
  694.             ComboTXT = GameText.GetComboName(EntityName, ComboName)
  695.             if ComboTXT:
  696.                 GameText.WriteTextAux(MenuText.GetMenuText('New Attack') + ': ' + ComboTXT, 2.0, 255, 255, 255, [])
  697.                 new_combo_sound.Stop()
  698.                 new_combo_sound.PlayStereo()
  699.             
  700.         
  701.  
  702.     
  703.     def StdBigFall(self, EntityName, Dist):
  704.         me = Bladex.GetEntity(EntityName)
  705.         chartype = Bladex.GetCharType(me.CharType, me.CharTypeExt)
  706.         if Dist >= chartype.DieFall:
  707.             return None
  708.         
  709.         if Dist < 5000:
  710.             return None
  711.         
  712.         diff = (Dist - 5000.0) * 0.001
  713.         fall_damage = ((Dist - 5000.0) / (chartype.DieFall - 5000)) * 70.0
  714.         me.Life = me.Life - fall_damage
  715.         if netgame.GetNetState() == 1:
  716.             if me.Life <= 0:
  717.                 Damage.PlayerHitFunc(me.Name, 'Fall', me.Life, 1)
  718.             
  719.         
  720.  
  721.     
  722.     def RegisterObjectAsTaken(self, ObjectName):
  723.         object = Bladex.GetEntity(ObjectName)
  724.         if object:
  725.             kind = object.Kind
  726.             if not self.ObjectsTaken.count(kind):
  727.                 self.ObjectsTaken.append(kind)
  728.             
  729.         
  730.  
  731.     
  732.     def WasObjectAlreadyTaken(self, ObjectName):
  733.         object = Bladex.GetEntity(ObjectName)
  734.         if object:
  735.             kind = object.Kind
  736.             return self.ObjectsTaken.count(kind)
  737.         
  738.  
  739.     
  740.     def GetObjectsTaken(self):
  741.         return self.ObjectsTaken
  742.  
  743.  
  744.