share/hedgewars/Data/Maps/ClimbHome/map.lua
author Wuzzy <Wuzzy2@mail.ru>
Mon, 14 Jan 2019 07:14:18 +0100
changeset 14578 50f511588635
parent 14475 2113296b7a29
child 14590 c5f18710a184
permissions -rw-r--r--
Outsource commonly used words in siPointType to QTfrontend
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
     1
HedgewarsScriptLoad("/Scripts/Locale.lua")
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
     2
HedgewarsScriptLoad("/Scripts/Utils.lua")
10810
931dd8f42763 add some config params - speed,accel,delaytime,delayheight,nocake. water rise speed, water rise acceleration, time delay from start of turn for water rise, height delay for same, and disable cake. also set start boulder to indestructible
nemo
parents: 10697
diff changeset
     3
HedgewarsScriptLoad("/Scripts/Params.lua")
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
     4
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
     5
local hTag = nil
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
     6
local hTagHeight = 33000
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
     7
local tTag = nil
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
     8
local rTag = nil
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
     9
local startTime = 0
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
    10
local MaxHeight = 32640
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
    11
local RecordHeight = 33000
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
    12
local RecordHeightHogName = nil
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
    13
local Fire = {}
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
    14
--local BoomFire = nil
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
    15
local HH = {}
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
    16
local totalHedgehogs = 0
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
    17
local deadHedgehogs = 0
10632
5ae7ba0b2849 pretty sure the other teams need stats at 0 for the graph to look right
nemo
parents: 10598
diff changeset
    18
local currTeam = ''
5ae7ba0b2849 pretty sure the other teams need stats at 0 for the graph to look right
nemo
parents: 10598
diff changeset
    19
local teams = {}
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
    20
local teamScoreStats = {}
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
    21
local teamBests = {}
11635
2a53e219bc1a Time achievement for ClimbHome
unC0Rr
parents: 11627
diff changeset
    22
local teamTimes = {}
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
    23
local MrMine -- in honour of sparkle's first arrival in the cabin
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
    24
local YouWon = false
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
    25
local YouLost = false
10580
17560eb73b4c Reset max team health after script may have screwed with it on start. Maybe a script max health reset function could be useful too. Set climbhome hogs to invulnerable while not their turn if needed to avoid accidental mine/dead hog damage. Tweak cake fire boom a bit.
nemo
parents: 10413
diff changeset
    26
local HogsAreInvulnerable = false
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
    27
local WaterRise = nil
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
    28
local Cake = nil
13155
25de976a7b9a ClimeHome: Show messages when cake is nearby and when reaching home
Wuzzy <Wuzzy2@mail.ru>
parents: 13023
diff changeset
    29
local CakeWarning = false
25de976a7b9a ClimeHome: Show messages when cake is nearby and when reaching home
Wuzzy <Wuzzy2@mail.ru>
parents: 13023
diff changeset
    30
local CakeFireWarning = false
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
    31
local CakeTries = 0
10810
931dd8f42763 add some config params - speed,accel,delaytime,delayheight,nocake. water rise speed, water rise acceleration, time delay from start of turn for water rise, height delay for same, and disable cake. also set start boulder to indestructible
nemo
parents: 10697
diff changeset
    32
local addCake = true
13155
25de976a7b9a ClimeHome: Show messages when cake is nearby and when reaching home
Wuzzy <Wuzzy2@mail.ru>
parents: 13023
diff changeset
    33
local takeASeat = false
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
    34
local Stars = {}
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
    35
local tauntNoo = false
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
    36
local jokeAwardNavy = nil
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
    37
local jokeAwardSpeed = nil
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
    38
local jokeAwardDamage = nil
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
    39
local recordBroken = false
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
    40
local dummyHog = nil
10592
2da35f88db23 stricter skip
nemo
parents: 10589
diff changeset
    41
local dummySkip = 0
10810
931dd8f42763 add some config params - speed,accel,delaytime,delayheight,nocake. water rise speed, water rise acceleration, time delay from start of turn for water rise, height delay for same, and disable cake. also set start boulder to indestructible
nemo
parents: 10697
diff changeset
    42
local baseWaterSpeed = 2
931dd8f42763 add some config params - speed,accel,delaytime,delayheight,nocake. water rise speed, water rise acceleration, time delay from start of turn for water rise, height delay for same, and disable cake. also set start boulder to indestructible
nemo
parents: 10697
diff changeset
    43
local waterSpeed = 0
931dd8f42763 add some config params - speed,accel,delaytime,delayheight,nocake. water rise speed, water rise acceleration, time delay from start of turn for water rise, height delay for same, and disable cake. also set start boulder to indestructible
nemo
parents: 10697
diff changeset
    44
local waterAccel = 0
931dd8f42763 add some config params - speed,accel,delaytime,delayheight,nocake. water rise speed, water rise acceleration, time delay from start of turn for water rise, height delay for same, and disable cake. also set start boulder to indestructible
nemo
parents: 10697
diff changeset
    45
local delayHeight = 32000
931dd8f42763 add some config params - speed,accel,delaytime,delayheight,nocake. water rise speed, water rise acceleration, time delay from start of turn for water rise, height delay for same, and disable cake. also set start boulder to indestructible
nemo
parents: 10697
diff changeset
    46
local delayTime = 0
10824
acbbd49f8274 make air mines respawn on climbhome
nemo
parents: 10812
diff changeset
    47
local airMineX = {}
acbbd49f8274 make air mines respawn on climbhome
nemo
parents: 10812
diff changeset
    48
local airMineY = {}
acbbd49f8274 make air mines respawn on climbhome
nemo
parents: 10812
diff changeset
    49
local airMine = {}
acbbd49f8274 make air mines respawn on climbhome
nemo
parents: 10812
diff changeset
    50
local init = true
12653
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
    51
local multiplayerVictoryDelay = -1
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
    52
local multiplayerWinningHogs = {}
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
    53
local multiplayerWins = 0
12754
c7224d202e8b 2nd try... just shortcircuit most of onGameTick20 when we are between turns.
nemo
parents: 12753
diff changeset
    54
local racing = false
12653
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
    55
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
    56
-- Placement positions of winning hogs
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
    57
local victoryPosses = { }
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
    58
do
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
    59
    local m = 0
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
    60
    for y=108, 39, -32 do
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
    61
        for x=1820+m, 1972-m, 22 do
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
    62
            table.insert(victoryPosses, {x=x, y=y})
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
    63
        end
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
    64
        m = m + 32
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
    65
    end
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
    66
end
10810
931dd8f42763 add some config params - speed,accel,delaytime,delayheight,nocake. water rise speed, water rise acceleration, time delay from start of turn for water rise, height delay for same, and disable cake. also set start boulder to indestructible
nemo
parents: 10697
diff changeset
    67
931dd8f42763 add some config params - speed,accel,delaytime,delayheight,nocake. water rise speed, water rise acceleration, time delay from start of turn for water rise, height delay for same, and disable cake. also set start boulder to indestructible
nemo
parents: 10697
diff changeset
    68
function onParameters()
931dd8f42763 add some config params - speed,accel,delaytime,delayheight,nocake. water rise speed, water rise acceleration, time delay from start of turn for water rise, height delay for same, and disable cake. also set start boulder to indestructible
nemo
parents: 10697
diff changeset
    69
    parseParams()
931dd8f42763 add some config params - speed,accel,delaytime,delayheight,nocake. water rise speed, water rise acceleration, time delay from start of turn for water rise, height delay for same, and disable cake. also set start boulder to indestructible
nemo
parents: 10697
diff changeset
    70
10811
0d9c49e88142 I guess the params shouldn't be all or nothing.
nemo
parents: 10810
diff changeset
    71
    if params["speed"] ~= nil then
0d9c49e88142 I guess the params shouldn't be all or nothing.
nemo
parents: 10810
diff changeset
    72
        baseWaterSpeed = params["speed"]
0d9c49e88142 I guess the params shouldn't be all or nothing.
nemo
parents: 10810
diff changeset
    73
    end
10812
38dc8445d7a7 fix typo
nemo
parents: 10811
diff changeset
    74
    if params["accel"] ~= nil then
10811
0d9c49e88142 I guess the params shouldn't be all or nothing.
nemo
parents: 10810
diff changeset
    75
        waterAccel = params["accel"]
0d9c49e88142 I guess the params shouldn't be all or nothing.
nemo
parents: 10810
diff changeset
    76
        if waterAccel ~= 0 then waterAccel = div(32640000,waterAccel) end
0d9c49e88142 I guess the params shouldn't be all or nothing.
nemo
parents: 10810
diff changeset
    77
    end
0d9c49e88142 I guess the params shouldn't be all or nothing.
nemo
parents: 10810
diff changeset
    78
    if params["delaytime"] ~= nil then
0d9c49e88142 I guess the params shouldn't be all or nothing.
nemo
parents: 10810
diff changeset
    79
        delayTime = params["delaytime"]
0d9c49e88142 I guess the params shouldn't be all or nothing.
nemo
parents: 10810
diff changeset
    80
    end
11613
66880a42c2d7 Fix typo
unC0Rr
parents: 11067
diff changeset
    81
    if params["delayheight"] ~= nil then
10811
0d9c49e88142 I guess the params shouldn't be all or nothing.
nemo
parents: 10810
diff changeset
    82
        delayHeight = 32768-params["delayheight"]
0d9c49e88142 I guess the params shouldn't be all or nothing.
nemo
parents: 10810
diff changeset
    83
    end
10810
931dd8f42763 add some config params - speed,accel,delaytime,delayheight,nocake. water rise speed, water rise acceleration, time delay from start of turn for water rise, height delay for same, and disable cake. also set start boulder to indestructible
nemo
parents: 10697
diff changeset
    84
    if params["nocake"] ~= nil then addCake = false end
931dd8f42763 add some config params - speed,accel,delaytime,delayheight,nocake. water rise speed, water rise acceleration, time delay from start of turn for water rise, height delay for same, and disable cake. also set start boulder to indestructible
nemo
parents: 10697
diff changeset
    85
end
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
    86
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
    87
function onGameInit()
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
    88
    -- Ensure people get same map for same theme
13750
110d6c1e817f Lua: Rename globals: NoPointX→NO_CURSOR, cMaxTurnTime→MAX_TURN_TIME, cMaxHogHealth→MAX_HOG_HEALTH
Wuzzy <Wuzzy2@mail.ru>
parents: 13686
diff changeset
    89
    TurnTime = MAX_TURN_TIME
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
    90
    CaseFreq = 0
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
    91
    Explosives = 0
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
    92
    MineDudPercent = 0
10598
9dd0f41d3244 This should probably fix multiplayer desync, but is the result of fiddling while pretty sick/feverish so, needs testing, and the water/scaling stuff is disabled.
nemo
parents: 10593
diff changeset
    93
    EnableGameFlags(gfOneClanMode)
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
    94
    DisableGameFlags(gfBottomBorder+gfBorder)
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
    95
    --This reduced startup time by only about 15% and looked ugly
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
    96
    --EnableGameFlags(gfDisableLandObjects) 
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
    97
    -- force seed instead.  Some themes will still be easier, but at least you won't luck out on the same theme
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
    98
    Seed = ClimbHome
12079
8f222872d432 Disable SD for a couple of scripts and mission maps
Wuzzy <almikes@aol.com>
parents: 12077
diff changeset
    99
    -- Disable Sudden Death
8f222872d432 Disable SD for a couple of scripts and mission maps
Wuzzy <almikes@aol.com>
parents: 12077
diff changeset
   100
    WaterRise = 0
8f222872d432 Disable SD for a couple of scripts and mission maps
Wuzzy <almikes@aol.com>
parents: 12077
diff changeset
   101
    HealthDecrease = 0
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   102
end
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   103
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   104
function onGearAdd(gear)
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   105
    if GetGearType(gear) == gtHedgehog then
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   106
        HH[gear] = 1
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   107
        totalHedgehogs = totalHedgehogs + 1
10632
5ae7ba0b2849 pretty sure the other teams need stats at 0 for the graph to look right
nemo
parents: 10598
diff changeset
   108
        teams[GetHogTeamName(gear)] = 1
10824
acbbd49f8274 make air mines respawn on climbhome
nemo
parents: 10812
diff changeset
   109
    elseif init and GetGearType(gear) == gtAirMine then
acbbd49f8274 make air mines respawn on climbhome
nemo
parents: 10812
diff changeset
   110
        airMine[gear] = 1
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   111
    end
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   112
end
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   113
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   114
function onGearDelete(gear)
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   115
    if gear == MrMine then
13643
690cc84e9fd6 Use capcolDefault in Lua scripts
Wuzzy <Wuzzy2@mail.ru>
parents: 13170
diff changeset
   116
        AddCaption(loc("Once you set off the proximity trigger, Mr. Mine is not your friend"), capcolDefault, capgrpMessage2)
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   117
        MrMine = nil
12827
b7453ae2c44d Fix incorrect check for cake gear type in ClimbHome
Wuzzy <Wuzzy2@mail.ru>
parents: 12826
diff changeset
   118
    elseif GetGearType(gear) == gtCake then
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   119
        Cake = nil
13155
25de976a7b9a ClimeHome: Show messages when cake is nearby and when reaching home
Wuzzy <Wuzzy2@mail.ru>
parents: 13023
diff changeset
   120
        CakeWarning = false
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   121
    elseif GetGearType(gear) == gtHedgehog then
11067
c632b47b8ff0 Trying to get these scripts to behave properly, still WIP though.
nemo
parents: 10824
diff changeset
   122
	onGameTick20()
c632b47b8ff0 Trying to get these scripts to behave properly, still WIP though.
nemo
parents: 10824
diff changeset
   123
	onGearDamage(gear, 0)
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   124
        HH[gear] = nil
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   125
    end
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   126
end
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   127
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   128
function onGameStart()
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   129
    --SetClanColor(ClansCount-1, 0x0000ffff) appears to be broken
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   130
    SendHealthStatsOff()
14475
2113296b7a29 Keep track of singleplayer high scores in challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14464
diff changeset
   131
    local recordInfo = ""
2113296b7a29 Keep track of singleplayer high scores in challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14464
diff changeset
   132
    if isSinglePlayer then
2113296b7a29 Keep track of singleplayer high scores in challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14464
diff changeset
   133
        recordInfo = getReadableChallengeRecord("Highscore")
2113296b7a29 Keep track of singleplayer high scores in challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14464
diff changeset
   134
    end
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   135
    ShowMission(loc("Climb Home"),
12077
ce3860c82c8b Rewrite 2nd line of mission panel of most missions for consistency
Wuzzy <almikes@aol.com>
parents: 11889
diff changeset
   136
                loc("Challenge"),
14475
2113296b7a29 Keep track of singleplayer high scores in challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14464
diff changeset
   137
                loc("You are far from home, and the water is rising, climb up as high as you can!|Your score will be based on your height.")
2113296b7a29 Keep track of singleplayer high scores in challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14464
diff changeset
   138
                .. "|" .. recordInfo,
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   139
                -amRope, 0)
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   140
    local x = 1818
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   141
    for h,i in pairs(HH) do
10598
9dd0f41d3244 This should probably fix multiplayer desync, but is the result of fiddling while pretty sick/feverish so, needs testing, and the water/scaling stuff is disabled.
nemo
parents: 10593
diff changeset
   142
        if h ~= nil then
9dd0f41d3244 This should probably fix multiplayer desync, but is the result of fiddling while pretty sick/feverish so, needs testing, and the water/scaling stuff is disabled.
nemo
parents: 10593
diff changeset
   143
            -- SetGearPosition(h,x,32549)
9dd0f41d3244 This should probably fix multiplayer desync, but is the result of fiddling while pretty sick/feverish so, needs testing, and the water/scaling stuff is disabled.
nemo
parents: 10593
diff changeset
   144
            SetGearPosition(h,x,108)
9dd0f41d3244 This should probably fix multiplayer desync, but is the result of fiddling while pretty sick/feverish so, needs testing, and the water/scaling stuff is disabled.
nemo
parents: 10593
diff changeset
   145
            SetHealth(h,1)
9dd0f41d3244 This should probably fix multiplayer desync, but is the result of fiddling while pretty sick/feverish so, needs testing, and the water/scaling stuff is disabled.
nemo
parents: 10593
diff changeset
   146
            if x < 1978 then x = x+32 else x = 1818 end
9dd0f41d3244 This should probably fix multiplayer desync, but is the result of fiddling while pretty sick/feverish so, needs testing, and the water/scaling stuff is disabled.
nemo
parents: 10593
diff changeset
   147
            if GetEffect(h,heInvulnerable) == 0 then
9dd0f41d3244 This should probably fix multiplayer desync, but is the result of fiddling while pretty sick/feverish so, needs testing, and the water/scaling stuff is disabled.
nemo
parents: 10593
diff changeset
   148
                SetEffect(h,heInvulnerable,1)
9dd0f41d3244 This should probably fix multiplayer desync, but is the result of fiddling while pretty sick/feverish so, needs testing, and the water/scaling stuff is disabled.
nemo
parents: 10593
diff changeset
   149
            else
9dd0f41d3244 This should probably fix multiplayer desync, but is the result of fiddling while pretty sick/feverish so, needs testing, and the water/scaling stuff is disabled.
nemo
parents: 10593
diff changeset
   150
                HogsAreInvulnerable = true
9dd0f41d3244 This should probably fix multiplayer desync, but is the result of fiddling while pretty sick/feverish so, needs testing, and the water/scaling stuff is disabled.
nemo
parents: 10593
diff changeset
   151
            end
9dd0f41d3244 This should probably fix multiplayer desync, but is the result of fiddling while pretty sick/feverish so, needs testing, and the water/scaling stuff is disabled.
nemo
parents: 10593
diff changeset
   152
            SetState(h,bor(GetState(h),gstInvisible))
9dd0f41d3244 This should probably fix multiplayer desync, but is the result of fiddling while pretty sick/feverish so, needs testing, and the water/scaling stuff is disabled.
nemo
parents: 10593
diff changeset
   153
        end
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   154
    end
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   155
-- 1925,263 - Mr. Mine position
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   156
    MrMine = AddGear(1925,263,gtMine,0,0,0,0)
13023
acba432d34b1 ClimbHome: Show best team heights next to team name
Wuzzy <Wuzzy2@mail.ru>
parents: 12913
diff changeset
   157
    for i=0, TeamsCount-1 do
acba432d34b1 ClimbHome: Show best team heights next to team name
Wuzzy <Wuzzy2@mail.ru>
parents: 12913
diff changeset
   158
        SetTeamLabel(GetTeamName(i), "0")
acba432d34b1 ClimbHome: Show best team heights next to team name
Wuzzy <Wuzzy2@mail.ru>
parents: 12913
diff changeset
   159
    end
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   160
end
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   161
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   162
function onAmmoStoreInit()
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   163
    SetAmmo(amRope, 9, 0, 0, 0)
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   164
end
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   165
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   166
function onNewTurn()
10824
acbbd49f8274 make air mines respawn on climbhome
nemo
parents: 10812
diff changeset
   167
    if init then
acbbd49f8274 make air mines respawn on climbhome
nemo
parents: 10812
diff changeset
   168
        init = false
acbbd49f8274 make air mines respawn on climbhome
nemo
parents: 10812
diff changeset
   169
        for a,i in pairs(airMine) do
acbbd49f8274 make air mines respawn on climbhome
nemo
parents: 10812
diff changeset
   170
            x,y = GetGearPosition(a)
acbbd49f8274 make air mines respawn on climbhome
nemo
parents: 10812
diff changeset
   171
            airMineX[a] = x
acbbd49f8274 make air mines respawn on climbhome
nemo
parents: 10812
diff changeset
   172
            airMineY[a] = y
acbbd49f8274 make air mines respawn on climbhome
nemo
parents: 10812
diff changeset
   173
        end
acbbd49f8274 make air mines respawn on climbhome
nemo
parents: 10812
diff changeset
   174
    else
acbbd49f8274 make air mines respawn on climbhome
nemo
parents: 10812
diff changeset
   175
        for a,i in pairs(airMine) do
acbbd49f8274 make air mines respawn on climbhome
nemo
parents: 10812
diff changeset
   176
            local x,y = GetGearPosition(a)
acbbd49f8274 make air mines respawn on climbhome
nemo
parents: 10812
diff changeset
   177
            if not x or airMineX[a] ~= x or airMineY[a] ~= y then
acbbd49f8274 make air mines respawn on climbhome
nemo
parents: 10812
diff changeset
   178
                DeleteGear(a)
acbbd49f8274 make air mines respawn on climbhome
nemo
parents: 10812
diff changeset
   179
                AddGear(airMineX[a],airMineY[a], gtAirMine, gsttmpFlag, 0, 0, 0)
acbbd49f8274 make air mines respawn on climbhome
nemo
parents: 10812
diff changeset
   180
            end
acbbd49f8274 make air mines respawn on climbhome
nemo
parents: 10812
diff changeset
   181
        end
acbbd49f8274 make air mines respawn on climbhome
nemo
parents: 10812
diff changeset
   182
    end
acbbd49f8274 make air mines respawn on climbhome
nemo
parents: 10812
diff changeset
   183
        
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   184
    startTime = GameTime
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   185
    --disable to preserve highest over multiple turns
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   186
    --will need to change water check too ofc
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   187
    MaxHeight = 32640
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   188
    hTagHeight = 33000
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   189
    SetWaterLine(32768)
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   190
    YouWon = false
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   191
    YouLost = false
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   192
    tauntNoo = false
13155
25de976a7b9a ClimeHome: Show messages when cake is nearby and when reaching home
Wuzzy <Wuzzy2@mail.ru>
parents: 13023
diff changeset
   193
    takeASeat = false
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   194
    recordBroken = false
10632
5ae7ba0b2849 pretty sure the other teams need stats at 0 for the graph to look right
nemo
parents: 10598
diff changeset
   195
    currTeam = GetHogTeamName(CurrentHedgehog)
10592
2da35f88db23 stricter skip
nemo
parents: 10589
diff changeset
   196
    if CurrentHedgehog ~= nil then
12653
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   197
        if CurrentHedgehog ~= dummyHog or multiplayerWinningHogs[CurrentHedgehog] == true then
10592
2da35f88db23 stricter skip
nemo
parents: 10589
diff changeset
   198
            SetGearPosition(CurrentHedgehog, 1951,32640)
12654
26b0d3b76dea ClimbHome: Make sure hog faces left on turn start
Wuzzy <almikes@aol.com>
parents: 12653
diff changeset
   199
            HogTurnLeft(CurrentHedgehog, true)
10592
2da35f88db23 stricter skip
nemo
parents: 10589
diff changeset
   200
            if not HogsAreInvulnerable then SetEffect(CurrentHedgehog,heInvulnerable,0) end
10598
9dd0f41d3244 This should probably fix multiplayer desync, but is the result of fiddling while pretty sick/feverish so, needs testing, and the water/scaling stuff is disabled.
nemo
parents: 10593
diff changeset
   201
            AddVisualGear(1951,32640,vgtExplosion,0,false)
10592
2da35f88db23 stricter skip
nemo
parents: 10589
diff changeset
   202
            SetState(CurrentHedgehog,band(GetState(CurrentHedgehog),bnot(gstInvisible)))
2da35f88db23 stricter skip
nemo
parents: 10589
diff changeset
   203
            SetWeapon(amRope)
2da35f88db23 stricter skip
nemo
parents: 10589
diff changeset
   204
        else
2da35f88db23 stricter skip
nemo
parents: 10589
diff changeset
   205
            dummySkip = GameTime+1
2da35f88db23 stricter skip
nemo
parents: 10589
diff changeset
   206
        end
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   207
    end
12653
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   208
    for hog, _ in pairs(multiplayerWinningHogs) do
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   209
        SetEffect(hog, heInvulnerable, 1)
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   210
    end
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   211
    for f,i in pairs(Fire) do
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   212
        DeleteGear(f)
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   213
    end
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   214
    for s,i in pairs(Stars) do
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   215
        DeleteVisualGear(s)
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   216
        Stars[s] = nil
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   217
    end
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   218
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   219
    if CurrentHedgehog ~= dummyHog then
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   220
        for i = 0,12 do
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   221
            flame = AddGear(2000+i*2,308, gtFlame, gsttmpFlag,  0, 0, 0)
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   222
            SetTag(flame, 999999+i)
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   223
            Fire[flame]=1
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   224
        end
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   225
    end
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   226
    if Cake ~= nil then DeleteGear(Cake) end
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   227
    CakeTries = 0
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   228
end
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   229
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   230
--function onGearDelete(gear)
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   231
--    if gear == WaterRise and MaxHeight > 500 and CurrentHedgehog ~= nil and band(GetState(CurrentHedgehog),gstHHDriven) ~= 0 then
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   232
--        WaterRise = AddGear(0,0,gtWaterUp, 0, 0, 0, 0)
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   233
--    end
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   234
--end
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   235
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   236
function FireBoom(x,y,d) -- going to add for rockets too
13155
25de976a7b9a ClimeHome: Show messages when cake is nearby and when reaching home
Wuzzy <Wuzzy2@mail.ru>
parents: 13023
diff changeset
   237
    PlaySound(sndExplosion)
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   238
    AddVisualGear(x,y,vgtExplosion,0,false)
10580
17560eb73b4c Reset max team health after script may have screwed with it on start. Maybe a script max health reset function could be useful too. Set climbhome hogs to invulnerable while not their turn if needed to avoid accidental mine/dead hog damage. Tweak cake fire boom a bit.
nemo
parents: 10413
diff changeset
   239
    -- should approximate circle by removing corners
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   240
    --if BoomFire == nil then BoomFire = {} end
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   241
    for i = 0,50 do
10580
17560eb73b4c Reset max team health after script may have screwed with it on start. Maybe a script max health reset function could be useful too. Set climbhome hogs to invulnerable while not their turn if needed to avoid accidental mine/dead hog damage. Tweak cake fire boom a bit.
nemo
parents: 10413
diff changeset
   242
	fx = GetRandom(d)-div(d,2)
17560eb73b4c Reset max team health after script may have screwed with it on start. Maybe a script max health reset function could be useful too. Set climbhome hogs to invulnerable while not their turn if needed to avoid accidental mine/dead hog damage. Tweak cake fire boom a bit.
nemo
parents: 10413
diff changeset
   243
	fy = GetRandom(d)-div(d,2)
17560eb73b4c Reset max team health after script may have screwed with it on start. Maybe a script max health reset function could be useful too. Set climbhome hogs to invulnerable while not their turn if needed to avoid accidental mine/dead hog damage. Tweak cake fire boom a bit.
nemo
parents: 10413
diff changeset
   244
	if fx<0 then
17560eb73b4c Reset max team health after script may have screwed with it on start. Maybe a script max health reset function could be useful too. Set climbhome hogs to invulnerable while not their turn if needed to avoid accidental mine/dead hog damage. Tweak cake fire boom a bit.
nemo
parents: 10413
diff changeset
   245
	   fdx = -5000-GetRandom(3000)
17560eb73b4c Reset max team health after script may have screwed with it on start. Maybe a script max health reset function could be useful too. Set climbhome hogs to invulnerable while not their turn if needed to avoid accidental mine/dead hog damage. Tweak cake fire boom a bit.
nemo
parents: 10413
diff changeset
   246
	else
17560eb73b4c Reset max team health after script may have screwed with it on start. Maybe a script max health reset function could be useful too. Set climbhome hogs to invulnerable while not their turn if needed to avoid accidental mine/dead hog damage. Tweak cake fire boom a bit.
nemo
parents: 10413
diff changeset
   247
	   fdx = 5000+GetRandom(3000)
17560eb73b4c Reset max team health after script may have screwed with it on start. Maybe a script max health reset function could be useful too. Set climbhome hogs to invulnerable while not their turn if needed to avoid accidental mine/dead hog damage. Tweak cake fire boom a bit.
nemo
parents: 10413
diff changeset
   248
	end
17560eb73b4c Reset max team health after script may have screwed with it on start. Maybe a script max health reset function could be useful too. Set climbhome hogs to invulnerable while not their turn if needed to avoid accidental mine/dead hog damage. Tweak cake fire boom a bit.
nemo
parents: 10413
diff changeset
   249
	if fy<0 then
17560eb73b4c Reset max team health after script may have screwed with it on start. Maybe a script max health reset function could be useful too. Set climbhome hogs to invulnerable while not their turn if needed to avoid accidental mine/dead hog damage. Tweak cake fire boom a bit.
nemo
parents: 10413
diff changeset
   250
	   fdy = -5000-GetRandom(3000)
17560eb73b4c Reset max team health after script may have screwed with it on start. Maybe a script max health reset function could be useful too. Set climbhome hogs to invulnerable while not their turn if needed to avoid accidental mine/dead hog damage. Tweak cake fire boom a bit.
nemo
parents: 10413
diff changeset
   251
	else
17560eb73b4c Reset max team health after script may have screwed with it on start. Maybe a script max health reset function could be useful too. Set climbhome hogs to invulnerable while not their turn if needed to avoid accidental mine/dead hog damage. Tweak cake fire boom a bit.
nemo
parents: 10413
diff changeset
   252
	   fdy = 5000+GetRandom(3000)
17560eb73b4c Reset max team health after script may have screwed with it on start. Maybe a script max health reset function could be useful too. Set climbhome hogs to invulnerable while not their turn if needed to avoid accidental mine/dead hog damage. Tweak cake fire boom a bit.
nemo
parents: 10413
diff changeset
   253
	end
17560eb73b4c Reset max team health after script may have screwed with it on start. Maybe a script max health reset function could be useful too. Set climbhome hogs to invulnerable while not their turn if needed to avoid accidental mine/dead hog damage. Tweak cake fire boom a bit.
nemo
parents: 10413
diff changeset
   254
        flame = AddGear(x+fx, y+fy, gtFlame, gsttmpFlag,  fdx, fdy, 0)
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   255
        SetTag(flame, 999999+i)
10589
98ea597e5cd9 expose FlightTime to lua, disable in-air flame harming moving hogs ☹ aaaand override that in ClimbHome ☺
nemo
parents: 10587
diff changeset
   256
        SetFlightTime(flame, 0)
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   257
        Fire[flame]=1
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   258
--        BoomFire[flame]=1
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   259
    end
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   260
end
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   261
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   262
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   263
function onGameTick20()
10824
acbbd49f8274 make air mines respawn on climbhome
nemo
parents: 10812
diff changeset
   264
    local x,y
12753
327f71313e04 this should probably sidestep that thing unc0rr keeps bringing up. untested. but then, I've never had it happen. I think what happens is onGameTick20 is called in same tick as onNewTurn and before it...
nemo
parents: 12655
diff changeset
   265
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   266
    if math.random(20) == 1 then AddVisualGear(2012,56,vgtSmoke,0,false) end
10592
2da35f88db23 stricter skip
nemo
parents: 10589
diff changeset
   267
    if CurrentHedgehog == dummyHog and dummySkip ~= 0 and dummySkip < GameTime then
13170
98a0edb4bb5a Lua API: Add SkipTurn() to replace ParseCommand("skip")
Wuzzy <Wuzzy2@mail.ru>
parents: 13155
diff changeset
   268
        SkipTurn()
10592
2da35f88db23 stricter skip
nemo
parents: 10589
diff changeset
   269
        dummySkip = 0
10585
eaccc445c473 Should prevent desync hopefully. Thanks unc0rr
nemo
parents: 10581
diff changeset
   270
    end
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   271
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   272
    --if BoomFire ~= nil then
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   273
    --    for f,i in pairs(BoomFire) do
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   274
    --        if band(GetState(f),gstCollision~=0) then DeleteGear(f) end
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   275
    --    end
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   276
    --    BoomFire = nil
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   277
    --end
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   278
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   279
    for s,i in pairs(Stars) do
13686
3651c63f3c84 Clean up legacy visual gear stuff in ClimbHome, fix star despawn, make stars non-critical
Wuzzy <Wuzzy2@mail.ru>
parents: 13664
diff changeset
   280
        local _, Y = GetVisualGearValues(s)
3651c63f3c84 Clean up legacy visual gear stuff in ClimbHome, fix star despawn, make stars non-critical
Wuzzy <Wuzzy2@mail.ru>
parents: 13664
diff changeset
   281
        if Y ~= nil and Y > WaterLine + 500 then
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   282
            DeleteVisualGear(s)
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   283
            Stars[s] = nil
13686
3651c63f3c84 Clean up legacy visual gear stuff in ClimbHome, fix star despawn, make stars non-critical
Wuzzy <Wuzzy2@mail.ru>
parents: 13664
diff changeset
   284
        elseif Y == nil then
3651c63f3c84 Clean up legacy visual gear stuff in ClimbHome, fix star despawn, make stars non-critical
Wuzzy <Wuzzy2@mail.ru>
parents: 13664
diff changeset
   285
            Stars[s] = nil
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   286
        end
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   287
    end
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   288
12653
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   289
    -- This will be executed if a player reached home in multiplayer
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   290
    if multiplayerVictoryDelay > 0 then
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   291
        multiplayerVictoryDelay = multiplayerVictoryDelay - 20
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   292
        if multiplayerVictoryDelay <= 0 then
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   293
            -- If delay's over, the game will continue with the next hog
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   294
            if CurrentHedgehog then
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   295
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   296
                multiplayerWinningHogs[CurrentHedgehog] = true
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   297
                multiplayerWins = multiplayerWins + 1
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   298
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   299
                local victoryX, victoryY
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   300
                if multiplayerWins <= #victoryPosses then
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   301
                    victoryX, victoryY = victoryPosses[multiplayerWins].x, victoryPosses[multiplayerWins].y
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   302
                else
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   303
                    victoryX, victoryY = victoryPosses[#victoryPosses].x, victoryPosses[#victoryPosses].y
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   304
                end
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   305
                SetGearPosition(CurrentHedgehog, victoryX, victoryY)
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   306
                SetEffect(CurrentHedgehog, heInvulnerable, 1)
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   307
                SetHealth(CurrentHedgehog, 1)
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   308
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   309
                if (deadHedgehogs + multiplayerWins) >= totalHedgehogs then
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   310
                    makeFinalMultiPlayerStats()
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   311
                    EndGame()
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   312
                    onAchievementsDeclaration()
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   313
                else
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   314
                    EndTurn(true)
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   315
                    SetInputMask(0xFFFFFFFF)
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   316
                end
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   317
                return
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   318
            end
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   319
        end
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   320
    end
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   321
12825
b986a8b8cd56 just merging if statements
nemo
parents: 12760
diff changeset
   322
    if CurrentHedgehog ~= nil then
b986a8b8cd56 just merging if statements
nemo
parents: 12760
diff changeset
   323
        x,y = GetGearPosition(CurrentHedgehog)
b986a8b8cd56 just merging if statements
nemo
parents: 12760
diff changeset
   324
        if Cake ~= nil then
b986a8b8cd56 just merging if statements
nemo
parents: 12760
diff changeset
   325
            local cx,cy = GetGearPosition(Cake)
12826
42003e235a46 remove some more test redundancy and restore a missing and important nil check
nemo
parents: 12825
diff changeset
   326
            if y < cy-1500 then DeleteGear(Cake) end
12825
b986a8b8cd56 just merging if statements
nemo
parents: 12760
diff changeset
   327
13155
25de976a7b9a ClimeHome: Show messages when cake is nearby and when reaching home
Wuzzy <Wuzzy2@mail.ru>
parents: 13023
diff changeset
   328
            if Cake ~= nil and GetHealth(Cake) < 999980 then
25de976a7b9a ClimeHome: Show messages when cake is nearby and when reaching home
Wuzzy <Wuzzy2@mail.ru>
parents: 13023
diff changeset
   329
                if not CakeWarning and gearIsInCircle(CurrentHedgehog,cx,cy,1350) then
25de976a7b9a ClimeHome: Show messages when cake is nearby and when reaching home
Wuzzy <Wuzzy2@mail.ru>
parents: 13023
diff changeset
   330
                    AddCaption(loc("Warning: Fire cake detected"))
25de976a7b9a ClimeHome: Show messages when cake is nearby and when reaching home
Wuzzy <Wuzzy2@mail.ru>
parents: 13023
diff changeset
   331
                    CakeWarning = true
25de976a7b9a ClimeHome: Show messages when cake is nearby and when reaching home
Wuzzy <Wuzzy2@mail.ru>
parents: 13023
diff changeset
   332
                end
25de976a7b9a ClimeHome: Show messages when cake is nearby and when reaching home
Wuzzy <Wuzzy2@mail.ru>
parents: 13023
diff changeset
   333
                if gearIsInCircle(CurrentHedgehog,cx,cy,450) then
25de976a7b9a ClimeHome: Show messages when cake is nearby and when reaching home
Wuzzy <Wuzzy2@mail.ru>
parents: 13023
diff changeset
   334
                    if not CakeFireWarning then
25de976a7b9a ClimeHome: Show messages when cake is nearby and when reaching home
Wuzzy <Wuzzy2@mail.ru>
parents: 13023
diff changeset
   335
                        AddCaption(loc("Don't touch the flames!"))
25de976a7b9a ClimeHome: Show messages when cake is nearby and when reaching home
Wuzzy <Wuzzy2@mail.ru>
parents: 13023
diff changeset
   336
                        CakeFireWarning = true
25de976a7b9a ClimeHome: Show messages when cake is nearby and when reaching home
Wuzzy <Wuzzy2@mail.ru>
parents: 13023
diff changeset
   337
                    end
25de976a7b9a ClimeHome: Show messages when cake is nearby and when reaching home
Wuzzy <Wuzzy2@mail.ru>
parents: 13023
diff changeset
   338
                    FireBoom(cx,cy,200) -- todo animate
25de976a7b9a ClimeHome: Show messages when cake is nearby and when reaching home
Wuzzy <Wuzzy2@mail.ru>
parents: 13023
diff changeset
   339
                    DeleteGear(Cake)
25de976a7b9a ClimeHome: Show messages when cake is nearby and when reaching home
Wuzzy <Wuzzy2@mail.ru>
parents: 13023
diff changeset
   340
                end
12826
42003e235a46 remove some more test redundancy and restore a missing and important nil check
nemo
parents: 12825
diff changeset
   341
            end
42003e235a46 remove some more test redundancy and restore a missing and important nil check
nemo
parents: 12825
diff changeset
   342
        end
42003e235a46 remove some more test redundancy and restore a missing and important nil check
nemo
parents: 12825
diff changeset
   343
        if band(GetState(CurrentHedgehog),gstHHDriven) == 0 then
42003e235a46 remove some more test redundancy and restore a missing and important nil check
nemo
parents: 12825
diff changeset
   344
            for f,i in pairs(Fire) do -- takes too long to fall otherwise
42003e235a46 remove some more test redundancy and restore a missing and important nil check
nemo
parents: 12825
diff changeset
   345
                DeleteGear(f)
42003e235a46 remove some more test redundancy and restore a missing and important nil check
nemo
parents: 12825
diff changeset
   346
            end
42003e235a46 remove some more test redundancy and restore a missing and important nil check
nemo
parents: 12825
diff changeset
   347
            if Cake ~= nil then
42003e235a46 remove some more test redundancy and restore a missing and important nil check
nemo
parents: 12825
diff changeset
   348
                DeleteGear(Cake)
12825
b986a8b8cd56 just merging if statements
nemo
parents: 12760
diff changeset
   349
            end
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   350
        end
12825
b986a8b8cd56 just merging if statements
nemo
parents: 12760
diff changeset
   351
     end
12760
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   352
    
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   353
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   354
    if CurrentHedgehog ~= nil and TurnTimeLeft > 0 and band(GetState(CurrentHedgehog),gstHHDriven) ~= 0 then
10810
931dd8f42763 add some config params - speed,accel,delaytime,delayheight,nocake. water rise speed, water rise acceleration, time delay from start of turn for water rise, height delay for same, and disable cake. also set start boulder to indestructible
nemo
parents: 10697
diff changeset
   355
        if MaxHeight < delayHeight and
13750
110d6c1e817f Lua: Rename globals: NoPointX→NO_CURSOR, cMaxTurnTime→MAX_TURN_TIME, cMaxHogHealth→MAX_HOG_HEALTH
Wuzzy <Wuzzy2@mail.ru>
parents: 13686
diff changeset
   356
           TurnTimeLeft<(MAX_TURN_TIME-delayTime) and
10810
931dd8f42763 add some config params - speed,accel,delaytime,delayheight,nocake. water rise speed, water rise acceleration, time delay from start of turn for water rise, height delay for same, and disable cake. also set start boulder to indestructible
nemo
parents: 10697
diff changeset
   357
            MaxHeight > 286 and WaterLine > 286 then
931dd8f42763 add some config params - speed,accel,delaytime,delayheight,nocake. water rise speed, water rise acceleration, time delay from start of turn for water rise, height delay for same, and disable cake. also set start boulder to indestructible
nemo
parents: 10697
diff changeset
   358
            if waterAccel ~= 0 then
931dd8f42763 add some config params - speed,accel,delaytime,delayheight,nocake. water rise speed, water rise acceleration, time delay from start of turn for water rise, height delay for same, and disable cake. also set start boulder to indestructible
nemo
parents: 10697
diff changeset
   359
                SetWaterLine(WaterLine-(baseWaterSpeed+div(getActualHeight(MaxHeight)*100,waterAccel)))
931dd8f42763 add some config params - speed,accel,delaytime,delayheight,nocake. water rise speed, water rise acceleration, time delay from start of turn for water rise, height delay for same, and disable cake. also set start boulder to indestructible
nemo
parents: 10697
diff changeset
   360
            else
931dd8f42763 add some config params - speed,accel,delaytime,delayheight,nocake. water rise speed, water rise acceleration, time delay from start of turn for water rise, height delay for same, and disable cake. also set start boulder to indestructible
nemo
parents: 10697
diff changeset
   361
                SetWaterLine(WaterLine-baseWaterSpeed)
931dd8f42763 add some config params - speed,accel,delaytime,delayheight,nocake. water rise speed, water rise acceleration, time delay from start of turn for water rise, height delay for same, and disable cake. also set start boulder to indestructible
nemo
parents: 10697
diff changeset
   362
            end
931dd8f42763 add some config params - speed,accel,delaytime,delayheight,nocake. water rise speed, water rise acceleration, time delay from start of turn for water rise, height delay for same, and disable cake. also set start boulder to indestructible
nemo
parents: 10697
diff changeset
   363
        end
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   364
        if y > 0 and y < 30000 and MaxHeight > 286 and math.random(y) < 500 then
13686
3651c63f3c84 Clean up legacy visual gear stuff in ClimbHome, fix star despawn, make stars non-critical
Wuzzy <Wuzzy2@mail.ru>
parents: 13664
diff changeset
   365
            local s = AddVisualGear(0, 0, vgtStraightShot, 0, false)
3651c63f3c84 Clean up legacy visual gear stuff in ClimbHome, fix star despawn, make stars non-critical
Wuzzy <Wuzzy2@mail.ru>
parents: 13664
diff changeset
   366
            if s then
3651c63f3c84 Clean up legacy visual gear stuff in ClimbHome, fix star despawn, make stars non-critical
Wuzzy <Wuzzy2@mail.ru>
parents: 13664
diff changeset
   367
                local c = div(250000,y)
3651c63f3c84 Clean up legacy visual gear stuff in ClimbHome, fix star despawn, make stars non-critical
Wuzzy <Wuzzy2@mail.ru>
parents: 13664
diff changeset
   368
                if c > 255 then c = 255 end
3651c63f3c84 Clean up legacy visual gear stuff in ClimbHome, fix star despawn, make stars non-critical
Wuzzy <Wuzzy2@mail.ru>
parents: 13664
diff changeset
   369
                c = c * 0x10000 + 0xFF0000FF
3651c63f3c84 Clean up legacy visual gear stuff in ClimbHome, fix star despawn, make stars non-critical
Wuzzy <Wuzzy2@mail.ru>
parents: 13664
diff changeset
   370
                SetVisualGearValues(s,
3651c63f3c84 Clean up legacy visual gear stuff in ClimbHome, fix star despawn, make stars non-critical
Wuzzy <Wuzzy2@mail.ru>
parents: 13664
diff changeset
   371
                    math.random(2048), -5000, 0, -1-(1/y*1000),
3651c63f3c84 Clean up legacy visual gear stuff in ClimbHome, fix star despawn, make stars non-critical
Wuzzy <Wuzzy2@mail.ru>
parents: 13664
diff changeset
   372
                    math.random(360),
3651c63f3c84 Clean up legacy visual gear stuff in ClimbHome, fix star despawn, make stars non-critical
Wuzzy <Wuzzy2@mail.ru>
parents: 13664
diff changeset
   373
                    0,
3651c63f3c84 Clean up legacy visual gear stuff in ClimbHome, fix star despawn, make stars non-critical
Wuzzy <Wuzzy2@mail.ru>
parents: 13664
diff changeset
   374
                    999999999, -- frameticks
3651c63f3c84 Clean up legacy visual gear stuff in ClimbHome, fix star despawn, make stars non-critical
Wuzzy <Wuzzy2@mail.ru>
parents: 13664
diff changeset
   375
                    sprStar, -- star
3651c63f3c84 Clean up legacy visual gear stuff in ClimbHome, fix star despawn, make stars non-critical
Wuzzy <Wuzzy2@mail.ru>
parents: 13664
diff changeset
   376
                    0, c)
3651c63f3c84 Clean up legacy visual gear stuff in ClimbHome, fix star despawn, make stars non-critical
Wuzzy <Wuzzy2@mail.ru>
parents: 13664
diff changeset
   377
                    --,  0xFFCC00FF) -- could be fun to make colour shift as you rise...
3651c63f3c84 Clean up legacy visual gear stuff in ClimbHome, fix star despawn, make stars non-critical
Wuzzy <Wuzzy2@mail.ru>
parents: 13664
diff changeset
   378
                Stars[s] = 1
3651c63f3c84 Clean up legacy visual gear stuff in ClimbHome, fix star despawn, make stars non-critical
Wuzzy <Wuzzy2@mail.ru>
parents: 13664
diff changeset
   379
            end
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   380
        end
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   381
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   382
        local vx, vy = GetGearVelocity(CurrentHedgehog)
12760
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   383
        local distanceFromWater = WaterLine - y
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   384
	
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   385
        --[[ check joke awards ]]
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   386
        -- navy award: when distance from main map is over 1000
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   387
        local navyDistance = 1250
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   388
        if x < -navyDistance or x > LAND_WIDTH+navyDistance then
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   389
            local awarded = false
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   390
            local dist = 0
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   391
            if jokeAwardNavy == nil then
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   392
                awarded = true
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   393
            else
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   394
                if x < 0 then
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   395
                    dist = math.abs(x)
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   396
                else
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   397
                    dist = x - LAND_WIDTH
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   398
                end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   399
                if dist > jokeAwardNavy.distance then
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   400
                    awarded = true
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   401
                end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   402
            end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   403
            if awarded == true then
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   404
                jokeAwardNavy = {
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   405
                    hogName = GetHogName(CurrentHedgehog),
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   406
                    teamName = GetHogTeamName(CurrentHedgehog),
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   407
                    distance = dist
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   408
                }
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   409
            end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   410
        end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   411
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   412
        -- Speed award for largest distance from water
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   413
        if distanceFromWater > 3000 and WaterLine < 32000 then
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   414
            local awarded = false
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   415
            if jokeAwardSpeed == nil or distanceFromWater > jokeAwardSpeed.distance then
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   416
                awarded = true
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   417
            end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   418
            if awarded == true then
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   419
                jokeAwardSpeed = {
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   420
                    hogName = GetHogName(CurrentHedgehog),
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   421
                    teamName = GetHogTeamName(CurrentHedgehog),
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   422
                    distance = distanceFromWater
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   423
                }
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   424
            end
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   425
        end
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   426
14475
2113296b7a29 Keep track of singleplayer high scores in challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14464
diff changeset
   427
        local rawFinishTime = GameTime-startTime
2113296b7a29 Keep track of singleplayer high scores in challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14464
diff changeset
   428
        local finishTime = rawFinishTime/1000
12760
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   429
        local roundedFinishTime = math.ceil(math.floor(finishTime+0.5))
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   430
        if isSinglePlayer then
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   431
            if distanceFromWater < 0 and not YouLost and not YouWon then
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   432
                makeSinglePlayerLoserStats()
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   433
                YouLost = true
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   434
            end
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   435
            -- FIXME: Hog is also in winning box if it just walks into the chair from the left, touching it. Intentional?
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   436
            if not YouWon and not YouLost and gearIsInBox(CurrentHedgehog, 1920, 252, 50, 50) then
14464
ead8928a59f8 Report mission victory for most missions
Wuzzy <Wuzzy2@mail.ru>
parents: 13750
diff changeset
   437
                SaveMissionVar("Won", "true")
13643
690cc84e9fd6 Use capcolDefault in Lua scripts
Wuzzy <Wuzzy2@mail.ru>
parents: 13170
diff changeset
   438
                AddCaption(loc("Victory!"), capcolDefault, capgrpGameState)
12760
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   439
                ShowMission(loc("Climb Home"),
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   440
                            loc("Made it!"),
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   441
                            string.format(loc("Ahhh, home, sweet home. Made it in %d seconds."), roundedFinishTime),
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   442
                            -amRope, 0)
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   443
                PlaySound(sndVictory,CurrentHedgehog)
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   444
                SetState(CurrentHedgehog, gstWinner)
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   445
                SendStat(siGameResult, loc("You have beaten the challenge!"))
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   446
                SendStat(siGraphTitle, loc("Your height over time"))
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   447
                SendStat(siCustomAchievement, string.format(loc("%s reached home in %.3f seconds. Congratulations!"), GetHogName(CurrentHedgehog), finishTime))
14475
2113296b7a29 Keep track of singleplayer high scores in challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14464
diff changeset
   448
                updateChallengeRecord("TimeRecord", rawFinishTime, false)
12760
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   449
                SendStat(siCustomAchievement, string.format(loc("%s bravely climbed up to a dizzy height of %d to reach home."), GetHogName(CurrentHedgehog), getActualHeight(RecordHeight)))
14475
2113296b7a29 Keep track of singleplayer high scores in challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14464
diff changeset
   450
                updateChallengeRecord("Highscore", getActualHeight(RecordHeight))
14578
50f511588635 Outsource commonly used words in siPointType to QTfrontend
Wuzzy <Wuzzy2@mail.ru>
parents: 14475
diff changeset
   451
                SendStat(siPointType, "!TIME")
50f511588635 Outsource commonly used words in siPointType to QTfrontend
Wuzzy <Wuzzy2@mail.ru>
parents: 14475
diff changeset
   452
                SendStat(siPlayerKills, tostring(rawFinishTime), GetHogTeamName(CurrentHedgehog))
12760
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   453
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   454
                EndGame()
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   455
                onAchievementsDeclaration()
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   456
                YouWon = true
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   457
            end
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   458
        else
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   459
            if distanceFromWater < 0 and not YouLost and not YouWon then
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   460
                makeMultiPlayerLoserStat(CurrentHedgehog)
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   461
                deadHedgehogs = deadHedgehogs + 1
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   462
                YouLost = true
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   463
                if deadHedgehogs >= totalHedgehogs then
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   464
                    makeFinalMultiPlayerStats()
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   465
                    EndGame()
11623
515d2d38ab8b Declare achievements alongwith EndGame call, since it would skip SendStats
unc0rr
parents: 11615
diff changeset
   466
                    onAchievementsDeclaration()
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   467
                end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   468
            end
12760
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   469
            -- Check victory
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   470
            if not YouWon and not YouLost and gearIsInBox(CurrentHedgehog, 1920, 252, 50, 50) and
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   471
                    -- Delay victory if MrMine is triggered
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   472
                    (not MrMine or (MrMine and band(GetState(MrMine), gstAttacking) == 0)) then
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   473
                -- Player managed to reach home in multiplayer.
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   474
                -- Stop hog, disable controls, celebrate victory and continue the game after 4 seconds.
13643
690cc84e9fd6 Use capcolDefault in Lua scripts
Wuzzy <Wuzzy2@mail.ru>
parents: 13170
diff changeset
   475
                AddCaption(string.format(loc("%s climbed home in %d seconds!"), GetHogName(CurrentHedgehog), roundedFinishTime), capcolDefault, capgrpGameState)
12760
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   476
                SendStat(siCustomAchievement, string.format(loc("%s (%s) reached home in %.3f seconds."), GetHogName(CurrentHedgehog), GetHogTeamName(CurrentHedgehog), finishTime))
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   477
                makeMultiPlayerWinnerStat(CurrentHedgehog)
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   478
                PlaySound(sndVictory, CurrentHedgehog)
12913
20e627c1ac20 ClimbHome, Sniper Rifle training: Unselect weapon after victory
Wuzzy <Wuzzy2@mail.ru>
parents: 12827
diff changeset
   479
		SetWeapon(amNothing)
12760
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   480
                SetGearMessage(CurrentHedgehog, band(GetGearMessage(CurrentHedgehog), bnot(gmLeft+gmRight+gmUp+gmDown+gmHJump+gmLJump+gmPrecise)))
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   481
                SetInputMask(0x00)
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   482
                -- TODO: Add stupid winner grin.
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   483
                multiplayerVictoryDelay = 4000
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   484
                YouWon = true
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   485
            end
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   486
        end
10598
9dd0f41d3244 This should probably fix multiplayer desync, but is the result of fiddling while pretty sick/feverish so, needs testing, and the water/scaling stuff is disabled.
nemo
parents: 10593
diff changeset
   487
9dd0f41d3244 This should probably fix multiplayer desync, but is the result of fiddling while pretty sick/feverish so, needs testing, and the water/scaling stuff is disabled.
nemo
parents: 10593
diff changeset
   488
        if GameTime % 500 == 0 then
11889
c8979eeb73fa Fix ClimbHome mission bugs (broken teams, broken graph)
Wuzzy <almikes@aol.com>
parents: 11635
diff changeset
   489
            if not isSinglePlayer then
c8979eeb73fa Fix ClimbHome mission bugs (broken teams, broken graph)
Wuzzy <almikes@aol.com>
parents: 11635
diff changeset
   490
	        for t,i in pairs(teams) do
c8979eeb73fa Fix ClimbHome mission bugs (broken teams, broken graph)
Wuzzy <almikes@aol.com>
parents: 11635
diff changeset
   491
                    if currTeam == t then
c8979eeb73fa Fix ClimbHome mission bugs (broken teams, broken graph)
Wuzzy <almikes@aol.com>
parents: 11635
diff changeset
   492
                        SendStat(siClanHealth, tostring(getActualHeight(y)), t)
c8979eeb73fa Fix ClimbHome mission bugs (broken teams, broken graph)
Wuzzy <almikes@aol.com>
parents: 11635
diff changeset
   493
                    else
c8979eeb73fa Fix ClimbHome mission bugs (broken teams, broken graph)
Wuzzy <almikes@aol.com>
parents: 11635
diff changeset
   494
                        SendStat(siClanHealth, '0', t)
c8979eeb73fa Fix ClimbHome mission bugs (broken teams, broken graph)
Wuzzy <almikes@aol.com>
parents: 11635
diff changeset
   495
                    end
10632
5ae7ba0b2849 pretty sure the other teams need stats at 0 for the graph to look right
nemo
parents: 10598
diff changeset
   496
                end
12760
5acf6b91df76 you know what... I think everything would have been fine if we'd simply required all this hog stuff to be in the same block...
nemo
parents: 12754
diff changeset
   497
            else
11889
c8979eeb73fa Fix ClimbHome mission bugs (broken teams, broken graph)
Wuzzy <almikes@aol.com>
parents: 11635
diff changeset
   498
                SendStat(siClanHealth, tostring(getActualHeight(y)), GetHogTeamName(CurrentHedgehog))
10632
5ae7ba0b2849 pretty sure the other teams need stats at 0 for the graph to look right
nemo
parents: 10598
diff changeset
   499
            end
13155
25de976a7b9a ClimeHome: Show messages when cake is nearby and when reaching home
Wuzzy <Wuzzy2@mail.ru>
parents: 13023
diff changeset
   500
            -- If player is inside home, tell player to take a seat.
25de976a7b9a ClimeHome: Show messages when cake is nearby and when reaching home
Wuzzy <Wuzzy2@mail.ru>
parents: 13023
diff changeset
   501
            if not takeASeat and gearIsInBox(CurrentHedgehog, 1765, 131, 244, 189) then
25de976a7b9a ClimeHome: Show messages when cake is nearby and when reaching home
Wuzzy <Wuzzy2@mail.ru>
parents: 13023
diff changeset
   502
                AddCaption(loc("Welcome home! Please take a seat"))
25de976a7b9a ClimeHome: Show messages when cake is nearby and when reaching home
Wuzzy <Wuzzy2@mail.ru>
parents: 13023
diff changeset
   503
                takeASeat = true
25de976a7b9a ClimeHome: Show messages when cake is nearby and when reaching home
Wuzzy <Wuzzy2@mail.ru>
parents: 13023
diff changeset
   504
            end
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   505
    
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   506
            -- play taunts
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   507
            if not YouWon and not YouLost then
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   508
                local nooDistance = 500
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   509
                if ((x < -nooDistance and vx < 0) or (x > LAND_WIDTH+nooDistance and vx > 0)) then
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   510
                    if (tauntNoo == false and distanceFromWater > 80) then
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   511
                        PlaySound(sndNooo, CurrentHedgehog)
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   512
                        tauntNoo = true
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   513
                    end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   514
                end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   515
            end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   516
