Magentix
if (OP.statement == false) postCount++;
- Reaction score
- 107
I started working on one spell (Ablaze) to try out if the JASS I just learned could actually help me make something nice. It became so fun, that I created an entire spellpack out of it.
Note that this is my first spellpack ever, as well as my first JASS spells ever, so even though my code seems good/leakless, I'm sure you pros will find some of my coding inefficient.
MUI: Yes
MPI: Yes
Concept: Fire spells
Configuration + Import difficulty: Very easy
Uses: vJASS+Handle System (NewGen) as mentioned in the general config (with instructions on these as well)
Ablaze (E)
CONFIG:
Volatile Mind (V)
Vesuvian Winds (D)
CONFIG:
Madman's Inferno (F)
CONFIG:
GENERAL CONFIG (Implementation):
Known Bugs: None
Possible improvements:
a) Use a modified curse for the stun debuff and check every 0.1 seconds for it instead of using a no check on a spellbook.
(= Difference between Purge-able and not Purge-able)
b) Extra sound effects
c) Coding? I'm pretty sure I didn't code 200% optimal
Note that this is my first spellpack ever, as well as my first JASS spells ever, so even though my code seems good/leakless, I'm sure you pros will find some of my coding inefficient.
MUI: Yes
MPI: Yes
Concept: Fire spells
Configuration + Import difficulty: Very easy
Uses: vJASS+Handle System (NewGen) as mentioned in the general config (with instructions on these as well)
Ablaze (E)
CONFIG:
JASS:
globals
constant real AblazeVM_DMG_Addition = 50.00 // Set the Ablaze initial damage increment by Volatile Mind
constant real AblazeVM_DoT_DMG_Addition = 0.00 // Set the Ablaze DoT damage increment by Volatile Mind
constant real AblazeVM_DoT_Addition = 2.00 // Set the Ablaze DoT duration increment by Volatile Mind
constant real AblazeVM_Range_Addition = 0.00 // Set the Ablaze radius increment by Volatile Mind
endglobals
constant function GetSpellRadius takes integer Ablaze_level, integer VM_level returns real
return (400.00 + (VM_level * AblazeVM_Range_Addition))
endfunction
constant function GetDotDuration takes integer Ablaze_level, integer VM_level returns real
return (4.00 + (Ablaze_level * 2.00) + (VM_level * AblazeVM_DoT_Addition))
endfunction
constant function GetDotDamage takes integer Ablaze_level, integer VM_level returns real
return (10.00 + (Ablaze_level * 10.00) + (VM_level * AblazeVM_DoT_DMG_Addition))
endfunction
constant function GetInitialDamage takes integer Ablaze_level, integer VM_level returns real
return ((((Ablaze_level + 2) * (Ablaze_level + 3) / 2) * 25.00) - 25.00 + (VM_level * AblazeVM_DMG_Addition))
endfunction
Volatile Mind (V)
Vesuvian Winds (D)
CONFIG:
JASS:
globals
constant real VWVM_DMG_Addition = 0.00 // Set the Vesuvian Winds initial damage increment by Volatile Mind
constant real VWVM_Stun_Addition = 0.50 // Set the Vesuvian Winds stun duration increment by Volatile Mind
constant real VWVM_Range_Addition = 200.00 // Set the Vesuvian Winds range increment by Volatile Mind
endglobals
constant function GetSpellDamage takes integer VW_level, integer VM_level returns real
return (100.00 + (VW_level * 100.00) + (VM_level * VWVM_DMG_Addition))
endfunction
constant function GetStunDuration takes integer VW_level, integer VM_level returns real
return (0.50 + (VW_level * 0.50) + (VM_level * VWVM_Stun_Addition))
endfunction
constant function GetSpellRange takes integer VW_level, integer VM_level returns real
return (1000.00 + (VM_level * VWVM_Range_Addition))
endfunction
Madman's Inferno (F)
CONFIG:
JASS:
globals
constant real InfernoVM_DPS_Addition = 10.00 // Set the Madman's Inferno DPS increment by Volatile Mind
constant real InfernoVM_Range_Addition = 50.00 // Set the Madman's Inferno range increment by Volatile Mind
endglobals
constant function GetInfernoDPS takes integer VM_level returns real
return (100.00 + (VM_level * InfernoVM_DPS_Addition))
endfunction
constant function GetInfernoRange takes integer VM_level returns real
return (400.00 + (VM_level * InfernoVM_Range_Addition))
endfunction
GENERAL CONFIG (Implementation):
JASS:
/////////////////////////////////////////////////////////////////////////////////
// //
// MAGENTIX' INFERNO SPELL PACK //
// //
//=============================================================================//
// //
// //
// 1. IMPLEMENTATION //
// ================== //
// //
// a) Copy everything in here into your map's code header. //
// b) Copy-paste every trigger, no need to create variables. //
// c) Open Object Editor and copy-paste all custom units, spells and buffs. //
// d) Open Sound Editor and copy-paste the sound. //
// e) Configure the "Raw Code" part below. //
// f) Make sure the following spell(book)s are set this way. //
// - Fake Stunned Debuff spellbook contains Fake Stun Debuff //
// - Fatigue Spellbook contains Fatigue //
// - Fatigue Spell has the Fatigue (Slow Aura) set in Stats-Buffs //
// //
// //
// 2. CONFIGURATION //
// ================= //
// //
// At the top of every spell trigger, you will find a configuration area. //
// There, you will find 2 fields of values that can be modified. //
// //
// The first field contains globals that describe how Volatile Mind will //
// affect the ability for each level of Volatile Mind. //
// //
// The second field contains so-called constant function which determine //
// the spell's damage, duration, area of effect, etc. //
// //
// It's Important that you ONLY change globals values and the formulas //
// within the constant functions. Changing anything else may cause spell //
// malfunctions. //
// //
// //
// Now, I need you to press Ctrl+D in the Object Editor to view the custom //
// spells' and units' Raw Data code. If you found all of them, fill them in. //
globals //
// Set the ability ID for the Ablaze spell //
constant integer AblazeAbilityID = 039;A000039; //
//
// Set the ability ID for the Volatile Mind spell //
constant integer VMAbilityID = 039;A001039; //
//
// Set the ability ID for the Vesuvian Winds spell //
constant integer VWAbilityID = 039;A002039; //
//
// Set the ability ID for the Fake Stunned Debuff spellbook //
constant integer FakeStunID = 039;A003039; //
//
// Set the ability ID for the Fatigue Spellbook //
constant integer FatigueID = 039;A007039; //
//
// Set the Unit ID for the Circle Fire Dummy //
constant integer AblazeUnitID = 039;n000039; //
//
// Set the Unit ID for the Circle Incinerate Dummy //
constant integer AblazeUnitID3 = 039;n001039; //
//
// Set the Unit ID for the Line Fire Dummy //
constant integer AblazeUnitID2 = 039;n002039; //
//
// Set the Unit ID for the Fireball Dummy //
constant integer VWUnitID = 039;n003039; //
//
// Set the Buff ID for the Madman's Inferno buff //
constant integer MIBuffID = 039;B000039; //
endglobals //
// //
// //
// 3. REQUIREMENTS //
// ================ //
// //
// This spellpack requires vJASS/JASSHelper and the Handle System. //
// //
// vJASS/JASSHelper: //
// Some sort of pre-processor that makes this code work, comes standard with //
// NewGen Pack. Link can be found at thehelper.net Useful Tools section. //
// !To test maps with NewGen, save manually first, then press "Test Map"! //
// //
// Handle System: //
// Again, something that makes JASS easier to work with, comes standard with //
// this map. No need for user to implement this. //
// //
//=============================================================================//
// //
// DO NOT EDIT ANYTHING BEYOND THIS POINT //
// PLEASE GIVE CREDIT WHEN USING THIS! //
// //
/////////////////////////////////////////////////////////////////////////////////
Known Bugs: None
Possible improvements:
a) Use a modified curse for the stun debuff and check every 0.1 seconds for it instead of using a no check on a spellbook.
(= Difference between Purge-able and not Purge-able)
b) Extra sound effects
c) Coding? I'm pretty sure I didn't code 200% optimal