Advertisement
Zedeg

DVS_Battle 1.1

Sep 4th, 2015
345
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 37.17 KB | None | 0 0
  1. --[[
  2.     DVS_Battle
  3.     Version 1.1
  4.     Script by Zedeg and Kantelo
  5.  
  6.     Mit diesen Komfort-Funktionen ist es möglich, folgende (Kampf-)Eigenschaften einer speziellen Entität direkt zu verändern:
  7.     - Schaden
  8.     - Rüstung
  9.     - maximale Anzahl des Gefolges
  10.     - Sichtradius
  11.     - Regenerationspunkte
  12.  
  13.     Zudem kann folgende Kampfeigenschaft eines Entitätentyps verändert werden:
  14.     - maximale Lebensenergie
  15.     - Geschwindigkeit der Regeneration
  16.  
  17.     Folgende Funktionen werden benötigt:
  18.  
  19.     Funktion    : DVS_Battle_SetUp
  20.     Beschreibung: Muss vor allem anderen als Callback der InitAdressEntity aufgerufen werden; leitet alles nötige ein.
  21.  
  22.     Funktion    : DVS_Battle_EntityDestroyed
  23.     Beschreibung: Wird automatisch aufgerufen; löscht alle Daten einer zerstörten Entität.
  24.  
  25.     Funktion    : DVS_Battle_GUIAction_RestartMap_New
  26.     Beschreibung: Wird automatisch angerufen; setzt einige Änderungen zurück.
  27.  
  28.     Funktion    : DVS_Battle_MainWindow_LoadGame_DoLoadGame_New
  29.     Beschreibung: Wird automatisch angerufen; setzt einige Änderungen zurück.
  30.  
  31.     Funktion    : DVS_Battle_QuitGame_New
  32.     Beschreibung: Wird automatisch angerufen; setzt einige Änderungen zurück.
  33.  
  34.     Funktion    : DVS_Battle_QuitApplication_New
  35.     Beschreibung: Wird automatisch angerufen; setzt einige Änderungen zurück.
  36.  
  37.     Funktion    : DVS_Battle_ReloadAttributes
  38.     Beschreibung: Muss in der InitPlayerColorMapping aufgerufen werden; setzt nach Laden die Attribute wieder.
  39.  
  40.     Funktion    : DVS_Battle_ResetMaxHealth
  41.     Beschreibung: Wird automatisch aufgerufen; setzt die maximale Lebensenergie zurück.
  42.  
  43.     Funktion    : DVS_Battle_SetOrigHealth
  44.     Beschreibung: Wird automatisch aufgerufen; setzt in Wirklichkeit die maximale Lebensenergie zurück.
  45.  
  46.     Funktion    : DVS_Battle_ResetHealingSeconds
  47.     Beschreibung: Wird automatisch aufgerufen; setzt die Geschwindigkeit der Regeneration zurück.
  48.  
  49.     Funktion    : DVS_Battle_SetOrigSeconds
  50.     Beschreibung: Wird automatisch aufgerufen; setzt in Wirklichkeit die Geschwindigkeit der Regeneration zurück.
  51.  
  52.     Funktion    : DVS_Battle_AddDamage
  53.     Beschreibung: Erhöht den Schaden einer Entität.
  54.     Parameter   : Held, Hauptmann oder Soldat (number), zugefügter Schaden (number)
  55.  
  56.     Funktion    : DVS_Battle_SetDamage
  57.     Beschreibung: Setzt den Schaden einer Entität.
  58.     Parameter   : Held, Hauptmann oder Soldat (number), Schaden (number)
  59.  
  60.     Funktion    : DVS_Battle_ChangeDamage
  61.     Beschreibung: Wird automatisch aufgerufen; setzt in Wirklichkeit den Schaden.
  62.  
  63.     Funktion    : DVS_Battle_AddArmour
  64.     Beschreibung: Erhöht die Rüstung einer Entität.
  65.     Parameter   : Held oder Hauptmann (number), zugefügte Rüstung (number)
  66.     Hinweis     : Die Rüstung des Hauptmannes wird automatisch auf die Gefolgsleute übertragen.
  67.  
  68.     Funktion    : DVS_Battle_SetArmour
  69.     Beschreibung: Setzt die Rüstung einer Entität.
  70.     Parameter   : Hauptmann oder Soldat (number), Rüstung (number)
  71.     Hinweis     : Die Rüstung des Hauptmannes wird automatisch auf die Gefolgsleute übertragen.
  72.  
  73.     Funktion    : DVS_Battle_ChangeArmour
  74.     Beschreibung: Wird automatisch aufgerufen; setzt in Wirklichkeit die Rüstung.
  75.  
  76.     Funktion    : DVS_Battle_AddMaxSoldiers
  77.     Beschreibung: Erhöht die Gruppenstärke.
  78.     Parameter   : Hauptmann (number), zugefügte Gruppenstärke (number)
  79.  
  80.     Funktion    : DVS_Battle_SetMaxSoldiers
  81.     Beschreibung: Setzt die Gruppenstärke.
  82.     Parameter   : Hauptmann (number), Gruppenstärke (number)
  83.  
  84.     Funktion    : DVS_Battle_ChangeMaxSoldiers
  85.     Beschreibung: Wird automatisch aufgerufen; setzt in Wirklichkeit die Gruppenstärke.
  86.  
  87.     Funktion    : DVS_Battle_AddExploration
  88.     Beschreibung: Erhöht den Sichtradius.
  89.     Parameter   : Held, Hauptmann oder Soldat (number), zugefügte Sichtweite (number)
  90.  
  91.     Funktion    : DVS_Battle_SetExploration
  92.     Beschreibung: Setzt den Sichtradius.
  93.     Parameter   : Held, Hauptmann oder Soldat (number), Sichtweite (number)
  94.  
  95.     Funktion    : DVS_Battle_ChangeExploration
  96.     Beschreibung: Wird automatisch aufgerufen; setzt in Wirklichkeit den Sichtradius.
  97.  
  98.     Funktion    : DVS_Battle_AddHealingPoints
  99.     Beschreibung: Erhöht die Regenerationspunkte.
  100.     Parameter   : Held oder Hauptmann (number), zugefügte Regenerationspunkte (number)
  101.     Hinweis     : Ihr solltet sichergehen, dass die veränderten Einheiten bereits einmal verwundet wurden, wenn diese Funktion aufgerufen wurde.
  102.                   Um sicher zu gehen, ruft mindestens einmal vorher DVS_Battle_SetHealingPoints für die zu verändernde Einheiten auf.
  103.  
  104.     Funktion    : DVS_Battle_SetHealingPoints
  105.     Beschreibung: Setzt die Regenerationspunkte.
  106.     Parameter   : Held oder Hauptmann (number), Regenerationspunkte (number)
  107.  
  108.     Funktion    : DVS_Battle_GetHealingPoints
  109.     Beschreibung: Gibt die echten Regenerationspunkte (so, wie sie aktuell sind!) zurück.
  110.     Parameter   : Held oder Hauptmann (number)
  111.     Rückgabe    : Regenerationspunkte (number)
  112.  
  113.     Funktion    : DVS_Battle_ChangeHealingPoints
  114.     Beschreibung: Wird automatisch aufgerufen; setzt in Wirklichkeit die Regenerationspunkte.
  115.  
  116.     Funktion    : DVS_Battle_AddMaxHealth
  117.     Beschreibung: Erhöht die maximale Lebensenergie.
  118.     Parameter   : Heldtyp oder Hauptmanntyp (number oder string), zugefügte Lebensenergie (number)
  119.     Hinweis     : Die maximale Lebensenergie wird für alle Entitäten des gleichen Typs übernommen.
  120.  
  121.     Funktion    : DVS_Battle_SetMaxHealth
  122.     Beschreibung: Setzt die maximale Lebensenergie.
  123.     Parameter   : Heldtyp oder Hauptmanntyp (number oder string), Lebensenergie (number)
  124.     Hinweis     : Die maximale Lebensenergie wird für alle Entitäten des gleichen Typs übernommen.
  125.  
  126.     Funktion    : DVS_Battle_ChangeMaxHealth
  127.     Beschreibung: Wird automatisch aufgerufen; setzt in Wirklichkeit die maximale Lebensenergie.
  128.  
  129.     Funktion    : DVS_Battle_AddHealingSeconds
  130.     Beschreibung: Erhöht die Geschwindigkeit der Regeneration.
  131.     Parameter   : Heldtyp oder Hauptmanntyp (number oder string), zugefügte Sekunden (number)
  132.     Hinweis     : Die Geschwindigkeit der Regeneration wird für alle Entitäten des gleichen Typs übernommen.
  133.  
  134.     Funktion    : DVS_Battle_SetHealingSeconds
  135.     Beschreibung: Setzt die Geschwindigkeit der Regeneration.
  136.     Parameter   : Heldtyp oder Hauptmanntyp (number oder string), Sekunden (number)
  137.     Hinweis     : Die Geschwindigkeit der Regeneration wird für alle Entitäten des gleichen Typs übernommen.
  138.  
  139.     Funktion    : DVS_Battle_GetHealingSeconds
  140.     Beschreibung: Gibt die Geschwindigkeit der Regeneration (so, wie sie aktuell ist!) zurück.
  141.     Parameter   : Heldtyp oder Hauptmanntyp (number oder string)
  142.     Rückgabe    : Sekunden (number)
  143.  
  144.     Funktion    : DVS_Battle_ChangeHealingSeconds
  145.     Beschreibung: Wird automatisch aufgerufen; setzt in Wirklichkeit die Sekunden.
  146.  
  147.     Funktion    : DVS_Battle_AddMaxRange
  148.     Beschreibung: Erhöht die maximale Reichweite.
  149.     Parameter   : Held, Hauptmann oder Soldat (number oder string)
  150.  
  151.     Funktion    : DVS_Battle_SetMaxRange
  152.     Beschreibung: Setzt die maximale Reichweite.
  153.     Parameter   : Held, Hauptmann oder Soldat (number oder string)
  154.  
  155.     Funktion    : DVS_Battle_GetMaxRange
  156.     Beschreibung: Gibt die maximale Reichweite (so, wie sie aktuell ist!) zurück.
  157.     Parameter   : Held, Hauptmann oder Soldat (number oder string)
  158.     Rückgabe    : maximale Reichweite (number)
  159.  
  160.     Funktion    : DVS_Battle_ChangeMaxRange
  161.     Beschreibung: Wird automatisch aufgerufen; setzt in Wirklichkeit die maximale Reichweite.
  162.  
  163.     Funktion    : DVS_Battle_CheckMaxRange
  164.     Beschreibung: Wird automatisch aufgerufen; überprüft, ob die maximale Reichweite verändert werden kann.
  165.  
  166.     Funktion    : DVS_Battle_ClearUnnecessaryPointer
  167.     Beschreibung: Wird automatisch aufgerufen; leitet die Pointer um.
  168.  
  169.     In die InitPlayerColorMapping kommt folgender Aufruf:
  170.     if AdressEntity then
  171.         InitAdressEntity(DVS_BattleMemory.AdressEntity, DVS_Battle_ReloadAttributes)
  172.     end
  173.  
  174.     Es werden zudem die SCV 2.0 benötigt!
  175.     [url]http://www.siedler-maps.de/forum/Siedler-DEdK-Script-Forum/SCV2-19696.htm[/url]
  176. --]]
  177. function DVS_Battle_SetUp()
  178.     assert(type(AdressEntity) == "number", "Battle_SetUp:ERROR! Please call \"InitAdressEntity\" before!")
  179.     DVS_BattleMemory = {
  180.         AdressEntity   = "AdressEntity", --muss manuell eingetragen werden; wird von DVS_Battle nach jedem Laden in InitAdressEntity aufgerufen
  181.         NpcId          = 7, --zu allen Spielern (!) neutrale Id
  182.         SpawnPoint     = "DVS_Battle_SpawnPoint", --Ort, an dem die neutrale Einheit gefahrlos erscheinen kann
  183.         MRTimer        = 3, --Intervall in Sekunden, in dem MaxRAnge überprüft wird (klein=schnelle Übernahme, hoher Rechenverbrauch; groß=langsame Übernahme, niedriger Rechenverbrauch)
  184.         IsClosing      = false,
  185.         CloFunction    = DVS_Battle_GUIAction_RestartMap,
  186.         CloParam       = nil,
  187.         Resets         = 2,
  188.         Damage         = {},
  189.         Armour         = {},
  190.         MaxSoldiers    = {},
  191.         Exploration    = {},
  192.         HealingPoints  = {},
  193.         MaxHealth      = {},
  194.         OrigHealth     = {},
  195.         HealingSeconds = {},
  196.         OrigSeconds    = {},
  197.         MaxRange       = {},
  198.         CheckMaxRange  = {},
  199.         Timer          = {
  200.             Damage         = {},
  201.             Armour         = {},
  202.             MaxSoldiers    = {},
  203.             Exploration    = {},
  204.             HealingPoints  = {},
  205.             MaxHealth      = {},
  206.             OrigHealth     = {},
  207.             HealingSeconds = {},
  208.             OrigSeconds    = {},
  209.             MaxRange       = {},
  210.         },
  211.     }
  212.     Trigger.RequestTrigger(Events.LOGIC_EVENT_ENTITY_DESTROYED, "", "DVS_Battle_EntityDestroyed", 1)
  213.  
  214.     DVS_Battle_GUIAction_RestartMap_Old           = GUIAction_RestartMap
  215.     GUIAction_RestartMap                          = DVS_Battle_GUIAction_RestartMap_New
  216.     DVS_Battle_MainWindow_LoadGame_DoLoadGame_Old = MainWindow_LoadGame_DoLoadGame
  217.     MainWindow_LoadGame_DoLoadGame                = DVS_Battle_MainWindow_LoadGame_DoLoadGame_New
  218.     DVS_Battle_QuitGame_Old                       = QuitGame
  219.     QuitGame                                      = DVS_Battle_QuitGame_New
  220.     DVS_Battle_QuitApplication_Old                = QuitApplication
  221.     QuitApplication                               = DVS_Battle_QuitApplication_New
  222. end
  223.  
  224. function DVS_Battle_EntityDestroyed()
  225.     DVS_BattleMemory.Damage[Event.GetEntityID()] = nil
  226.     DVS_BattleMemory.Armour[Event.GetEntityID()] = nil
  227.     DVS_BattleMemory.MaxSoldiers[Event.GetEntityID()] = nil
  228.     DVS_BattleMemory.Exploration[Event.GetEntityID()] = nil
  229.     DVS_BattleMemory.HealingPoints[Event.GetEntityID()] = nil
  230.     DVS_BattleMemory.HealingSeconds[Event.GetEntityID()] = nil
  231.     DVS_BattleMemory.MaxRange[Event.GetEntityID()] = nil
  232.     DVS_BattleMemory.Timer.Damage[Event.GetEntityID()] = nil
  233.     DVS_BattleMemory.Timer.Armour[Event.GetEntityID()] = nil
  234.     DVS_BattleMemory.Timer.MaxSoldiers[Event.GetEntityID()] = nil
  235.     DVS_BattleMemory.Timer.Exploration[Event.GetEntityID()] = nil
  236.     DVS_BattleMemory.Timer.HealingPoints[Event.GetEntityID()] = nil
  237.     DVS_BattleMemory.Timer.HealingSeconds[Event.GetEntityID()] = nil
  238.     DVS_BattleMemory.Timer.MaxRange[Event.GetEntityID()] = nil
  239. end
  240.  
  241. function DVS_Battle_GUIAction_RestartMap_New()
  242.     DVS_BattleMemory.CloFunction = DVS_Battle_GUIAction_RestartMap_Old
  243.     DVS_BattleMemory.CloParam = nil
  244.     DVS_BattleMemory.IsClosing = true
  245.     for v, w in pairs(DVS_BattleMemory.OrigHealth) do
  246.         DVS_Battle_ResetMaxHealth(v)
  247.         oH = true
  248.         DVS_BattleMemory.Resets = DVS_BattleMemory.Resets-1
  249.     end
  250.     for v, w in pairs(DVS_BattleMemory.OrigSeconds) do
  251.         DVS_Battle_ResetHealingSeconds(v)
  252.         oH = true
  253.         DVS_BattleMemory.Resets = DVS_BattleMemory.Resets-1
  254.     end
  255.     if not oH then
  256.         Trigger.DisableTriggerSystem(1)
  257.         DVS_BattleMemory.CloFunction(DVS_BattleMemory.CloParam)
  258.     end
  259. end
  260.  
  261. function DVS_Battle_MainWindow_LoadGame_DoLoadGame_New(...)
  262.     DVS_BattleMemory.CloFunction = DVS_Battle_MainWindow_LoadGame_DoLoadGame_Old
  263.     DVS_BattleMemory.CloParam = unpack(arg)
  264.     DVS_BattleMemory.IsClosing = true
  265.     for v, w in pairs(DVS_BattleMemory.OrigHealth) do
  266.         DVS_Battle_ResetMaxHealth(v)
  267.         oH = true
  268.         DVS_BattleMemory.Resets = DVS_BattleMemory.Resets-1
  269.     end
  270.     for v, w in pairs(DVS_BattleMemory.OrigSeconds) do
  271.         DVS_Battle_ResetHealingSeconds(v)
  272.         oH = true
  273.         DVS_BattleMemory.Resets = DVS_BattleMemory.Resets-1
  274.     end
  275.     if not oH then
  276.         Trigger.DisableTriggerSystem(1)
  277.         DVS_BattleMemory.CloFunction(DVS_BattleMemory.CloParam)
  278.     end
  279. end
  280.  
  281. function DVS_Battle_QuitGame_New()
  282.     DVS_BattleMemory.CloFunction = DVS_Battle_QuitGame_Old
  283.     DVS_BattleMemory.CloParam = nil
  284.     DVS_BattleMemory.IsClosing = true
  285.     for v, w in pairs(DVS_BattleMemory.OrigHealth) do
  286.         DVS_Battle_ResetMaxHealth(v)
  287.         oH = true
  288.         DVS_BattleMemory.Resets = DVS_BattleMemory.Resets-1
  289.     end
  290.     for v, w in pairs(DVS_BattleMemory.OrigSeconds) do
  291.         DVS_Battle_ResetHealingSeconds(v)
  292.         oH = true
  293.         DVS_BattleMemory.Resets = DVS_BattleMemory.Resets-1
  294.     end
  295.     if not oH then
  296.         Trigger.DisableTriggerSystem(1)
  297.         DVS_BattleMemory.CloFunction(DVS_BattleMemory.CloParam)
  298.     end
  299. end
  300.  
  301. function DVS_Battle_QuitApplication_New()
  302.     DVS_BattleMemory.CloFunction = DVS_Battle_QuitApplication_Old
  303.     DVS_BattleMemory.CloParam = nil
  304.     DVS_BattleMemory.IsClosing = true
  305.     for v, w in pairs(DVS_BattleMemory.OrigHealth) do
  306.         DVS_Battle_ResetMaxHealth(v)
  307.         oH = true
  308.         DVS_BattleMemory.Resets = DVS_BattleMemory.Resets-1
  309.     end
  310.     for v, w in pairs(DVS_BattleMemory.OrigSeconds) do
  311.         DVS_Battle_ResetHealingSeconds(v)
  312.         oH = true
  313.         DVS_BattleMemory.Resets = DVS_BattleMemory.Resets-1
  314.     end
  315.     if not oH then
  316.         Trigger.DisableTriggerSystem(1)
  317.         DVS_BattleMemory.CloFunction(DVS_BattleMemory.CloParam)
  318.     end
  319. end
  320.  
  321. function DVS_Battle_ReloadAttributes()
  322.     DVS_BattleMemory.IsClosing = false
  323.     for v, w in pairs(DVS_BattleMemory.Damage) do
  324.         DVS_Battle_ClearUnnecessaryPointer(v, 12)
  325.         DVS_Battle_SetDamage(v, w)
  326.     end
  327.     for v, w in pairs(DVS_BattleMemory.Armour) do
  328.         DVS_Battle_ClearUnnecessaryPointer(v, 24)
  329.         DVS_Battle_SetArmour(v, w)
  330.     end
  331.     for v, w in pairs(DVS_BattleMemory.Exploration) do
  332.         DVS_Battle_ClearUnnecessaryPointer(v, 40)
  333.         DVS_Battle_SetExploration(v, w)
  334.     end
  335.     for v, w in pairs(DVS_BattleMemory.HealingPoints) do
  336.         DVS_Battle_ClearUnnecessaryPointer(v, 52)
  337.         DVS_Battle_SetHealingPoints(v, w)
  338.     end
  339.     for v, w in pairs(DVS_BattleMemory.MaxHealth) do
  340.         DVS_Battle_SetMaxHealth(v, w)
  341.     end
  342.     for v, w in pairs(DVS_BattleMemory.HealingSeconds) do
  343.         DVS_Battle_SetHealingSeconds(v, w)
  344.     end
  345.     for v, w in pairs(DVS_BattleMemory.Timer.MaxRange) do
  346.         DVS_BattleMemory.Timer.MaxRange[v] = nil
  347.     end
  348.     for v, w in pairs(DVS_BattleMemory.MaxRange) do
  349.         DVS_Battle_ClearUnnecessaryPointer(v, 44)
  350.         DVS_Battle_SetMaxRange(v, w)
  351.     end
  352. end
  353.  
  354. function DVS_Battle_ResetMaxHealth(_entityType)
  355.     local entityId
  356.     local pos = GetPosition(DVS_BattleMemory.SpawnPoint)
  357.     entityId = Logic.CreateEntity(Entities[_entityType], pos.X, pos.Y, 0.00, DVS_BattleMemory.NpcId)
  358.     DVS_BattleMemory.Timer.OrigHealth[entityId] = true
  359.     Logic.SetEntityScriptingValue(entityId, -30, 257)
  360.     StartSimpleJob"DVS_Battle_SetOrigHealth"
  361. end
  362.  
  363. function DVS_Battle_SetOrigHealth()
  364.     local origHealth = 0
  365.     for v, w in pairs(DVS_BattleMemory.Timer.OrigHealth) do
  366.         origHealth = origHealth+1
  367.         if Logic.GetEntityScriptingValue(v, 75) > 10000000 then
  368.             local entityType = Logic.GetEntityTypeName(Logic.GetEntityType(v))
  369.             local svbn = BigNum.new(""..Logic.GetEntityScriptingValue(v, 75))
  370.             local index = BigNum.new()
  371.             BigNum.add(svbn, BigNum.new(52), index)
  372.             SetValueByAdress(BigNum.mt.tostring(index), DVS_BattleMemory.OrigHealth[entityType])
  373.             if Logic.GetEntityMaxHealth(v) == DVS_BattleMemory.OrigHealth[entityType] then
  374.                 DestroyEntity(v)
  375.                 DVS_BattleMemory.Timer.OrigHealth[v] = nil
  376.             end
  377.         end
  378.     end
  379.     if origHealth == 0 then
  380.         DVS_BattleMemory.Resets = DVS_BattleMemory.Resets+1
  381.         if DVS_BattleMemory.Resets == 2 then
  382.             Trigger.DisableTriggerSystem(1)
  383.             DVS_BattleMemory.CloFunction(DVS_BattleMemory.CloParam)
  384.         end
  385.         return true
  386.     end
  387. end
  388.  
  389. function DVS_Battle_ResetHealingSeconds(_entityType)
  390.     local entityId
  391.     local pos = GetPosition(DVS_BattleMemory.SpawnPoint)
  392.     entityId = Logic.CreateEntity(Entities[_entityType], pos.X, pos.Y, 0.00, DVS_BattleMemory.NpcId)
  393.     DVS_BattleMemory.Timer.OrigSeconds[entityId] = true
  394.     StartSimpleJob"DVS_Battle_SetOrigSeconds"
  395. end
  396.  
  397. function DVS_Battle_SetOrigSeconds()
  398.     local origSeconds = 0
  399.     for v, w in pairs(DVS_BattleMemory.Timer.OrigSeconds) do
  400.         origSeconds = origSeconds+1
  401.         local entityType = Logic.GetEntityTypeName(Logic.GetEntityType(v))
  402.         SetBehaviorXmlValue(v, 12, 3, 29, DVS_BattleMemory.OrigSeconds[entityType])
  403.         if GetBehaviorXmlValue(v, 12, 3, 29) == DVS_BattleMemory.OrigSeconds[entityType] then
  404.             DVS_BattleMemory.Timer.OrigSeconds[v] = nil
  405.             DestroyEntity(v)
  406.         end
  407.     end
  408.     if origSeconds == 0 then
  409.         DVS_BattleMemory.Resets = DVS_BattleMemory.Resets+1
  410.         if DVS_BattleMemory.Resets == 2 then
  411.             Trigger.DisableTriggerSystem(1)
  412.             DVS_BattleMemory.CloFunction(DVS_BattleMemory.CloParam)
  413.         end
  414.         return true
  415.     end
  416. end
  417.  
  418. function DVS_Battle_AddDamage(_entity, _damage)
  419.     if not DVS_BattleMemory.IsClosing then
  420.         if not DVS_BattleMemory.Damage[_entity] then
  421.             DVS_Battle_ClearUnnecessaryPointer(_entity, 12)
  422.             DVS_BattleMemory.Damage[_entity] = Logic.GetEntityDamage(_entity)
  423.         end
  424.         DVS_BattleMemory.Damage[_entity] = DVS_BattleMemory.Damage[_entity]+_damage
  425.         DVS_BattleMemory.Timer.Damage[_entity] = true
  426.         if JobIsRunning(DVS_Battle_ChangeDamageId) == 0 then
  427.             DVS_Battle_ChangeDamageId = StartSimpleJob"DVS_Battle_ChangeDamage"
  428.         end
  429.     end
  430. end
  431.  
  432. function DVS_Battle_SetDamage(_entity, _damage)
  433.     if not DVS_BattleMemory.IsClosing then
  434.         if not DVS_BattleMemory.Damage[_entity] then
  435.             DVS_Battle_ClearUnnecessaryPointer(_entity, 12)
  436.         end
  437.         DVS_BattleMemory.Damage[_entity] = _damage
  438.         DVS_BattleMemory.Timer.Damage[_entity] = true
  439.         if JobIsRunning(DVS_Battle_ChangeDamageId) == 0 then
  440.             DVS_Battle_ChangeDamageId = StartSimpleJob"DVS_Battle_ChangeDamage"
  441.         end
  442.     end
  443. end
  444.  
  445. function DVS_Battle_ChangeDamage()
  446.     local damage = 0
  447.     for v, w in pairs(DVS_BattleMemory.Timer.Damage) do
  448.         damage = damage+1
  449.         Logic.SetEntityScriptingValue(v, 33, Float2Int(DVS_BattleMemory.Damage[v]))
  450.         if Logic.GetEntityDamage(v) == DVS_BattleMemory.Damage[v] then
  451.             DVS_BattleMemory.Timer.Damage[v] = nil
  452.         end
  453.     end
  454.     if damage == 0 then
  455.         return true
  456.     end
  457. end
  458.  
  459. function DVS_Battle_AddArmour(_entity, _armour)
  460.     if not DVS_BattleMemory.IsClosing then
  461.         if not DVS_BattleMemory.Armour[_entity] then
  462.             DVS_Battle_ClearUnnecessaryPointer(_entity, 24)
  463.             DVS_BattleMemory.Armour[_entity] = Logic.GetEntityArmor(_entity)
  464.         end
  465.         DVS_BattleMemory.Armour[_entity] = DVS_BattleMemory.Armour[_entity]+_armour
  466.         DVS_BattleMemory.Timer.Armour[_entity] = true
  467.         if JobIsRunning(DVS_Battle_ChangeArmourId) == 0 then
  468.             DVS_Battle_ChangeArmourId = StartSimpleJob"DVS_Battle_ChangeArmour"
  469.         end
  470.     end
  471. end
  472.  
  473. function DVS_Battle_SetArmour(_entity, _armour)
  474.     if not DVS_BattleMemory.IsClosing then
  475.         if not DVS_BattleMemory.Armour[_entity] then
  476.             DVS_Battle_ClearUnnecessaryPointer(_entity, 24)
  477.         end
  478.         DVS_BattleMemory.Armour[_entity] = _armour
  479.         DVS_BattleMemory.Timer.Armour[_entity] = true
  480.         if JobIsRunning(DVS_Battle_ChangeArmourId) == 0 then
  481.             DVS_Battle_ChangeArmourId = StartSimpleJob"DVS_Battle_ChangeArmour"
  482.         end
  483.     end
  484. end
  485.  
  486. function DVS_Battle_ChangeArmour()
  487.     local armour = 0
  488.     for v, w in pairs(DVS_BattleMemory.Timer.Armour) do
  489.         armour = armour+1
  490.         Logic.SetEntityScriptingValue(v, 39, Float2Int(DVS_BattleMemory.Armour[v]))
  491.         if Logic.GetEntityArmor(v) == DVS_BattleMemory.Armour[v] then
  492.             DVS_BattleMemory.Timer.Armour[v] = nil
  493.         end
  494.     end
  495.     if armour == 0 then
  496.         return true
  497.     end
  498. end
  499.  
  500. function DVS_Battle_AddMaxSoldiers(_entity, _soldiers)
  501.     if not DVS_BattleMemory.IsClosing then
  502.         if not DVS_BattleMemory.MaxSoldiers[_entity] then
  503.             DVS_BattleMemory.MaxSoldiers[_entity] = Logic.LeaderGetMaxNumberOfSoldiers(_entity)
  504.         end
  505.         DVS_BattleMemory.MaxSoldiers[_entity] = DVS_BattleMemory.MaxSoldiers[_entity]+_soldiers
  506.         DVS_BattleMemory.Timer.MaxSoldiers[_entity] = true
  507.         if JobIsRunning(DVS_Battle_ChangeMaxSoldiersId) == 0 then
  508.             DVS_Battle_ChangeMaxSoldiersId = StartSimpleJob"DVS_Battle_ChangeMaxSoldiers"
  509.         end
  510.     end
  511. end
  512.  
  513. function DVS_Battle_SetMaxSoldiers(_entity, _soldiers)
  514.     if not DVS_BattleMemory.IsClosing then
  515.         if not DVS_BattleMemory.MaxSoldiers[_entity] then
  516.             DVS_BattleMemory.MaxSoldiers[_entity] = _soldiers
  517.         end
  518.         DVS_BattleMemory.MaxSoldiers[_entity] = _soldiers
  519.         DVS_BattleMemory.Timer.MaxSoldiers[_entity] = true
  520.         if JobIsRunning(DVS_Battle_ChangeMaxSoldiersId) == 0 then
  521.             DVS_Battle_ChangeMaxSoldiersId = StartSimpleJob"DVS_Battle_ChangeMaxSoldiers"
  522.         end
  523.     end
  524. end
  525.  
  526. function DVS_Battle_ChangeMaxSoldiers()
  527.     local maxSoldiers = 0
  528.     for v, w in pairs(DVS_BattleMemory.Timer.MaxSoldiers) do
  529.         maxSoldiers = maxSoldiers+1
  530.         local svbn = BigNum.new(""..Logic.GetEntityScriptingValue(v, -27))
  531.         local adress1 = BigNum.new()
  532.         BigNum.add(svbn, BigNum.new(16), adress1)
  533.         local adress2 = BigNum.new(GetValueByAdress(BigNum.mt.tostring(adress1)))
  534.         local adress3 = BigNum.new()
  535.         BigNum.add(adress2, BigNum.new(24), adress3)
  536.         local adress4 = BigNum.new(GetValueByAdress(BigNum.mt.tostring(adress3)))
  537.         local adress5 = BigNum.new()
  538.         BigNum.add(adress4, BigNum.new(0), adress5)
  539.         local adress6 = BigNum.new(GetValueByAdress(BigNum.mt.tostring(adress5)))
  540.         local index = BigNum.new()
  541.         BigNum.add(adress6, BigNum.new(16), index)
  542.         SetValueByAdress(BigNum.mt.tostring(index), DVS_BattleMemory.MaxSoldiers[v])
  543.         if Logic.LeaderGetMaxNumberOfSoldiers(v) == DVS_BattleMemory.MaxSoldiers[v] then
  544.             DVS_BattleMemory.Timer.MaxSoldiers[v] = nil
  545.         end
  546.     end
  547.     if maxSoldiers == 0 then
  548.         return true
  549.     end
  550. end
  551.  
  552. function DVS_Battle_AddExploration(_entity, _exploration)
  553.     if not DVS_BattleMemory.IsClosing then
  554.         if not DVS_BattleMemory.Exploration[_entity] then
  555.             DVS_Battle_ClearUnnecessaryPointer(_entity, 40)
  556.             DVS_BattleMemory.Exploration[_entity] = Logic.GetEntityExplorationRange(_entity)
  557.         end
  558.         DVS_BattleMemory.Exploration[_entity] = DVS_BattleMemory.Exploration[_entity]+_exploration
  559.         DVS_BattleMemory.Timer.Exploration[_entity] = true
  560.         if JobIsRunning(DVS_Battle_ChangeExplorationId) == 0 then
  561.             DVS_Battle_ChangeExplorationId = StartSimpleJob"DVS_Battle_ChangeExploration"
  562.         end
  563.     end
  564. end
  565.  
  566. function DVS_Battle_SetExploration(_entity, _exploration)
  567.     if not DVS_BattleMemory.IsClosing then
  568.         if not DVS_BattleMemory.Exploration[_entity] then
  569.             DVS_Battle_ClearUnnecessaryPointer(_entity, 40)
  570.         end
  571.         DVS_BattleMemory.Exploration[_entity] = _exploration
  572.         DVS_BattleMemory.Timer.Exploration[_entity] = true
  573.         if JobIsRunning(DVS_Battle_ChangeExplorationId) == 0 then
  574.             DVS_Battle_ChangeExplorationId = StartSimpleJob"DVS_Battle_ChangeExploration"
  575.         end
  576.     end
  577. end
  578.  
  579. function DVS_Battle_ChangeExploration()
  580.     local exploration = 0
  581.     for v, w in pairs(DVS_BattleMemory.Timer.Exploration) do
  582.         exploration = exploration+1
  583.         Logic.SetEntityScriptingValue(v, 47, Float2Int(DVS_BattleMemory.Exploration[v]))
  584.         if Logic.GetEntityExplorationRange(v) == DVS_BattleMemory.Exploration[v] then
  585.             DVS_BattleMemory.Timer.Exploration[v] = nil
  586.         end
  587.     end
  588.     if exploration == 0 then
  589.         return true
  590.     end
  591. end
  592.  
  593. function DVS_Battle_AddHealingPoints(_entity, _points)
  594.     if not DVS_BattleMemory.IsClosing then
  595.         if not DVS_BattleMemory.HealingPoints[_entity] then
  596.             Logic.HurtEntity(_entity, 1)
  597.             DVS_Battle_ClearUnnecessaryPointer(_entity, 52)
  598.             DVS_BattleMemory.HealingPoints[_entity] = Float2Int(Logic.GetEntityScriptingValue(_entity, 53))
  599.         end
  600.         DVS_BattleMemory.HealingPoints[_entity] = DVS_BattleMemory.HealingPoints[_entity]+_points
  601.         DVS_BattleMemory.Timer.HealingPoints[_entity] = GetBehaviorXmlValue(_entity, 12, 3, 29)
  602.         if DVS_BattleMemory.Timer.HealingPoints[_entity] <= 2 then
  603.             DVS_BattleMemory.Timer.HealingPoints[_entity] = 3
  604.         end
  605.         if JobIsRunning(DVS_Battle_ChangeHealingPointsId) == 0 then
  606.             DVS_Battle_ChangeHealingPointsId = StartSimpleJob"DVS_Battle_ChangeHealingPoints"
  607.         end
  608.     end
  609. end
  610.  
  611. function DVS_Battle_SetHealingPoints(_entity, _points)
  612.     if not DVS_BattleMemory.IsClosing then
  613.         if not DVS_BattleMemory.HealingPoints[_entity] then
  614.             Logic.HurtEntity(_entity, 1)
  615.             DVS_Battle_ClearUnnecessaryPointer(_entity, 52)
  616.         end
  617.         DVS_BattleMemory.HealingPoints[_entity] = _points
  618.         DVS_BattleMemory.Timer.HealingPoints[_entity] = GetBehaviorXmlValue(_entity, 12, 3, 29)
  619.         if DVS_BattleMemory.Timer.HealingPoints[_entity] <= 2 then
  620.             DVS_BattleMemory.Timer.HealingPoints[_entity] = 3
  621.         end
  622.         if JobIsRunning(DVS_Battle_ChangeHealingPointsId) == 0 then
  623.             DVS_Battle_ChangeHealingPointsId = StartSimpleJob"DVS_Battle_ChangeHealingPoints"
  624.         end
  625.     end
  626. end
  627.  
  628. function DVS_Battle_GetHealingPoints(_entity)
  629.     return Float2Int(Logic.GetEntityScriptingValue(_entity, 53))
  630. end
  631.  
  632. function DVS_Battle_ChangeHealingPoints()
  633.     local healingPoints = 0
  634.     for v, w in pairs(DVS_BattleMemory.Timer.HealingPoints) do
  635.         DVS_BattleMemory.Timer.HealingPoints[v] = DVS_BattleMemory.Timer.HealingPoints[v]-1
  636.         healingPoints = healingPoints+1
  637.         if DVS_BattleMemory.Timer.HealingPoints[v] <= 0 then
  638.             Logic.SetEntityScriptingValue(v, 53, Float2Int(DVS_BattleMemory.HealingPoints[v]))
  639.             DVS_BattleMemory.Timer.HealingPoints[v] = nil
  640.         end
  641.     end
  642.     if healingPoints == 0 then
  643.         return true
  644.     end
  645. end
  646.  
  647. function DVS_Battle_AddMaxHealth(_entityType, _maxHealth)
  648.     if not DVS_BattleMemory.IsClosing then
  649.         local entityId
  650.         local pos = GetPosition(DVS_BattleMemory.SpawnPoint)
  651.         if type(_entityType) == "number" then
  652.             entityId = Logic.CreateEntity(_entityType, pos.X, pos.Y, 0.00, DVS_BattleMemory.NpcId)
  653.             _entityType = Logic.GetEntityTypeName(Logic.GetEntityType(entityId))
  654.         else
  655.             entityId = Logic.CreateEntity(Entities[_entityType], pos.X, pos.Y, 0.00, DVS_BattleMemory.NpcId)
  656.         end
  657.         if not DVS_BattleMemory.MaxHealth[_entityType] then
  658.             DVS_BattleMemory.OrigHealth[_entityType] = Logic.GetEntityMaxHealth(entityId)
  659.             DVS_BattleMemory.MaxHealth[_entityType] = Logic.GetEntityMaxHealth(entityId)
  660.         end
  661.         DVS_BattleMemory.MaxHealth[_entityType] = DVS_BattleMemory.MaxHealth[_entityType]+_maxHealth
  662.         DVS_BattleMemory.Timer.MaxHealth[entityId] = true
  663.         Logic.SetEntityScriptingValue(entityId, -30, 257)
  664.         if JobIsRunning(DVS_Battle_ChangeMaxHealthId) == 0 then
  665.             DVS_Battle_ChangeMaxHealthId = StartSimpleJob"DVS_Battle_ChangeMaxHealth"
  666.         end
  667.     end
  668. end
  669.  
  670. function DVS_Battle_SetMaxHealth(_entityType, _maxHealth)
  671.     if not DVS_BattleMemory.IsClosing then
  672.         local entityId
  673.         local pos = GetPosition(DVS_BattleMemory.SpawnPoint)
  674.         if type(_entityType) == "number" then
  675.             entityId = Logic.CreateEntity(_entityType, pos.X, pos.Y, 0.00, 2)
  676.             _entityType = Logic.GetEntityTypeName(Logic.GetEntityType(entityId))
  677.         else
  678.             entityId = Logic.CreateEntity(Entities[_entityType], pos.X, pos.Y, 0.00, DVS_BattleMemory.NpcId)
  679.         end
  680.         if not DVS_BattleMemory.MaxHealth[_entityType] then
  681.            DVS_BattleMemory.OrigHealth[_entityType] = Logic.GetEntityMaxHealth(entityId)
  682.         end
  683.         DVS_BattleMemory.MaxHealth[_entityType] = _maxHealth
  684.         DVS_BattleMemory.Timer.MaxHealth[entityId] = true
  685.         Logic.SetEntityScriptingValue(entityId, -30, 257)
  686.         if JobIsRunning(DVS_Battle_ChangeMaxHealthId) == 0 then
  687.            DVS_Battle_ChangeMaxHealthId = StartSimpleJob"DVS_Battle_ChangeMaxHealth"
  688.         end
  689.     end
  690. end
  691.  
  692. function DVS_Battle_ChangeMaxHealth()
  693.     local maxHealth = 0
  694.     for v, w in pairs(DVS_BattleMemory.Timer.MaxHealth) do
  695.         maxHealth = maxHealth+1
  696.         if Logic.GetEntityScriptingValue(v, 75) > 10000000 then
  697.             local entityType = Logic.GetEntityTypeName(Logic.GetEntityType(v))
  698.             local svbn = BigNum.new(""..Logic.GetEntityScriptingValue(v, 75))
  699.             local index = BigNum.new()
  700.             BigNum.add(svbn, BigNum.new(52), index)
  701.             SetValueByAdress(BigNum.mt.tostring(index), DVS_BattleMemory.MaxHealth[entityType])
  702.             if Logic.GetEntityMaxHealth(v) == DVS_BattleMemory.MaxHealth[entityType] then
  703.                 DVS_BattleMemory.Timer.MaxHealth[v] = nil
  704.                 DestroyEntity(v)
  705.             end
  706.         end
  707.     end
  708.     if maxHealth == 0 then
  709.         return true
  710.     end
  711. end
  712.  
  713. function DVS_Battle_AddHealingSeconds(_entityType, _healingSeconds)
  714.     if not DVS_BattleMemory.IsClosing then
  715.         local entityId
  716.         local pos = GetPosition(DVS_BattleMemory.SpawnPoint)
  717.         if type(_entityType) == "number" then
  718.             entityId = Logic.CreateEntity(_entityType, pos.X, pos.Y, 0.00, DVS_BattleMemory.NpcId)
  719.             _entityType = Logic.GetEntityTypeName(Logic.GetEntityType(entityId))
  720.         else
  721.             entityId = Logic.CreateEntity(Entities[_entityType], pos.X, pos.Y, 0.00, DVS_BattleMemory.NpcId)
  722.         end
  723.         if not DVS_BattleMemory.HealingSeconds[_entityType] then
  724.             DVS_BattleMemory.OrigSeconds[_entityType] = GetBehaviorXmlValue(entityId, 12, 3, 29)
  725.             DVS_BattleMemory.HealingSeconds[_entityType] = GetBehaviorXmlValue(entityId, 12, 3, 29)
  726.         end
  727.         DVS_BattleMemory.HealingSeconds[_entityType] = DVS_BattleMemory.HealingSeconds[_entityType]+_healingSeconds
  728.         DVS_BattleMemory.Timer.HealingSeconds[entityId] = true
  729.         if JobIsRunning(DVS_Battle_ChangeHealingSecondsId) == 0 then
  730.             DVS_Battle_ChangeHealingSecondsId = StartSimpleJob"DVS_Battle_ChangeHealingSeconds"
  731.         end
  732.     end
  733. end
  734.  
  735. function DVS_Battle_SetHealingSeconds(_entityType, _healingSeconds)
  736.     if not DVS_BattleMemory.IsClosing then
  737.         local entityId
  738.         local pos = GetPosition(DVS_BattleMemory.SpawnPoint)
  739.         if type(_entityType) == "number" then
  740.             entityId = Logic.CreateEntity(_entityType, pos.X, pos.Y, 0.00, 2)
  741.             _entityType = Logic.GetEntityTypeName(Logic.GetEntityType(entityId))
  742.         else
  743.             entityId = Logic.CreateEntity(Entities[_entityType], pos.X, pos.Y, 0.00, DVS_BattleMemory.NpcId)
  744.         end
  745.         if not DVS_BattleMemory.HealingSeconds[_entityType] then
  746.            DVS_BattleMemory.OrigSeconds[_entityType] = GetBehaviorXmlValue(entityId, 12, 3, 29)
  747.            DVS_BattleMemory.HealingSeconds[_entityType] = _healingSeconds
  748.         end
  749.         DVS_BattleMemory.HealingSeconds[_entityType] = _healingSeconds
  750.         DVS_BattleMemory.Timer.HealingSeconds[entityId] = true
  751.         if JobIsRunning(DVS_Battle_ChangeHealingSecondsId) == 0 then
  752.            DVS_Battle_ChangeHealingSecondsId = StartSimpleJob"DVS_Battle_ChangeHealingSeconds"
  753.         end
  754.     end
  755. end
  756.  
  757. function DVS_Battle_GetHealingSeconds(_entityType, _healingSeconds)
  758.     if type(_entityType) == "number" then
  759.         entityId = Logic.CreateEntity(_entityType, pos.X, pos.Y, 0.00, 2)
  760.         _entityType = Logic.GetEntityTypeName(Logic.GetEntityType(entityId))
  761.     else
  762.         entityId = Logic.CreateEntity(Entities[_entityType], pos.X, pos.Y, 0.00, DVS_BattleMemory.NpcId)
  763.     end
  764.     healingSeconds = GetBehaviorXmlValue(entityId, 12, 3, 29)
  765.     DestroyEntity(entityId)
  766.     return healingSeconds
  767. end
  768.  
  769. function DVS_Battle_ChangeHealingSeconds()
  770.     local healingSeconds = 0
  771.     for v, w in pairs(DVS_BattleMemory.Timer.HealingSeconds) do
  772.         local entityType = Logic.GetEntityTypeName(Logic.GetEntityType(v))
  773.         healingSeconds = healingSeconds+1
  774.         SetBehaviorXmlValue(v, 12, 3, 29, DVS_BattleMemory.HealingSeconds[entityType])
  775.         if GetBehaviorXmlValue(v, 12, 3, 29) == DVS_BattleMemory.HealingSeconds[entityType] then
  776.             DVS_BattleMemory.Timer.HealingSeconds[v] = nil
  777.             DestroyEntity(v)
  778.         end
  779.     end
  780.     if healingSeconds == 0 then
  781.         return true
  782.     end
  783. end
  784.  
  785. function DVS_Battle_AddMaxRange(_entity, _maxRange)
  786.     if not DVS_BattleMemory.IsClosing then
  787.         if not DVS_BattleMemory.MaxRange[_entity] then
  788.             DVS_Battle_ClearUnnecessaryPointer(_entity, 44)
  789.             DVS_BattleMemory.MaxRange[_entity] = Int2Float(GetBehaviorXmlValue(_entity, 12, 3, 23))
  790.         end
  791.         DVS_BattleMemory.MaxRange[_entity] = DVS_BattleMemory.MaxRange[_entity]+_maxRange
  792.         if Int2Float(Logic.GetEntityScriptingValue(_entity, 49)) == -1 then
  793.             DVS_BattleMemory.CheckMaxRange[_entity] = true
  794.             if JobIsRunning(DVS_Battle_CheckMaxRangeId) == 0 then
  795.                 DVS_Battle_CheckMaxRangeId = StartSimpleJob"DVS_Battle_CheckMaxRange"
  796.             end
  797.         else
  798.             DVS_BattleMemory.Timer.MaxRange[_entity] = true
  799.             if JobIsRunning(DVS_Battle_ChangeMaxRangeId) == 0 then
  800.                 DVS_Battle_ChangeMaxRangeId = StartSimpleJob"DVS_Battle_ChangeMaxRange"
  801.             end
  802.         end
  803.     end
  804. end
  805.  
  806. function DVS_Battle_SetMaxRange(_entity, _maxRange)
  807.     if not DVS_BattleMemory.IsClosing then
  808.         if not DVS_BattleMemory.MaxRange[_entity] then
  809.             DVS_Battle_ClearUnnecessaryPointer(_entity, 44)
  810.         end
  811.         DVS_BattleMemory.MaxRange[_entity] = _maxRange
  812.         if Int2Float(Logic.GetEntityScriptingValue(_entity, 49)) == -1 then
  813.             DVS_BattleMemory.CheckMaxRange[_entity] = true
  814.             if JobIsRunning(DVS_Battle_CheckMaxRangeId) == 0 then
  815.                 DVS_Battle_CheckMaxRangeId = StartSimpleJob"DVS_Battle_CheckMaxRange"
  816.             end
  817.         else
  818.             DVS_BattleMemory.Timer.MaxRange[_entity] = true
  819.             if JobIsRunning(DVS_Battle_ChangeMaxRangeId) == 0 then
  820.                 DVS_Battle_ChangeMaxRangeId = StartSimpleJob"DVS_Battle_ChangeMaxRange"
  821.             end
  822.         end
  823.     end
  824. end
  825.  
  826. function DVS_Battle_GetMaxRange(_entity)
  827.     return Int2Float(Logic.GetEntityScriptingValue(_entity, 49))
  828. end
  829.  
  830. function DVS_Battle_ChangeMaxRange()
  831.     local maxRange = 0
  832.     for v, w in pairs(DVS_BattleMemory.Timer.MaxRange) do
  833.         maxRange = maxRange+1
  834.         Logic.SetEntityScriptingValue(v, 49, Float2Int(DVS_BattleMemory.MaxRange[v]))
  835.         if Int2Float(Logic.GetEntityScriptingValue(v, 49)) == DVS_BattleMemory.MaxRange[v] then
  836.            DVS_BattleMemory.Timer.MaxRange[v] = nil
  837.         end
  838.     end
  839.     if maxRange == 0 then
  840.         return true
  841.     end
  842. end
  843.  
  844. function DVS_Battle_CheckMaxRange()
  845.     if Counter.Tick2("DVSBCMR", DVS_BattleMemory.MRTimer) then
  846.         local maxRange = 0
  847.         for v, w in pairs(DVS_BattleMemory.CheckMaxRange) do
  848.             maxRange = maxRange+1
  849.             if Int2Float(Logic.GetEntityScriptingValue(v, 49)) ~= -1 then
  850.                 DVS_BattleMemory.CheckMaxRange[v] = nil
  851.                 DVS_BattleMemory.Timer.MaxRange[v] = true
  852.                 if JobIsRunning(DVS_Battle_ChangeMaxRangeId) == 0 then
  853.                     DVS_Battle_ChangeMaxRangeId = StartSimpleJob"DVS_Battle_ChangeMaxRange"
  854.                 end
  855.             end
  856.         end
  857.         if maxRange == 0 then
  858.             return true
  859.         end
  860.     end
  861. end
  862.  
  863. function DVS_Battle_ClearUnnecessaryPointer(_entityID, _index)
  864.     local svbn = BigNum.new(""..Logic.GetEntityScriptingValue(_entityID, 22))
  865.     local adress1 = BigNum.new()
  866.     BigNum.add(svbn, BigNum.new("".._index), adress1)
  867.     local value = BigNum.new()
  868.     local adressAt22 = BigNum.new(""..GetValueByAdress(svbn))
  869.     BigNum.sub(adressAt22, BigNum.new"100", value)
  870.     SetValueByAdress(BigNum.mt.tostring(adress1), BigNum.mt.tostring(value))
  871.     return BigNum.mt.tostring(adressAt22)
  872. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement