Skip to content

Commit

Permalink
Release v1.3.1
Browse files Browse the repository at this point in the history
  • Loading branch information
gwathlobal committed Apr 20, 2018
1 parent 73d878e commit 9be81a7
Show file tree
Hide file tree
Showing 7 changed files with 64 additions and 50 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
CHANGELOG

--------------------
April 21, 2018 v1.3.1

- A new mission was added - Demonic thievery. The demons opened portals in order to steal a holy relic from the church and return it to their dimension. The military and the angels want to stop and destroy them.
- A new mission was added - Demonic conquest. The demons opened portals in order to conquer the district by placing and charging sigils in it. The military and the angels want to stop and destroy them.
- Fixed the bug with player's choosing the resurrect ability that could freeze the game.
Expand Down
24 changes: 8 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,14 @@ It is written in Common Lisp using SDL.

LATEST RELEASE

March 29, 2018 v1.3.0

- The concept of missions was introduced. The previous scenario where the demons wanted to kill all angels in the city became the 'Demonic attack' mission.
- A new mission was added - Demonic raid. The demons opened the portals in order to gather flesh from the city. Their goal for this mission is to kill citizens, pick up their corpses and throw them into portals, while the military and the angels want to stop and destroy demons.
- If you die, this is no longer the end of the world. The battle will go on until one of the sides wins. You might even get resurrected by your allies and continue fighting as if nothing happened.
- You can no longer win the game by ascending beyond Angel or Archdemon/Shadow Devil.
- As a Scout, you can no longer lose the game by getting possessed. Though you will lose the control over your character until you get purged (or the end of the mission).
- You will now be able to customize the factions you want to see in a scenario.
- AI will bump into friendly mobs much less often and will try to navigate around them to get to its target.
- Added a journal where you can see objectives for the current mission and your relations with other factions. The journal is displayed using the 'j' button.
- Defending military will be stationed inside the city.
- Possessable creatures will try to get away from you if you are the one that can possess them.
- Characters with ranged weapons will try to step out of melee combat.
- Ghosts can now sense the direction to the sacrificial circle and the Book of Rituals.
- Abilities on cooldown will be displayed in the status string.
- The game over screen now also shows the comparative statistics between the character who earned the title and the player.
April 21, 2018 v1.3.1

- A new mission was added - Demonic thievery. The demons opened portals in order to steal a holy relic from the church and return it to their dimension. The military and the angels want to stop and destroy them.
- A new mission was added - Demonic conquest. The demons opened portals in order to conquer the district by placing and charging sigils in it. The military and the angels want to stop and destroy them.
- Fixed the bug with player's choosing the resurrect ability that could freeze the game.
- Fixed warehouses being mixed with barricades when military defenders are present in a seaport.
- Strings in the message log are of different colors now depending on the type of the message (instead of white used everywhere previously).


CURRENT CHANGELOG

Expand Down
1 change: 1 addition & 0 deletions TODO.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
- Custom scenarios
- Scenario with attacking a battleship
- Add Twosoul character for satanists
- Add Flamethrower operator to the miliatry
- Add courtyard houses like Thief2RL
Expand Down
23 changes: 7 additions & 16 deletions src/README.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,13 @@ The year is 1915. The Great War thunders in the west, but the Hinterland is not
This is a simple fast-paced coffee-break roguelike inspired by a 7DRL entry "City of the Condemned" by Tapio (http://www.roguebasin.com/index.php?title=City_of_the_Condemned).

--------------------
LATEST CHANGES v1.3.0

- The concept of missions was introduced. The previous scenario where the demons wanted to kill all angels in the city became the 'Demonic attack' mission.
- A new mission was added - Demonic raid. The demons opened the portals in order to gather flesh from the city. Their goal for this mission is to kill citizens, pick up their corpses and throw them into portals, while the military and the angels want to stop and destroy demons.
- If you die, this is no longer the end of the world. The battle will go on until one of the sides wins. You might even get resurrected by your allies and continue fighting as if nothing happened.
- You can no longer win the game by ascending beyond Angel or Archdemon/Shadow Devil.
- As a Scout, you can no longer lose the game by getting possessed. Though you will lose the control over your character until you get purged (or the end of the mission).
- You will now be able to customize the factions you want to see in a scenario.
- AI will bump into friendly mobs much less often and will try to navigate around them to get to its target.
- Added a journal where you can see objectives for the current mission and your relations with other factions. The journal is displayed using the 'j' button.
- Defending military will be stationed inside the city.
- Possessable creatures will try to get away from you if you are the one that can possess them.
- Characters with ranged weapons will try to step out of melee combat.
- Ghosts can now sense the direction to the sacrificial circle and the Book of Rituals.
- Abilities on cooldown will be displayed in the status string.
- The game over screen now also shows the comparative statistics between the character who earned the title and the player.
LATEST CHANGES v1.3.1

- A new mission was added - Demonic thievery. The demons opened portals in order to steal a holy relic from the church and return it to their dimension. The military and the angels want to stop and destroy them.
- A new mission was added - Demonic conquest. The demons opened portals in order to conquer the district by placing and charging sigils in it. The military and the angels want to stop and destroy them.
- Fixed the bug with player's choosing the resurrect ability that could freeze the game.
- Fixed warehouses being mixed with barricades when military defenders are present in a seaport.
- Strings in the message log are of different colors now depending on the type of the message (instead of white used everywhere previously).

--------------------
FEATURES
Expand Down
7 changes: 4 additions & 3 deletions src/base-methods.lisp
Original file line number Diff line number Diff line change
Expand Up @@ -1001,6 +1001,7 @@
(make-act actor +normal-ap+))

(defun mob-shoot-target (actor target)
(logger (format nil "MOB-SHOOT-TARGET: ~A [~A] shoots ~A [~A]~%" (name actor) (id actor) (name target) (id target)))
(let ((cur-dmg 0) (bullets-left) (affected-targets nil) (completely-missed t))
(unless (is-weapon-ranged actor)
(return-from mob-shoot-target nil))
Expand Down Expand Up @@ -1074,9 +1075,9 @@
(when target1
(setf completely-missed nil)

(setf cur-dmg (inflict-damage target :min-dmg (get-ranged-weapon-dmg-min actor) :max-dmg (get-ranged-weapon-dmg-max actor) :dmg-type (get-ranged-weapon-dmg-type actor)
:att-spd nil :weapon-aux (get-ranged-weapon-aux actor) :acc 100 :add-blood t :no-dodge t :no-hit-message t :no-check-dead t
:actor actor))
(setf cur-dmg (inflict-damage target1 :min-dmg (get-ranged-weapon-dmg-min actor) :max-dmg (get-ranged-weapon-dmg-max actor) :dmg-type (get-ranged-weapon-dmg-type actor)
:att-spd nil :weapon-aux (get-ranged-weapon-aux actor) :acc 100 :add-blood t :no-dodge t :no-hit-message t :no-check-dead t
:actor actor))

(if (find target1 affected-targets :key #'(lambda (n) (car n)))
(incf (cdr (find target1 affected-targets :key #'(lambda (n) (car n)))) cur-dmg)
Expand Down
54 changes: 40 additions & 14 deletions src/init-effect-types.lisp
Original file line number Diff line number Diff line change
Expand Up @@ -151,11 +151,15 @@
sdl:*white*)))
:on-remove #'(lambda (effect actor)
(declare (ignore effect))
(let ((old-max-hp (max-hp actor)))
(let ((old-max-hp (max-hp actor))
(null-hp (if (<= (cur-hp actor))
t
nil)))
(setf (mob-type actor) +mob-type-angel+)
(setf (max-hp actor) (max-hp (get-mob-type-by-id (mob-type actor))))
(setf (cur-hp actor) (round (* (cur-hp actor) (max-hp actor)) old-max-hp))
(if (zerop (cur-hp actor))
(when (and (zerop (cur-hp actor))
(not (null null-hp)))
(setf (cur-hp actor) 1)))
(setf (face-mob-type-id actor) (mob-type actor))
(set-cur-weapons actor)
Expand Down Expand Up @@ -233,11 +237,15 @@
*shared-mind-msg-color*
sdl:*white*)))
:on-remove #'(lambda (effect actor)
(let ((old-max-hp (max-hp actor)))
(let ((old-max-hp (max-hp actor))
(null-hp (if (<= (cur-hp actor))
t
nil)))
(setf (mob-type actor) (param1 effect))
(setf (max-hp actor) (max-hp (get-mob-type-by-id (mob-type actor))))
(setf (cur-hp actor) (round (* (cur-hp actor) (max-hp actor)) old-max-hp))
(if (zerop (cur-hp actor))
(when (and (zerop (cur-hp actor))
(not (null null-hp)))
(setf (cur-hp actor) 1)))
(setf (face-mob-type-id actor) (mob-type actor))
(set-cur-weapons actor)
Expand Down Expand Up @@ -410,7 +418,9 @@
(loop for mob-id in (append (list (id actor)) (merged-id-list actor))
for mob = (get-mob-by-id mob-id)
do
(setf (cur-hp mob) (truncate cur-hp (length (append (list (id actor)) (merged-id-list actor))))))))))
(setf (cur-hp mob) (truncate cur-hp (length (append (list (id actor)) (merged-id-list actor)))))
(when (check-dead mob)
(make-dead mob :splatter t :msg t :msg-newline t :killer nil :corpse t :aux-params () :keep-items nil)))))))

