Skip to content

Commit 2b690dd

Browse files
committed
Add car usage + refueling
1 parent 5d53157 commit 2b690dd

File tree

11 files changed

+650
-136
lines changed

11 files changed

+650
-136
lines changed

src/Admin.elm

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ backendModelCodec seed =
5050
toBackendMsgCodec : Codec ToBackend
5151
toBackendMsgCodec =
5252
Codec.custom
53-
(\logMeInEncoder signMeUpEncoder createNewCharEncoder logMeOutEncoder fightEncoder healMeEncoder useItemEncoder wanderEncoder equipArmorEncoder equipWeaponEncoder preferAmmoEncoder setFightStrategyEncoder unequipArmorEncoder unequipWeaponEncoder clearPreferredAmmoEncoder refreshPleaseEncoder worldsPleaseEncoder tagSkillEncoder useSkillPointsEncoder choosePerkEncoder moveToEncoder messageWasReadEncoder removeMessageEncoder removeFightMessagesEncoder removeAllMessagesEncoder barterEncoder adminToBackendEncoder stopProgressingEncoder startProgressingEncoder value ->
53+
(\logMeInEncoder signMeUpEncoder createNewCharEncoder logMeOutEncoder fightEncoder healMeEncoder useItemEncoder wanderEncoder equipArmorEncoder equipWeaponEncoder preferAmmoEncoder setFightStrategyEncoder unequipArmorEncoder unequipWeaponEncoder clearPreferredAmmoEncoder refreshPleaseEncoder worldsPleaseEncoder tagSkillEncoder useSkillPointsEncoder choosePerkEncoder moveToEncoder messageWasReadEncoder removeMessageEncoder removeFightMessagesEncoder removeAllMessagesEncoder barterEncoder adminToBackendEncoder stopProgressingEncoder startProgressingEncoder refuelCarEncoder value ->
5454
case value of
5555
LogMeIn arg0 ->
5656
logMeInEncoder arg0
@@ -138,6 +138,9 @@ toBackendMsgCodec =
138138

139139
StartProgressing arg0 ->
140140
startProgressingEncoder arg0
141+
142+
RefuelCar arg0 ->
143+
refuelCarEncoder arg0
141144
)
142145
|> Codec.variant1 "LogMeIn" LogMeIn Auth.sanitizedCodec
143146
|> Codec.variant1 "SignMeUp" SignMeUp Auth.sanitizedCodec
@@ -172,6 +175,7 @@ toBackendMsgCodec =
172175
|> Codec.variant1 "AdminToBackend" AdminToBackend adminToBackendCodec
173176
|> Codec.variant1 "StopProgressing" StopProgressing Quest.codec
174177
|> Codec.variant1 "StartProgressing" StartProgressing Quest.codec
178+
|> Codec.variant1 "RefuelCar" RefuelCar ItemKind.codec
175179
|> Codec.buildCustom
176180

177181

src/Backend.elm

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -652,7 +652,7 @@ applyPlayerQuestReward reward ( lastItemId, player ) =
652652

653653
Quest.CarReward ->
654654
( lastItemId
655-
, { player | hasCar = True }
655+
, { player | carBatteryPromile = Just 1000 }
656656
)
657657

658658
Quest.TravelToEnclaveReward ->
@@ -1170,6 +1170,9 @@ updateFromFrontend sessionId clientId msg model =
11701170
StartProgressing quest ->
11711171
withLoggedInCreatedPlayer (startProgressing quest)
11721172

1173+
RefuelCar fuelKind ->
1174+
withLoggedInCreatedPlayer (refuelCar fuelKind)
1175+
11731176

11741177
updateAdmin : ClientId -> AdminToBackend -> Model -> ( Model, Cmd BackendMsg )
11751178
updateAdmin clientId msg model =
@@ -1542,11 +1545,11 @@ moveTo newCoords pathTaken clientId _ worldName player model =
15421545
currentCoords =
15431546
Map.toTileCoords player.location
15441547

1545-
tickCost : Int
1546-
tickCost =
1547-
Pathfinding.tickCost
1548+
{ tickCost, carBatteryPromileCost } =
1549+
Pathfinding.cost
15481550
{ pathTaken = pathTaken
15491551
, pathfinderPerkRanks = Perk.rank Perk.Pathfinder player.perks
1552+
, carBatteryPromile = player.carBatteryPromile
15501553
}
15511554

15521555
isSamePosition : Bool
@@ -1594,6 +1597,7 @@ moveTo newCoords pathTaken clientId _ worldName player model =
15941597
player.name
15951598
(SPlayer.subtractTicks tickCost
15961599
>> SPlayer.setLocation (Map.toTileNum newCoords)
1600+
>> SPlayer.removeCarBattery carBatteryPromileCost
15971601
)
15981602
|> sendCurrentWorld worldName player.name clientId
15991603
|> Cmd.andThen (\m -> ( m, refreshAdminData m ))
@@ -2481,6 +2485,23 @@ startProgressing quest clientId world worldName player model =
24812485
( model, Cmd.none )
24822486

24832487

2488+
refuelCar : ItemKind.Kind -> ClientId -> World -> World.Name -> SPlayer -> Model -> ( Model, Cmd BackendMsg )
2489+
refuelCar fuelKind clientId _ worldName player model =
2490+
let
2491+
newModel =
2492+
model
2493+
|> updatePlayer worldName player.name (SPlayer.refuelCar fuelKind)
2494+
in
2495+
getPlayerData worldName player.name newModel
2496+
|> Maybe.map
2497+
(\data ->
2498+
( newModel
2499+
, Lamdera.sendToFrontend clientId <| CurrentPlayer data
2500+
)
2501+
)
2502+
|> Maybe.withDefault ( model, Cmd.none )
2503+
2504+
24842505
notePlayerPaidRequirements : Quest.Name -> PlayerName -> World -> World
24852506
notePlayerPaidRequirements quest player world =
24862507
{ world

src/Data/Item/Kind.elm

Lines changed: 276 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ module Data.Item.Kind exposing
77
, healAmount
88
, isAmmo
99
, ammoArmorClassModifier, ammoDamageModifier, ammoDamageResistanceModifier
10+
, carBatteryChargePromileAmount
1011
, isArmor
1112
, armorClass, armorDamageResistance, armorDamageThreshold
1213
, isWeapon, isLongRangeWeapon, isWeaponArmorPenetrating, isAccurateWeapon
@@ -34,6 +35,7 @@ module Data.Item.Kind exposing
3435
3536
@docs isAmmo
3637
@docs ammoArmorClassModifier, ammoDamageModifier, ammoDamageResistanceModifier
38+
@docs carBatteryChargePromileAmount
3739
3840
3941
## Armor
@@ -10364,3 +10366,277 @@ isTwoHandedWeapon kind =
1036410366

1036510367
TankerFob ->
1036610368
False
10369+
10370+
10371+
carBatteryChargePromileAmount : Kind -> Maybe Int
10372+
carBatteryChargePromileAmount kind =
10373+
case kind of
10374+
MicrofusionCell ->
10375+
Just 500
10376+
10377+
SmallEnergyCell ->
10378+
Just 200
10379+
10380+
SuperSledge ->
10381+
Nothing
10382+
10383+
AssaultRifle ->
10384+
Nothing
10385+
10386+
ExpandedAssaultRifle ->
10387+
Nothing
10388+
10389+
HuntingRifle ->
10390+
Nothing
10391+
10392+
ScopedHuntingRifle ->
10393+
Nothing
10394+
10395+
RedRyderLEBBGun ->
10396+
Nothing
10397+
10398+
SniperRifle ->
10399+
Nothing
10400+
10401+
GaussRifle ->
10402+
Nothing
10403+
10404+
CombatShotgun ->
10405+
Nothing
10406+
10407+
HkCaws ->
10408+
Nothing
10409+
10410+
PancorJackhammer ->
10411+
Nothing
10412+
10413+
Shotgun ->
10414+
Nothing
10415+
10416+
Minigun ->
10417+
Nothing
10418+
10419+
Bozar ->
10420+
Nothing
10421+
10422+
RocketLauncher ->
10423+
Nothing
10424+
10425+
GatlingLaser ->
10426+
Nothing
10427+
10428+
LaserRifle ->
10429+
Nothing
10430+
10431+
LaserRifleExtCap ->
10432+
Nothing
10433+
10434+
PlasmaRifle ->
10435+
Nothing
10436+
10437+
TurboPlasmaRifle ->
10438+
Nothing
10439+
10440+
PulseRifle ->
10441+
Nothing
10442+
10443+
PowerFist ->
10444+
Nothing
10445+
10446+
MegaPowerFist ->
10447+
Nothing
10448+
10449+
GaussPistol ->
10450+
Nothing
10451+
10452+
Smg10mm ->
10453+
Nothing
10454+
10455+
HkP90c ->
10456+
Nothing
10457+
10458+
SawedOffShotgun ->
10459+
Nothing
10460+
10461+
LaserPistol ->
10462+
Nothing
10463+
10464+
FragGrenade ->
10465+
Nothing
10466+
10467+
CattleProd ->
10468+
Nothing
10469+
10470+
SuperCattleProd ->
10471+
Nothing
10472+
10473+
Mauser9mm ->
10474+
Nothing
10475+
10476+
Pistol14mm ->
10477+
Nothing
10478+
10479+
Flare ->
10480+
Nothing
10481+
10482+
Pistol223 ->
10483+
Nothing
10484+
10485+
Knife ->
10486+
Nothing
10487+
10488+
Wakizashi ->
10489+
Nothing
10490+
10491+
LittleJesus ->
10492+
Nothing
10493+
10494+
Ripper ->
10495+
Nothing
10496+
10497+
NeedlerPistol ->
10498+
Nothing
10499+
10500+
MagnetoLaserPistol ->
10501+
Nothing
10502+
10503+
PulsePistol ->
10504+
Nothing
10505+
10506+
Beer ->
10507+
Nothing
10508+
10509+
Fruit ->
10510+
Nothing
10511+
10512+
HealingPowder ->
10513+
Nothing
10514+
10515+
Stimpak ->
10516+
Nothing
10517+
10518+
SuperStimpak ->
10519+
Nothing
10520+
10521+
BigBookOfScience ->
10522+
Nothing
10523+
10524+
DeansElectronics ->
10525+
Nothing
10526+
10527+
FirstAidBook ->
10528+
Nothing
10529+
10530+
GunsAndBullets ->
10531+
Nothing
10532+
10533+
ScoutHandbook ->
10534+
Nothing
10535+
10536+
Robes ->
10537+
Nothing
10538+
10539+
LeatherJacket ->
10540+
Nothing
10541+
10542+
LeatherArmor ->
10543+
Nothing
10544+
10545+
MetalArmor ->
10546+
Nothing
10547+
10548+
TeslaArmor ->
10549+
Nothing
10550+
10551+
CombatArmor ->
10552+
Nothing
10553+
10554+
CombatArmorMk2 ->
10555+
Nothing
10556+
10557+
PowerArmor ->
10558+
Nothing
10559+
10560+
BBAmmo ->
10561+
Nothing
10562+
10563+
Fmj223 ->
10564+
Nothing
10565+
10566+
ShotgunShell ->
10567+
Nothing
10568+
10569+
Jhp10mm ->
10570+
Nothing
10571+
10572+
Jhp5mm ->
10573+
Nothing
10574+
10575+
Ec2mm ->
10576+
Nothing
10577+
10578+
Tool ->
10579+
Nothing
10580+
10581+
LockPicks ->
10582+
Nothing
10583+
10584+
ElectronicLockpick ->
10585+
Nothing
10586+
10587+
AbnormalBrain ->
10588+
Nothing
10589+
10590+
ChimpanzeeBrain ->
10591+
Nothing
10592+
10593+
HumanBrain ->
10594+
Nothing
10595+
10596+
CyberneticBrain ->
10597+
Nothing
10598+
10599+
GECK ->
10600+
Nothing
10601+
10602+
SkynetAim ->
10603+
Nothing
10604+
10605+
MotionSensor ->
10606+
Nothing
10607+
10608+
K9 ->
10609+
Nothing
10610+
10611+
MeatJerky ->
10612+
Nothing
10613+
10614+
Ap5mm ->
10615+
Nothing
10616+
10617+
Mm9 ->
10618+
Nothing
10619+
10620+
Ball9mm ->
10621+
Nothing
10622+
10623+
Ap10mm ->
10624+
Nothing
10625+
10626+
Ap14mm ->
10627+
Nothing
10628+
10629+
ExplosiveRocket ->
10630+
Nothing
10631+
10632+
RocketAp ->
10633+
Nothing
10634+
10635+
HnNeedlerCartridge ->
10636+
Nothing
10637+
10638+
HnApNeedlerCartridge ->
10639+
Nothing
10640+
10641+
TankerFob ->
10642+
Nothing

0 commit comments

Comments
 (0)