12826
42003e235a46 remove some more test redundancy and restore a missing and important nil check
nemo
parents: 12825
diff changeset
   517
            if addCake and CakeTries < 10 and y < 32600 and y > 3000 and Cake == nil then 
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   518
                -- doing this just after the start the first time to take advantage of randomness sources
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   519
                -- Pick a clear y to start with
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   520
                if y > 31000 then cy = 24585 elseif
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   521
                   y > 28000 then cy = 21500 elseif
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   522
                   y > 24000 then cy = 19000 elseif
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   523
                   y > 21500 then cy = 16000 elseif
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   524
                   y > 19000 then cy = 12265 elseif
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   525
                   y > 16000 then cy =  8800 elseif
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   526
                   y > 12000 then cy =  5700 else
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   527
                   cy = 400 end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   528
                Cake = AddGear(GetRandom(2048), cy, gtCake, 0, 0, 0, 0)
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   529
                SetHealth(Cake,999999)
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   530
                CakeTries = CakeTries + 1 
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   531
            end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   532
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   533
            if (y > 286) or (y < 286 and MaxHeight > 286) then
11635
2a53e219bc1a Time achievement for ClimbHome
unC0Rr
parents: 11627
diff changeset
   534
                if MaxHeight > 286 and y <= 286 then
2a53e219bc1a Time achievement for ClimbHome
unC0Rr
parents: 11627
diff changeset
   535
                    -- wow, reached top
2a53e219bc1a Time achievement for ClimbHome
unC0Rr
parents: 11627
diff changeset
   536
                    local teamName = GetHogTeamName(CurrentHedgehog)
2a53e219bc1a Time achievement for ClimbHome
unC0Rr
parents: 11627
diff changeset
   537
                    if teamTimes[teamName] == nil or teamTimes[teamName] > GameTime - startTime then 
2a53e219bc1a Time achievement for ClimbHome
unC0Rr
parents: 11627
diff changeset
   538
                        teamTimes[teamName] = GameTime - startTime 
2a53e219bc1a Time achievement for ClimbHome
unC0Rr
parents: 11627
diff changeset
   539
                    end
2a53e219bc1a Time achievement for ClimbHome
unC0Rr
parents: 11627
diff changeset
   540
                    MaxHeight = 286
2a53e219bc1a Time achievement for ClimbHome
unC0Rr
parents: 11627
diff changeset
   541
                end
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   542
                if y < MaxHeight and y > 286 then MaxHeight = y end
13023
acba432d34b1 ClimbHome: Show best team heights next to team name
Wuzzy <Wuzzy2@mail.ru>
parents: 12913
diff changeset
   543
                -- New maximum height of this turn?
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   544
                if MaxHeight < hTagHeight then
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   545
                    hTagHeight = MaxHeight
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   546
                    if hTag ~= nil then DeleteVisualGear(hTag) end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   547
                    hTag = AddVisualGear(0, 0, vgtHealthTag, 0, true)
13023
acba432d34b1 ClimbHome: Show best team heights next to team name
Wuzzy <Wuzzy2@mail.ru>
parents: 12913
diff changeset
   548
                    local score = 32640-hTagHeight
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   549
                    -- snagged from space invasion
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   550
                    SetVisualGearValues (
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   551
                            hTag,        --id
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   552
                            -(ScreenWidth/2) + 40, --xoffset
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   553
                            ScreenHeight - 60, --yoffset
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   554
                            0,          --dx
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   555
                            0,          --dy
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   556
                            1.1,        --zoom
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   557
                            1,          --~= 0 means align to screen
13686
3651c63f3c84 Clean up legacy visual gear stuff in ClimbHome, fix star despawn, make stars non-critical
Wuzzy <Wuzzy2@mail.ru>
parents: 13664
diff changeset
   558
                            nil,        --frameticks
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   559
            -- 116px off bottom for lowest rock, 286 or so off top for position of chair
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   560
            -- 32650 is "0"
13023
acba432d34b1 ClimbHome: Show best team heights next to team name
Wuzzy <Wuzzy2@mail.ru>
parents: 12913
diff changeset
   561
                            score,    --value
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   562
                            99999999999,--timer
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   563
                            GetClanColor(GetHogClan(CurrentHedgehog))
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   564
                            )
13023
acba432d34b1 ClimbHome: Show best team heights next to team name
Wuzzy <Wuzzy2@mail.ru>
parents: 12913
diff changeset
   565
                    local team = GetHogTeamName(CurrentHedgehog)
acba432d34b1 ClimbHome: Show best team heights next to team name
Wuzzy <Wuzzy2@mail.ru>
parents: 12913
diff changeset
   566
                    SetTeamLabel(team, math.max(score, teamBests[team] or 0))
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   567
                end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   568
13023
acba432d34b1 ClimbHome: Show best team heights next to team name
Wuzzy <Wuzzy2@mail.ru>
parents: 12913
diff changeset
   569
                -- New record height?
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   570
                if MaxHeight < RecordHeight then
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   571
                    RecordHeight = MaxHeight
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   572
                    local oldName = RecordHeightHogName
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   573
                    RecordHeightHogName = GetHogName(CurrentHedgehog)
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   574
                    if oldName == nil then recordBroken = true end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   575
                    if not isSinglePlayer and RecordHeight > 1500 and not recordBroken then
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   576
                        recordBroken = true
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   577
                        AddCaption(string.format(loc("%s has passed the best height of %s!"), RecordHeightHogName, oldName))
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   578
                    end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   579
                    if not isSinglePlayer then
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   580
                        if rTag ~= nil then DeleteVisualGear(rTag) end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   581
                        rTag = AddVisualGear(0, 0, vgtHealthTag, 0, true)
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   582
                        -- snagged from space invasion
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   583
                        SetVisualGearValues (
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   584
                            rTag,        --id
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   585
                            -(ScreenWidth/2) + 100, --xoffset
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   586
                            ScreenHeight - 60, --yoffset
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   587
                            0,          --dx
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   588
                            0,          --dy
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   589
                            1.1,        --zoom
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   590
                            1,          --~= 0 means align to screen
13686
3651c63f3c84 Clean up legacy visual gear stuff in ClimbHome, fix star despawn, make stars non-critical
Wuzzy <Wuzzy2@mail.ru>
parents: 13664
diff changeset
   591
                            nil,        --frameticks
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   592
            -- 116px off bottom for lowest rock, 286 or so off top for position of chair
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   593
            -- 32650 is "0"
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   594
                            getActualHeight(RecordHeight),    --value
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   595
                            99999999999,--timer
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   596
                            GetClanColor(GetHogClan(CurrentHedgehog))
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   597
                            )
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   598
                    end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   599
                end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   600
            end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   601
            if MaxHeight > 286 then
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   602
                if tTag ~= nil then DeleteVisualGear(tTag) end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   603
                tTag = AddVisualGear(0, 0, vgtHealthTag, 0, true)
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   604
                -- snagged from space invasion
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   605
                SetVisualGearValues (
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   606
                    tTag,        --id
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   607
                    -(ScreenWidth/2) + 40, --xoffset
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   608
                    ScreenHeight - 100, --yoffset
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   609
                    0,          --dx
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   610
                    0,          --dy
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   611
                    1.1,        --zoom
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   612
                    1,          --~= 0 means align to screen
13686
3651c63f3c84 Clean up legacy visual gear stuff in ClimbHome, fix star despawn, make stars non-critical
Wuzzy <Wuzzy2@mail.ru>
parents: 13664
diff changeset
   613
                    nil,        --frameticks
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   614
                    (GameTime-startTime)/1000,    --value
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   615
                    99999999999,--timer
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   616
                    0xffffffff
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   617
                    )
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   618
            end
10413
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   619
        end
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   620
    end
afd746a538ef climb home training/multiplayer
nemo
parents:
diff changeset
   621
end
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   622
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   623
function onGearDamage(gear, damage)
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   624
    if GetGearType(gear) == gtHedgehog and not YouLost and not YouWon then
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   625
        -- Joke award for largest damage to hog
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   626
        local qualifyDamage = 50
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   627
        if (damage >= qualifyDamage) then
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   628
            local awarded = false
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   629
            if jokeAwardDamage == nil or damage > jokeAwardDamage.damage then
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   630
                awarded = true
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   631
            end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   632
            if awarded == true then
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   633
                jokeAwardDamage = {
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   634
                    hogName = GetHogName(CurrentHedgehog),
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   635
                    teamName = GetHogTeamName(CurrentHedgehog),
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   636
                    damage = damage
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   637
                }
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   638
            end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   639
        end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   640
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   641
        if isSinglePlayer then
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   642
            makeSinglePlayerLoserStats()
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   643
        else
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   644
            deadHedgehogs = deadHedgehogs + 1
12655
913d25669131 ClimbHome: Fix final team scoring 0 if hog took damage
Wuzzy <almikes@aol.com>
parents: 12654
diff changeset
   645
            makeMultiPlayerLoserStat(gear)
12653
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   646
            if (deadHedgehogs + multiplayerWins) >= totalHedgehogs then
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   647
                makeFinalMultiPlayerStats()
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   648
                EndGame()
11623
515d2d38ab8b Declare achievements alongwith EndGame call, since it would skip SendStats
unc0rr
parents: 11615
diff changeset
   649
                onAchievementsDeclaration()
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   650
            end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   651
        end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   652
        YouLost = true
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   653
    end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   654