(set-effect-type (make-instance 'effect-type :id +mob-effect-righteous-fury+ :name "Righteous fury"
:color-func #'(lambda (effect actor)
Expand Down Expand Up @@ -666,12 +676,16 @@
*shared-mind-msg-color*
sdl:*white*))

(let ((old-max-hp (max-hp actor)))
(let ((old-max-hp (max-hp actor))
(null-hp (if (<= (cur-hp actor))
t
nil)))
(setf (mob-type actor) +mob-type-sheep+)
(setf (max-hp actor) (max-hp (get-mob-type-by-id (mob-type actor))))
(setf (cur-hp actor) (round (* (cur-hp actor) (max-hp actor)) old-max-hp))
(if (zerop (cur-hp actor))
(setf (cur-hp actor) 1)))
(when (and (zerop (cur-hp actor))
(not (null null-hp)))
(setf (cur-hp actor) 1)))
(setf (face-mob-type-id actor) (mob-type actor))

;; polymorph block mutations
Expand Down Expand Up @@ -712,11 +726,15 @@
*shared-mind-msg-color*
sdl:*white*))

(let ((old-max-hp (max-hp actor)))
(let ((old-max-hp (max-hp actor))
(null-hp (if (<= (cur-hp actor))
t
nil)))
(setf (mob-type actor) (first (param1 effect)))
(setf (max-hp actor) (second (param1 effect)))
(setf (cur-hp actor) (round (* (cur-hp actor) (max-hp actor)) old-max-hp))
(if (zerop (cur-hp actor))
(when (and (zerop (cur-hp actor))
(not (null null-hp)))
(setf (cur-hp actor) 1)))
(setf (face-mob-type-id actor) (mob-type actor))
(set-cur-weapons actor)
Expand Down Expand Up @@ -966,11 +984,15 @@
*shared-mind-msg-color*
sdl:*white*))

(let ((old-max-hp (max-hp actor)))
(let ((old-max-hp (max-hp actor))
(null-hp (if (<= (cur-hp actor))
t
nil)))
(setf (mob-type actor) (first (param1 effect)))
(setf (max-hp actor) (second (param1 effect)))
(setf (cur-hp actor) (round (* (cur-hp actor) (max-hp actor)) old-max-hp))
(if (zerop (cur-hp actor))
(when (and (zerop (cur-hp actor))
(not (null null-hp)))
(setf (cur-hp actor) 1)))
(setf (face-mob-type-id actor) (mob-type actor))
(set-cur-weapons actor)
Expand Down Expand Up @@ -1138,11 +1160,15 @@
sdl:*white*)))
:on-remove #'(lambda (effect actor)
(declare (ignore effect))
(let ((old-max-hp (max-hp actor)))
(let ((old-max-hp (max-hp actor))
(null-hp (if (<= (cur-hp actor))
t
nil)))
(setf (mob-type actor) +mob-type-satanist+)
(setf (max-hp actor) (max-hp (get-mob-type-by-id (mob-type actor))))
(setf (cur-hp actor) (round (* (cur-hp actor) (max-hp actor)) old-max-hp))
(if (zerop (cur-hp actor))
(when (and (zerop (cur-hp actor))
(not (null null-hp)))
(setf (cur-hp actor) 1)))
(setf (face-mob-type-id actor) (mob-type actor))
(set-cur-weapons actor)
Expand Down
2 changes: 1 addition & 1 deletion src/level-test.lisp
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@

(defun test-level-place-mobs (world mob-template-list)
(declare (ignore mob-template-list))
(setf *player* (make-instance 'player :mob-type +mob-type-eater-of-the-dead+ :x 45 :y 19 :z 3))
(setf *player* (make-instance 'player :mob-type +mob-type-angel+ :x 45 :y 19 :z 3))
(add-mob-to-level-list (level world) *player*)

(let ((soldier (make-instance 'mob :mob-type +mob-type-angel+ :x 41 :y 19 :z 2))
Expand Down

0 comments on commit 9be81a7

Please sign in to comment.