share/hedgewars/Data/Scripts/Multiplayer/Construction_Mode.lua
author Wuzzy <Wuzzy2@mail.ru>
Mon, 13 Nov 2017 22:14:45 +0100
changeset 12836 8610462e3d33
parent 12682 b7fd7ab8ddf9
child 12940 39b7b3ed619e
permissions -rw-r--r--
Remove 2 unused number tags in Construction Mode GUI These numbers are shown aside the power tag, but the numbers never change. They don't serve any purpose and are just visual clutter and annoying, since they partially overlap. They are probably a leftover from copying code over from other scripts. With this changeset, only the power and turn time are left visible, as it is supposed to.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
     1
---------------------------------------------------------
11733
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
     2
--- LE CONSTRUCTION MODE 0.7+ (badly adapted from Hedge Editor 0.5)
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
     3
---------------------------------------------------------
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
     4
-- a hedgewars gameplay mode by mikade
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
     5
-- special thanks to all who helped test and offered suggestions
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
     6
-- additional thanks to sheepluva/nemo for adding some extra hooks
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
     7
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
     8
-- (to do)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
     9
-- investigate loc not working on addcaptions
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    10
-- check for parsecommands before porting to dev
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    11
-- test onUpDown more extensively as it may need revision (check for amRubber etc)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    12
-- test localization of weapons and utils and stuff
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    13
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    14
-- try posistion grenades in Harmer so it blows hogs away from the struc
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    15
-- and don't explode too close to the struc
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    16
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    17
-- additional/previous balance ideas
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    18
-- based on your money?
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    19
-- based on the number of strucs/gens you own?
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    20
-- based on your existing arsenal?
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    21
-- limit number of crates spawned per round perhaps (done)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    22
-- limit number of generators?
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    23
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    24
------------------------------------------------------------------------------
11720
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
    25
-- SCRIPT PARAMETER
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
    26
------------------------------------------------------------------------------
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
    27
-- The script parameter can be used to configure the energy
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
    28
-- of the game. It is a comma-seperated list of key=value pairs, where each
11729
2d57eed66d41 Fix bad comment in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11728
diff changeset
    29
-- key is a word and each value is an integer between 0 and 4294967295.
11720
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
    30
--
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
    31
-- Possible keys:
11721
8c1a30d4cbc8 Construction Mode: Fix giving round energy boost at first round
Wuzzy <almikes@aol.com>
parents: 11720
diff changeset
    32
--- initialenergy: Amount of energy that each team starts with (default: 550)
11982
6f4b96669f9d Fix Construction Mode screwing up when initialenergy > maxenergy
Wuzzy <almikes@aol.com>
parents: 11981
diff changeset
    33
---                Note: Must be smaller than or equal to maxenergy
11720
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
    34
--- energyperround: Amount of energy that each team gets per round (default: 50)
11729
2d57eed66d41 Fix bad comment in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11728
diff changeset
    35
--- maxenergy: Maximum amount of energy each team can hold (default: 1000)
12092
9fe7eb1f7df2 Construction Mode: Turn crate limit into a script parameter
Wuzzy <almikes@aol.com>
parents: 12091
diff changeset
    36
--- cratesperround: Maximum number of crates you can place per round (default: 5)
9fe7eb1f7df2 Construction Mode: Turn crate limit into a script parameter
Wuzzy <almikes@aol.com>
parents: 12091
diff changeset
    37
9fe7eb1f7df2 Construction Mode: Turn crate limit into a script parameter
Wuzzy <almikes@aol.com>
parents: 12091
diff changeset
    38
-- For the previous 2 keys, you can use the value “inf” for an unlimited amount
11720
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
    39
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
    40
-- Example: “initialenergy=750, maxenergy=2000” starts thee game with 750 energy
12092
9fe7eb1f7df2 Construction Mode: Turn crate limit into a script parameter
Wuzzy <almikes@aol.com>
parents: 12091
diff changeset
    41
--          and sets the maximum energy to 2000.
9fe7eb1f7df2 Construction Mode: Turn crate limit into a script parameter
Wuzzy <almikes@aol.com>
parents: 12091
diff changeset
    42
-- Example: “craterperround=inf” disables the crate placement limit.
11720
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
    43
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
    44
------------------------------------------------------------------------------
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    45
--version history
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    46
------------------------------------------------------------------------------
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    47
--v0.1
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    48
-- concept test
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    49
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    50
--v0.2
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    51
-- improved documentation (in script and in game)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    52
-- improved localisation (or is it? at any rate, crate placement should now say e.g. Bazooka and not amBazooka)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    53
-- added variable weapon costs (based on the values from Vatten's Consumerism script)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    54
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    55
-- added reflector shield (still needs work and balancing)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    56
-- added weapon-filter (probably ok)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    57
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    58
-- enabled super weapons like ballgun, rcplane, watermelon, hellish to test balance
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    59
-- reduce max money to 1000
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    60
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    61
--v0.3
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    62
-- some /s removed
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    63
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    64
--v0.4
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    65
-- added support for per hog ammo (hopefully)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    66
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    67
--v0.5 (dev)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    68
-- added somewhat horribly implemented support for different structure sprites
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    69
-- added override pictures for ammo menu
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    70
-- added override message on wep select to aid understanding
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    71
-- split menu into/between weps/parts: struc, crates, gears
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    72
-- add a limit on crates per turn
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    73
-- add a limit on extra time per turn
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    74
-- add a test level
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    75
-- restored rubber placement
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    76
-- cleaned up some of the code a bit and removed about 280 lines of code I didn't need, lol
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    77
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    78
--v0.6 (dev)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    79
-- added magic dance
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    80
11732
e28b534188d3 update construction mode in-file version info
sheepluva
parents: 11730
diff changeset
    81
--v0.7 (pushed to repo)
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    82
-- added a cfg file
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    83
-- removed another 903 lines of code we weren't using (lol)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    84
11733
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
    85
--v0.7+ (merged in repo)
11732
e28b534188d3 update construction mode in-file version info
sheepluva
parents: 11730
diff changeset
    86
-- applied Wuzzy's patches:
e28b534188d3 update construction mode in-file version info
sheepluva
parents: 11730
diff changeset
    87
--   script parameters: initialenergy, energyperround, maxenergy
e28b534188d3 update construction mode in-file version info
sheepluva
parents: 11730
diff changeset
    88
--   fix crate costs
e28b534188d3 update construction mode in-file version info
sheepluva
parents: 11730
diff changeset
    89
--   various minor tweaks and fixes
e28b534188d3 update construction mode in-file version info
sheepluva
parents: 11730
diff changeset
    90
--   (see commits in official repo)
11733
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
    91
-- make Construction Mode play well together with fort mode (clan order = fort order)
11732
e28b534188d3 update construction mode in-file version info
sheepluva
parents: 11730
diff changeset
    92
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    93
--------------------------------
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    94
-- STRUCTURES LIST / IDEAS
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    95
--------------------------------
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    96
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    97
--Healing Station: heals hogs to 150 life
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    98
--Teleportation Node: allows teleporting to any other teleporter nodes
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
    99
--Bio-filter: explodes enemy hogs
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   100
--Respawner: if you have one of these, any slain hogs are resurrected here :D
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   101
--Generator: generates energy (used to buy stuff, and possibly later other strucs might have upkeep costs)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   102
--Support Station: allows purchasing of weapons, utilities, and med-crates
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   103
--Construction Station: allows purchasing of girders, rubber, mines, sticky mines, barrels
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   104
--Reflector Shield: reflect projectiles
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   105
--Weapon Filter: kill all equipement of enemy hogs passing through this area.
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   106
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   107
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   108
--to make the grill more attractive make it vaporize flying saucers
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   109
--and also rope, and maybe incoming gears
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   110
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   111
-- make healing thing also cure poison
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   112
-- maybe make poison more virulent and dangerous
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   113
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   114
--(not implemented / abandoned ideas)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   115
-- Core: allows construction of other structures.
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   116
-- Automated Turret (think red drones from space invasion)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   117
-- Canon (gives access to 3 fireballs per turn while near)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   118
-- something that allows control of wind/water
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   119
-- Gravity Field generator : triggers world gravity change
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   120
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   121
-- structures consume power over time and
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   122
-- maybe you can turn structures OFF/ON, manually to save power.
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   123
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   124
-- hacking
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   125
-- allow hacking of structures, either being able to use enemy structures,
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   126
-- or turning a team's structures against them.
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   127
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   128
-- pylons
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   129
-- allow hogs to put down a pylon-like gear which then allows the core
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   130
-- to place other structures/objects within the pylon's sphere of influence
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   131
-- this would allow aggressive structure advancement
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   132
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   133
-- resouce mining?
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   134
-- you could designate something like mines, that you could get close to,
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   135
-- "pick up", and then "drop" back at a central location to simulate
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   136
-- resource mining. bit complicated/meh, normal power generators probably easier
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   137
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   138
-- it would be cool to have a red mask we could apply over girders
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   139
-- that would indicate they were Indestructible
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   140
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   141
HedgewarsScriptLoad("/Scripts/Locale.lua")
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   142
HedgewarsScriptLoad("/Scripts/Tracker.lua")
11720
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
   143
HedgewarsScriptLoad("/Scripts/Params.lua")
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   144
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   145
----------------------------------------------
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   146
-- STRUC CRAP
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   147
----------------------------------------------
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   148
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   149
strucID = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   150
strucGear = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   151
strucClan = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   152
strucType = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   153
strucCost = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   154
strucHealth = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   155
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   156
strucCirc = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   157
strucCircCol = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   158
strucCircRadius = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   159
strucCircType = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   160
strucAltDisplay = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   161
11733
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
   162
fortMode = false
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
   163
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   164
placedExpense = 0
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   165
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   166
tempID = nil
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   167
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   168
sUID = 0
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   169
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   170
colorRed = 0xff0000ff
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   171
colorGreen = 0x00ff00ff
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   172
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   173
clanBoundsSX = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   174
clanBoundsSY = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   175
clanBoundsEX = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   176
clanBoundsEY = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   177
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   178
clanPower = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   179
clanID = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   180
clanLStrucIndex = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   181
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   182
clanLWepIndex = {} -- for ease of use let's track this stuff
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   183
clanLUtilIndex = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   184
clanLGearIndex = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   185
clanUsedExtraTime = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   186
clanCratesSpawned = {}
11721
8c1a30d4cbc8 Construction Mode: Fix giving round energy boost at first round
Wuzzy <almikes@aol.com>
parents: 11720
diff changeset
   187
clanFirstTurn = {}
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   188
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   189
effectTimer = 0
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   190
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   191
wallsVisible = false
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   192
wX = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   193
wY = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   194
wWidth = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   195
wHeight = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   196
wCol = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   197
margin = 20
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   198
12836
8610462e3d33 Remove 2 unused number tags in Construction Mode GUI
Wuzzy <Wuzzy2@mail.ru>
parents: 12682
diff changeset
   199
clanPowerTag = nil
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   200
lastWep = nil
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   201
11717
f35139700d22 Construction Mode: Disable setting drill strike timer in object placement mode
Wuzzy <almikes@aol.com>
parents: 11716
diff changeset
   202
checkForSpecialWeaponsIn = -1
f35139700d22 Construction Mode: Disable setting drill strike timer in object placement mode
Wuzzy <almikes@aol.com>
parents: 11716
diff changeset
   203
11720
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
   204
-- Config variables (script parameter)
11721
8c1a30d4cbc8 Construction Mode: Fix giving round energy boost at first round
Wuzzy <almikes@aol.com>
parents: 11720
diff changeset
   205
conf_initialEnergy = 550
11720
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
   206
conf_energyPerRound = 50
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
   207
conf_maxEnergy = 1000
12092
9fe7eb1f7df2 Construction Mode: Turn crate limit into a script parameter
Wuzzy <almikes@aol.com>
parents: 12091
diff changeset
   208
conf_cratesPerRound = 5
11720
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
   209
12836
8610462e3d33 Remove 2 unused number tags in Construction Mode GUI
Wuzzy <Wuzzy2@mail.ru>
parents: 12682
diff changeset
   210
function DrawClanPowerTag()
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   211
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   212
	zoomL = 1.3
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   213
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   214
	xOffset = 40
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   215
12836
8610462e3d33 Remove 2 unused number tags in Construction Mode GUI
Wuzzy <Wuzzy2@mail.ru>
parents: 12682
diff changeset
   216
	zoomL = 1.1
8610462e3d33 Remove 2 unused number tags in Construction Mode GUI
Wuzzy <Wuzzy2@mail.ru>
parents: 12682
diff changeset
   217
	xOffset = 45
8610462e3d33 Remove 2 unused number tags in Construction Mode GUI
Wuzzy <Wuzzy2@mail.ru>
parents: 12682
diff changeset
   218
	yOffset = 70
8610462e3d33 Remove 2 unused number tags in Construction Mode GUI
Wuzzy <Wuzzy2@mail.ru>
parents: 12682
diff changeset
   219
	tCol = 0x00ff00ff
8610462e3d33 Remove 2 unused number tags in Construction Mode GUI
Wuzzy <Wuzzy2@mail.ru>
parents: 12682
diff changeset
   220
	tValue = clanPower[GetHogClan(CurrentHedgehog)]
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   221
12836
8610462e3d33 Remove 2 unused number tags in Construction Mode GUI
Wuzzy <Wuzzy2@mail.ru>
parents: 12682
diff changeset
   222
	DeleteVisualGear(clanPowerTag)
8610462e3d33 Remove 2 unused number tags in Construction Mode GUI
Wuzzy <Wuzzy2@mail.ru>
parents: 12682
diff changeset
   223
	clanPowerTag = AddVisualGear(0, 0, vgtHealthTag, 0, false)
8610462e3d33 Remove 2 unused number tags in Construction Mode GUI
Wuzzy <Wuzzy2@mail.ru>
parents: 12682
diff changeset
   224
	g1, g2, g3, g4, g5, g6, g7, g8, g9, g10 = GetVisualGearValues(clanPowerTag)
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   225
	SetVisualGearValues	(
12836
8610462e3d33 Remove 2 unused number tags in Construction Mode GUI
Wuzzy <Wuzzy2@mail.ru>
parents: 12682
diff changeset
   226
				clanPowerTag, 		--id
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   227
				-div(ScreenWidth,2) + xOffset,	--xoffset
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   228
				ScreenHeight - yOffset, --yoffset
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   229
				0, 			--dx
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   230
				0, 			--dy
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   231
				zoomL, 			--zoom
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   232
				1, 			--~= 0 means align to screen
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   233
				g7, 			--frameticks
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   234
				tValue, 		--value
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   235
				240000, 		--timer
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   236
				tCol		--GetClanColor( GetHogClan(CurrentHedgehog) )
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   237
				)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   238
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   239
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   240
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   241
function onScreenResize()
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   242
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   243
	-- redraw Tags so that their screen locations are updated
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   244
	if (CurrentHedgehog ~= nil) then
12836
8610462e3d33 Remove 2 unused number tags in Construction Mode GUI
Wuzzy <Wuzzy2@mail.ru>
parents: 12682
diff changeset
   245
		DrawClanPowerTag()
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   246
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   247
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   248
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   249
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   250
function XYisInRect(px, py, psx, psy, pex, pey)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   251
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   252
	if (px > psx) and (px < pex) and (py > psy) and (py < pey) then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   253
		return(true)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   254
	else
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   255
		return(false)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   256
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   257
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   258
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   259
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   260
function AddWall(zXMin,zYMin, zWidth, zHeight, zCol)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   261
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   262
	table.insert(wX, zXMin)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   263
	table.insert(wY, zYMin)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   264
	table.insert(wWidth, zWidth)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   265
	table.insert(wHeight, zHeight)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   266
	table.insert(wCol, zCol)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   267
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   268
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   269
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   270
function BorderSpark(zXMin,zYMin, zWidth, zHeight, bCol)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   271
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   272
	eX = zXMin + GetRandom(zWidth+10)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   273
	eY = zYMin + GetRandom(zHeight+10)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   274
	tempE = AddVisualGear(eX, eY, vgtDust, 0, false)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   275
	if tempE ~= 0 then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   276
		g1, g2, g3, g4, g5, g6, g7, g8, g9, g10 = GetVisualGearValues(tempE)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   277
		SetVisualGearValues(tempE, eX, eY, g3, g4, g5, g6, g7, 1, g9, bCol )
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   278
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   279
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   280
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   281
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   282
function HandleBorderEffects()
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   283
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   284
	effectTimer = effectTimer + 1
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   285
	if effectTimer > 15 then
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   286
		effectTimer = 1
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   287
		for i = 1, #wX do
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   288
			BorderSpark(wX[i],wY[i],wWidth[i],wHeight[i], wCol[i])
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   289
		end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   290
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   291
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   292
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   293
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   294
----
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   295
-- old reflecting stuff from like 3 years ago lol
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   296
---
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   297
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   298
function gearCanBeDeflected(gear)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   299
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   300
	if 	(GetGearType(gear) == gtShell) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   301
		(GetGearType(gear) == gtGrenade) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   302
		(GetGearType(gear) == gtAirBomb) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   303
		(GetGearType(gear) == gtClusterBomb) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   304
		(GetGearType(gear) == gtCluster) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   305
		(GetGearType(gear) == gtGasBomb) or
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   306
		(GetGearType(gear) == gtMine) or
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   307
		(GetGearType(gear) == gtMortar) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   308
		(GetGearType(gear) == gtHellishBomb) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   309
		(GetGearType(gear) == gtWatermelon) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   310
		(GetGearType(gear) == gtMelonPiece)	or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   311
		(GetGearType(gear) == gtEgg) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   312
		(GetGearType(gear) == gtDrill) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   313
		(GetGearType(gear) == gtBall) or
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   314
		(GetGearType(gear) == gtExplosives) or
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   315
			(GetGearType(gear) == gtFlame) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   316
			(GetGearType(gear) == gtPortal) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   317
			(GetGearType(gear) == gtDynamite) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   318
			(GetGearType(gear) == gtSMine) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   319
		(GetGearType(gear) == gtKnife) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   320
		(GetGearType(gear) == gtJetpack) or -- test this and birdy plz
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   321
		(GetGearType(gear) == gtBirdy) or -- test this and birdy plz
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   322
		(GetGearType(gear) == gtSnowball) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   323
		(GetGearType(gear) == gtMolotov)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   324
	then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   325
		return(true)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   326
	else
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   327
		return(false)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   328
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   329
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   330
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   331
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   332
function getThreatDamage(gear)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   333
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   334
	--- damage amounts for weapons
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   335
	if 	(GetGearType(gear) == gtGrenade) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   336
		(GetGearType(gear) == gtClusterBomb) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   337
		(GetGearType(gear) == gtGasBomb) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   338
		(GetGearType(gear) == gtKnife) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   339
		(GetGearType(gear) == gtEgg) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   340
		(GetGearType(gear) == gtMolotov) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   341
		(GetGearType(gear) == gtHellishBomb) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   342
		(GetGearType(gear) == gtWatermelon) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   343
		(GetGearType(gear) == gtSMine)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   344
	then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   345
		dmg = 30
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   346
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   347
	elseif (GetGearType(gear) == gtMelonPiece) then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   348
		dmg = 40
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   349
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   350
	elseif (GetGearType(gear) == gtAirBomb) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   351
			(GetGearType(gear) == gtDrill) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   352
			(GetGearType(gear) == gtMine) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   353
			(GetGearType(gear) == gtCluster) then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   354
		dmg = 20
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   355
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   356
	elseif (GetGearType(gear) == gtFlame) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   357
			(GetGearType(gear) == gtPortal) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   358
			(GetGearType(gear) == gtDynamite)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   359
	then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   360
		dmg = 0
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   361
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   362
	elseif (GetGearType(gear) == gtBall) then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   363
		dmg = 1
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   364
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   365
	else	--normal shell, snowball etc
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   366
		dmg = 65
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   367
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   368
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   369
	return(dmg)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   370
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   371
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   372
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   373
function setGearReflectionValues(gear)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   374
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   375
	dmg = getThreatDamage(gear)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   376
	setGearValue(gear,"damage",dmg)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   377
	setGearValue(gear,"deflects",0)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   378
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   379
	if (CurrentHedgehog ~= nil) then
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   380
		setGearValue(gear,"owner",GetHogClan(CurrentHedgehog)) -- NEW NEEDS CHANGE?
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   381
	else
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   382
		setGearValue(gear,"owner",10)
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   383
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   384
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   385
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   386
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   387
function AddStruc(pX,pY, pType, pClan)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   388
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   389
	sUID = sUID + 1
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   390
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   391
	tempG = AddGear(0, 0, gtTarget, 0, 0, 0, 0)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   392
	SetGearPosition(tempG, pX, pY)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   393
	setGearValue(tempG, "sUID", sUID)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   394
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   395
	tempCirc = AddVisualGear(0,0,vgtCircle,0,true)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   396
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   397
	SetVisualGearValues(tempCirc, 0, 0, 100, 255, 1, 100, 0, 500, 1, 0xFFFFFF00)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   398
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   399
	table.insert(strucID, sUID)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   400
	table.insert(strucType, pType)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   401
	table.insert(strucGear,tempG)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   402
	table.insert(strucClan,pClan)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   403
	table.insert(strucCost,2)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   404
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   405
	frameID = 0
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   406
	visualSprite = sprTarget
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   407
	madness = AddVisualGear(GetX(tempG), GetY(tempG), vgtStraightShot, 1, true,1)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   408
	g1, g2, g3, g4, g5, g6, g7, g8, g9, g10 = GetVisualGearValues(madness)	--g9
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   409
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   410
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   411
	if pType == loc("Reflector Shield") then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   412
		table.insert(strucHealth,255)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   413
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   414
	else
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   415
		table.insert(strucHealth,1)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   416
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   417
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   418
	table.insert(strucCirc,tempCirc)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   419
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   420
	table.insert(strucCircType, 1)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   421
	if pType == loc("Bio-Filter") then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   422
		table.insert(strucCircCol,colorRed)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   423
		table.insert(strucCircRadius,1000)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   424
		frameID = 7
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   425
	elseif pType == loc("Healing Station") then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   426
		table.insert(strucCircCol,0xFF00FF00)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   427
		table.insert(strucCircRadius,500)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   428
		frameID = 3
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   429
	elseif pType == loc("Respawner") then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   430
		table.insert(strucCircCol,0xFF00FF00)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   431
		table.insert(strucCircRadius,75)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   432
		runOnHogs(EnableHogResurrectionForThisClan)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   433
		frameID = 1
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   434
	elseif pType == loc("Teleportation Node") then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   435
		table.insert(strucCircCol,0x0000FFFF)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   436
		table.insert(strucCircRadius,350)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   437
		frameID = 6
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   438
	elseif pType == loc("Generator") then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   439
		table.insert(strucCircCol,0xFFFF00FF)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   440
		table.insert(strucCircRadius,75)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   441
		setGearValue(tempG, "power", 0)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   442
		frameID = 2
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   443
	elseif pType == loc("Support Station") then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   444
		table.insert(strucCircCol,0xFFFF00FF)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   445
		table.insert(strucCircRadius,500)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   446
		frameID = 4
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   447
	elseif pType == loc("Construction Station") then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   448
		table.insert(strucCircCol,0xFFFFFFFF)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   449
		table.insert(strucCircRadius,500)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   450
		frameID = 8
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   451
	elseif pType == loc("Reflector Shield") then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   452
		table.insert(strucCircCol,0xffae00ff)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   453
		table.insert(strucCircRadius,750)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   454
		frameID = 9
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   455
	elseif pType == loc("Weapon Filter") then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   456
		table.insert(strucCircCol,0xa800ffff)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   457
		table.insert(strucCircRadius,750)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   458
		frameID = 5
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   459
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   460
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   461
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   462
	SetVisualGearValues(madness, g1, g2, 0, 0, g5, frameID, g7, visualSprite, g9, g10 )
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   463
	SetState(tempG, bor(GetState(tempG),gstInvisible) )
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   464
	table.insert(strucAltDisplay, madness)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   465
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   466
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   467
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   468
-- this is basically onStructureDelete
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   469
-- we may need to expand it for non-gear structures later
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   470
function CheckGearForStructureLink(gear)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   471
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   472
	respawnerDestroyed = false
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   473
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   474
	for i = 1, #strucID do
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   475
		if strucID[i] == getGearValue(gear,"sUID") then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   476
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   477
			if strucType[i] == loc("Respawner") then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   478
				respawnerDestroyed = true
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   479
			end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   480
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   481
			table.remove(strucID,i)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   482
			table.remove(strucGear,i)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   483
			table.remove(strucClan,i)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   484
			table.remove(strucType,i)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   485
			table.remove(strucCost,i)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   486
			table.remove(strucHealth,i)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   487
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   488
			DeleteVisualGear(strucCirc[i])
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   489
			table.remove(strucCirc,i)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   490
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   491
			table.remove(strucCircCol,i)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   492
			table.remove(strucCircRadius,i)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   493
			table.remove(strucCircType,i)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   494
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   495
			if strucAltDisplay[i] ~= 1 then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   496
				DeleteVisualGear(strucAltDisplay[i])
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   497
			end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   498
			table.remove(strucAltDisplay,i)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   499
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   500
		end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   501
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   502
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   503
	if respawnerDestroyed == true then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   504
		runOnHogs(RecalibrateRespawn)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   505
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   506
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   507
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   508
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   509
-- called when we add a new respawner
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   510
function EnableHogResurrectionForThisClan(gear)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   511
	if GetHogClan(gear) == GetHogClan(CurrentHedgehog) then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   512
		SetEffect(gear, heResurrectable, 1)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   513
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   514
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   515
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   516
-- this is called when a respawner blows up
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   517
function RecalibrateRespawn(gear)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   518
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   519
	respawnerList = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   520
	for i = 1, #strucID do
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   521
		if (strucType[i] == loc("Respawner")) and (strucClan[i] == GetHogClan(gear)) then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   522
			table.insert(respawnerList, i)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   523
		end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   524
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   525
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   526
	if #respawnerList >= 1 then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   527
		SetEffect(gear, heResurrectable, 1)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   528
	else
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   529
		SetEffect(gear, heResurrectable, 0)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   530
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   531
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   532
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   533
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   534
--resposition dead hogs at a respawner if they own one
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   535
function FindRespawner(gear)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   536
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   537
	respawnerList = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   538
	for i = 1, #strucID do
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   539
		if (strucType[i] == loc("Respawner")) and (strucClan[i] == GetHogClan(gear)) then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   540
			table.insert(respawnerList, i)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   541
		end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   542
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   543
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   544
	if #respawnerList >= 1 then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   545
		i = GetRandom(#respawnerList)+1
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   546
		SetGearPosition(gear,GetX(strucGear[respawnerList[i]]),GetY(strucGear[respawnerList[i]])-25)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   547
		AddVisualGear(GetX(gear), GetY(gear), vgtExplosion, 0, false)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   548
	else	-- (this should never happen, but just in case)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   549
		SetEffect(gear, heResurrectable, 0)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   550
		DeleteGear(gear)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   551
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   552
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   553
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   554
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   555
function onGearResurrect(gear)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   556
	AddVisualGear(GetX(gear), GetY(gear), vgtExplosion, 0, false)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   557
	FindRespawner(gear)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   558
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   559
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   560
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   561
function CheckTeleport(gear, tX, tY)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   562
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   563
	teleportOriginSuccessful = false
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   564
	teleportDestinationSuccessful = false
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   565
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   566
	for i = 1, #strucID do
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   567
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   568
		if (strucType[i] == loc("Teleportation Node")) and (strucClan[i] == GetHogClan(CurrentHedgehog)) then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   569
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   570
			dist = GetDistFromGearToXY(CurrentHedgehog,GetX(strucGear[i]), GetY(strucGear[i]))
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   571
			if strucCircType[i] == 0 then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   572
				NR = strucCircRadius[i]
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   573
			else
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   574
				NR = (48/100*strucCircRadius[i])/2
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   575
			end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   576
			if dist <= NR*NR then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   577
				teleportOriginSuccessful = true
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   578
			end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   579
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   580
			dist = GetDistFromXYtoXY(tX,tY,GetX(strucGear[i]), GetY(strucGear[i]))
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   581
			if strucCircType[i] == 0 then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   582
				NR = strucCircRadius[i]
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   583
			else
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   584
				NR = (48/100*strucCircRadius[i])/2
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   585
			end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   586
			if dist <= NR*NR then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   587
				teleportDestinationSuccessful = true
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   588
			end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   589
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   590
		end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   591
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   592
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   593
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   594
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   595
	if ((teleportDestinationSuccessful == false) or (teleportOriginSuccessful == false)) then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   596
		AddCaption(loc("Teleport Unsuccessful. Please teleport within a clan teleporter's sphere of influence."))
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   597
		SetGearTarget(gear, GetX(CurrentHedgehog), GetY(CurrentHedgehog))
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   598
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   599
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   600
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   601
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   602
--Check for proximity of gears to structures, and make structures behave accordingly
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   603
function CheckProximity(gear)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   604
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   605
	dist = GetDistFromGearToXY(gear, GetX(strucGear[tempID]), GetY(strucGear[tempID]))
12682
b7fd7ab8ddf9 Construction Mode: Fix Lua error spam when using time box with filters on map
Wuzzy <almikes@aol.com>
parents: 12397
diff changeset
   606
	if not dist then
b7fd7ab8ddf9 Construction Mode: Fix Lua error spam when using time box with filters on map
Wuzzy <almikes@aol.com>
parents: 12397
diff changeset
   607
		return
b7fd7ab8ddf9 Construction Mode: Fix Lua error spam when using time box with filters on map
Wuzzy <almikes@aol.com>
parents: 12397
diff changeset
   608
	end
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   609
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   610
	-- calculate my real radius if I am an aura
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   611
	if strucCircType[tempID] == 0 then
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   612
		NR = strucCircRadius[tempID]
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   613
	else
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   614
		NR = (48/100*strucCircRadius[tempID])/2
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   615
	end
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   616
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   617
	-- we're in business
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   618
	if dist <= NR*NR then
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   619
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   620
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   621
		-- heal clan hogs
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   622
		if strucType[tempID] == loc("Healing Station") then
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   623
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   624
			if GetGearType(gear) == gtHedgehog then
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   625
				if GetHogClan(gear) == strucClan[tempID] then
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   626
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   627
					hogLife = GetHealth(gear) + 1
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   628
					if hogLife > 150 then
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   629
						hogLife = 150
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   630
					end
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   631
					SetHealth(gear, hogLife)
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   632
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   633
					-- change this to the med kit sprite health ++++s later
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   634
					tempE = AddVisualGear(GetX(strucGear[tempID]), GetY(strucGear[tempID]), vgtSmoke, 0, true)
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   635
					g1, g2, g3, g4, g5, g6, g7, g8, g9, g10 = GetVisualGearValues(tempE)
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   636
					SetVisualGearValues(tempE, g1, g2, g3, g4, g5, g6, g7, g8, g9, colorGreen )
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   637
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   638
				end
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   639
			end
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   640
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   641
		-- explode enemy clan hogs
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   642
		elseif strucType[tempID] == loc("Bio-Filter") then
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   643
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   644
			if GetGearType(gear) == gtHedgehog then
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   645
				if (GetHogClan(gear) ~= strucClan[tempID]) and (GetHealth(gear) > 0) then
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   646
					AddGear(GetX(gear), GetY(gear), gtGrenade, 0, 0, 0, 1)
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   647
				end
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   648
			end
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   649
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   650
		-- were those weapons in your pocket, or were you just happy to see me?
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   651
		elseif strucType[tempID] == loc("Weapon Filter") then
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   652
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   653
			if GetGearType(gear) == gtHedgehog then
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   654
				if (GetHogClan(gear) ~= strucClan[tempID]) then
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   655
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   656
					for wpnIndex = 1, #atkArray do
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   657
						AddAmmo(gear, atkArray[wpnIndex][1], 0)
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   658
					end
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   659
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   660
					for wpnIndex = 1, #utilArray do
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   661
						AddAmmo(gear, utilArray[wpnIndex][1], 0)
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   662
					end
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   663
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   664
					AddAmmo(gear, amAirAttack, 100)
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   665
					AddAmmo(gear, amSwitch, 100)
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   666
					AddAmmo(gear, amSkip, 100)
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   667
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   668
				end
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   669
			end
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   670
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   671
		-- BOUNCE! POGO! POGO! POGO! POGO!
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   672
		elseif strucType[tempID] == loc("Reflector Shield") then
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   673
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   674
			-- add check for whose projectile it is
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   675
			if gearCanBeDeflected(gear) == true then
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   676
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   677
				gOwner = getGearValue(gear,"owner")
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   678
				gDeflects = getGearValue(gear,"deflects")
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   679
				gDmg = getGearValue(gear,"damage")
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   680
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   681
				if gDeflects >= 3 then
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   682
					DeleteGear(gear)
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   683
					AddVisualGear(GetX(gear), GetY(gear), vgtSmoke, 0, false)
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   684
					PlaySound(sndVaporize)
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   685
				elseif gOwner ~= strucClan[tempID] then
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   686
					--whether to vaporize gears or bounce them
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   687
					if gDmg ~= 0 then
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   688
						dx, dy = GetGearVelocity(gear)
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   689
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   690
						if (dx == 0) and (dy == 0) then
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   691
							-- static mine, explosive, etc encountered
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   692
							-- do nothing
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   693
							else
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   694
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   695
							--let's bounce something!
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   696
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   697
							dx = dx*(-1)
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   698
							dy = dy*(-1)
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   699
							SetGearVelocity(gear,dx,dy)
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   700
							setGearValue(gear,"deflects",(gDeflects+1))
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   701
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   702
							AddVisualGear(GetX(gear), GetY(gear), vgtExplosion, 0, false)
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   703
							PlaySound(sndExplosion)
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   704
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   705
							strucHealth[tempID] = strucHealth[tempID] - gDmg
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   706
							strucCircCol[tempID] = strucCircCol[tempID] - gDmg
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   707
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   708
							if strucHealth[tempID] <= 0 then
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   709
								AddVisualGear(GetX(strucGear[tempID]), GetY(strucGear[tempID]), vgtExplosion, 0, false)
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   710
								DeleteGear(strucGear[tempID])
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   711
								PlaySound(sndExplosion)
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   712
							end
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   713
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   714
						end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   715
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   716
					else
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   717
						DeleteGear(gear)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   718
						AddVisualGear(GetX(gear), GetY(gear), vgtSmoke, 0, false)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   719
						PlaySound(sndVaporize)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   720
					end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   721
				end
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   722
			end
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   723
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   724
		--mark as within range of a teleporter node
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   725
		elseif strucType[tempID] == loc("Teleportation Node") then
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   726
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   727
			if GetGearType(gear) == gtHedgehog then
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   728
				if GetHogClan(gear) == strucClan[tempID] then
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   729
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   730
					for i = 1, #sProx do
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   731
						if sProx[i][1] == loc("Teleportation Mode") then
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   732
							sProx[i][2] = true
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   733
						end
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   734
					end
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   735
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   736
				end
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   737
			end
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   738
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   739
		-- mark as within range of construction station
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   740
		-- and thus allow menu access to placement modes
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   741
		-- for girders, mines, sticky mines and barrels
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   742
		elseif strucType[tempID] == loc("Construction Station") then
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   743
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   744
			if GetGearType(gear) == gtHedgehog then
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   745
				if GetHogClan(gear) == strucClan[tempID] then
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   746
					tempE = AddVisualGear(GetX(strucGear[tempID]), GetY(strucGear[tempID]), vgtSmoke, 0, true)
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   747
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   748
					for i = 1, #sProx do
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   749
						if ((sProx[i][1] == loc("Girder Placement Mode"))
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   750
						or (sProx[i][1] == loc("Rubber Placement Mode"))
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   751
						or (sProx[i][1] == loc("Mine Placement Mode"))
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   752
						or (sProx[i][1] == loc("Sticky Mine Placement Mode"))
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   753
						or (sProx[i][1] == loc("Barrel Placement Mode")))
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   754
						then
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   755
							sProx[i][2] = true
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   756
						end
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   757
					end
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   758
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   759
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   760
				end
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   761
			end
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   762
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   763
		-- mark as within stupport station range
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   764
		-- and thus allow menu access to placement modes
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   765
		-- for weapon, utility, and med crates
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   766
		elseif strucType[tempID] == loc("Support Station") then
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   767
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   768
			if GetGearType(gear) == gtHedgehog then
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   769
				if GetHogClan(gear) == strucClan[tempID] then
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   770
					tempE = AddVisualGear(GetX(strucGear[tempID]), GetY(strucGear[tempID]), vgtSmoke, 0, true)
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   771
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   772
					for i = 1, #sProx do
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   773
						if ((sProx[i][1] == loc("Health Crate Placement Mode"))
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   774
						or (sProx[i][1] == loc("Weapon Crate Placement Mode"))
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   775
						or (sProx[i][1] == loc("Utility Crate Placement Mode")))
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   776
						then
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   777
							sProx[i][2] = true
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   778
						end
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   779
					end
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   780
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   781
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   782
				end
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   783
			end
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   784
		end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   785
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
   786
	end
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   787
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   788
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   789
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   790
-- used to check if we need to run through all hogs or just currenthedgehog
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   791
function isAStructureThatAppliesToMultipleGears(pID)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   792
	if 	strucType[pID] == loc("Healing Station") or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   793
		strucType[pID] == loc("Reflector Shield") or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   794
		strucType[pID] == loc("Weapon Filter") or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   795
		strucType[pID] == loc("Bio-Filter")
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   796
	then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   797
		return(true)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   798
	else
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   799
		return(false)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   800
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   801
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   802
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   803
function HandleStructures()
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   804
11724
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   805
	if GameTime % 100 == 0 then
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   806
		for i = 1, #sProx do
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   807
			sProx[i][2] = false
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   808
11724
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   809
			if sProx[i][1] == loc("Structure Placement Mode") then
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   810
				sProx[i][2] = true
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   811
			end
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   812
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   813
		end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   814
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   815
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   816
	for i = 1, #strucID do
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   817
11723
456f4e9f9dce Construction Mode: Update structure overlay each tick, thus falling smoothly
Wuzzy <almikes@aol.com>
parents: 11722
diff changeset
   818
		SetVisualGearValues(strucCirc[i], GetX(strucGear[i]), GetY(strucGear[i]), nil, nil, nil, nil, nil, strucCircRadius[i], nil, strucCircCol[i])
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   819
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   820
		tempID = i
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   821
11723
456f4e9f9dce Construction Mode: Update structure overlay each tick, thus falling smoothly
Wuzzy <almikes@aol.com>
parents: 11722
diff changeset
   822
		SetVisualGearValues(strucAltDisplay[i], GetX(strucGear[i]), GetY(strucGear[i]), 0, 0, nil, nil, 800000, sprTarget)
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   823
11723
456f4e9f9dce Construction Mode: Update structure overlay each tick, thus falling smoothly
Wuzzy <almikes@aol.com>
parents: 11722
diff changeset
   824
		if GameTime % 100 == 0 then
456f4e9f9dce Construction Mode: Update structure overlay each tick, thus falling smoothly
Wuzzy <almikes@aol.com>
parents: 11722
diff changeset
   825
			-- Check For proximity of stuff to our structures
456f4e9f9dce Construction Mode: Update structure overlay each tick, thus falling smoothly
Wuzzy <almikes@aol.com>
parents: 11722
diff changeset
   826
			if isAStructureThatAppliesToMultipleGears(i) then
456f4e9f9dce Construction Mode: Update structure overlay each tick, thus falling smoothly
Wuzzy <almikes@aol.com>
parents: 11722
diff changeset
   827
				runOnGears(CheckProximity)
456f4e9f9dce Construction Mode: Update structure overlay each tick, thus falling smoothly
Wuzzy <almikes@aol.com>
parents: 11722
diff changeset
   828
			else -- only check prox on CurrentHedgehog
456f4e9f9dce Construction Mode: Update structure overlay each tick, thus falling smoothly
Wuzzy <almikes@aol.com>
parents: 11722
diff changeset
   829
				if CurrentHedgehog ~= nil then
456f4e9f9dce Construction Mode: Update structure overlay each tick, thus falling smoothly
Wuzzy <almikes@aol.com>
parents: 11722
diff changeset
   830
					CheckProximity(CurrentHedgehog)
456f4e9f9dce Construction Mode: Update structure overlay each tick, thus falling smoothly
Wuzzy <almikes@aol.com>
parents: 11722
diff changeset
   831
				end
456f4e9f9dce Construction Mode: Update structure overlay each tick, thus falling smoothly
Wuzzy <almikes@aol.com>
parents: 11722
diff changeset
   832
			end
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   833
11723
456f4e9f9dce Construction Mode: Update structure overlay each tick, thus falling smoothly
Wuzzy <almikes@aol.com>
parents: 11722
diff changeset
   834
			if strucType[i] == loc("Generator") then
11732
e28b534188d3 update construction mode in-file version info
sheepluva
parents: 11730
diff changeset
   835
11723
456f4e9f9dce Construction Mode: Update structure overlay each tick, thus falling smoothly
Wuzzy <almikes@aol.com>
parents: 11722
diff changeset
   836
				for z = 0, ClansCount-1 do
456f4e9f9dce Construction Mode: Update structure overlay each tick, thus falling smoothly
Wuzzy <almikes@aol.com>
parents: 11722
diff changeset
   837
					if z == strucClan[i] then
456f4e9f9dce Construction Mode: Update structure overlay each tick, thus falling smoothly
Wuzzy <almikes@aol.com>
parents: 11722
diff changeset
   838
						increaseGearValue(strucGear[i],"power")
456f4e9f9dce Construction Mode: Update structure overlay each tick, thus falling smoothly
Wuzzy <almikes@aol.com>
parents: 11722
diff changeset
   839
						if getGearValue(strucGear[i],"power") == 10 then
456f4e9f9dce Construction Mode: Update structure overlay each tick, thus falling smoothly
Wuzzy <almikes@aol.com>
parents: 11722
diff changeset
   840
							setGearValue(strucGear[i],"power",0)
456f4e9f9dce Construction Mode: Update structure overlay each tick, thus falling smoothly
Wuzzy <almikes@aol.com>
parents: 11722
diff changeset
   841
							clanPower[z] = clanPower[z] + 1
11728
373150be0356 Construction Mode: Sanity-check numbers from script parameter
Wuzzy <almikes@aol.com>
parents: 11727
diff changeset
   842
							if conf_maxEnergy ~= "inf" and clanPower[z] > conf_maxEnergy then
11723
456f4e9f9dce Construction Mode: Update structure overlay each tick, thus falling smoothly
Wuzzy <almikes@aol.com>
parents: 11722
diff changeset
   843
								clanPower[z] = conf_maxEnergy
456f4e9f9dce Construction Mode: Update structure overlay each tick, thus falling smoothly
Wuzzy <almikes@aol.com>
parents: 11722
diff changeset
   844
							end
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   845
						end
11732
e28b534188d3 update construction mode in-file version info
sheepluva
parents: 11730
diff changeset
   846
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   847
					end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   848
				end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   849
			end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   850
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   851
		end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   852
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   853
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   854
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   855
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   856
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   857
	-- this is kinda messy and gross (even more than usual), fix it up at some point
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   858
	-- it just assumes that if you have access to girders, it works for rubbers
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   859
	-- as that is what the struc implemenation means due to construction station
11727
1c09b8d050ce Construction Mode: Fix timer issues
Wuzzy <almikes@aol.com>
parents: 11726
diff changeset
   860
	if GameTime % 100 == 0 and CurrentHedgehog ~= nil then
11724
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   861
		anyUIProx = false
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   862
		for i = 1, #sProx do
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   863
11724
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   864
			if sProx[i][1] == loc("Girder Placement Mode") then
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   865
				if sProx[i][2] == true then
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   866
					AddAmmo(CurrentHedgehog, amGirder, 100)
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   867
					AddAmmo(CurrentHedgehog, amRubber, 100)
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   868
					AddAmmo(CurrentHedgehog, amDrillStrike, 100)
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   869
				else
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   870
					AddAmmo(CurrentHedgehog, amGirder, 0)
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   871
					AddAmmo(CurrentHedgehog, amRubber, 0)
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   872
					AddAmmo(CurrentHedgehog, amDrillStrike, 0) -- new
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   873
				end
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   874
			elseif sProx[i][1] == loc("Teleportation Mode") then
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   875
				if sProx[i][2] == true then
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   876
					AddAmmo(CurrentHedgehog, amTeleport, 100)
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   877
				else
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   878
					AddAmmo(CurrentHedgehog, amTeleport, 0)
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   879
				end
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   880
			elseif sProx[i][1] == loc("Weapon Crate Placement Mode") then
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   881
				-- this is new stuff
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   882
				if sProx[i][2] == true then
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   883
					AddAmmo(CurrentHedgehog, amNapalm, 100)
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   884
				else
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   885
					AddAmmo(CurrentHedgehog, amNapalm, 0)
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   886
				end
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   887
			end
11724
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   888
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   889
			if (sProx[i][2] == true) then
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   890
				anyUIProx = true
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   891
			end
11724
cf4d61123440 Construction Mode: Fix construction/support station
Wuzzy <almikes@aol.com>
parents: 11723
diff changeset
   892
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   893
		end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   894
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   895
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   896
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   897
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   898
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   899
function checkForSpecialWeapons()
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   900
11942
abdb24f0c2d9 Change descriptions for special Construction Mode tools
Wuzzy <almikes@aol.com>
parents: 11881
diff changeset
   901
	if (GetCurAmmoType() == amDrillStrike) then
abdb24f0c2d9 Change descriptions for special Construction Mode tools
Wuzzy <almikes@aol.com>
parents: 11881
diff changeset
   902
		AddCaption(loc("Object Placer"),GetClanColor(GetHogClan(CurrentHedgehog)),capgrpAmmoinfo)
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   903
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   904
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   905
	lastWep = GetCurAmmoType()
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   906
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   907
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   908
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   909
----------------------------------------------------------
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   910
-- EXCERPTS OF ADAPTED HEDGE_EDITOR CODE FOLLOWS
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   911
----------------------------------------------------------
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   912
-- experimental crap
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   913
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   914
local landType = 0
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   915
-----------------------------------------
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   916
-- tracking vars for save slash load purposes
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   917
-----------------------------------------
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   918
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   919
local hhs = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   920
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   921
---------------------------------
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   922
-- crates are made of this stuff
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   923
---------------------------------
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   924
placeholder = 20
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   925
 atkArray =
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   926
				{
11981
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   927
				{amBazooka, 	"amBazooka",		0, 2*placeholder},
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   928
				--{amBee, 		"amBee",			0, loc("Homing Bee"), 		4*placeholder},
11981
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   929
				{amMortar, 		"amMortar",			0, 1*placeholder},
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   930
				{amDrill, 		"amDrill",			0, 3*placeholder},
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   931
				{amSnowball, 	"amSnowball",		0, 3*placeholder},
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   932
11981
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   933
				{amGrenade,		"amGrenade",		0, 2*placeholder},
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   934
				{amClusterBomb,	"amClusterBomb",	0, 3*placeholder},
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   935
				{amWatermelon, 	"amWatermelon",		0, 25*placeholder},
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   936
				{amHellishBomb,	"amHellishBomb",	0, 25*placeholder},
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   937
				{amMolotov, 	"amMolotov",		0, 3*placeholder},
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   938
				{amGasBomb, 	"amGasBomb",		0, 3*placeholder},
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   939
11981
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   940
				{amShotgun,		"amShotgun",		0, 2*placeholder},
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   941
				{amDEagle,		"amDEagle",			0, 2*placeholder},
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   942
				{amSniperRifle,	"amSniperRifle",	0, 3*placeholder},
11709
cea5418c1af6 Construction Mode: Make weapon names match en.txt
Wuzzy <almikes@aol.com>
parents: 11708
diff changeset
   943
				--{amSineGun, 	"amSineGun",		0, loc("Sine Gun"), 			6*placeholder},
11981
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   944
				{amFlamethrower,"amFlamethrower",	0, 4*placeholder},
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   945
				{amIceGun, 		"amIceGun",			0, 15*placeholder},
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   946
11981
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   947
				{amFirePunch, 	"amFirePunch",		0, 3*placeholder},
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   948
				{amWhip,		"amWhip",			0, 1*placeholder},
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   949
				{amBaseballBat, "amBaseballBat",	0, 7*placeholder},
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   950
				--{amKamikaze, 	"amKamikaze",		0, loc("Kamikaze"),			1*placeholder},
11981
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   951
				{amSeduction, 	"amSeduction",		0, 1*placeholder},
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   952
				{amHammer,		"amHammer",			0, 1*placeholder},
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   953
11981
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   954
				{amMine, 		"amMine",			0, 1*placeholder},
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   955
				{amDynamite, 	"amDynamite",		0, 9*placeholder},
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   956
				{amCake, 		"amCake",			0, 25*placeholder},
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   957
				{amBallgun, 	"amBallgun",		0, 40*placeholder},
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   958
				--{amRCPlane,		"amRCPlane",		0, loc("RC Plane"), 	25*placeholder},
11981
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   959
				{amSMine,		"amSMine",			0, 5*placeholder},
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   960
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   961
				--{amAirAttack,	"amAirAttack",		0, loc("Air Attack"), 		10*placeholder},
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   962
				--{amMineStrike,	"amMineStrike",		0, loc("Mine Strike"), 		15*placeholder},
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   963
				--{amNapalm, 		"amNapalm",			0, loc("Napalm"), 		15*placeholder},
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   964
				--{amPiano,		"amPiano",			0, loc("Piano Strike"), 	40*placeholder},
11759
1e2ec1be5041 Construction Mode: Reorder weapon and utility list to parrallel weapon menu order
Wuzzy <almikes@aol.com>
parents: 11758
diff changeset
   965
				--{amDrillStrike,	"amDrillStrike",	0, loc("Drill Strike"), 15*placeholder},
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   966
12397
414bcb4ca5ee Construction Mode: Move pick hammer and blow torch into weapon crates (game default)
Wuzzy <almikes@aol.com>
parents: 12336
diff changeset
   967
				{amPickHammer,		"amPickHammer",		0, 2*placeholder},
414bcb4ca5ee Construction Mode: Move pick hammer and blow torch into weapon crates (game default)
Wuzzy <almikes@aol.com>
parents: 12336
diff changeset
   968
				{amBlowTorch, 		"amBlowTorch",		0, 4*placeholder},
11981
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   969
				{amKnife,		"amKnife",			0, 2*placeholder},
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   970
12214
facbc3c6e166 Increase duck cost in Construction Mode to 40
Wuzzy <almikes@aol.com>
parents: 12207
diff changeset
   971
				{amBirdy,		"amBirdy",			0, 7*placeholder},
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   972
12214
facbc3c6e166 Increase duck cost in Construction Mode to 40
Wuzzy <almikes@aol.com>
parents: 12207
diff changeset
   973
				{amDuck,		"amDuck",			0, 2*placeholder}
12207
2de020695c20 Add rubber duck to (Balanced) Random Weapon, Construction Mode, HedgeEditor
Wuzzy <almikes@aol.com>
parents: 12093
diff changeset
   974
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   975
				}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   976
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   977
 utilArray =
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   978
				{
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   979
				--{amGirder, 			"amGirder",			0, loc("Girder"), 		4*placeholder},
11981
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   980
				{amLandGun,		"amLandGun",		0, 5*placeholder},
11709
cea5418c1af6 Construction Mode: Make weapon names match en.txt
Wuzzy <almikes@aol.com>
parents: 11708
diff changeset
   981
				--{amRubber, 			"amRubber",			0, loc("Rubber"), 	5*placeholder},
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   982
11981
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   983
				{amRope, 			"amRope",	0, 7*placeholder},
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   984
				{amParachute, 		"amParachute",		0, 2*placeholder},
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   985
				--{amTeleport,		"amTeleport",		0, loc("Teleport"), 		6*placeholder},
11981
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   986
				{amJetpack,			"amJetpack",	0, 8*placeholder},
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   987
				{amPortalGun,		"amPortalGun",		0, 15*placeholder},
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   988
11981
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   989
				{amInvulnerable,	"amInvulnerable",	0, 5*placeholder},
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   990
				{amLaserSight,		"amLaserSight",		0, 2*placeholder},
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   991
				{amVampiric,		"amVampiric",		0, 6*placeholder},
11759
1e2ec1be5041 Construction Mode: Reorder weapon and utility list to parrallel weapon menu order
Wuzzy <almikes@aol.com>
parents: 11758
diff changeset
   992
				--{amResurrector, 	"amResurrector",	0, loc("Resurrector"), 		8*placeholder},
1e2ec1be5041 Construction Mode: Reorder weapon and utility list to parrallel weapon menu order
Wuzzy <almikes@aol.com>
parents: 11758
diff changeset
   993
				--{amTardis, 			"amTardis",			0, loc("Time Box"), 			2*placeholder},
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   994
11759
1e2ec1be5041 Construction Mode: Reorder weapon and utility list to parrallel weapon menu order
Wuzzy <almikes@aol.com>
parents: 11758
diff changeset
   995
				--{amSwitch,			"amSwitch",			0, loc("Switch Hog"), 		4*placeholder}
11981
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   996
				{amLowGravity, 		"amLowGravity",		0, 4*placeholder},
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   997
				{amExtraDamage, 	"amExtraDamage",	0, 6*placeholder},
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
   998
				{amExtraTime,		"amExtraTime",		0, 8*placeholder}
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
   999
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1000
				}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1001
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1002
----------------------------
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1003
-- placement shite
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1004
----------------------------
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1005
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1006
local cGear = nil -- detects placement of girders and objects (using airattack)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1007
local curWep = amNothing
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1008
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1009
-- primary placement categories
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1010
local cIndex = 1 -- category index
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1011
local cat = 	{
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1012
				"Girder Placement Mode",
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1013
				"Rubber Placement Mode",
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1014
				"Mine Placement Mode",
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1015
				"Sticky Mine Placement Mode",
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1016
				"Barrel Placement Mode",
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1017
				"Weapon Crate Placement Mode",
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1018
				"Utility Crate Placement Mode",
11761
25c6188084c2 Construction Mode: Make weapon crate mode be initial selection in crate tool
Wuzzy <almikes@aol.com>
parents: 11760
diff changeset
  1019
				"Health Crate Placement Mode",
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1020
				"Structure Placement Mode"
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1021
				}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1022
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1023
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1024
 sProx = 	{
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1025
				{loc("Girder Placement Mode"),false},
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1026
				{loc("Rubber Placement Mode"),false},
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1027
				{loc("Mine Placement Mode"),false},
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1028
				{loc("Sticky Mine Placement Mode"),false},
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1029
				{loc("Barrel Placement Mode"),false},
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1030
				{loc("Weapon Crate Placement Mode"),false},
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1031
				{loc("Utility Crate Placement Mode"),false},
11761
25c6188084c2 Construction Mode: Make weapon crate mode be initial selection in crate tool
Wuzzy <almikes@aol.com>
parents: 11760
diff changeset
  1032
				{loc("Health Crate Placement Mode"),false},
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1033
				{loc("Structure Placement Mode"),false},
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1034
				{loc("Teleportation Mode"),false}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1035
				}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1036
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1037
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1038
local pMode = {}	-- pMode contains custom subsets of the main categories
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1039
local pIndex = 1
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1040
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1041
local CGR = 1 -- current girder rotation, we actually need this as HW remembers what rotation you last used
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1042
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1043
local placedX = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1044
local placedY = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1045
local placedSpec = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1046
local placedSuperSpec = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1047
local placedType = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1048
local placedCount = 0
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1049
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1050
local sCirc -- circle that appears around selected gears
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1051
local sGear = nil
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1052
local closestDist
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1053
local closestGear = nil
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1054
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1055
local tCirc = {} -- array of circles that appear around tagged gears
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1056
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1057
------------------------
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1058
-- SOME GENERAL METHODS
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1059
------------------------
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1060
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1061
function GetDistFromGearToXY(gear, g2X, g2Y)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1062
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1063
	g1X, g1Y = GetGearPosition(gear)
12682
b7fd7ab8ddf9 Construction Mode: Fix Lua error spam when using time box with filters on map
Wuzzy <almikes@aol.com>
parents: 12397
diff changeset
  1064
	if not g1X then
b7fd7ab8ddf9 Construction Mode: Fix Lua error spam when using time box with filters on map
Wuzzy <almikes@aol.com>
parents: 12397
diff changeset
  1065
		return nil
b7fd7ab8ddf9 Construction Mode: Fix Lua error spam when using time box with filters on map
Wuzzy <almikes@aol.com>
parents: 12397
diff changeset
  1066
	end
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1067
	q = g1X - g2X
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1068
	w = g1Y - g2Y
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1069
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1070
	return ( (q*q) + (w*w) )
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1071
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1072
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1073
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1074
function GetDistFromXYtoXY(a, b, c, d)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1075
	q = a - c
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1076
	w = b - d
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1077
	return ( (q*q) + (w*w) )
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1078
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1079
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1080
function SelectGear(gear)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1081
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1082
	d = GetDistFromGearToXY(gear, placedX[placedCount], placedY[placedCount])
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1083
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1084
	if d < closestDist then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1085
		closestDist = d
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1086
		closestGear = gear
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1087
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1088
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1089
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1090
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1091
-- essentially called when user clicks the mouse
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1092
-- with girders or an airattack
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1093
function PlaceObject(x,y)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1094
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1095
	placedX[placedCount] = x
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1096
	placedY[placedCount] = y
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1097
	placedType[placedCount] = cat[cIndex]
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1098
	placedSpec[placedCount] = pMode[pIndex]
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1099
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1100
	if (clanUsedExtraTime[GetHogClan(CurrentHedgehog)] == true) and (cat[cIndex] == "Utility Crate Placement Mode") and (utilArray[pIndex][1] == amExtraTime) then
12092
9fe7eb1f7df2 Construction Mode: Turn crate limit into a script parameter
Wuzzy <almikes@aol.com>
parents: 12091
diff changeset
  1101
		AddCaption(loc("You may only place 1 Extra Time crate per turn."),0xffba00ff,capgrpVolume)
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1102
		PlaySound(sndDenied)
12092
9fe7eb1f7df2 Construction Mode: Turn crate limit into a script parameter
Wuzzy <almikes@aol.com>
parents: 12091
diff changeset
  1103
	elseif (conf_cratesPerRound ~= "inf" and clanCratesSpawned[GetHogClan(CurrentHedgehog)] >= conf_cratesPerRound) and ( (cat[cIndex] == "Health Crate Placement Mode") or (cat[cIndex] == "Utility Crate Placement Mode") or (cat[cIndex] == "Weapon Crate Placement Mode")  )  then
9fe7eb1f7df2 Construction Mode: Turn crate limit into a script parameter
Wuzzy <almikes@aol.com>
parents: 12091
diff changeset
  1104
		AddCaption(string.format(loc("You may only place %d crates per round."), conf_cratesPerRound),0xffba00ff,capgrpVolume)
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1105
		PlaySound(sndDenied)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1106
	elseif (XYisInRect(x,y, clanBoundsSX[GetHogClan(CurrentHedgehog)],clanBoundsSY[GetHogClan(CurrentHedgehog)],clanBoundsEX[GetHogClan(CurrentHedgehog)],clanBoundsEY[GetHogClan(CurrentHedgehog)]) == true)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1107
	and (clanPower[GetHogClan(CurrentHedgehog)] >= placedExpense)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1108
	then
12091
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1109
		-- For checking if the actual placement succeeded
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1110
		local placed = false
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1111
		if cat[cIndex] == "Girder Placement Mode" then
12091
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1112
			placed = PlaceGirder(x, y, CGR)
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1113
			placedSpec[placedCount] = CGR
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1114
		elseif cat[cIndex] == "Rubber Placement Mode" then
12091
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1115
			placed = PlaceRubber(x, y, CGR)
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1116
			placedSpec[placedCount] = CGR
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1117
		elseif cat[cIndex] == "Health Crate Placement Mode" then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1118
			gear = SpawnHealthCrate(x,y)
12091
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1119
			if gear ~= nil then
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1120
				placed = true
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1121
				SetHealth(gear, pMode[pIndex])
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1122
				setGearValue(gear,"caseType","med")
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1123
				clanCratesSpawned[GetHogClan(CurrentHedgehog)] = clanCratesSpawned[GetHogClan(CurrentHedgehog)] +1
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1124
			end
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1125
		elseif cat[cIndex] == "Weapon Crate Placement Mode" then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1126
			gear = SpawnAmmoCrate(x, y, atkArray[pIndex][1])
12091
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1127
			if gear ~= nil then
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1128
				placed = true
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1129
				placedSpec[placedCount] = atkArray[pIndex][2]
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1130
				setGearValue(gear,"caseType","ammo")
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1131
				setGearValue(gear,"contents",atkArray[pIndex][2])
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1132
				clanCratesSpawned[GetHogClan(CurrentHedgehog)] = clanCratesSpawned[GetHogClan(CurrentHedgehog)] +1
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1133
			end
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1134
		elseif cat[cIndex] == "Utility Crate Placement Mode" then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1135
			gear = SpawnUtilityCrate(x, y, utilArray[pIndex][1])
12091
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1136
			if gear ~= nil then
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1137
				placed = true
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1138
				placedSpec[placedCount] = utilArray[pIndex][2]
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1139
				setGearValue(gear,"caseType","util")
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1140
				setGearValue(gear,"contents",utilArray[pIndex][2])
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1141
				if utilArray[pIndex][1] == amExtraTime then
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1142
					clanUsedExtraTime[GetHogClan(CurrentHedgehog)] = true
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1143
				end
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1144
				clanCratesSpawned[GetHogClan(CurrentHedgehog)] = clanCratesSpawned[GetHogClan(CurrentHedgehog)] +1
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1145
			end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1146
		elseif cat[cIndex] == "Barrel Placement Mode" then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1147
			gear = AddGear(x, y, gtExplosives, 0, 0, 0, 0)
12091
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1148
			if gear ~= nil then
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1149
				placed = true
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1150
				SetHealth(gear, pMode[pIndex])
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1151
			end
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1152
		elseif cat[cIndex] == "Mine Placement Mode" then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1153
			gear = AddGear(x, y, gtMine, 0, 0, 0, 0)
12091
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1154
			if gear ~= nil then
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1155
				placed = true
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1156
				SetTimer(gear, pMode[pIndex])
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1157
			end
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1158
		elseif cat[cIndex] == "Sticky Mine Placement Mode" then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1159
			gear = AddGear(x, y, gtSMine, 0, 0, 0, 0)
12091
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1160
			placed = gear ~= nil
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1161
		elseif cat[cIndex] == "Structure Placement Mode" then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1162
			AddStruc(x,y, pMode[pIndex],GetHogClan(CurrentHedgehog))
12091
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1163
			placed = true
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1164
		end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1165
12091
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1166
		if placed then
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1167
			clanPower[GetHogClan(CurrentHedgehog)] = clanPower[GetHogClan(CurrentHedgehog)] - placedExpense
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1168
			placedCount = placedCount + 1
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1169
		else
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1170
			AddCaption(loc("Invalid Placement"),0xffba00ff,capgrpVolume)
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1171
			PlaySound(sndDenied)
db5e12d623cc Contruction Mode: Fix rubber being placable in land and invalid girder placement costing energy
Wuzzy <almikes@aol.com>
parents: 11982
diff changeset
  1172
		end
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1173
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1174
	else
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1175
	    if (clanPower[GetHogClan(CurrentHedgehog)] >= placedExpense) then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1176
            AddCaption(loc("Invalid Placement"),0xffba00ff,capgrpVolume)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1177
        else
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1178
            AddCaption(loc("Insufficient Power"),0xffba00ff,capgrpVolume)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1179
        end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1180
		PlaySound(sndDenied)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1181
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1182
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1183
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1184
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1185
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1186
-- called when user changes primary selection
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1187
-- either via up/down keys
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1188
-- or selecting girder/airattack
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1189
function RedefineSubset()
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1190
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1191
	pIndex = 1
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1192
	pMode = {}
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1193
	placedExpense = 1
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1194
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1195
	if cat[cIndex] == "Girder Placement Mode" then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1196
		pIndex = CGR
11712
0a33c3172e6d Mark some forgotten Construction Mode strings for translation
Wuzzy <almikes@aol.com>
parents: 11711
diff changeset
  1197
		pMode = {loc("Girder")}
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1198
	elseif cat[cIndex] == "Rubber Placement Mode" then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1199
		pIndex = CGR
11712
0a33c3172e6d Mark some forgotten Construction Mode strings for translation
Wuzzy <almikes@aol.com>
parents: 11711
diff changeset
  1200
		pMode = {loc("Rubber")}
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1201
		placedExpense = 3
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1202
	elseif cat[cIndex] == "Barrel Placement Mode" then
11713
106112bbacfa Tweak barrel and mine defaults in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11712
diff changeset
  1203
		pMode = {60}
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1204
		placedExpense = 10
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1205
	elseif cat[cIndex] == "Health Crate Placement Mode" then
11726
4addfad422ab Construction Mode: Recognize health case amount from game scheme
Wuzzy <almikes@aol.com>
parents: 11725
diff changeset
  1206
		pMode = {HealthCaseAmount}
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1207
		placedExpense = 5
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1208
	elseif cat[cIndex] == "Weapon Crate Placement Mode" then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1209
		for i = 1, #atkArray do
11981
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
  1210
			pMode[i] = GetAmmoName(atkArray[i][1])
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1211
		end
11981
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
  1212
		placedExpense = atkArray[pIndex][4]
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1213
	elseif cat[cIndex] == "Utility Crate Placement Mode" then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1214
		for i = 1, #utilArray do
11981
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
  1215
			pMode[i] = GetAmmoName(utilArray[i][1])
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1216
		end
11981
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
  1217
		placedExpense = utilArray[pIndex][4]
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1218
	elseif cat[cIndex] == "Mine Placement Mode" then
11713
106112bbacfa Tweak barrel and mine defaults in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11712
diff changeset
  1219
		pMode = {0,1000,2000,3000,4000,5000}
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1220
		placedExpense = 15
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1221
	elseif cat[cIndex] == "Sticky Mine Placement Mode" then
11712
0a33c3172e6d Mark some forgotten Construction Mode strings for translation
Wuzzy <almikes@aol.com>
parents: 11711
diff changeset
  1222
		pMode = {loc("Sticky Mine")}
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1223
		placedExpense = 20
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1224
	elseif cat[cIndex] == "Structure Placement Mode" then
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
  1225
		pMode = {loc("Healing Station"), loc("Bio-Filter"), loc("Weapon Filter"), loc("Reflector Shield"), loc("Respawner"),loc("Teleportation Node"),loc("Generator"),loc("Construction Station"),loc("Support Station")}
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1226
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1227
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1228
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1229
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1230
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1231
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1232
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1233
-- called in onGameTick()
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1234
function HandleHedgeEditor()
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1235
11723
456f4e9f9dce Construction Mode: Update structure overlay each tick, thus falling smoothly
Wuzzy <almikes@aol.com>
parents: 11722
diff changeset
  1236
	HandleStructures()
456f4e9f9dce Construction Mode: Update structure overlay each tick, thus falling smoothly
Wuzzy <almikes@aol.com>
parents: 11722
diff changeset
  1237
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1238
	if CurrentHedgehog ~= nil then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1239
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1240
		if wallsVisible == true then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1241
			HandleBorderEffects()
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1242
		end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1243
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1244
		if (CurrentHedgehog ~= nil) and (TurnTimeLeft ~= TurnTime) then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1245
			if (lastWep ~= GetCurAmmoType()) then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1246
				checkForSpecialWeapons()
11717
f35139700d22 Construction Mode: Disable setting drill strike timer in object placement mode
Wuzzy <almikes@aol.com>
parents: 11716
diff changeset
  1247
			elseif checkForSpecialWeaponsIn == 0 then
f35139700d22 Construction Mode: Disable setting drill strike timer in object placement mode
Wuzzy <almikes@aol.com>
parents: 11716
diff changeset
  1248
				checkForSpecialWeapons()
f35139700d22 Construction Mode: Disable setting drill strike timer in object placement mode
Wuzzy <almikes@aol.com>
parents: 11716
diff changeset
  1249
				checkForSpecialWeaponsIn = -1
f35139700d22 Construction Mode: Disable setting drill strike timer in object placement mode
Wuzzy <almikes@aol.com>
parents: 11716
diff changeset
  1250
			else
f35139700d22 Construction Mode: Disable setting drill strike timer in object placement mode
Wuzzy <almikes@aol.com>
parents: 11716
diff changeset
  1251
				checkForSpecialWeaponsIn = checkForSpecialWeaponsIn - 1
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1252
			end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1253
		end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1254
11727
1c09b8d050ce Construction Mode: Fix timer issues
Wuzzy <almikes@aol.com>
parents: 11726
diff changeset
  1255
		if GameTime % 100 == 0 then
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1256
12836
8610462e3d33 Remove 2 unused number tags in Construction Mode GUI
Wuzzy <Wuzzy2@mail.ru>
parents: 12682
diff changeset
  1257
			DrawClanPowerTag()
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1258
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1259
			curWep = GetCurAmmoType()
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1260
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1261
			-- change to girder mode on weapon swap
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1262
			if (cIndex ~= 1) and (curWep == amGirder) then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1263
				cIndex = 1
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1264
				RedefineSubset()
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1265
			elseif (cIndex ~=2) and (curWep == amRubber) then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1266
				cIndex = 2
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1267
				RedefineSubset()
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1268
			-- change to generic mode if girder no longer selected
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1269
			elseif (cIndex == 1) and (curWep ~= amGirder) then
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
  1270
				cIndex = 3
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1271
				RedefineSubset()
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1272
			elseif (cIndex == 2) and (curWep ~= amRubber) then
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
  1273
				cIndex = 3
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1274
				RedefineSubset()
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1275
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1276
			end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1277
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1278
			-- update display selection criteria
11760
001994046892 Construction Mode: Don't update ticker for cursor keys when hedgehog is not under control anymore
Wuzzy <almikes@aol.com>
parents: 11759
diff changeset
  1279
			if ((curWep == amGirder) or (curWep == amAirAttack) or (curWep == amNapalm) or (curWep == amDrillStrike) or (curWep == amRubber))
001994046892 Construction Mode: Don't update ticker for cursor keys when hedgehog is not under control anymore
Wuzzy <almikes@aol.com>
parents: 11759
diff changeset
  1280
				and (CurrentHedgehog ~= nil or band(GetState(CurrentHedgehog), gstHHDriven) ~= 0) then
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1281
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1282
				---------------hooolllllyyyy fucking shit this
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1283
				-- code is a broken mess now
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1284
				-- it was redesigned and compromised three times
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1285
				-- so now it is a mess trying to do what it was
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1286
				-- never designed to do
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1287
				-- needs to be rewritten badly sadface
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1288
				-- this bit here catches the new 3 types of weapons
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1289
				if ((sProx[cIndex][1] == loc("Structure Placement Mode") and (curWep ~= amAirAttack))) then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1290
					updatePlacementDisplay(1)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1291
				elseif (sProx[cIndex][1] == loc("Health Crate Placement Mode")) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1292
							(sProx[cIndex][1] == loc("Weapon Crate Placement Mode")) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1293
							(sProx[cIndex][1] == loc("Utility Crate Placement Mode")) then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1294
								if curWep ~= amNapalm then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1295
									updatePlacementDisplay(1)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1296
								end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1297
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1298
				elseif (sProx[cIndex][1] == loc("Mine Placement Mode")) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1299
							(sProx[cIndex][1] == loc("Sticky Mine Placement Mode")) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1300
							(sProx[cIndex][1] == loc("Barrel Placement Mode")) then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1301
								if curWep ~= amDrillStrike then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1302
									updatePlacementDisplay(1)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1303
								end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1304
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1305
				end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1306
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1307
				--this is called when it happens that we have placement
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1308
				--mode selected and we are looking at something
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1309
				--we shouldn't be allowed to look at, as would be the case
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1310
				--when you WERE allowed to look at it, but then maybe
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1311
				--a bomb blows up the structure that was granting you
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1312
				--that ability
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1313
				if (sProx[cIndex][2] ~= true) then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1314
					updatePlacementDisplay(1)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1315
				else
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1316
					updateCost()
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1317
				end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1318
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1319
11301
fa18940f290d - Rus localization for following game styles:
antonc27 <antonc27@mail.ru>
parents: 11015
diff changeset
  1320
				AddCaption(loc(cat[cIndex]),0xffba00ff,capgrpMessage)
11714
8575b8b76373 Construction Mode: Show mine timer in seconds
Wuzzy <almikes@aol.com>
parents: 11713
diff changeset
  1321
				showModeMessage()
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1322
				wallsVisible = true
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1323
			else
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1324
				wallsVisible = false
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1325
			end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1326
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1327
		end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1328
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1329
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1330
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1331
	-- some kind of target detected, tell me your story
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1332
	if cGear ~= nil then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1333
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1334
		x,y = GetGearTarget(cGear)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1335
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1336
		if GetGearType(cGear) == gtAirAttack then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1337
			DeleteGear(cGear)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1338
			PlaceObject(x, y)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1339
		elseif GetGearType(cGear) == gtTeleport then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1340
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1341
				CheckTeleport(cGear, x, y)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1342
				cGear = nil
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1343
		elseif GetGearType(cGear) == gtGirder then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1344
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1345
			CGR = GetState(cGear)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1346
11718
f699978eae19 Throw away old out-commented Construction Mode code
Wuzzy <almikes@aol.com>
parents: 11717
diff changeset
  1347
			PlaceObject(x, y)
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1348
		end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1349
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1350
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1351
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1352
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1353
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1354
---------------------------------------------------------------
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1355
-- Cycle through selection subsets (by changing pIndex, pMode)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1356
-- i.e 	health of barrels, medikits,
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1357
--		timer of mines
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1358
--		contents of crates
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1359
--		gears to reposition etc.
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1360
---------------------------------------------------------------
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1361
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1362
function updateCost()
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1363
11760
001994046892 Construction Mode: Don't update ticker for cursor keys when hedgehog is not under control anymore
Wuzzy <almikes@aol.com>
parents: 11759
diff changeset
  1364
	if CurrentHedgehog == nil or band(GetState(CurrentHedgehog), gstHHDriven) == 0 then return end
001994046892 Construction Mode: Don't update ticker for cursor keys when hedgehog is not under control anymore
Wuzzy <almikes@aol.com>
parents: 11759
diff changeset
  1365
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1366
	if pMode[pIndex] == loc("Healing Station") then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1367
		placedExpense = 50
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1368
	elseif pMode[pIndex] == loc("Weapon Filter") then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1369
		placedExpense = 50
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1370
	elseif pMode[pIndex] == loc("Bio-Filter") then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1371
		placedExpense = 100
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1372
	elseif pMode[pIndex] == loc("Respawner") then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1373
		placedExpense = 300
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1374
	elseif pMode[pIndex] == loc("Teleportation Node") then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1375
		placedExpense = 30
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1376
	elseif pMode[pIndex] == loc("Support Station") then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1377
		placedExpense = 50
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1378
	elseif pMode[pIndex] == loc("Construction Station") then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1379
		placedExpense = 50
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1380
	elseif pMode[pIndex] == loc("Generator") then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1381
			placedExpense = 300
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1382
	elseif pMode[pIndex] == loc("Reflector Shield") then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1383
			placedExpense = 200
11708
d5d798172875 Fix crate costs in Construction Mode being all the same (fixes #15)
Wuzzy <almikes@aol.com>
parents: 11301
diff changeset
  1384
	elseif cat[cIndex] == "Weapon Crate Placement Mode" then
11981
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
  1385
		placedExpense = atkArray[pIndex][4]
11708
d5d798172875 Fix crate costs in Construction Mode being all the same (fixes #15)
Wuzzy <almikes@aol.com>
parents: 11301
diff changeset
  1386
	elseif cat[cIndex] == "Utility Crate Placement Mode" then
11981
acae870a66b9 Use GetAmmoName in Construction Mode
Wuzzy <almikes@aol.com>
parents: 11942
diff changeset
  1387
		placedExpense = utilArray[pIndex][4]
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1388
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1389
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1390
	AddCaption(loc("Cost") .. ": " .. placedExpense,0xffba00ff,capgrpAmmostate)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1391
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1392
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1393
11717
f35139700d22 Construction Mode: Disable setting drill strike timer in object placement mode
Wuzzy <almikes@aol.com>
parents: 11716
diff changeset
  1394
function onTimer(key)
f35139700d22 Construction Mode: Disable setting drill strike timer in object placement mode
Wuzzy <almikes@aol.com>
parents: 11716
diff changeset
  1395
f35139700d22 Construction Mode: Disable setting drill strike timer in object placement mode
Wuzzy <almikes@aol.com>
parents: 11716
diff changeset
  1396
	checkForSpecialWeaponsIn = 1
f35139700d22 Construction Mode: Disable setting drill strike timer in object placement mode
Wuzzy <almikes@aol.com>
parents: 11716
diff changeset
  1397
f35139700d22 Construction Mode: Disable setting drill strike timer in object placement mode
Wuzzy <almikes@aol.com>
parents: 11716
diff changeset
  1398
end
f35139700d22 Construction Mode: Disable setting drill strike timer in object placement mode
Wuzzy <almikes@aol.com>
parents: 11716
diff changeset
  1399
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1400
function onLeft()
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1401
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1402
	pIndex = pIndex - 1
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1403
	if pIndex == 0 then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1404
		pIndex = #pMode
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1405
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1406
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1407
	if (curWep == amGirder) or (curWep == amAirAttack) or (curWep == amNapalm) or (curWep == amDrillStrike) then
11714
8575b8b76373 Construction Mode: Show mine timer in seconds
Wuzzy <almikes@aol.com>
parents: 11713
diff changeset
  1408
		showModeMessage()
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1409
		updateCost()
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1410
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1411
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1412
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1413
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1414
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1415
function onRight()
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1416
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1417
	pIndex = pIndex + 1
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1418
	if pIndex > #pMode then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1419
		pIndex = 1
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1420
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1421
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1422
	if (curWep == amGirder) or (curWep == amAirAttack) or (curWep == amNapalm) or (curWep == amDrillStrike) then
11714
8575b8b76373 Construction Mode: Show mine timer in seconds
Wuzzy <almikes@aol.com>
parents: 11713
diff changeset
  1423
		showModeMessage()
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1424
		updateCost()
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1425
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1426
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1427
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1428
11730
8cc9c8a43dcc Construction Mode: Fix Girder/Rubber mode sometimes show nil
Wuzzy <almikes@aol.com>
parents: 11729
diff changeset
  1429
function showModeMessage()
11760
001994046892 Construction Mode: Don't update ticker for cursor keys when hedgehog is not under control anymore
Wuzzy <almikes@aol.com>
parents: 11759
diff changeset
  1430
	if CurrentHedgehog == nil or band(GetState(CurrentHedgehog), gstHHDriven) == 0 then return end
11730
8cc9c8a43dcc Construction Mode: Fix Girder/Rubber mode sometimes show nil
Wuzzy <almikes@aol.com>
parents: 11729
diff changeset
  1431
	local val = pMode[pIndex]
8cc9c8a43dcc Construction Mode: Fix Girder/Rubber mode sometimes show nil
Wuzzy <almikes@aol.com>
parents: 11729
diff changeset
  1432
	local str
8cc9c8a43dcc Construction Mode: Fix Girder/Rubber mode sometimes show nil
Wuzzy <almikes@aol.com>
parents: 11729
diff changeset
  1433
	if cat[cIndex] == "Mine Placement Mode" then
8cc9c8a43dcc Construction Mode: Fix Girder/Rubber mode sometimes show nil
Wuzzy <almikes@aol.com>
parents: 11729
diff changeset
  1434
		-- timer in seconds
8cc9c8a43dcc Construction Mode: Fix Girder/Rubber mode sometimes show nil
Wuzzy <almikes@aol.com>
parents: 11729
diff changeset
  1435
		str = string.format(loc("%d sec"), div(val, 1000))
8cc9c8a43dcc Construction Mode: Fix Girder/Rubber mode sometimes show nil
Wuzzy <almikes@aol.com>
parents: 11729
diff changeset
  1436
	elseif cat[cIndex] == "Girder Placement Mode" then
8cc9c8a43dcc Construction Mode: Fix Girder/Rubber mode sometimes show nil
Wuzzy <almikes@aol.com>
parents: 11729
diff changeset
  1437
		str = loc("Girder")
8cc9c8a43dcc Construction Mode: Fix Girder/Rubber mode sometimes show nil
Wuzzy <almikes@aol.com>
parents: 11729
diff changeset
  1438
	elseif cat[cIndex] == "Rubber Placement Mode" then
8cc9c8a43dcc Construction Mode: Fix Girder/Rubber mode sometimes show nil
Wuzzy <almikes@aol.com>
parents: 11729
diff changeset
  1439
		str = loc("Rubber")
8cc9c8a43dcc Construction Mode: Fix Girder/Rubber mode sometimes show nil
Wuzzy <almikes@aol.com>
parents: 11729
diff changeset
  1440
	else
8cc9c8a43dcc Construction Mode: Fix Girder/Rubber mode sometimes show nil
Wuzzy <almikes@aol.com>
parents: 11729
diff changeset
  1441
		str = tostring(val)
8cc9c8a43dcc Construction Mode: Fix Girder/Rubber mode sometimes show nil
Wuzzy <almikes@aol.com>
parents: 11729
diff changeset
  1442
	end
8cc9c8a43dcc Construction Mode: Fix Girder/Rubber mode sometimes show nil
Wuzzy <almikes@aol.com>
parents: 11729
diff changeset
  1443
	AddCaption(str,0xffba00ff,capgrpMessage2)
8cc9c8a43dcc Construction Mode: Fix Girder/Rubber mode sometimes show nil
Wuzzy <almikes@aol.com>
parents: 11729
diff changeset
  1444
end
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1445
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1446
function updatePlacementDisplay(pDir)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1447
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1448
	foundMatch = false
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1449
	while(foundMatch == false) do
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1450
		cIndex = cIndex + pDir
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1451
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1452
		if (cIndex == 1) or (cIndex == 2) then --1	--we no longer hit girder by normal means
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1453
			cIndex = #cat
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1454
		elseif cIndex > #cat then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1455
			cIndex = 3	 -- 2 ----we no longer hit girder by normal means
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1456
		end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1457
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1458
		if sProx[cIndex][2] == true then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1459
			if (GetCurAmmoType() == amNapalm) then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1460
				if (sProx[cIndex][1] == loc("Health Crate Placement Mode")) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1461
					(sProx[cIndex][1] == loc("Weapon Crate Placement Mode")) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1462
					(sProx[cIndex][1] == loc("Utility Crate Placement Mode"))
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1463
					then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1464
						foundMatch = true
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1465
					end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1466
			elseif (GetCurAmmoType() == amDrillStrike) then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1467
				if (sProx[cIndex][1] == loc("Mine Placement Mode")) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1468
					(sProx[cIndex][1] == loc("Sticky Mine Placement Mode")) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1469
					(sProx[cIndex][1] == loc("Barrel Placement Mode"))
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1470
					then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1471
						foundMatch = true
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1472
					end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1473
			elseif (GetCurAmmoType() == amAirAttack) then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1474
				if sProx[cIndex][1] == loc("Structure Placement Mode") then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1475
					foundMatch = true
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1476
				end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1477
			end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1478
		end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1479
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1480
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1481
		if foundMatch == true then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1482
			RedefineSubset()
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1483
			updateCost()
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1484
		end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1485
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1486
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1487
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1488
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1489
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1490
---------------------------------------------------------
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1491
-- Cycle through primary categories (by changing cIndex)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1492
-- i.e 	mine, sticky mine, barrels
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1493
--		health/weapon/utility crate, placement of gears
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1494
---------------------------------------------------------
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1495
function onUp()
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1496
11715
511d0f2aa9bf Construction Mode: Disable up/down in building mode
Wuzzy <almikes@aol.com>
parents: 11714
diff changeset
  1497
	if ( (curWep == amNapalm) or (curWep == amDrillStrike) ) then
11760
001994046892 Construction Mode: Don't update ticker for cursor keys when hedgehog is not under control anymore
Wuzzy <almikes@aol.com>
parents: 11759
diff changeset
  1498
		if CurrentHedgehog ~= nil or band(GetState(CurrentHedgehog), gstHHDriven) ~= 0 then
001994046892 Construction Mode: Don't update ticker for cursor keys when hedgehog is not under control anymore
Wuzzy <almikes@aol.com>
parents: 11759
diff changeset
  1499
			updatePlacementDisplay(-1)
001994046892 Construction Mode: Don't update ticker for cursor keys when hedgehog is not under control anymore
Wuzzy <almikes@aol.com>
parents: 11759
diff changeset
  1500
		end
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1501
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1502
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1503
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1504
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1505
function onDown()
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1506
11715
511d0f2aa9bf Construction Mode: Disable up/down in building mode
Wuzzy <almikes@aol.com>
parents: 11714
diff changeset
  1507
	if ( (curWep == amNapalm) or (curWep == amDrillStrike) ) then
11760
001994046892 Construction Mode: Don't update ticker for cursor keys when hedgehog is not under control anymore
Wuzzy <almikes@aol.com>
parents: 11759
diff changeset
  1508
		if CurrentHedgehog ~= nil or band(GetState(CurrentHedgehog), gstHHDriven) ~= 0 then
001994046892 Construction Mode: Don't update ticker for cursor keys when hedgehog is not under control anymore
Wuzzy <almikes@aol.com>
parents: 11759
diff changeset
  1509
			updatePlacementDisplay(1)
001994046892 Construction Mode: Don't update ticker for cursor keys when hedgehog is not under control anymore
Wuzzy <almikes@aol.com>
parents: 11759
diff changeset
  1510
		end
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1511
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1512
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1513
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1514
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1515
----------------------------
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1516
-- standard event handlers
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1517
----------------------------
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1518
11720
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
  1519
-- Parses a positive integer
12092
9fe7eb1f7df2 Construction Mode: Turn crate limit into a script parameter
Wuzzy <almikes@aol.com>
parents: 12091
diff changeset
  1520
function parseInt(str, default, infinityPermitted)
9fe7eb1f7df2 Construction Mode: Turn crate limit into a script parameter
Wuzzy <almikes@aol.com>
parents: 12091
diff changeset
  1521
	if str == "inf" and infinityPermitted then
9fe7eb1f7df2 Construction Mode: Turn crate limit into a script parameter
Wuzzy <almikes@aol.com>
parents: 12091
diff changeset
  1522
		return "inf"
9fe7eb1f7df2 Construction Mode: Turn crate limit into a script parameter
Wuzzy <almikes@aol.com>
parents: 12091
diff changeset
  1523
	end
11720
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
  1524
	if str == nil then return default end
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
  1525
	local s = string.match(str, "(%d*)")
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
  1526
	if s ~= nil then
11728
373150be0356 Construction Mode: Sanity-check numbers from script parameter
Wuzzy <almikes@aol.com>
parents: 11727
diff changeset
  1527
		return math.min(4294967295, math.max(0, tonumber(s)))
11720
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
  1528
	else
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
  1529
		return nil
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
  1530
	end
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
  1531
end
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
  1532
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
  1533
-- Parse parameters
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
  1534
function onParameters()
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
  1535
	parseParams()
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
  1536
	conf_initialEnergy = parseInt(params["initialenergy"], conf_initialEnergy)
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
  1537
	conf_energyPerRound = parseInt(params["energyperround"], conf_energyPerRound)
12092
9fe7eb1f7df2 Construction Mode: Turn crate limit into a script parameter
Wuzzy <almikes@aol.com>
parents: 12091
diff changeset
  1538
	conf_maxEnergy = parseInt(params["maxenergy"], conf_maxEnergy, true)
9fe7eb1f7df2 Construction Mode: Turn crate limit into a script parameter
Wuzzy <almikes@aol.com>
parents: 12091
diff changeset
  1539
	conf_cratesPerRound = parseInt(params["cratesperround"], conf_cratesPerRound, true)
11720
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
  1540
end
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
  1541
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1542
function onGameInit()
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1543
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1544
	Explosives = 0
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1545
	MinesNum = 0
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1546
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1547
	EnableGameFlags(gfInfAttack)
12093
0d6e0ed36c9e Construction Mode: Fix free girder/rubber placement near hog
Wuzzy <almikes@aol.com>
parents: 12092
diff changeset
  1548
	-- This is a hack to make sure all girder/rubber placement is handled by Construction Mode to overwrite the default behaviour
0d6e0ed36c9e Construction Mode: Fix free girder/rubber placement near hog
Wuzzy <almikes@aol.com>
parents: 12092
diff changeset
  1549
	SetMaxBuildDistance(1)
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1550
11881
34ede05e4d4f Remove old Fort Mode from frontend
Wuzzy <almikes@aol.com>
parents: 11762
diff changeset
  1551
	fortMode = MapGen == mgForts
11733
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
  1552
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
  1553
	-- if there are forts, let engine place the hogs on them
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
  1554
	if fortMode then
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
  1555
		EnableGameFlags(gfDivideTeams)
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
  1556
	end
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1557
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1558
	RedefineSubset()
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1559
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1560
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1561
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1562
function initialSetup(gear)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1563
11733
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
  1564
	-- engine already placed hogs in fort mode
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
  1565
	if not fortMode then
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
  1566
		FindPlace(gear, false, clanBoundsSX[GetHogClan(gear)], clanBoundsEX[GetHogClan(gear)],true)
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
  1567
	end
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1568
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1569
	-- for now, everyone should have this stuff
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1570
	AddAmmo(gear, amAirAttack, 100)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1571
	AddAmmo(gear, amSwitch, 100)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1572
	AddAmmo(gear, amSkip, 100)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1573
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1574
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1575
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1576
function onGameStart()
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1577
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1578
	trackTeams()
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1579
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1580
	ShowMission	(
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1581
				loc("CONSTRUCTION MODE"),
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1582
				loc("a Hedgewars mini-game"),
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1583
				loc("Build a fortress and destroy your enemy.") .. "|" ..
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1584
				loc("There are a variety of structures available to aid you.") .. "|" ..
11942
abdb24f0c2d9 Change descriptions for special Construction Mode tools
Wuzzy <almikes@aol.com>
parents: 11881
diff changeset
  1585
				loc("Use the structure placer to place structures.")
11725
3444792e8ebe Construction Mode: Remove 2 useless blank lines in mission panel
Wuzzy <almikes@aol.com>
parents: 11724
diff changeset
  1586
				, 4, 5000
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1587
				)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1588
11942
abdb24f0c2d9 Change descriptions for special Construction Mode tools
Wuzzy <almikes@aol.com>
parents: 11881
diff changeset
  1589
	SetAmmoTexts(amAirAttack, loc("Structure Placer"), loc("Construction Mode tool"), loc("Build one of multiple different structures|to aid you in victory, at the cost of energy.") .. "| |" ..
abdb24f0c2d9 Change descriptions for special Construction Mode tools
Wuzzy <almikes@aol.com>
parents: 11881
diff changeset
  1590
	loc("Healing Station: Heals nearby hogs.")  .. "|" ..
abdb24f0c2d9 Change descriptions for special Construction Mode tools
Wuzzy <almikes@aol.com>
parents: 11881
diff changeset
  1591
	loc("Bio-Filter: Aggressively removes enemies.")  .. "|" ..
abdb24f0c2d9 Change descriptions for special Construction Mode tools
Wuzzy <almikes@aol.com>
parents: 11881
diff changeset
  1592
	loc("Weapon Filter: Dematerializes all ammo|    carried by enemies entering it.")  .. "|" ..
abdb24f0c2d9 Change descriptions for special Construction Mode tools
Wuzzy <almikes@aol.com>
parents: 11881
diff changeset
  1593
	loc("Reflector Shield: Reflects enemy projectiles.")  .. "|" ..
abdb24f0c2d9 Change descriptions for special Construction Mode tools
Wuzzy <almikes@aol.com>
parents: 11881
diff changeset
  1594
	loc("Generator: Generates energy.")  .. "|" ..
abdb24f0c2d9 Change descriptions for special Construction Mode tools
Wuzzy <almikes@aol.com>
parents: 11881
diff changeset
  1595
	loc("Respawner: Resurrects dead hogs.")  .. "|" ..
abdb24f0c2d9 Change descriptions for special Construction Mode tools
Wuzzy <almikes@aol.com>
parents: 11881
diff changeset
  1596
	loc("Teleportation Node: Allows teleportation|    between other nodes.")  .. "|" ..
abdb24f0c2d9 Change descriptions for special Construction Mode tools
Wuzzy <almikes@aol.com>
parents: 11881
diff changeset
  1597
	loc("Construction Station: Allows placement of|    girders, rubber, mines, sticky mines|    and barrels.")  .. "|" ..
abdb24f0c2d9 Change descriptions for special Construction Mode tools
Wuzzy <almikes@aol.com>
parents: 11881
diff changeset
  1598
	loc("Support Station: Allows placement of crates.") .. "| |" ..
abdb24f0c2d9 Change descriptions for special Construction Mode tools
Wuzzy <almikes@aol.com>
parents: 11881
diff changeset
  1599
abdb24f0c2d9 Change descriptions for special Construction Mode tools
Wuzzy <almikes@aol.com>
parents: 11881
diff changeset
  1600
	loc("Left/right: Choose structure type|Cursor: Build structure"))
abdb24f0c2d9 Change descriptions for special Construction Mode tools
Wuzzy <almikes@aol.com>
parents: 11881
diff changeset
  1601
12092
9fe7eb1f7df2 Construction Mode: Turn crate limit into a script parameter
Wuzzy <almikes@aol.com>
parents: 12091
diff changeset
  1602
	local txt_crateLimit = ""
9fe7eb1f7df2 Construction Mode: Turn crate limit into a script parameter
Wuzzy <almikes@aol.com>
parents: 12091
diff changeset
  1603
	if conf_cratesPerRound ~= "inf" then
9fe7eb1f7df2 Construction Mode: Turn crate limit into a script parameter
Wuzzy <almikes@aol.com>
parents: 12091
diff changeset
  1604
		txt_crateLimit = string.format(loc("You may only place %d crates per round."), conf_cratesPerRound) .. "|"
9fe7eb1f7df2 Construction Mode: Turn crate limit into a script parameter
Wuzzy <almikes@aol.com>
parents: 12091
diff changeset
  1605
	end
9fe7eb1f7df2 Construction Mode: Turn crate limit into a script parameter
Wuzzy <almikes@aol.com>
parents: 12091
diff changeset
  1606
9fe7eb1f7df2 Construction Mode: Turn crate limit into a script parameter
Wuzzy <almikes@aol.com>
parents: 12091
diff changeset
  1607
	SetAmmoTexts(amNapalm, loc("Crate Placer"), loc("Construction Mode tool"),
9fe7eb1f7df2 Construction Mode: Turn crate limit into a script parameter
Wuzzy <almikes@aol.com>
parents: 12091
diff changeset
  1608
		loc("This allows you to create a crate anywhere|within your clan's area of influence,|at the cost of energy.") .. "|" ..
9fe7eb1f7df2 Construction Mode: Turn crate limit into a script parameter
Wuzzy <almikes@aol.com>
parents: 12091
diff changeset
  1609
		txt_crateLimit ..
9fe7eb1f7df2 Construction Mode: Turn crate limit into a script parameter
Wuzzy <almikes@aol.com>
parents: 12091
diff changeset
  1610
		loc("Up/down: Choose crate type") .. "|" .. 
9fe7eb1f7df2 Construction Mode: Turn crate limit into a script parameter
Wuzzy <almikes@aol.com>
parents: 12091
diff changeset
  1611
		loc("Left/right: Choose crate contents") .. "|" ..
9fe7eb1f7df2 Construction Mode: Turn crate limit into a script parameter
Wuzzy <almikes@aol.com>
parents: 12091
diff changeset
  1612
		loc("|Cursor: Place crate"))
11942
abdb24f0c2d9 Change descriptions for special Construction Mode tools
Wuzzy <almikes@aol.com>
parents: 11881
diff changeset
  1613
	SetAmmoTexts(amDrillStrike, loc("Object Placer"), loc("Construction Mode tool"), loc("This allows you to create and place mines,|sticky mines and barrels anywhere within your|clan's area of influence at the cost of energy.|Up/down: Choose object type|Left/right: Choose timer (for mines)|Cursor: Place object"))
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1614
12336
fbc268170015 Construction Mode: Mention teleportation restriction in tooltip
Wuzzy <almikes@aol.com>
parents: 12214
diff changeset
  1615
	SetAmmoDescriptionAppendix(amTeleport, loc("It only works in teleportation nodes of your own clan."))
fbc268170015 Construction Mode: Mention teleportation restriction in tooltip
Wuzzy <almikes@aol.com>
parents: 12214
diff changeset
  1616
	
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1617
	sCirc = AddVisualGear(0,0,vgtCircle,0,true)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1618
	SetVisualGearValues(sCirc, 0, 0, 100, 255, 1, 10, 0, 40, 3, 0x00000000)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1619
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1620
	for i = 0, ClansCount-1 do
11982
6f4b96669f9d Fix Construction Mode screwing up when initialenergy > maxenergy
Wuzzy <almikes@aol.com>
parents: 11981
diff changeset
  1621
		clanPower[i] = math.min(conf_initialEnergy, conf_maxEnergy)
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1622
		clanLWepIndex[i] = 1 -- for ease of use let's track this stuff
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1623
		clanLUtilIndex[i] = 1
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1624
		clanLGearIndex[i] = 1
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1625
		clanUsedExtraTime[i] = false
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1626
		clanCratesSpawned[i] = 0
11721
8c1a30d4cbc8 Construction Mode: Fix giving round energy boost at first round
Wuzzy <almikes@aol.com>
parents: 11720
diff changeset
  1627
		clanFirstTurn[i] = true
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1628
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1629
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1630
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1631
	tMapWidth = RightX - LeftX
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1632
	tMapHeight = WaterLine - TopY
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1633
	clanInterval = div(tMapWidth,ClansCount)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1634
11733
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
  1635
	-- define construction areas for each clan
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
  1636
	-- if there are forts-based spawn locations, adjust areas around them
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
  1637
	for i = 0, ClansCount-1 do
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
  1638
		local slot
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
  1639
		if fortMode then
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
  1640
			slot = div(GetX(getFirstHogOfClan(i))-LeftX,clanInterval)
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
  1641
		else
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
  1642
			slot = i
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
  1643
		end
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1644
11733
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
  1645
		local color = GetClanColor(i)
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
  1646
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
  1647
		clanBoundsSX[i] = LeftX+(clanInterval*slot)+20
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
  1648
		clanBoundsSY[i] = TopY
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
  1649
		clanBoundsEX[i] = LeftX+(clanInterval*slot)+clanInterval-20
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
  1650
		clanBoundsEY[i] = WaterLine
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1651
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1652
		--top and bottom
11733
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
  1653
		AddWall(LeftX+(clanInterval*slot),TopY,clanInterval,margin,color)
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
  1654
		AddWall(LeftX+(clanInterval*slot),WaterLine-25,clanInterval,margin,color)
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1655
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1656
		--add a wall to the left and right
11733
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
  1657
		AddWall(LeftX+(clanInterval*slot)+20,TopY,margin,WaterLine,color)
67049c8dedd1 make construction mode work with fort mode without mixing up clans and forts
sheepluva
parents: 11732
diff changeset
  1658
		AddWall(LeftX+(clanInterval*slot)+clanInterval-20,TopY,margin,WaterLine,color)
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1659
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1660
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1661
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1662
	runOnHogs(initialSetup)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1663
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1664
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1665
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1666
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1667
function onNewTurn()
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1668
11720
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
  1669
	local clan = GetHogClan(CurrentHedgehog)
11721
8c1a30d4cbc8 Construction Mode: Fix giving round energy boost at first round
Wuzzy <almikes@aol.com>
parents: 11720
diff changeset
  1670
	if clanFirstTurn[clan] then
8c1a30d4cbc8 Construction Mode: Fix giving round energy boost at first round
Wuzzy <almikes@aol.com>
parents: 11720
diff changeset
  1671
		clanFirstTurn[clan] = false
8c1a30d4cbc8 Construction Mode: Fix giving round energy boost at first round
Wuzzy <almikes@aol.com>
parents: 11720
diff changeset
  1672
	else
8c1a30d4cbc8 Construction Mode: Fix giving round energy boost at first round
Wuzzy <almikes@aol.com>
parents: 11720
diff changeset
  1673
		clanPower[clan] = clanPower[clan] + conf_energyPerRound
11728
373150be0356 Construction Mode: Sanity-check numbers from script parameter
Wuzzy <almikes@aol.com>
parents: 11727
diff changeset
  1674
		if conf_maxEnergy ~= "inf" and clanPower[clan] > conf_maxEnergy then
11721
8c1a30d4cbc8 Construction Mode: Fix giving round energy boost at first round
Wuzzy <almikes@aol.com>
parents: 11720
diff changeset
  1675
			clanPower[clan] = conf_maxEnergy
8c1a30d4cbc8 Construction Mode: Fix giving round energy boost at first round
Wuzzy <almikes@aol.com>
parents: 11720
diff changeset
  1676
		end
11720
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
  1677
	end
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
  1678
	clanUsedExtraTime[clan] = false
5cb2f245ee2f Add script parameter support to Construction Mode
Wuzzy <almikes@aol.com>
parents: 11719
diff changeset
  1679
	clanCratesSpawned[clan] = 0
11015
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1680
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1681
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1682
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1683
function onGameTick()
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1684
	HandleHedgeEditor()
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1685
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1686
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1687
function isATrackedGear(gear)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1688
	if 	(GetGearType(gear) == gtHedgehog) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1689
		(GetGearType(gear) == gtTarget) or
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1690
		(GetGearType(gear) == gtCase)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1691
	then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1692
		return(true)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1693
	else
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1694
		return(false)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1695
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1696
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1697
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1698
-- track hedgehogs and placement gears
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1699
function onGearAdd(gear)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1700
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1701
	if GetGearType(gear) == gtHedgehog then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1702
	elseif (GetGearType(gear) == gtAirAttack) or (GetGearType(gear) == gtTeleport) or (GetGearType(gear) == gtGirder) then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1703
		cGear = gear
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1704
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1705
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1706
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1707
	if isATrackedGear(gear) then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1708
		trackGear(gear)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1709
	elseif gearCanBeDeflected(gear) then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1710
		trackGear(gear)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1711
		setGearReflectionValues(gear)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1712
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1713
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1714
end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1715
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1716
function onGearDelete(gear)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1717
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1718
	if GetGearType(gear) == gtTarget then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1719
		CheckGearForStructureLink(gear)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1720
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1721
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1722
	if (GetGearType(gear) == gtAirAttack) or (GetGearType(gear) == gtTeleport) or (GetGearType(gear) == gtGirder) then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1723
		cGear = nil
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1724
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1725
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1726
	if (isATrackedGear(gear) or gearCanBeDeflected(gear)) then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1727
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1728
		if getGearValue(gear, "tCirc") ~= nil then
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1729
			DeleteVisualGear(getGearValue(gear, "tCirc"))
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1730
		end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1731
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1732
		trackDeletion(gear)
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1733
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1734
	end
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1735
7a905f0070ce CRLF purge
nemo
parents: 10897
diff changeset
  1736
end