end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   655
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   656
function makeLoserComment()
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   657
    local m
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   658
    if isSinglePlayer then m = 10 else m = 6 end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   659
    local r = math.random(1,m)
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   660
    if r == 1 then text = loc("%s never got the ninja diploma.")
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   661
    elseif r == 2 then text = loc("You have to move upwards, not downwards, %s!")
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   662
    elseif r == 3 then text = loc("%s never wanted to reach for the sky in the first place.")
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   663
    elseif r == 4 then text = loc("%s should try the rope training mission first.")
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   664
    elseif r == 5 then text = loc("%s skipped ninja classes.")
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   665
    elseif r == 6 then text = loc("%s doesn’t really know how to handle a rope properly.")
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   666
    elseif r == 7 then text = loc("Better luck next time!")
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   667
    elseif r == 8 then text = loc("It was all just bad luck!")
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   668
    elseif r == 9 then text = loc("Well, that escalated quickly!")
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   669
    elseif r == 10 then text = loc("What? Is it over already?") end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   670
    return text
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   671
end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   672
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   673
function makeSinglePlayerLoserStats()
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   674
    local actualHeight = getActualHeight(RecordHeight)
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   675
    SendStat(siGameResult, loc("You lose!"))
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   676
    SendStat(siGraphTitle, loc("Your height over time"))
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   677
    local text
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   678
    if actualHeight > 30000 then text = loc("%s was damn close to home.")
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   679
    elseif actualHeight > 28000 then text = loc("%s was close to home.")
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   680
    elseif actualHeight > 24265 then text = loc("%s was good, but not good enough.")
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   681
    elseif actualHeight > 16177 then text = loc("%s managed to pass half of the distance towards home.")
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   682
    elseif actualHeight > 8088 then text = loc("%s went over a quarter of the way towards home.")
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   683
    elseif actualHeight > 5100 then text = loc("%s still had a long way to go.")
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   684
    elseif actualHeight > 2000 then text = loc("%s made it past the hogosphere.")
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   685
    elseif actualHeight > 1500  then text = loc("%s barely made it past the hogosphere.")
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   686
    else
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   687
        text = makeLoserComment()
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   688
    end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   689
    if actualHeight > 1500 then
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   690
        SendStat(siCustomAchievement, string.format(text, RecordHeightHogName, actualHeight))
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   691
    else
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   692
        SendStat(siCustomAchievement, string.format(text, RecordHeightHogName))
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   693
    end
14475
2113296b7a29 Keep track of singleplayer high scores in challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14464
diff changeset
   694
2113296b7a29 Keep track of singleplayer high scores in challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14464
diff changeset
   695
    updateChallengeRecord("Highscore", actualHeight)
14578
50f511588635 Outsource commonly used words in siPointType to QTfrontend
Wuzzy <Wuzzy2@mail.ru>
parents: 14475
diff changeset
   696
    SendStat(siPointType, "!POINTS")
12424
b9cc405541c1 Fix various loc() syntax errors in scripts
Wuzzy <almikes@aol.com>
parents: 12392
diff changeset
   697
    SendStat(siPlayerKills, actualHeight, GetHogTeamName(CurrentHedgehog))
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   698
    EndGame()
11623
515d2d38ab8b Declare achievements alongwith EndGame call, since it would skip SendStats
unc0rr
parents: 11615
diff changeset
   699
    onAchievementsDeclaration()
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   700
end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   701
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   702
function makeMultiPlayerLoserStat(gear)
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   703
    local teamName = GetHogTeamName(gear)
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   704
    local actualHeight = getActualHeight(MaxHeight)
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   705
    if teamBests[teamName] == nil then teamBests[teamName] = actualHeight end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   706
    if teamBests[teamName] < actualHeight then teamBests[teamName] = actualHeight end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   707
    if teamScoreStats[teamName] == nil then teamScoreStats[teamName] = {} end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   708
    table.insert(teamScoreStats[teamName], actualHeight)
10598
9dd0f41d3244 This should probably fix multiplayer desync, but is the result of fiddling while pretty sick/feverish so, needs testing, and the water/scaling stuff is disabled.
nemo
parents: 10593
diff changeset
   709
    --SendStat(siClanHealth, tostring(teamBests[teamName]), teamName)
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   710
end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   711
12653
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   712
function makeMultiPlayerWinnerStat(gear)
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   713
    return makeMultiPlayerLoserStat(gear)
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   714
end
1215fd246e08 Climb Home: Fix game getting stuck when player reaches home
Wuzzy <almikes@aol.com>
parents: 12424
diff changeset
   715
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   716
function makeFinalMultiPlayerStats()
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   717
    local ranking = {}
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   718
    for k,v in pairs(teamBests) do
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   719
        table.insert(ranking, {name=k, score=v})
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   720
    end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   721
    local comp = function(table1, table2)
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   722
        if table1.score < table2.score then
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   723
            return true
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   724
        else
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   725
            return false
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   726
        end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   727
    end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   728
    table.sort(ranking, comp)
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   729
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   730
    local winner = ranking[#ranking]
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   731
    local loser = ranking[1]
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   732
    SendStat(siGameResult, string.format(loc("%s wins!"), winner.name))
11889
c8979eeb73fa Fix ClimbHome mission bugs (broken teams, broken graph)
Wuzzy <almikes@aol.com>
parents: 11635
diff changeset
   733
    SendStat(siGraphTitle, string.format(loc("Height over time")))
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   734
    
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   735
    if winner.score < 1500 then
11067
c632b47b8ff0 Trying to get these scripts to behave properly, still WIP though.
nemo
parents: 10824
diff changeset
   736
        SendStat(siCustomAchievement, string.format(loc("This round’s award for ultimate disappointment goes to: Everyone!")))
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   737
    else
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   738
        if winner.score > 30000 then text = loc("%s (%s) reached for the sky and beyond with a height of %d!")
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   739
        elseif winner.score > 24750 then text = loc("%s (%s) was certainly not afraid of heights: Peak height of %d!")
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   740
        elseif winner.score > 16500 then text = loc("%s (%s) does not have to feel ashamed for their best height of %d.")
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   741
        elseif winner.score > 8250 then text = loc("%s (%s) reached a decent peak height of %d.")
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   742
        else text = loc("%s (%s) reached a peak height of %d.") end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   743
        SendStat(siCustomAchievement, string.format(text, RecordHeightHogName, winner.name, winner.score))
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   744
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   745
        if loser.score < 1500 then
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   746
            text = makeLoserComment()
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   747
            SendStat(siCustomAchievement, string.format(text, loser.name))
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   748
        end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   749
    end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   750
    checkAwards()
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   751
    for i = #ranking, 1, -1 do
14578
50f511588635 Outsource commonly used words in siPointType to QTfrontend
Wuzzy <Wuzzy2@mail.ru>
parents: 14475
diff changeset
   752
	SendStat(siPointType, "!POINTS")
10581
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   753
        SendStat(siPlayerKills, tostring(ranking[i].score), ranking[i].name)
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   754
    end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   755
end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   756
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   757
function checkAwards()
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   758
    if jokeAwardNavy ~= nil then
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   759
        if isSinglePlayer then
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   760
            SendStat(siCustomAchievement, string.format(loc("The Navy greets %s for managing to get in a distance of %d away from the mainland!"), jokeAwardNavy.hogName, jokeAwardNavy.distance))
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   761
        else
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   762
            SendStat(siCustomAchievement, string.format(loc("Greetings from the Navy, %s (%s), for being a distance of %d away from the mainland!"), jokeAwardNavy.hogName, jokeAwardNavy.teamName, jokeAwardNavy.distance))
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   763
        end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   764
    end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   765
    if jokeAwardSpeed ~= nil then
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   766
        if isSinglePlayer then
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   767
            SendStat(siCustomAchievement, string.format(loc("Your hedgehog was panicly afraid of the water and decided to go in a safe distance of %d from it."), jokeAwardSpeed.distance))
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   768
        else
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   769
            SendStat(siCustomAchievement, string.format(loc("%s (%s) was panicly afraid of the water and decided to get in a safe distance of %d from it."), jokeAwardSpeed.hogName, jokeAwardSpeed.teamName, jokeAwardSpeed.distance))
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   770
        end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   771
    end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   772
    if jokeAwardDamage ~= nil then
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   773
        if isSinglePlayer then
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   774
            SendStat(siCustomAchievement, string.format(loc("Ouch! That must have hurt. You mutilated your poor hedgehog hog with %d damage."), jokeAwardDamage.damage))
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   775
        else
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   776
            SendStat(siCustomAchievement, string.format(loc("Ouch! That must have hurt. %s (%s) hit the ground with %d damage points."), jokeAwardDamage.hogName, jokeAwardDamage.teamName, jokeAwardDamage.damage))
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   777
        end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   778
    end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   779
end
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   780
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   781
function getActualHeight(height)
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   782
    return 32640-height
f0b4c14a3c62 Wuzzy's changes to climbhome w/ some tweaks by me
nemo
parents: 10580
diff changeset
   783
end
11615
d5b205f00ac7 Achievement for ClimbHome
unC0Rr
parents: 11613
diff changeset
   784
d5b205f00ac7 Achievement for ClimbHome
unC0Rr
parents: 11613
diff changeset
   785
function onAchievementsDeclaration()
d5b205f00ac7 Achievement for ClimbHome
unC0Rr
parents: 11613
diff changeset
   786
    for teamname, score in pairs(teamBests) do
11627
221691bede23 Trick on storage format to simplify sql queries
unC0Rr
parents: 11623
diff changeset
   787
        DeclareAchievement("height reached", teamname, "ClimbHome", -score)
11615
d5b205f00ac7 Achievement for ClimbHome
unC0Rr
parents: 11613
diff changeset
   788
    end
11635
2a53e219bc1a Time achievement for ClimbHome
unC0Rr
parents: 11627
diff changeset
   789
    for teamname, score in pairs(teamTimes) do
2a53e219bc1a Time achievement for ClimbHome
unC0Rr
parents: 11627
diff changeset
   790
        DeclareAchievement("rope race", teamname, "ClimbHome", score)
2a53e219bc1a Time achievement for ClimbHome
unC0Rr
parents: 11627
diff changeset
   791
    end
11615
d5b205f00ac7 Achievement for ClimbHome
unC0Rr
parents: 11613
diff changeset
   792
end